loulijun2021
2022-07-14 bd3410da8a13682ec0bc888539dc35209a2196ba
1.生产开报工页面开发
已添加1个文件
已修改15个文件
1589 ■■■■ 文件已修改
public/static/grf/外协收料标签.grf 310 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/sbgl.js 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/scgl.js 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/router/index.js 102 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/request.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/jcsz/jsqd.vue 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/jcsz/yhqd.vue 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/jcsz/zzjg.vue 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/sbgl/sbqd.vue 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/scgl/gd.vue 39 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/scgl/gdpg.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/scgl/sckbg.vue 993 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/wlgl/kwdy.vue 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/zzmx/chda.vue 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/zzmx/gxdy.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/zzmx/jpgj.vue 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
public/static/grf/ÍâЭÊÕÁϱêÇ©.grf
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,310 @@
{
    "Version":"6.8.5.5",
    "Title":"你的报表标题",
    "PrintAsDesignPaper":false,
    "Font":{
        "Name":"宋体",
        "Size":52500,
        "Weight":400,
        "Charset":134
    },
    "WatermarkAlignment":"BottomRight",
    "Printer":{
        "Size":256,
        "Width":4,
        "Height":7.5,
        "Oriention":"Landscape",
        "LeftMargin":0.1,
        "TopMargin":0,
        "RightMargin":0.1,
        "BottomMargin":0
    },
    "DetailGrid":{
        "CenterView":true,
        "Border":{
            "Pen":{
                "Width":1.5
            }
        },
        "Recordset":{
            "Field":[
                {
                    "Name":"工单编号",
                    "DBFieldName":"wo_code"
                },
                {
                    "Name":"产品编码",
                    "DBFieldName":"partcode"
                },
                {
                    "Name":"产品名称",
                    "DBFieldName":"partname"
                },
                {
                    "Name":"下道工序",
                    "DBFieldName":"next_stepname"
                },
                {
                    "Name":"数量",
                    "DBFieldName":"qty"
                },
                {
                    "Name":"二维码",
                    "DBFieldName":"qrcode"
                }
            ]
        },
        "ColumnContent":{
            "Height":0,
            "AdjustRowHeight":false
        },
        "ColumnTitle":{
            "Height":0,
            "RepeatStyle":"OnPage"
        }
    },
    "Parameter":[
        {
            "Name":"Parameter1"
        },
        {
            "Name":"Parameter2"
        }
    ],
    "ReportHeader":[
        {
            "Name":"ReportHeader1",
            "Height":3.20146,
            "Control":[
                {
                    "Type":"Line",
                    "Name":"Line1",
                    "Left":0.211667,
                    "Top":0.105833,
                    "Width":6.91333
                },
                {
                    "Type":"Line",
                    "Name":"Line2",
                    "Left":0.21,
                    "Top":3.09563,
                    "Width":6.90729
                },
                {
                    "Type":"Line",
                    "Name":"Line3",
                    "Left":0.2,
                    "Top":0.105833,
                    "Height":2.99
                },
                {
                    "Type":"Line",
                    "Name":"Line4",
                    "Left":7.1,
                    "Top":0.105833,
                    "Height":2.98979
                },
                {
                    "Type":"Line",
                    "Name":"Line5",
                    "Left":2.40771,
                    "Top":0.105833,
                    "Height":2.98979
                },
                {
                    "Type":"Barcode",
                    "Name":"Barcode1",
                    "Left":0.423333,
                    "Top":0.291042,
                    "Width":1.82563,
                    "Height":1.66688,
                    "BarcodeType":"QRCode",
                    "CaptionPosition":"None",
                    "Text":"[#二维码#]"
                },
                {
                    "Type":"Line",
                    "Name":"Line6",
                    "Left":2.40771,
                    "Top":0.873125,
                    "Width":4.68229
                },
                {
                    "Type":"Line",
                    "Name":"Line7",
                    "Left":2.40771,
                    "Top":1.64042,
                    "Width":4.68229
                },
                {
                    "Type":"Line",
                    "Name":"Line8",
                    "Left":0.21,
                    "Top":2.38125,
                    "Width":6.88
                },
                {
                    "Type":"StaticBox",
                    "Name":"StaticBox1",
                    "Left":0.396875,
                    "Top":2.51354,
                    "Width":1.00542,
                    "Height":0.423333,
                    "PaddingTop":0,
                    "Font":{
                        "Name":"宋体",
                        "Size":90000,
                        "Weight":400,
                        "Charset":134
                    },
                    "Text":"数量:"
                },
                {
                    "Type":"MemoBox",
                    "Name":"MemoBox1",
                    "Left":1.34938,
                    "Top":2.51354,
                    "Width":0.978958,
                    "Height":0.4,
                    "PaddingTop":0,
                    "Font":{
                        "Name":"宋体",
                        "Size":90000,
                        "Weight":400,
                        "Charset":134
                    },
                    "Text":"[#数量#]"
                },
                {
                    "Type":"StaticBox",
                    "Name":"StaticBox2",
                    "Left":2.51,
                    "Top":0.185208,
                    "Width":1.69333,
                    "Height":0.635,
                    "PaddingTop":0,
                    "Font":{
                        "Name":"宋体",
                        "Size":90000,
                        "Weight":400,
                        "Charset":134
                    },
                    "Text":"工单编号:"
                },
                {
                    "Type":"MemoBox",
                    "Name":"MemoBox2",
                    "Left":4.20688,
                    "Top":0.185208,
                    "Width":2.75,
                    "Height":0.66,
                    "PaddingTop":0,
                    "Font":{
                        "Name":"宋体",
                        "Size":90000,
                        "Weight":400,
                        "Charset":134
                    },
                    "Text":"[#工单编号#]"
                },
                {
                    "Type":"StaticBox",
                    "Name":"StaticBox3",
                    "Left":2.51,
                    "Top":0.9525,
                    "Width":1.69333,
                    "Height":0.635,
                    "PaddingTop":0,
                    "Font":{
                        "Name":"宋体",
                        "Size":90000,
                        "Weight":400,
                        "Charset":134
                    },
                    "Text":"产品编码:"
                },
                {
                    "Type":"MemoBox",
                    "Name":"MemoBox3",
                    "Left":4.23333,
                    "Top":0.9525,
                    "Width":2.75,
                    "Height":0.66,
                    "PaddingTop":0,
                    "Font":{
                        "Name":"宋体",
                        "Size":90000,
                        "Weight":400,
                        "Charset":134
                    },
                    "Text":"[#产品编码#]"
                },
                {
                    "Type":"StaticBox",
                    "Name":"StaticBox4",
                    "Left":2.54,
                    "Top":1.71979,
                    "Width":1.69,
                    "Height":0.58,
                    "PaddingTop":0,
                    "Font":{
                        "Name":"宋体",
                        "Size":90000,
                        "Weight":400,
                        "Charset":134
                    },
                    "Text":"产品名称:"
                },
                {
                    "Type":"MemoBox",
                    "Name":"MemoBox4",
                    "Left":4.25979,
                    "Top":1.71979,
                    "Width":2.75167,
                    "Height":0.582083,
                    "PaddingTop":0,
                    "Font":{
                        "Name":"宋体",
                        "Size":90000,
                        "Weight":400,
                        "Charset":134
                    },
                    "Text":"[#产品名称#]"
                },
                {
                    "Type":"StaticBox",
                    "Name":"StaticBox5",
                    "Left":2.56646,
                    "Top":2.48708,
                    "Width":1.69333,
                    "Height":0.529167,
                    "PaddingTop":0,
                    "Font":{
                        "Name":"宋体",
                        "Size":90000,
                        "Weight":400,
                        "Charset":134
                    },
                    "Text":"下道工序:"
                },
                {
                    "Type":"MemoBox",
                    "Name":"MemoBox5",
                    "Left":4.28625,
                    "Top":2.48708,
                    "Width":2.75,
                    "Height":0.53,
                    "PaddingTop":0,
                    "Font":{
                        "Name":"宋体",
                        "Size":90000,
                        "Weight":400,
                        "Charset":134
                    },
                    "Text":"[#下道工序#]"
                }
            ],
            "RepeatOnPage":true
        }
    ]
}
src/api/sbgl.js
@@ -102,11 +102,3 @@
    params: data
  })
}
// ç”Ÿäº§å¼€æŠ¥å·¥ï¼šå‘æ–™/收料时获取外协下拉列表
export function MesOrderStepSelectWX(data) {
  return request({
    url: 'DeviceManager/MesOrderStepSelectWX',
    method: 'get',
    params: data
  })
}
src/api/scgl.js
@@ -184,3 +184,21 @@
    params: data
  })
}
// ç”Ÿäº§å¼€æŠ¥å·¥ï¼šäººå‘˜ä¸‹æ‹‰åˆ—表
export function MesOrderSelectUser(data) {
  return request({
    url: 'ProductionManagement/MesOrderSelectUser',
    method: 'get',
    params: data
  })
}
// ç”Ÿäº§å¼€æŠ¥å·¥ï¼šå‘æ–™/收料时获取外协下拉列表
export function MesOrderStepSelectWX(data) {
  return request({
    url: 'ProductionManagement/MesOrderStepSelectWX',
    method: 'get',
    params: data
  })
}
src/router/index.js
@@ -78,31 +78,31 @@
    children: [
      {
        path: 'zzjg',
        name: 'ZZJG',
        name: 'ZZJGCancel',
        code: '1010',
        component: () => import('@/views/jcsz/zzjg'),
        meta: { code: '1010', title: '组织架构', icon: '', keepAlive: true }
      }, {
        path: 'yhqd',
        name: 'YYQD',
        name: 'YYQDCancel',
        code: '1011',
        component: () => import('@/views/jcsz/yhqd'),
        meta: { code: '1011', title: '用户清单', icon: '', keepAlive: true }
      }, {
        path: 'jsqd',
        name: 'JSQD',
        name: 'JSQDCancel',
        code: '1012',
        component: () => import('@/views/jcsz/jsqd'),
        meta: { code: '1012', title: '角色清单', icon: '', keepAlive: true }
      }, {
        path: 'wldw',
        name: 'WLDW',
        name: 'WLDWCancel',
        code: '1013',
        component: () => import('@/views/jcsz/wldw'),
        meta: { code: '1013', title: '往来单位', icon: '', keepAlive: true }
      }, {
        path: 'adsz',
        name: 'ADZZ',
        name: 'ADZZCancel',
        code: '1014',
        component: () => import('@/views/jcsz/adsz'),
        meta: { code: '1014', title: '安灯设置', icon: '', keepAlive: true }
@@ -120,68 +120,68 @@
    children: [
      {
        path: 'sblx',
        name: 'SBLX',
        name: 'SBLXCancel',
        code: '1020',
        component: () => import('@/views/sbgl/sblx'),
        meta: { code: '1020', title: '设备类型', icon: '', keepAlive: true }
      },
      {
        path: 'wxjl',
        code: '1029',
        code: '1029Cancel',
        name: 'WXJL',
        component: () => import('@/views/sbgl/wxjl'),
        meta: { code: '1029', title: '维修记录', icon: '', keepAlive: true }
      }, {
        path: 'sbz',
        name: 'SBZ',
        name: 'SBZCancel',
        code: '1021',
        component: () => import('@/views/sbgl/sbz'),
        meta: { code: '1021', title: '设备组', icon: '', keepAlive: true }
      }, {
        path: 'sbqd',
        name: '设备清单',
        name: '设备清单Cancel',
        code: '1022',
        component: () => import('@/views/sbgl/sbqd'),
        meta: { code: '1022', title: '设备清单', icon: '', keepAlive: true }
      },
      {
        path: 'djbz',
        name: 'DJBZ',
        name: 'DJBZCancel',
        code: '1023',
        component: () => import('@/views/sbgl/djbz'),
        meta: { code: '1023', title: '点检标准', icon: '', keepAlive: true }
      },
      {
        path: 'djbw',
        name: 'DJBW',
        name: 'DJBWCancel',
        code: '1024',
        component: () => import('@/views/sbgl/djbw'),
        meta: { code: '1024', title: '点检部位', icon: '', keepAlive: true }
      },
      {
        path: 'bybz',
        name: 'BYBZ',
        name: 'BYBZCancel',
        code: '1025',
        component: () => import('@/views/sbgl/bybz'),
        meta: { code: '1025', title: '保养标准', icon: '', keepAlive: true }
      },
      {
        path: 'bybw',
        name: 'BYBW',
        name: 'BYBWCancel',
        code: '1026',
        component: () => import('@/views/sbgl/bybw'),
        meta: { code: '1026', title: '保养部位', icon: '', keepAlive: true }
      },
      {
        path: 'djjl',
        name: 'DJJL',
        name: 'DJJLCancel',
        code: '1027',
        component: () => import('@/views/sbgl/djjl'),
        meta: { code: '1027', title: '点检记录', icon: '', keepAlive: true }
      },
      {
        path: 'byjl',
        name: 'BYJL',
        name: 'BYJLCancel',
        code: '1028',
        component: () => import('@/views/sbgl/byjl'),
        meta: { code: '1028', title: '保养记录', icon: '', keepAlive: true }
@@ -199,67 +199,67 @@
    children: [
      {
        path: 'gzlx',
        name: 'GZLX',
        name: 'GZLXCancel',
        code: '1030',
        component: () => import('@/views/gzgl/gzlx'),
        meta: { code: '1030', title: '工装类型', icon: '', keepAlive: true }
      }, {
        path: 'sjxj',
        name: 'SJXJ',
        name: 'SJXJCancel',
        code: '1039',
        component: () => import('@/views/gzgl/sjxj'),
        meta: { code: '1039', title: '上机下机', icon: '', keepAlive: true }
      }, {
        path: 'ckrk',
        name: 'CKRK',
        name: 'CKRKCancel',
        code: '1040',
        component: () => import('@/views/gzgl/ckrk'),
        meta: { code: '1040', title: '出库入库', icon: '', keepAlive: true }
      }, {
        path: 'gzqd',
        name: 'GZQD',
        name: 'GZQDCancel',
        code: '1031',
        component: () => import('@/views/gzgl/gzqd'),
        meta: { code: '1031', title: '工装清单', icon: '', keepAlive: true }
      }, {
        path: 'djbz',
        name: 'DJBZ',
        name: 'DJBZCancel',
        code: '1032',
        component: () => import('@/views/gzgl/djbz'),
        meta: { code: '1032', title: '点检标准', icon: '', keepAlive: true }
      }, {
        path: 'djbw',
        name: 'DJBW',
        name: 'DJBWCancel',
        code: '1033',
        component: () => import('@/views/gzgl/djbw'),
        meta: { code: '1033', title: '点检部位', icon: '', keepAlive: true }
      }, {
        path: 'bybz',
        name: 'BYBZ',
        name: 'BYBZCancel',
        code: '1034',
        component: () => import('@/views/gzgl/bybz'),
        meta: { code: '1034', title: '保养标准', icon: '', keepAlive: true }
      }, {
        path: 'bybw',
        name: 'BYBW',
        name: 'BYBWCancel',
        code: '1035',
        component: () => import('@/views/gzgl/bybw'),
        meta: { code: '1035', title: '保养部位', icon: '', keepAlive: true }
      }, {
        path: 'djjl',
        name: 'DJJL',
        name: 'DJJLCancel',
        code: '1036',
        component: () => import('@/views/gzgl/djjl'),
        meta: { code: '1036', title: '点检记录', icon: '', keepAlive: true }
      }, {
        path: 'byjl',
        name: 'BYJL',
        name: 'BYJLCancel',
        code: '1037',
        component: () => import('@/views/gzgl/byjl'),
        meta: { code: '1037', title: '保养记录', icon: '', keepAlive: true }
      }, {
        path: 'gzwx',
        name: 'GZWX',
        name: 'GZWXCancel',
        code: '1038',
        component: () => import('@/views/gzgl/gzwx'),
        meta: { code: '1038', title: '工装维修', icon: '', keepAlive: true }
@@ -277,38 +277,38 @@
    children: [
      {
        path: 'ckdy',
        name: 'CKDY',
        name: 'CKDYCancel',
        code: '1050',
        component: () => import('@/views/wlgl/ckdy'),
        meta: { code: '1050', title: '仓库定义', icon: '', keepAlive: true }
      },
      {
        path: 'kwdy',
        name: 'KWDY',
        name: 'KWDYCancel',
        code: '1051',
        component: () => import('@/views/wlgl/kwdy'),
        meta: { code: '1051', title: '库位定义', icon: '', keepAlive: true }
      }, {
        path: 'rqlx',
        name: 'RYLX',
        name: 'RYLXCancel',
        code: '1052',
        component: () => import('@/views/wlgl/rqlx'),
        meta: { code: '1052', title: '容器类型', icon: '', keepAlive: true }
      }, {
        path: 'rqqd',
        name: 'RQQD',
        name: 'RQQDCancel',
        code: '1053',
        component: () => import('@/views/wlgl/rqqd'),
        meta: { code: '1053', title: '容器清单', icon: '', keepAlive: true }
      }, {
        path: 'crkjl',
        name: 'CRKJL',
        name: 'CRKJLCancel',
        code: '1054',
        component: () => import('@/views/wlgl/crkjl'),
        meta: { code: '1054', title: '出入库记录', icon: '', keepAlive: true }
      }, {
        path: 'kccx',
        name: 'KCCX',
        name: 'KCCXCancel',
        code: '1055',
        component: () => import('@/views/wlgl/kccx'),
        meta: { code: '1055', title: '库存查询', icon: '', keepAlive: true }
@@ -326,40 +326,40 @@
    children: [
      {
        path: 'wllx',
        name: 'WLLX',
        name: 'WLLXCancel',
        code: '1060',
        component: () => import('@/views/zzmx/wllx'),
        meta: { code: '1060', title: '物料类型', icon: '', keepAlive: true }
      },
      {
        path: 'chda',
        name: 'CHDA',
        name: 'CHDACancel',
        code: '1061',
        component: () => import('@/views/zzmx/chda'),
        meta: { code: '1061', title: '存货档案', icon: '', keepAlive: true }
      }, {
        path: 'wlqd',
        name: 'WLQD',
        name: 'WLQDCancel',
        code: '1062',
        component: () => import('@/views/zzmx/wlqd'),
        meta: { code: '1062', title: '物料清单', icon: '', keepAlive: true }
      },
      {
        path: 'gylx',
        name: 'GYLX',
        name: 'GYLXCancel',
        code: '1063',
        component: () => import('@/views/zzmx/gylx'),
        meta: { code: '1063', title: '工艺路线', icon: '', keepAlive: true }
      }, {
        path: 'gxdy',
        name: 'GXDY',
        name: 'GXDYCancel',
        code: '1064',
        component: () => import('@/views/zzmx/gxdy'),
        meta: { code: '1064', title: '工序定义', icon: '', keepAlive: true }
      },
      {
        path: 'jpgj',
        name: 'JPGJ',
        name: 'JPGJCancel',
        code: '1065',
        component: () => import('@/views/zzmx/jpgj'),
        meta: { code: '1065', title: '节拍工价', icon: '', keepAlive: true }
@@ -377,25 +377,25 @@
    children: [
      {
        path: 'scdd',
        name: 'SCDD',
        name: 'SCDDCancel',
        code: '1070',
        component: () => import('@/views/scgl/scdd'),
        meta: { code: '1070', title: 'ERP生产订单', icon: '', keepAlive: true }
      }, {
        path: 'gd',
        name: 'GD',
        name: 'GDCancel',
        code: '1071',
        component: () => import('@/views/scgl/gd'),
        meta: { code: '1071', title: 'MES工单', icon: '', keepAlive: true }
      }, {
        path: 'gdpg',
        name: 'GDPD',
        name: 'GDPDCancel',
        code: '1072',
        component: () => import('@/views/scgl/gdpg'),
        meta: { code: '1072', title: '工单派工', icon: '', keepAlive: true }
      }, {
        path: 'sckbg',
        name: 'SCKBG',
        name: 'SCKBGCancel',
        code: '1073',
        component: () => import('@/views/scgl/sckbg'),
        meta: { code: '1073', title: '生产开报工', icon: '', keepAlive: true }
@@ -413,31 +413,31 @@
    children: [
      {
        path: 'zjbz',
        name: 'ZJBZ',
        name: 'ZJBZCancel',
        code: '1080',
        component: () => import('@/views/zlgl/zjbz'),
        meta: { code: '1080', title: '质检标准', icon: '', keepAlive: true }
      }, {
        path: 'qxdy',
        name: 'QXDY',
        name: 'QXDYCancel',
        code: '1081',
        component: () => import('@/views/zlgl/qxdy'),
        meta: { code: '1081', title: '缺陷定义', icon: '', keepAlive: true }
      }, {
        path: 'gxjy',
        name: 'GXDY',
        name: 'GXDYCancel',
        code: '1082',
        component: () => import('@/views/zlgl/gxjy'),
        meta: { code: '1082', title: '工序检验', icon: '', keepAlive: true }
      }, {
        path: 'wljy',
        name: 'WLJY',
        name: 'WLJYCancel',
        code: '1083',
        component: () => import('@/views/zlgl/wljy'),
        meta: { code: '1083', title: '物流检验', icon: '', keepAlive: true }
      }, {
        path: 'qxsj',
        name: 'QXSJ',
        name: 'QXSJCancel',
        code: '1084',
        component: () => import('@/views/zlgl/qxsj'),
        meta: { code: '1084', title: '缺陷统计', icon: '', keepAlive: true }
@@ -455,25 +455,25 @@
    children: [
      {
        path: 'bmgz',
        name: 'BMGZ',
        name: 'BMGZCancel',
        code: '1101',
        component: () => import('@/views/xtsz/bmgz'),
        meta: { code: '1101', title: '编码规则', icon: '', keepAlive: true }
      }, {
        path: 'mmxg',
        name: 'MMXG',
        name: 'MMXGCancel',
        code: '1102',
        component: () => import('@/views/xtsz/mmxg'),
        meta: { code: '1102', title: '密码修改', icon: '', keepAlive: true }
      }, {
        path: 'xtrz',
        name: 'XTRZ',
        name: 'XTRZCancel',
        code: '1103',
        component: () => import('@/views/xtsz/xtrz'),
        meta: { code: '1103', title: '系统日志', icon: '', keepAlive: true }
      }, {
        path: 'sc',
        name: 'SC',
        name: 'SCCancel',
        code: '1104',
        component: () => import('@/views/xtsz/sc'),
        meta: { code: '1104', title: 'SOP上传', icon: '', keepAlive: true }
src/utils/request.js
@@ -55,7 +55,7 @@
      Message({
        message: res.Message || 'Error',
        type: 'error',
        duration: 10 * 1000
        duration: 5 * 1000
      })
      // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired;
@@ -81,7 +81,7 @@
    Message({
      message: error.message,
      type: 'error',
      duration: 10 * 1000
      duration: 5 * 1000
    })
    return Promise.reject(error)
  }
src/views/jcsz/jsqd.vue
@@ -23,8 +23,8 @@
                filterable
                style="width: 200px"
                placeholder="请选择"
                @focus="getRoleTypeSearch2"
              >
                <!--                @focus="getRoleTypeSearch2"-->
                <el-option
                  v-for="item in RoleTypeCodeArr2"
                  :key="item.roletype_code"
@@ -311,10 +311,10 @@
              :options="StuOrgArr"
              :props="defaultProps"
              style="width: 200px;"
              @focus="getUserOrganization"
              @change="dialogCascaderChange"
            />
            <!--            @focus="getUserOrganization"-->
          </el-form-item>
          <el-form-item label="关联角色">
            <el-select
@@ -635,8 +635,8 @@
  },
  created() {
    this.getRoleSearch()
    // this.getRoleTypeSearch2()
    // this.getUserOrganization()
    this.getRoleTypeSearch2()
    this.getUserOrganization()
  },
  mounted() {
    window.addEventListener('resize', this.getHeight)
src/views/jcsz/yhqd.vue
@@ -23,9 +23,10 @@
                popper-class="elCascader"
                :options="StuOrgArr"
                :props="defaultProps"
                @focus="getUserOrganization"
                @change="cascaderChange"
              />
              <!--              @focus="getUserOrganization"-->
            </el-form-item>
            <el-form-item label="工资类型" style=" display: flex;">
              <el-select v-model="form.wagetype" :popper-append-to-body="false" filterable style="width: 200px" placeholder="请选择">
@@ -626,7 +627,7 @@
  },
  created() {
    this.getUserSearch()
    // this.getUserOrganization()
    this.getUserOrganization()
  },
  mounted() {
    window.addEventListener('resize', this.getHeight)
src/views/jcsz/zzjg.vue
@@ -79,11 +79,11 @@
            sortable="custom"
          >
            <template slot-scope="{row}">
              <div v-if="row.description==='F'">工厂</div>
              <!--              <div v-if="row.description==='F'">工厂</div>-->
              <div v-if="row.description==='D'">部门</div>
              <div v-if="row.description==='W'">车间</div>
              <div v-if="row.description==='K'">科室</div>
              <div v-if="row.description==='L'">生产线</div>
              <!--              <div v-if="row.description==='K'">科室</div>-->
              <!--              <div v-if="row.description==='L'">生产线</div>-->
            </template>
          </el-table-column>
          <el-table-column
@@ -160,7 +160,8 @@
        <el-form-item label="组织名称" prop="OrgName">
          <el-input v-model="dialogForm.OrgName" style="width: 200px" />
        </el-form-item>
        <el-form-item v-if="dialogFormOrgTypeSelected!=='F'" prop="SupUnit" label="上级单位">
        <!--        <el-form-item v-if="dialogFormOrgTypeSelected!=='F'" prop="SupUnit" label="上级单位">-->
        <el-form-item v-if="dialogFormOrgTypeSelected!=='D'" prop="SupUnit" label="上级单位">
          <el-select
            v-model="dialogForm.SupUnit"
            style="width: 200px"
@@ -235,11 +236,11 @@
        rows: 20 // æ¯é¡µå¤šå°‘条
      },
      OrgTypeArr: [
        { label: '工厂', value: 'F' },
        // { label: '工厂', value: 'F' },
        { label: '部门', value: 'D' },
        { label: '车间', value: 'W' },
        { label: '科室', value: 'K' },
        { label: '生产线', value: 'L' }
        { label: '车间', value: 'W' }
        // { label: '科室', value: 'K' },
        // { label: '生产线', value: 'L' }
      ],
      total: 10,
@@ -347,7 +348,8 @@
      } else {
        this.dialogFormOrgTypeSelected = val
      }
      if (this.dialogFormOrgTypeSelected !== 'F') {
      // if (this.dialogFormOrgTypeSelected !== 'F') {
      if (this.dialogFormOrgTypeSelected !== 'D') {
        const { data: res } = await PrentOrganization({ orgcode: this.dialogFormOrgTypeSelected })
        this.SupUnitArr = res
      }
@@ -366,17 +368,19 @@
    edit(operation, row) {
      this.operation = operation
      this.dialogVisible = true
      if (row.description === 'F') {
        this.dialogForm.OrgType = '工厂'
      } else if (row.description === 'D') {
      // if (row.description === 'F') {
      //   this.dialogForm.OrgType = '工厂'
      // } else
      if (row.description === 'D') {
        this.dialogForm.OrgType = '部门'
      } else if (row.description === 'W') {
        this.dialogForm.OrgType = '车间'
      } else if (row.description === 'K') {
        this.dialogForm.OrgType = '科室'
      } else if (row.description === 'L') {
        this.dialogForm.OrgType = '生产线'
      }
      // else if (row.description === 'K') {
      //   this.dialogForm.OrgType = '科室'
      // } else if (row.description === 'L') {
      //   this.dialogForm.OrgType = '生产线'
      // }
      this.$nextTick(() => {
        this.changeRadio(this.dialogForm.OrgType)
        this.dialogForm.OrgCode = row.org_code
@@ -425,7 +429,8 @@
            numvalue: '',
            // RightCode: this.operation === 'add' ? getCookie('ruleCode') : '',
            // numvalue: this.operation === 'add' ? this.numvalue : '',
            SupUnit: this.dialogFormOrgTypeSelected === 'F' ? '0' : this.dialogForm.SupUnit,
            // SupUnit: this.dialogFormOrgTypeSelected === 'F' ? '0' : this.dialogForm.SupUnit,
            SupUnit: this.dialogFormOrgTypeSelected === 'D' ? '0' : this.dialogForm.SupUnit,
            OperType: this.operation === 'add' ? 'Add' : 'Update',
            Operator: getCookie('admin')
          }
src/views/sbgl/sbqd.vue
@@ -39,8 +39,8 @@
                filterable
                style="width: 200px"
                placeholder="请选择"
                @focus="getWorkShopSelect"
              >
                <!--                @focus="getWorkShopSelect"-->
                <el-option
                  v-for="item in WorkShopArr"
                  :key="item.code"
@@ -56,9 +56,10 @@
                style="width: 200px"
                filterable
                placeholder="请选择"
                @focus="getDeviceTypeSelect"
                @change="deviceTypeChange"
              >
                <!--                @focus="getDeviceTypeSelect"-->
                <el-option
                  v-for="item in DeviceTypeArr"
                  :key="item.code"
@@ -286,6 +287,8 @@
            placeholder="请选择"
            @change="workshopcodeChange"
          >
            <!--            @focus="getWorkShopSelect"-->
            <el-option
              v-for="item in WorkShopArr"
              :key="item.code"
@@ -665,9 +668,9 @@
    // èŽ·å–è®¾å¤‡æ¸…å•åˆ—è¡¨
    this.getDeviceMangerSearch()
    // èŽ·å–è®¾å¤‡ç±»åž‹ä¸‹æ‹‰
    // this.getDeviceTypeSelect()
    this.getDeviceTypeSelect()
    // èŽ·å–æ‰€å±žè½¦é—´ä¸‹æ‹‰
    // this.getWorkShopSelect()
    this.getWorkShopSelect()
  },
  mounted() {
    window.addEventListener('resize', this.getHeight)
src/views/scgl/gd.vue
@@ -424,10 +424,11 @@
      <el-dialog
        title="工序"
        :visible.sync="dialogVisibleSearch"
        width="540px"
        top="25vh"
        width="840px"
        top="20vh"
        class="dialogVisibleSearch"
        append-to-body
        :close-on-click-modal="false"
      >
        <el-table
          :data="searchTableData"
@@ -470,7 +471,8 @@
      <span slot="footer" class="dialog-footer">
        <div class="footerButton">
          <el-button @click="dialogVisibleCancel">取 æ¶ˆ</el-button>
          <el-button type="primary" @click="dialogVisibleConfirm">ç¡® å®š</el-button>
          <el-button v-if="operation==='add'" type="primary" @click="dialogVisibleConfirm">ç¡® å®š</el-button>
          <el-button v-else type="primary" @click="dialogVisibleConfirm">ç¡® å®š/打 å°</el-button>
        </div>
      </span>
    </el-dialog>
@@ -563,6 +565,9 @@
import { WorkShopSelect } from '@/api/sbgl'
import { PartSelect, PartSelectRpute } from '@/api/zzmx'
import { handleDatetime } from '@/utils/global'
import { getCookie } from '@/utils/auth'
import { MesOrderPrintSearch1 } from '@/api/utils'
import { urlAddRandomNo, webapp_ws_ajax_run } from '@/utils/grwebapp'
const SER_HZ = /^[\u4e00-\u9fa5]+$/
export default {
@@ -787,7 +792,7 @@
      this.dialogForm.wkshopcode = ''
    },
    // å·¥è‰ºè·¯çº¿å€¼æ”¹å˜
    async   routecodeChange(val) {
    async routecodeChange(val) {
      const data = {
        partcode: this.dialogForm.partcode,
        routecode: this.dialogForm.routecode
@@ -798,7 +803,7 @@
      this.dialogForm.wkshopcode = ''
    },
    // å·¥åºä»»åŠ¡
    async  check(row) {
    async check(row) {
      this.dialogVisibleTask = true
      const { data: res } = await SearchWorkStep({ wo_code: row.wo_code })
      this.taskTableData = res
@@ -956,9 +961,11 @@
            orderlev: this.dialogForm.orderlev, // å·¥å•等级
            OperType: this.operation === 'add' ? 'Add' : 'Update'
          }
          console.log(data, 1)
          AddUpdateMesOrder(data).then(res => {
            if (res.code === '200') {
              if (this.operation !== 'add') {
                // this.sendPrint()
              }
              this.$message.success(this.operation === 'add' ? '添加成功!' : '派发成功!')
              this.dialogVisible = false
              this.getMesOrderSearch()
@@ -968,6 +975,25 @@
          })
        }
      })
    },
    // æ´¾å‘打印
    async sendPrint() {
      const data = {
        username: getCookie('admin'),
        mesordercode: this.dialogForm.mesordercode
      }
      const res = await MesOrderPrintSearch1(data)
      if (res.code === '200') {
        // å‚数具体说明请参考帮助文档中的“WEB报表(B/S报表)->WEB报表客户端->启动参数说明”部分
        var args = {
          type: 'print', // preview  print
          showOptionDlg: false, // å¦‚果不显示打印对话框而直接打印,将此行注释去掉即可
          report: urlAddRandomNo('./static/grf/产品流传单A4.grf'),
          data: res.data
        }
        webapp_ws_ajax_run(args)
      }
    },
    // èŽ·å–é¡µé¢é«˜åº¦
    getHeight() {
@@ -1048,6 +1074,7 @@
::v-deep .el-dialog__body {
  padding: 20px 100px !important;
}
.dialogVisibleSearch ::v-deep .el-dialog__body {
  padding: 20px 20px !important;
}
src/views/scgl/gdpg.vue
@@ -1,5 +1,5 @@
<template>
  <div>
  <div v-if="false">
    <h3>报表直接打印,通过AJAX方式获取报表模板与报表数据</h3>
    <p><a href="javascript:void" @click.prevent="printClick">直接打印</a></p>
  </div>
@@ -29,7 +29,7 @@
        mesordercode: 'PO202206280001_4'
      }
      const res = await MesOrderPrintSearch1(data)
      this.OBJ = res.data
      console.log(this.OBJ = res.data, 8989)
      if (res.code === '200') {
        this.ws_ajax_print()
      }
@@ -38,7 +38,7 @@
    ws_ajax_print() {
      // å‚数具体说明请参考帮助文档中的“WEB报表(B/S报表)->WEB报表客户端->启动参数说明”部分
      var args = {
        type: 'print', // preview
        type: 'preview', // preview  print
        showOptionDlg: false, // å¦‚果不显示打印对话框而直接打印,将此行注释去掉即可
        report: urlAddRandomNo('./static/grf/产品流传单A4.grf'),
        data: this.OBJ
src/views/scgl/sckbg.vue
@@ -6,7 +6,7 @@
        <el-tab-pane label="生产列表">
          <div style="margin-left: 10px;margin-top:10px;display: flex;justify-content: space-between">
            <div style="display: flex;align-items: center">
              <div style="width: 70px">工序码:</div>
              <div style="width: 70px">扫码:</div>
              <el-input
                v-model="form.orderstepqrcode"
                oninput="value=value.replace(/[^0-9a-zA-Z;_]/g,'')"
@@ -15,7 +15,7 @@
                @keyup.enter.native="val=>enterNative(val,'produceCode')"
              />
            </div>
            <div style="display: flex;padding-right: 10px">
            <div v-if="false" style="display: flex;padding-right: 10px">
              <el-button @click="ZZstart">
                <svg-icon icon-class="start_time" style="margin-right: 2px" />
                å¼€å§‹
@@ -39,19 +39,19 @@
              :cell-style="this.$cellStyle"
              @sort-change="sortChange"
            >
              <el-table-column
                width="50"
                fixed
              >
                <template slot-scope="{row}">
                  <el-radio
                    v-model="radioSelected"
                    :label="row.wo"
                    style="color: #fff;padding-left: 10px; margin-right: -25px;"
                    @change.native="getCurrentRow(row.wo)"
                  />
                </template>
              </el-table-column>
              <!--              <el-table-column-->
              <!--                width="50"-->
              <!--                fixed-->
              <!--              >-->
              <!--                <template slot-scope="{row}">-->
              <!--                  <el-radio-->
              <!--                    v-model="radioSelected"-->
              <!--                    :label="row.wo"-->
              <!--                    style="color: #fff;padding-left: 10px; margin-right: -25px;"-->
              <!--                    @change.native="getCurrentRow(row.wo)"-->
              <!--                  />-->
              <!--                </template>-->
              <!--              </el-table-column>-->
              <el-table-column
                prop="RowNum"
                width="50"
@@ -74,23 +74,19 @@
                prop="wo_code"
                label="工单号"
                sortable="custom"
                width="160"
              />
              <el-table-column
                prop="partcode"
                label="产品编码"
                sortable="custom"
                width="150"
              />
              <el-table-column
                prop="partname"
                label="产品名称"
                sortable="custom"
                width="150"
              />
              <el-table-column
                prop="seq"
                width="80"
                prop="stepname"
                label="工序"
                sortable="custom"
              />
@@ -103,14 +99,13 @@
              <el-table-column
                prop="plan_qty"
                label="任务数量"
                width="150"
                sortable="custom"
              />
              <el-table-column
                prop="good_qty"
                label="已报工数量"
                label="已报工数量(良品)"
                sortable="custom"
                width="150"
                width="160"
              />
              <el-table-column
                prop="ng_qty"
@@ -168,7 +163,7 @@
                  :value="item.code"
                />
              </el-select>
              <div style="width: 70px;margin-left: 20px">工序码:</div>
              <div style="width: 70px;margin-left: 20px">扫码:</div>
              <el-input
                v-model="WXform.orderstepqrcode"
                oninput="value=value.replace(/[^0-9a-zA-Z;_]/g,'')"
@@ -177,7 +172,7 @@
                @keyup.enter.native="val=>enterNative(val,'WXproduceCode')"
              />
            </div>
            <div style="display: flex;padding-right: 10px">
            <div v-if="false" style="display: flex;padding-right: 10px">
              <el-button @click="WXsend">
                <svg-icon icon-class="start_time" style="margin-right: 2px" />
                å‘æ–™
@@ -201,19 +196,19 @@
              :cell-style="this.$cellStyle"
              @sort-change="WXsortChange"
            >
              <el-table-column
                width="50"
                fixed
              >
                <template slot-scope="{row}">
                  <el-radio
                    v-model="radioSelected"
                    :label="row.wo_code"
                    style="color: #fff;padding-left: 10px; margin-right: -25px;"
                    @change.native="getWXCurrentRow(row.wo_code)"
                  />
                </template>
              </el-table-column>
              <!--              <el-table-column-->
              <!--                width="50"-->
              <!--                fixed-->
              <!--              >-->
              <!--                <template slot-scope="{row}">-->
              <!--                  <el-radio-->
              <!--                    v-model="radioSelected"-->
              <!--                    :label="row.wo_code"-->
              <!--                    style="color: #fff;padding-left: 10px; margin-right: -25px;"-->
              <!--                    @change.native="getWXCurrentRow(row.wo_code)"-->
              <!--                  />-->
              <!--                </template>-->
              <!--              </el-table-column>-->
              <el-table-column
                prop="RowNum"
                width="50"
@@ -228,31 +223,27 @@
                <template slot-scope="{row}">
                  <div v-if="row.status==='NEW'">新订单</div>
                  <div v-if="row.status==='ALLO'">已派发</div>
                  <div v-if="row.status==='START'">开工</div>
                  <div v-if="row.status==='CLOSED'">完工</div>
                  <div v-if="row.status==='START'">已发料</div>
                  <div v-if="row.status==='CLOSED'">已收料</div>
                </template>
              </el-table-column>
              <el-table-column
                prop="wo_code"
                label="工单号"
                sortable="custom"
                width="160"
              />
              <el-table-column
                prop="partcode"
                label="产品编码"
                sortable="custom"
                width="150"
              />
              <el-table-column
                prop="partname"
                label="产品名称"
                sortable="custom"
                width="150"
              />
              <el-table-column
                prop="stepname"
                width="100"
                label="工序"
                sortable="custom"
              />
@@ -265,14 +256,13 @@
              <el-table-column
                prop="plan_qty"
                label="任务数量"
                width="150"
                sortable="custom"
              />
              <el-table-column
                prop="good_qty"
                label="已报工数量"
                label="已收料数量(良品)"
                sortable="custom"
                width="150"
                width="160"
              />
              <el-table-column
                prop="ng_qty"
@@ -328,7 +318,13 @@
      @close="handleClose"
      @closed="handleClose"
    >
      <el-form ref="dialogForm" inline :model="dialogForm" label-width="110px">
      <el-form
        ref="dialogForm"
        inline
        :rules="dialogFormRules"
        :model="dialogForm"
        label-width="110px"
      >
        <el-form-item label="工单编号:">
          <div style="width: 200px">{{ dialogForm.wo_code }}</div>
        </el-form-item>
@@ -354,75 +350,89 @@
        <el-form-item label="任务数量:">
          <div style="width: 200px">{{ dialogForm.planqty }}</div>
        </el-form-item>
        <el-form-item :label="dialogTitle==='自制开始'||dialogTitle==='自制报工'?'未报/已报:':'未发/已发:'">
        <el-form-item v-if="dialogTitle==='自制开始'" label="未开/已开:">
          <div style="width: 200px">{{ dialogForm.noreportqty }}/{{ dialogForm.reportqty }}</div>
        </el-form-item>
        <el-form-item v-if="dialogTitle==='自制报工'" label="未报/已报:">
          <div style="width: 200px">{{ dialogForm.noreportqty }}/{{ dialogForm.reportqty }}</div>
        </el-form-item>
        <el-form-item v-if="dialogTitle==='外协发料'" label="未发/已发:">
          <div style="width: 200px">{{ dialogForm.noreportqty }}/{{ dialogForm.reportqty }}</div>
        </el-form-item>
        <el-form-item v-if="dialogTitle==='外协收料'" label="未收/已收:">
          <div style="width: 200px">{{ dialogForm.noreportqty }}/{{ dialogForm.reportqty }}</div>
        </el-form-item>
        <!--自制开始-->
        <el-form-item v-if="dialogTitle==='自制开始'" label="开工数量:">
          <div style="width: 200px">1000</div>
          <div style="width: 200px">{{ dialogForm.startqty }}</div>
        </el-form-item>
        <el-form-item v-if="dialogTitle==='自制开始'" label="生产设备:">
        <el-form-item v-if="dialogTitle==='自制开始'" prop="eqpcode" label="生产设备:">
          <el-select
            v-model="dialogForm.OrgType"
            v-model="dialogForm.eqpcode"
            style="width: 200px;"
            placeholder="请选择"
          >
            <el-option
              v-for="item in options"
              :key="item.value"
              :label="item.label"
              :value="item.value"
              v-for="item in ZZeqpArr"
              :key="item.code"
              :label="item.name"
              :value="item.code"
            />
          </el-select>
        </el-form-item>
        <!--     è‡ªåˆ¶æŠ¥å·¥   -->
        <el-form-item v-if="dialogTitle==='自制报工'" label="下道工序:">
          <div style="width: 200px">B工序</div>
          <div style="width: 200px">{{ dialogForm.nextstepname }}</div>
        </el-form-item>
        <el-form-item v-if="dialogTitle==='自制报工'" label="设备名称:">
        <el-form-item v-if="dialogTitle==='自制报工'" prop="usergroupcode" label="生产班组:">
          <el-select
            v-model="dialogForm.OrgType"
            v-model="dialogForm.usergroupcode"
            style="width: 200px;"
            placeholder="请选择"
            @change="usergroupChange"
          >
            <el-option
              v-for="item in options"
              :key="item.value"
              :label="item.label"
              :value="item.value"
            />
          </el-select>
        </el-form-item>
        <el-form-item v-if="dialogTitle==='自制报工'" label="生产班组:">
          <el-select
            v-model="dialogForm.OrgType"
            style="width: 200px;"
            placeholder="请选择"
          >
            <el-option
              v-for="item in options"
              v-for="item in ZZtreams"
              :key="item.group_code"
              :label="item.group_name"
              :value="item.group_code"
            />
          </el-select>
        </el-form-item>
        <el-form-item v-if="dialogTitle==='自制报工'" label="报工数量:">
          <el-input v-model="dialogForm.OrgName" oninput="value=value.replace(/[^0-9.]/g,'')" style="width: 200px;" />
        </el-form-item>
        <el-form-item v-if="dialogTitle==='自制报工'" label="不良数量:">
          <el-input v-model="dialogForm.OrgName" oninput="value=value.replace(/[^0-9.]/g,'')" style="width: 200px;" />
        </el-form-item>
        <el-form-item v-if="dialogTitle==='自制报工'" label="不良原因:">
        <el-form-item v-if="dialogTitle==='自制报工'" label="设备名称:" prop="eqpcode">
          <el-select
            v-model="dialogForm.OrgType"
            v-model="dialogForm.eqpcode"
            style="width: 200px;"
            placeholder="请选择"
          >
            <el-option
              v-for="item in options"
              :key="item.value"
              :label="item.label"
              :value="item.value"
              v-for="item in ZZeqpArr"
              :key="item.code"
              :label="item.name"
              :value="item.code"
            />
          </el-select>
        </el-form-item>
        <el-form-item v-if="dialogTitle==='自制报工'" label="报工数量:" prop="startqty">
          <el-input v-model="dialogForm.startqty" oninput="value=value.replace(/[^0-9.]/g,'')" style="width: 200px;" />
        </el-form-item>
        <el-form-item v-if="dialogTitle==='自制报工'" label="不良数量:">
          <el-input v-model="dialogForm.noputqty" oninput="value=value.replace(/[^0-9.]/g,'')" style="width: 200px;" />
        </el-form-item>
        <el-form-item v-if="dialogTitle==='自制报工'" label="不良原因:">
          <el-select
            v-model="dialogForm.badcode"
            style="width: 200px;"
            placeholder="请选择"
            :disabled="parseFloat(dialogForm.noputqty)===0||dialogForm.noputqty.trim()===''"
            multiple
          >
            <el-option
              v-for="item in badArr"
              :key="item.code"
              :label="item.name"
              :value="item.code"
            />
          </el-select>
        </el-form-item>
@@ -440,29 +450,30 @@
            style="width: 100%"
          >
            <el-table-column
              prop="RowNum"
              width="100"
              label="序号"
              type="index"
            />
            <el-table-column
              prop="name"
              prop="username"
              label="人员名称"
            >
              <template slot-scope="{row}">
                <div v-if="row.isVisible===0">{{ row.name }}</div>
                <el-input v-if="row.isVisible===1" v-model="row.name" />
                <!--                <el-select-->
                <!--                  v-if="row.isVisible===1"-->
                <!--                  v-model="dialogForm.OrgType"-->
                <!--                  style="width: 200px;"-->
                <!--                  placeholder="请选择"-->
                <!--                >-->
                <!--                  <el-option-->
                <!--                    v-for="item in options"-->
                <!--                    :key="item.value"-->
                <!--                    :label="item.label"-->
                <!--                    :value="item.value"-->
                <!--                  />-->
                <!--                </el-select>-->
                <div v-if="row.isVisible===0">{{ row.username }}</div>
                <el-select
                  v-if="row.isVisible===1"
                  v-model="row.username"
                  style="width: 200px;"
                  placeholder="请选择"
                  @change="val=>usernameChange(val,row)"
                >
                  <el-option
                    v-for="item in ZZuserArr"
                    :key="item.usercode"
                    :label="item.username"
                    :value="item.usercode"
                  />
                </el-select>
              </template>
            </el-table-column>
            <el-table-column
@@ -472,7 +483,7 @@
              <template slot-scope="{row}">
                <div class="operationClass">
                  <el-button v-if="row.isVisible===0" type="text" @click="userDel(row)">删除</el-button>
                  <el-button v-if="row.isVisible===1" type="text" @click="userSave(row)">保存</el-button>
                  <el-button v-if="row.isVisible===1&&!userIsSave" type="text" @click="userSave(row)">保存</el-button>
                  <el-button v-if="row.isVisible===1" type="text" @click="userCancel(row)">取消</el-button>
                </div>
              </template>
@@ -490,88 +501,134 @@
            @pagination="getMesOrderStepSearch"
          />
        </div>
        <el-form-item v-if="dialogTitle==='外协发料'" label="外协供方:">
        <!--     å¤–协发料-->
        <el-form-item
          v-if="dialogTitle==='外协发料'"
          label="外协供方:"
          prop="wxcode"
        >
          <el-select
            v-model="dialogForm.OrgType"
            v-model="dialogForm.wxcode"
            style="width: 200px;"
            placeholder="请选择"
            filterable
          >
            <el-option
              v-for="item in WXouterprovide"
              :key="item.code"
              :label="item.name"
              :value="item.code"
            />
          </el-select>
        </el-form-item>
        <el-form-item
          v-if="dialogTitle==='外协发料'"
          label="发料人员:"
          prop="outuser"
        >
          <el-select
            v-model="dialogForm.outuser"
            style="width: 200px;"
            placeholder="请选择"
            filterable
          >
            <el-option
              v-for="item in WXoutuser"
              :key="item.usercode"
              :label="item.username"
              :value="item.usercode"
            />
          </el-select>
        </el-form-item>
        <el-form-item
          v-if="dialogTitle==='外协发料'"
          label="发料数量:"
          prop="fqty"
        >
          <el-input v-model="dialogForm.fqty" oninput="value=value.replace(/[^0-9.]/g,'')" style="width: 200px;" />
        </el-form-item>
        <!--     å¤–协收料-->
        <el-form-item
          v-if="dialogTitle==='外协收料'"
          label="下道工序:"
        >
          <div style="width: 200px">{{ dialogForm.nextstepname }}</div>
        </el-form-item>
        <el-form-item
          v-if="dialogTitle==='外协收料'"
          label="外协供方:"
          prop="wxcode"
        >
          <el-select
            v-model="dialogForm.wxcode"
            style="width: 200px;"
            placeholder="请选择"
          >
            <el-option
              v-for="item in options"
              :key="item.value"
              :label="item.label"
              :value="item.value"
              v-for="item in WXouterprovide"
              :key="item.code"
              :label="item.name"
              :value="item.code"
            />
          </el-select>
        </el-form-item>
        <el-form-item v-if="dialogTitle==='外协发料'" label="发料人员:">
        <el-form-item
          v-if="dialogTitle==='外协收料'"
          label="收料人员:"
          prop="inuser"
        >
          <el-select
            v-model="dialogForm.OrgType"
            style="width: 200px;"
            placeholder="请选择"
            multiple
          >
            <el-option
              v-for="item in options"
              :key="item.value"
              :label="item.label"
              :value="item.value"
            />
          </el-select>
        </el-form-item>
        <el-form-item v-if="dialogTitle==='外协发料'" label="发料数量:">
          <el-input v-model="dialogForm.OrgName" oninput="value=value.replace(/[^0-9.]/g,'')" style="width: 200px;" />
        </el-form-item>
        <el-form-item v-if="dialogTitle==='外协收料'" label="下道工序:">
          <div style="width: 200px">B工序</div>
        </el-form-item>
        <el-form-item v-if="dialogTitle==='外协收料'" label="外协供方:">
          <el-select
            v-model="dialogForm.OrgType"
            v-model="dialogForm.inuser"
            style="width: 200px;"
            placeholder="请选择"
          >
            <el-option
              v-for="item in options"
              :key="item.value"
              :label="item.label"
              :value="item.value"
              v-for="item in WXoutuser"
              :key="item.usercode"
              :label="item.username"
              :value="item.usercode"
            />
          </el-select>
        </el-form-item>
        <el-form-item v-if="dialogTitle==='外协收料'" label="收料人员:">
          <el-select
            v-model="dialogForm.OrgType"
            style="width: 200px;"
            placeholder="请选择"
            multiple
          >
            <el-option
              v-for="item in options"
              :key="item.value"
              :label="item.label"
              :value="item.value"
            />
          </el-select>
        </el-form-item>
        <el-form-item v-if="dialogTitle==='外协收料'" label="收料数量:">
        <el-form-item
          v-if="dialogTitle==='外协收料'"
          label="收料数量:"
          prop="sqty"
        >
          <el-input
            v-model="dialogForm.OrgName"
            v-model="dialogForm.sqty"
            style="width: 200px"
            oninput="value=value.replace(/[^0-9.]/g,'')"
          />
        </el-form-item>
        <el-form-item v-if="dialogTitle==='外协收料'" label="不良原因:">
        <el-form-item
          v-if="dialogTitle==='外协收料'"
          label="不良数量:"
          prop="noputqty"
        >
          <el-input
            v-model="dialogForm.noputqty"
            style="width: 200px"
            oninput="value=value.replace(/[^0-9.]/g,'')"
          />
        </el-form-item>
        <el-form-item
          v-if="dialogTitle==='外协收料'"
          label="不良原因:"
          prop="badcode"
        >
          <el-select
            v-model="dialogForm.OrgType"
            v-model="dialogForm.badcode"
            style="width: 200px;"
            multiple
            :disabled="parseFloat(dialogForm.noputqty)===0||dialogForm.noputqty.trim()===''"
            placeholder="请选择"
          >
            <el-option
              v-for="item in options"
              :key="item.value"
              :label="item.label"
              :value="item.value"
              v-for="item in badArr"
              :key="item.code"
              :label="item.name"
              :value="item.code"
            />
          </el-select>
        </el-form-item>
@@ -597,12 +654,21 @@
import $ from 'jquery'
import {
  MesOrderGroupSelectUser,
  MesOrderSelectUser,
  MesOrderStepReportSelectUserGroup,
  MesOrderStepSearch, MesOrderStepStart,
  MesOrderStepSearch,
  MesOrderStepStart,
  MesOrderStepStartSelectEqp,
  MesOrderWxStepSearch
  MesOrderWxStepSearch,
  MesOrderStepSelectWX,
  SavaMesOrderStepOut,
  MesOrderStepSelectCause,
  SavaMesOrderStepIn,
  SavaMesOrderStepStart,
  SavaMesOrderStepReport
} from '@/api/scgl'
import { MesOrderStepSelectWX } from '@/api/sbgl'
import { urlAddRandomNo, webapp_ws_ajax_run } from '@/utils/grwebapp'
import { MesOrderPrintSearch1 } from '@/api/utils'
const SER_HZ = /^[\u4e00-\u9fa5]+$/
export default {
@@ -632,13 +698,13 @@
    return {
      mainHeight: 0,
      tableHeight: 0,
      produceCode: '', // å·¥åºç 
      WXproduceCode: '', // å¤–协工序码
      // produceCode: '', // å·¥åºç 
      // WXproduceCode: '', // å¤–协工序码
      radioSelected: '', // å·¥åºé€‰ä¸­
      WXradioSelected: '', // å·¥åºé€‰ä¸­
      form: {
        orderstepqrcode: 'PO202206280001_4;Step01', // æ‰«æçš„二维码信息
        prop: 'wo', // æŽ’序字段
        orderstepqrcode: '', // æ‰«æçš„二维码信息
        prop: 'wo_code', // æŽ’序字段
        order: 'asc', // æŽ’序字段
        page: 1, // ç¬¬å‡ é¡µ
        rows: 20 // æ¯é¡µå¤šå°‘条
@@ -647,7 +713,7 @@
      tableData: [],
      WXform: { // å¤–协表单
        // PO202206280001_4;Step01
        orderstepqrcode: 'PO202206280001_4;Step01', // æ‰«æçš„二维码信息
        orderstepqrcode: '', // æ‰«æçš„二维码信息
        prop: 'wo_code', // æŽ’序字段
        order: 'asc', // æŽ’序字段
        page: 1, // ç¬¬å‡ é¡µ
@@ -661,10 +727,6 @@
        { code: 'IN', name: '收料' }
      ],
      WXSelected: 'OUT', // å¤–协下拉列表选中值
      judgeIsDialog: false, // åˆ¤æ–­æ˜¯å¦è‡ªåŠ¨å¼¹çª—
      judgeIsDialogNumber: false, // åˆ¤æ–­å¼¹å“ªä¸ªçª—
      dialogVisible: false,
      dialogTitle: '', // è‡ªåˆ¶å¼€å§‹ã€è‡ªåˆ¶æŠ¥å·¥ã€å¤–协发料、外协收料
      dialogForm: {
@@ -672,51 +734,84 @@
        partcode: '', // äº§å“ç¼–码
        partname: '', // äº§å“åç§°
        partspec: '', // äº§å“è§„æ ¼
        stepseq: '', // å·¥åºåºå·
        stepcode: '', // å·¥åºç¼–码
        stepname: '', // å½“前工序名
        nextstepname: '', // ä¸‹ä¸€é“工序名
        stepdesc: '', // å·¥åºæè¿°
        planqty: '', // ä»»åŠ¡æ•°é‡
        reportqty: '', // å·²æŠ¥æ•°é‡
        noreportqty: '', // æœªæŠ¥æ•°é‡
        startqty: '' // å‘料数量
        startqty: '', // å¼€(报)工数量
        // eqpcode: '', // è®¾å¤‡ç¼–码
        // usergroupcode: '', // ç­ç»„编码
        // reportuser: '', // æŠ¥å·¥äººå‘˜
        // taskqty: '', // ä»»åŠ¡æ•°é‡
        // startqty: '', // å¼€å·¥æ•°é‡
        // reportqty: '', // æŠ¥å·¥æ•°é‡
        // ngqty: '' // ä¸è‰¯æ•°é‡
        wxcode: '', // å¤–协供应商编码
        outuser: '', // å‘料人员
        taskqty: '', // ä»»åŠ¡æ•°é‡
        fqty: '', // å‘料数量
        inuser: '', // æ”¶æ–™äººå‘˜
        sqty: '', // æ”¶æ–™æ•°é‡
        ngqty: '', // ä¸è‰¯æ•°é‡
        badcode: '', // ä¸è‰¯åŽŸå› ç¼–ç 
        noputqty: '', // ä¸è‰¯æ•°é‡
        eqpcode: '', // ç”Ÿäº§è®¾å¤‡ç¼–码
        usergroupcode: '', // ç­ç»„编码
        reportuser: '', // æŠ¥å·¥äººå‘˜
        startqtySum: '' // ä¸èƒ½è¶…过的数值
      },
      userTableData: [
        { RowNum: 1, name: '张三' },
        { RowNum: 2, name: '李四' }
      ], // äººå‘˜åˆ—表
      ZZuserArr: [], // è‡ªåˆ¶ç”¨æˆ·æ‰€æœ‰
      ZZtreams: [], // è‡ªåˆ¶ç”Ÿäº§ç­ç»„数组
      ZZeqpArr: [], // è‡ªåˆ¶è®¾å¤‡åç§°
      badArr: [], // ä¸è‰¯åŽŸå› æ•°ç»„
      WXouterprovide: [], // å¤–协供方数组
      WXoutuser: [], // å‘料人员数组
      userTableData: [], // äººå‘˜åˆ—表
      UserTotal: 0,
      Userform: {
      }
      Userform: {},
      userIsSave: false, // æ­¤äººå‘˜æ˜¯å¦å¯ä¿æŒ
      // operation: '',
      // dialogFormRules: {
      //   OrgType: [
      //     { required: true, message: '请输入选择类型', trigger: ['blur', 'change'] }
      //   ],
      //   OrgCode: [
      //     { required: true, validator: validateName, trigger: ['blur', 'change'] }
      //   ],
      //   OrgName: [
      //     { required: true, message: '请输入名称', trigger: ['blur', 'change'] }
      //   ],
      //   SupUnit: [
      //     { required: true, validator: validateTypeCode, trigger: ['blur', 'change'] }
      //   ]
      // }
      dialogFormRules: {
        outuser: [
          { required: true, message: '请选择发料人员', trigger: ['blur', 'change'] }
        ],
        fqty: [
          { required: true, message: '请输入发料数量', trigger: ['blur', 'change'] }
        ],
        wxcode: [
          { required: true, message: '请选择外协供方', trigger: ['blur', 'change'] }
        ],
        inuser: [
          { required: true, message: '请选择收料人员', trigger: ['blur', 'change'] }
        ],
        sqty: [
          { required: true, message: '请输入收料数量', trigger: ['blur', 'change'] }
        ],
        // noputqty: [
        //   { required: true, message: '请输入不良数量', trigger: ['blur', 'change'] }
        // ],
        // badcode: [
        //   { required: true, message: '请选择不良原因', trigger: ['blur', 'change'] }
        // ]
        eqpcode: [
          { required: true, message: '请选择生产设备', trigger: ['blur', 'change'] }
        ],
        usergroupcode: [
          { required: true, message: '请选择生产班组', trigger: ['blur', 'change'] }
        ],
        startqty: [
          { required: true, message: '请输入报工数量', trigger: ['blur', 'change'] }
        ]
      }
    }
  },
  created() {
    // this.getMesOrderStepSearch()
    this.getMesOrderStepSearch()
    this.tabClick()
  },
  mounted() {
@@ -778,20 +873,23 @@
    },
    // tab按钮切换鼠标自动聚焦
    tabClick(val, d) {
      console.log(val, d, 1)
      if (this.$refs.elTabs.currentName === '0') {
        this.$nextTick(() => {
          this.getMesOrderStepSearch()
          $("input[name='produceCode']")[0].focus()
          // this.WXform.orderstepqrcode = ''
        })
      }
      if (this.$refs.elTabs.currentName === '1') {
        this.$nextTick(() => {
          this.getMesOrderWxStepSearch()
          $("input[name='WXproduceCode']")[0].focus()
          // this.form.orderstepqrcode = ''
        })
      }
    },
    // æ‰«ç é”®ç›˜å›žè½¦äº‹ä»¶
    async   enterNative(val, belong) {
    async enterNative(val, belong) {
      console.log(val, belong)
      // å¼€å·¥ï¼šcode="200"  count=0
      // æŠ¥å·¥ï¼šcode="200"  count=1
@@ -799,12 +897,19 @@
      // æ”¶æ–™ï¼šcode="200"  count=3
      // èµ°åˆ—表形式 code="200"  count=4
      if (belong === 'produceCode') {
        // this.ZZreport()
        // æŸ¥æ‰¾è®¾å¤‡
        // const {data:res} = await MesOrderStepStartSelectEqp({ orderstepqrcode: this.produceCode })
        // this.xxx=res
        // æŸ¥æ‰¾ç­ç»„
        // const { data: res2 } = await MesOrderStepReportSelectUserGroup()
        const data = {
          OperType: 'ZZ',
          orderstepqrcode: this.form.orderstepqrcode,
          SelectType: ''
        }
        console.log(this.form.orderstepqrcode, 21)
        const res = await MesOrderStepStart(data)
        if (res.code === '200' && res.count === 0) {
          await this.ZZstart(res.data)
        }
        if (res.code === '200' && res.count === 1) {
          await this.ZZreport(res.data)
        }
      }
      if (belong === 'WXproduceCode') {
        const data = {
@@ -814,7 +919,10 @@
        }
        const res = await MesOrderStepStart(data)
        if (res.code === '200' && res.count === 2) {
          this.WXsend(res.data)
          await this.WXsend(res.data)
        }
        if (res.code === '200' && res.count === 3) {
          await this.WXback(res.data)
        }
      }
    },
@@ -823,58 +931,177 @@
      this.getMesOrderStepSearch()
    },
    // è‡ªåˆ¶å¼€å§‹
    async  ZZstart() {
    async ZZstart(obj) {
      // if (!this.ZZisExecutable) {
      //   return this.$message.info('请先扫码工序二维码!')
      // }
      this.dialogTitle = '自制开始'
      // this.dialogVisible = true
      this.dialogVisibleTrue()
      this.dialogVisible = true
      const res = await MesOrderStepStartSelectEqp({ orderstepqrcode: produceCode })
      this.$nextTick(() => {
        this.dialogForm.wo_code = obj.wo_code
        this.dialogForm.partcode = obj.partnumber
        this.dialogForm.partname = obj.partname
        this.dialogForm.partspec = obj.partspec
        this.dialogForm.stepseq = obj.seq
        this.dialogForm.stepcode = obj.stepcode
        this.dialogForm.stepname = obj.stepname
        this.dialogForm.stepdesc = obj.stepdesc
        this.dialogForm.planqty = obj.planqty
        this.dialogForm.reportqty = obj.reportqty
        this.dialogForm.noreportqty = obj.noreportqty
        this.dialogForm.startqty = obj.startqty
      })
      await this.getMesOrderStepStartSelectEqp()
    },
    // è‡ªåˆ¶æŠ¥å·¥
    ZZreport() {
    async ZZreport(obj) {
      // if (!this.ZZisExecutable) {
      //   return this.$message.info('请先扫码工序二维码!')
      // }
      this.dialogTitle = '自制报工'
      // this.dialogVisible = true
      this.dialogVisibleTrue()
      this.getUserTableData()
      this.dialogVisible = true
      this.$nextTick(() => {
        this.dialogForm.wo_code = obj.wo_code
        this.dialogForm.partcode = obj.partnumber
        this.dialogForm.partname = obj.partname
        this.dialogForm.partspec = obj.partspec
        this.dialogForm.stepseq = obj.seq
        this.dialogForm.stepcode = obj.stepcode
        this.dialogForm.stepname = obj.stepname
        this.dialogForm.stepdesc = obj.stepdesc
        this.dialogForm.planqty = obj.planqty
        this.dialogForm.reportqty = obj.reportqty
        this.dialogForm.noputqty = obj.noputqty
        this.dialogForm.noreportqty = obj.noreportqty
        this.dialogForm.startqty = obj.startqty
        if (obj.nextstepname === null || obj.nextstepcode === '') {
          this.dialogForm.nextstepname = obj.stepname
        } else {
          this.dialogForm.nextstepname = obj.nextstepname
        }
        this.dialogForm.startqtySum = obj.startqty
      })
      await this.getMesOrderStepStartSelectEqp()
      await this.getMesOrderStepReportSelectUserGroup()
      await this.getMesOrderStepSelectCause('ZZ')
      await this.getMesOrderSelectUserZZ()
    },
    // å¤–协发料
    async  WXsend(obj) {
      if (this.WXradioSelected.length < 1 && obj.length < 1) {
        return this.$message.info('请先选择工序!')
      }
    async WXsend(obj) {
      // if (this.WXradioSelected.length < 1 && obj.length < 1) {
      //   return this.$message.info('请先选择工序!')
      // }
      // console.log(this.WXform.orderstepqrcode === '', 6)
      // if (this.WXform.orderstepqrcode === '') {
      //   return this.$message.info('请先输入工序!')
      // }
      this.dialogTitle = '外协发料'
      this.dialogVisible = true
      console.log(obj, 321)
      this.dialogForm.wo_code = obj.wo_code
      this.dialogForm.partcode = obj.partnumber
      this.dialogForm.partname = obj.partname
      this.dialogForm.partspec = obj.partspec
      this.dialogForm.stepname = obj.stepname
      this.dialogForm.stepdesc = obj.stepdesc
      this.dialogForm.planqty = obj.planqty
      this.dialogForm.reportqty = obj.reportqty
      this.dialogForm.noreportqty = obj.noreportqty
      this.dialogForm.startqty = obj.startqty
      // const data = {
      //
      // }
      // const res = await MesOrderStepSelectWX(data)
      // console.log(res)
      this.$nextTick(() => {
        this.dialogForm.wo_code = obj.wo_code
        this.dialogForm.partcode = obj.partnumber
        this.dialogForm.partname = obj.partname
        this.dialogForm.partspec = obj.partspec
        this.dialogForm.stepname = obj.stepname
        this.dialogForm.stepdesc = obj.stepdesc
        this.dialogForm.planqty = obj.planqty
        this.dialogForm.reportqty = obj.reportqty
        this.dialogForm.noreportqty = obj.noreportqty
        this.dialogForm.fqty = obj.startqty
        this.dialogForm.stepcode = obj.stepcode
        this.dialogForm.stepseq = obj.seq
      })
      await this.getMesOrderStepSelectWX()
      await this.getMesOrderSelectUser()
    },
    // å¤–协收料
    WXback() {
    async WXback(obj) {
      // if (this.WXform.orderstepqrcode === '') {
      //   return this.$message.info('请先输入工序!')
      // }
      this.dialogTitle = '外协收料'
      this.dialogVisibleTrue()
      // this.dialogVisible = true
      this.dialogVisible = true
      this.$nextTick(() => {
        this.dialogForm.wo_code = obj.wo_code
        this.dialogForm.partcode = obj.partnumber
        this.dialogForm.partname = obj.partname
        this.dialogForm.partspec = obj.partspec
        this.dialogForm.stepname = obj.stepname
        this.dialogForm.stepdesc = obj.stepdesc
        this.dialogForm.planqty = obj.planqty
        this.dialogForm.reportqty = obj.reportqty
        this.dialogForm.noreportqty = obj.noreportqty
        this.dialogForm.stepcode = obj.stepcode
        if (obj.nextstepname === null || obj.nextstepcode === '') {
          this.dialogForm.nextstepname = obj.stepname
        } else {
          this.dialogForm.nextstepname = obj.nextstepname
        }
        this.dialogForm.noputqty = obj.noputqty
        this.dialogForm.stepseq = obj.seq
        this.dialogForm.sqty = obj.startqty
        this.dialogForm.startqtySum = obj.startqty
      })
      await this.getMesOrderStepSelectWX()
      await this.getMesOrderSelectUser()
      await this.getMesOrderStepSelectCause('WX')
    },
    dialogVisibleTrue() {
      // this.dialogVisible = true
      // this.dialogForm.wo_code=
    // ç”Ÿäº§ç­ç»„下拉改变
    usergroupChange(val) {
      this.dialogForm.usergroupcode = val
      this.getUserTableData()
    },
    // èŽ·å–è‡ªåˆ¶æŠ¥å·¥ç”Ÿäº§ç­ç»„ä¸‹æ‹‰åˆ—è¡¨
    async getMesOrderStepReportSelectUserGroup() {
      const { data: res } = await MesOrderStepReportSelectUserGroup()
      this.ZZtreams = res
    },
    // èŽ·å–è‡ªåˆ¶æŠ¥å·¥è¡¨æ ¼user所有
    async getMesOrderSelectUserZZ() {
      const { data: res } = await MesOrderSelectUser({ usercode: this.dialogForm.usergroupcode })
      this.ZZuserArr = res
    },
    // èŽ·å–è‡ªåˆ¶ç”Ÿäº§è®¾å¤‡ä¸‹æ‹‰
    async getMesOrderStepStartSelectEqp() {
      const { data: res } = await MesOrderStepStartSelectEqp({ orderstepqrcode: this.form.orderstepqrcode })
      this.ZZeqpArr = res
    },
    // èŽ·å–WX供方接口
    async getMesOrderStepSelectWX() {
      const { data: res } = await MesOrderStepSelectWX({ orderstepqrcode: this.WXform.orderstepqrcode })
      this.WXouterprovide = res
    },
    // èŽ·å–æ”¶å‘æ–™äººå‘˜ä¸‹æ‹‰æŽ¥å£
    async getMesOrderSelectUser() {
      const { data: res } = await MesOrderSelectUser({ usercode: this.dialogForm.outuser })
      this.WXoutuser = res
    },
    // èŽ·å–æ”¶æ–™ä¸è‰¯åŽŸå› ä¸‹æ‹‰
    async getMesOrderStepSelectCause(val) {
      let orderstepqrcode = ''
      if (val === 'WX') {
        orderstepqrcode = this.WXform.orderstepqrcode
      }
      if (val === 'ZZ') {
        orderstepqrcode = this.form.orderstepqrcode
      }
      const { data: res } = await MesOrderStepSelectCause({ orderstepqrcode: orderstepqrcode })
      this.badArr = res
    },
    // æŠ¥å·¥æŸ¥è¯¢ç”¨æˆ·è¡¨
    async getUserTableData() {
      // const { data: res } = await MesOrderGroupSelectUser({ usergroupcode: 'SC01' })
      const { data: res } = await MesOrderGroupSelectUser({ usergroupcode: this.dialogForm.usergroupcode })
      this.userTableData = res
      this.userTableData.forEach(item => {
        let number = Math.random() * Math.random()// ä½œä¸ºåˆ é™¤æ—¶çš„æ ‡è¯†ç¬¦
        number = number === 0 ? (10 + Math.random()) : number
@@ -886,7 +1113,8 @@
    userAdd() {
      let number = Math.random() * Math.random()// ä½œä¸ºåˆ é™¤æ—¶çš„æ ‡è¯†ç¬¦
      number = number === 0 ? (10 + Math.random()) : number
      this.userTableData.unshift({ name: '', isVisible: 1, number: number })
      console.log(this.userTableData, 6)
      this.userTableData.unshift({ usercode: '', username: '', isVisible: 1, number: number })
    },
    // ç”¨æˆ·åˆ—表删除
    userDel(row) {
@@ -912,58 +1140,236 @@
        }
      })
    },
    // é‡ç½®
    reset() {
      this.dialogTitle = ''
      this.form.OrgCode = ''
      this.form.OrgName = ''
      this.form.OrgType = ''
      this.form.UserName = ''
      this.getMesOrderStepSearch()
    // ç”¨æˆ·åˆ—表人员名称值选中
    usernameChange(val, row) {
      this.userTableData.forEach(item => {
        if (item.usercode === val) {
          this.userIsSave = true
          return this.$message.info('此人员已在列中!')
        }
        if (item.number === row.number) {
          this.userIsSave = false
          item.usercode = val
          item.username = this.ZZuserArr.find(item => item.usercode === val).username
        }
      })
    },
    // å¯¹è¯æ¡†å…³é—­äº‹ä»¶
    handleClose() {
      this.dialogForm.OrgType = ''
      this.dialogForm.OrgCode = ''
      this.dialogForm.OrgName = ''
      this.dialogForm.SupUnit = ''
      this.dialogForm.wo_code = '', // å·¥å•编号
      this.dialogForm.partcode = '', // äº§å“ç¼–码
      this.dialogForm.partname = '', // äº§å“åç§°
      this.dialogForm.partspec = '', // äº§å“è§„æ ¼
      this.dialogForm.stepseq = '', // å·¥åºåºå·
      this.dialogForm.stepcode = '', // å·¥åºç¼–码
      this.dialogForm.stepname = '', // å½“前工序名
      this.dialogForm.nextstepname = '', // ä¸‹ä¸€é“工序名
      this.dialogForm.stepdesc = '', // å·¥åºæè¿°
      this.dialogForm.planqty = '', // ä»»åŠ¡æ•°é‡
      this.dialogForm.reportqty = '', // å·²æŠ¥æ•°é‡
      this.dialogForm.noreportqty = '', // æœªæŠ¥æ•°é‡
      this.dialogForm.startqty = '', // å¼€(报)工数量
      this.dialogForm.wxcode = '', // å¤–协供应商编码
      this.dialogForm.outuser = '', // å‘料人员
      this.dialogForm.taskqty = '', // ä»»åŠ¡æ•°é‡
      this.dialogForm.fqty = '', // å‘料数量
      this.dialogForm.inuser = '', // æ”¶æ–™äººå‘˜
      this.dialogForm.sqty = '', // æ”¶æ–™æ•°é‡
      this.dialogForm.ngqty = '', // ä¸è‰¯æ•°é‡
      this.dialogForm.badcode = '', // ä¸è‰¯åŽŸå› ç¼–ç 
      this.dialogForm.noputqty = '', // ä¸è‰¯æ•°é‡
      this.dialogForm.eqpcode = '', // ç”Ÿäº§è®¾å¤‡ç¼–码
      this.dialogForm.usergroupcode = '', // ç­ç»„编码
      this.dialogForm.reportuser = '', // æŠ¥å·¥äººå‘˜
      this.dialogForm.startqtySum = '' // ä¸èƒ½è¶…过的数值
      this.$refs.dialogForm.clearValidate()
    },
    // å¯¹è¯æ¡†å–消
    dialogVisibleCancel() {
      this.dialogVisible = false
      // if (this.dialogTitle === '自制开始'||this.dialogTitle === '自制报工') {
      //   this.tabClick('0')
      // }
      // if (this.dialogTitle === '外协发料'||this.dialogTitle === '外协收料') {
      //   this.tabClick('1')
      // }
      this.tabClick()
    },
    // å¯¹è¯æ¡†ç¡®è®¤
    dialogVisibleConfirm() {
      // this.$refs.dialogForm.validate(valid => {
      //   if (valid) {
      //     const data = {
      //       OrganCode: this.dialogForm.OrgCode,
      //       OrganName: this.dialogForm.OrgName,
      //       Operator: getCookie('admin')
      //     }
      //     // this.tabClick()
      //     // AddUpdateOrganization(data).then(res => {
      //     //   if (res.code === '200') {
      //     //     // this.$message.success(this.operation === 'add' ? '添加成功!' : '修改成功!')
      //     //     this.dialogVisible = false
      //     //     this.getMesOrderStepSearch()
      //     //   } else {
      //     //     // this.$message.error(this.operation === 'add' ? '添加失败!' : '修改失败!')
      //     //   }
      //     // })
      //   }
      // })
      this.tabClick()
      this.dialogVisible = false
      this.$refs.dialogForm.validate(valid => {
        if (valid) {
          if (this.dialogTitle === '外协发料') {
            if (parseFloat(this.dialogForm.fqty) > parseFloat(this.dialogForm.noreportqty)) {
              return this.$message.info('发料数量不能大于未发数量!')
            }
            const data = {
              mesordercode: this.dialogForm.wo_code, // å·¥å•编号
              partcode: this.dialogForm.partcode, // äº§å“ç¼–码
              stepseq: this.dialogForm.stepseq, // å·¥åºåºå·   æš‚时缺
              stepcode: this.dialogForm.stepcode, // å·¥åºç¼–码
              wxcode: this.dialogForm.wxcode, // å¤–协供应商编码
              outuser: this.dialogForm.outuser, // å‘料人员
              taskqty: this.dialogForm.planqty, // ä»»åŠ¡æ•°é‡
              fqty: this.dialogForm.fqty // å‘料数量
            }
            SavaMesOrderStepOut(data).then(res => {
              if (res.code === '200') {
                this.$message.success('发料成功!')
                this.dialogVisible = false
                this.tabClick()
              } else {
                this.$message.error('发料失败!')
              }
            })
          }
          if (this.dialogTitle === '外协收料') {
            if (parseFloat(this.dialogForm.startqtySum) < parseFloat(this.dialogForm.sqty) + parseFloat(this.dialogForm.noputqty)) {
              return this.$message.info('收料数量加不良数量不能大于了未收数量!')
            }
            if (parseFloat(this.dialogForm.noputqty) > 0) {
              if (this.dialogForm.badcode.length < 1) {
                return this.$message.info('请选择不良原因!')
              }
            }
            const data = {
              mesordercode: this.dialogForm.wo_code, // å·¥å•编号
              partcode: this.dialogForm.partcode, // äº§å“ç¼–码
              stepseq: this.dialogForm.stepseq, // å·¥åºåºå·
              stepcode: this.dialogForm.stepcode, // å·¥åºç¼–码
              wxcode: this.dialogForm.wxcode, // å¤–协供应商编码
              inuser: this.dialogForm.inuser, // å‘料人员
              taskqty: this.dialogForm.planqty, // ä»»åŠ¡æ•°é‡
              sqty: this.dialogForm.sqty, // æ”¶æ–™æ•°é‡
              ngqty: this.dialogForm.noputqty, // ä¸è‰¯æ•°é‡
              badcode: this.dialogForm.badcode.length < 1 ? '' : this.dialogForm.badcode.join(';')// ä¸è‰¯åŽŸå› 
            }
            SavaMesOrderStepIn(data).then(res => {
              if (res.code === '200') {
                // this.WXprint()
                this.$message.success('收料成功!')
                this.dialogVisible = false
                this.tabClick()
              } else {
                this.$message.error('收料失败!')
              }
            })
          }
          if (this.dialogTitle === '自制开始') {
            const data = {
              mesordercode: this.dialogForm.wo_code, // å·¥å•编号
              partcode: this.dialogForm.partcode, // äº§å“ç¼–码
              stepseq: this.dialogForm.stepseq, // å·¥åºåºå·   æš‚时缺
              stepcode: this.dialogForm.stepcode, // å·¥åºç¼–码
              eqpcode: this.dialogForm.eqpcode, // ç”Ÿäº§è®¾å¤‡
              taskqty: this.dialogForm.planqty, // ä»»åŠ¡æ•°é‡
              startqty: this.dialogForm.startqty// å¼€å§‹æ•°é‡
            }
            SavaMesOrderStepStart(data).then(res => {
              if (res.code === '200') {
                // this.WXprint()
                this.$message.success('开工成功!')
                this.dialogVisible = false
                this.tabClick()
              } else {
                this.$message.error('开工失败!')
              }
            })
          }
          if (this.dialogTitle === '自制报工') {
            if (parseFloat(this.dialogForm.startqtySum) < parseFloat(this.dialogForm.startqty) + parseFloat(this.dialogForm.noputqty)) {
              return this.$message.info('报工数量加不良数量不能大于了未报数量!')
            }
            if (this.userTableData.length < 1) {
              return this.$message.info('人员列表不能为空!')
            }
            if (parseFloat(this.dialogForm.noputqty) > 0) {
              if (this.dialogForm.badcode.length < 1) {
                return this.$message.info('请选择不良原因!')
              }
            }
            const reportuser = this.userTableData.map(item => item.usercode).join(';')
            const data = {
              mesordercode: this.dialogForm.wo_code, // å·¥å•编号
              partcode: this.dialogForm.partcode, // äº§å“ç¼–码
              stepseq: this.dialogForm.stepseq, // å·¥åºåºå·
              stepcode: this.dialogForm.stepcode, // å·¥åºç¼–码
              eqpcode: this.dialogForm.eqpcode, // è®¾å¤‡ç¼–码
              usergroupcode: this.dialogForm.usergroupcode, // ç­ç»„编码
              reportuser: reportuser, // æŠ¥å·¥äººå‘˜
              taskqty: this.dialogForm.planqty, // ä»»åŠ¡æ•°é‡
              // startqty: this.dialogForm.startqty, // å¼€å·¥æ•°é‡
              startqty: this.dialogForm.reportqty, // å¼€å·¥æ•°é‡
              // reportqty: this.dialogForm.reportqty, // æŠ¥å·¥æ•°é‡
              reportqty: this.dialogForm.startqty, // æŠ¥å·¥æ•°é‡
              ngqty: this.dialogForm.noputqty, // ä¸è‰¯æ•°é‡
              badcode: this.dialogForm.badcode.length < 1 ? '' : this.dialogForm.badcode.join(';')// ä¸è‰¯åŽŸå› 
            }
            SavaMesOrderStepReport(data).then(res => {
              if (res.code === '200') {
                // this.ZZprint()
                this.$message.success('报工成功!')
                this.dialogVisible = false
                this.tabClick()
              } else {
                this.$message.error('报工失败!')
              }
            })
          }
        }
      })
    },
    async ZZprint() {
      const obj = {
        recordset: [
          {
            wo_code: this.dialogForm.wo_code, // å·¥å•编号
            partcode: this.dialogForm.partcode, // äº§å“ç¼–码
            partname: this.dialogForm.partname, // äº§å“åç§°
            next_stepname: this.dialogForm.nextstepname, // ä¸‹é“工序
            qty: this.dialogForm.startqty, // æ•°é‡
            qrcode: this.form.orderstepqrcode// äºŒç»´ç 
          }
        ]
      }
      const args = {
        type: 'print', // preview  print
        showOptionDlg: false, // å¦‚果不显示打印对话框而直接打印,将此行注释去掉即可
        report: urlAddRandomNo('./static/grf/报工产出标签.grf'),
        data: obj
      }
      webapp_ws_ajax_run(args)
    },
    // å¤–协收料打印
    WXprint() {
      // å‚数具体说明请参考帮助文档中的“WEB报表(B/S报表)->WEB报表客户端->启动参数说明”部分
      const obj = {
        recordset: [
          {
            wo_code: this.dialogForm.wo_code, // å·¥å•编号
            partcode: this.dialogForm.partcode, // äº§å“ç¼–码
            partname: this.dialogForm.partname, // äº§å“åç§°
            next_stepname: this.dialogForm.nextstepname, // ä¸‹é“工序
            qty: this.dialogForm.sqty, // æ•°é‡
            qrcode: this.WXform.orderstepqrcode// äºŒç»´ç 
          }
        ]
      }
      const args = {
        type: 'print', // preview  print
        showOptionDlg: false, // å¦‚果不显示打印对话框而直接打印,将此行注释去掉即可
        report: urlAddRandomNo('./static/grf/外协收料标签.grf'),
        data: obj
      }
      webapp_ws_ajax_run(args)
    },
    // èŽ·å–é¡µé¢é«˜åº¦
    getHeight() {
@@ -1141,11 +1547,12 @@
}
//.dialogVisible{
  ::v-deep .el-select .el-input .el-select__caret  {
    display: flex;
    align-items: center;
    justify-content: center;
  }
::v-deep .el-select .el-input .el-select__caret {
  display: flex;
  align-items: center;
  justify-content: center;
}
//}
.elTableDiv {
  ::v-deep .el-radio__label {
src/views/wlgl/kwdy.vue
@@ -28,8 +28,8 @@
                :popper-append-to-body="false"
                style="width: 200px"
                placeholder="请选择"
                @focus="getWareHouseSelect"
              >
                <!--                @focus="getWareHouseSelect"-->
                <el-option
                  v-for="item in stockArr"
                  :key="item.code"
@@ -150,10 +150,10 @@
            :popper-append-to-body="false"
            style="width: 200px"
            placeholder="请选择"
            @focus="getWareHouseSelect2"
          >
            <!--            @focus="getWareHouseSelect2"-->
            <el-option
              v-for="item in stockArr2"
              v-for="item in stockArr"
              :key="item.code"
              :label="item.name"
              :value="item.code"
@@ -212,7 +212,7 @@
      },
      total: 10,
      stockArr: [], // æ‰€å±žä»“库数组
      stockArr2: [], // æ‰€å±žä»“库数组对话框
      // stockArr2: [], // æ‰€å±žä»“库数组对话框
      tableData: [],
      dialogVisible: false,
      dialogForm: {
@@ -240,7 +240,7 @@
  },
  created() {
    this.getStorageDefSearch()
    // this.getWareHouseSelect()
    this.getWareHouseSelect()
  },
  mounted() {
    window.addEventListener('resize', this.getHeight)
@@ -257,10 +257,10 @@
      this.stockArr = res
    },
    // å¯¹è¯æ¡†ä¸­çš„
    async getWareHouseSelect2() {
      const { data: res } = await WareHouseSelect()
      this.stockArr2 = res
    },
    // async getWareHouseSelect2() {
    //   const { data: res } = await WareHouseSelect()
    //   this.stockArr2 = res
    // },
    // æŽ’序改变时
    sortChange({ column, prop, order }) {
      if (order === 'descending') {
src/views/zzmx/chda.vue
@@ -60,8 +60,8 @@
                :popper-append-to-body="false"
                style="width: 200px"
                placeholder="请选择"
                @focus="getWareHouseSelect"
              >
                <!--                @focus="getWareHouseSelect"-->
                <el-option
                  v-for="item in storehouseArr"
                  :key="item.code"
@@ -244,10 +244,10 @@
            :popper-append-to-body="false"
            style="width: 200px"
            placeholder="请选择"
            @focus="getWareHouseSelect2"
          >
            <!--            @focus="getWareHouseSelect2"-->
            <el-option
              v-for="item in storehouseArr2"
              v-for="item in storehouseArr"
              :key="item.code"
              :label="item.name"
              :value="item.code"
@@ -644,7 +644,7 @@
  created() {
    this.getInventoryFileSelect()
    this.getStockTypeSelect()
    // this.getWareHouseSelect()
    this.getWareHouseSelect()
  },
  mounted() {
    window.addEventListener('resize', this.getHeight)
@@ -664,10 +664,10 @@
      const { data: res } = await WareHouseSelect()
      this.storehouseArr = res
    },
    async getWareHouseSelect2() {
      const { data: res } = await WareHouseSelect()
      this.storehouseArr2 = res
    },
    // async getWareHouseSelect2() {
    //   const { data: res } = await WareHouseSelect()
    //   this.storehouseArr2 = res
    // },
    async getuomSelect() {
      const { data: res } = await UomSelect()
      this.uomArr = res
src/views/zzmx/gxdy.vue
@@ -123,6 +123,7 @@
          <el-table-column
            prop="lm_date"
            label="创建时间"
            width="160"
            sortable="custom"
          />
          <el-table-column
src/views/zzmx/jpgj.vue
@@ -17,9 +17,10 @@
                :popper-append-to-body="false"
                style="width: 200px"
                placeholder="请选择"
                @focus="getPartSelect"
                @change="partChange"
              >
                <!--                @focus="getPartSelect"-->
                <el-option
                  v-for="item in partArr"
                  :key="item.partcode"
@@ -221,9 +222,10 @@
              style="width: 220px"
              placeholder="请选择"
              :popper-append-to-body="false"
              @focus="getPartSelect2"
              @change="partDialogChange"
            >
              <!--              @focus="getPartSelect2"-->
              <el-option
                v-for="item in partArr2"
                :key="item.partcode"
@@ -527,7 +529,7 @@
  },
  created() {
    this.getBeatRateSearch()
    // this.getPartSelect()
    this.getPartSelect()
  },
  mounted() {
    window.addEventListener('resize', this.getHeight)
@@ -738,6 +740,7 @@
    add(operation) {
      this.operation = operation
      this.dialogVisible = true
      this.getPartSelect2()
    },
    // ä¿®æ”¹æŒ‰é’®
    async  edit(operation, row) {