Prechádzať zdrojové kódy

style: 格式化代码

tangning 2 rokov pred
rodič
commit
a38e753034
34 zmenil súbory, kde vykonal 3734 pridanie a 3652 odobranie
  1. 1 1
      src/locales/lang/en/code.ts
  2. 2 2
      src/locales/lang/en/common.ts
  3. 4 4
      src/locales/lang/en/routes/dashboard.ts
  4. 21 22
      src/locales/lang/en/routes/device.ts
  5. 64 65
      src/locales/lang/en/routes/equity.ts
  6. 1 1
      src/locales/lang/en/routes/finance.ts
  7. 40 39
      src/locales/lang/en/routes/scene.ts
  8. 1 1
      src/locales/lang/zh-CN/code.ts
  9. 1 1
      src/locales/lang/zh-CN/common.ts
  10. 6 6
      src/locales/lang/zh-CN/routes/account.ts
  11. 5 5
      src/locales/lang/zh-CN/routes/dashboard.ts
  12. 21 21
      src/locales/lang/zh-CN/routes/device.ts
  13. 64 65
      src/locales/lang/zh-CN/routes/equity.ts
  14. 1 1
      src/locales/lang/zh-CN/routes/finance.ts
  15. 8 8
      src/locales/lang/zh-CN/routes/operate.ts
  16. 32 32
      src/locales/lang/zh-CN/routes/product.ts
  17. 39 39
      src/locales/lang/zh-CN/routes/scene.ts
  18. 25 25
      src/locales/lang/zh-CN/routes/spares.ts
  19. 2 2
      src/locales/lang/zh-CN/routes/system.ts
  20. 260 260
      src/views/work/addAccessoryModel.vue
  21. 186 184
      src/views/work/aftermarket.vue
  22. 312 307
      src/views/work/checkModel.vue
  23. 201 179
      src/views/work/confirmPriceModal.vue
  24. 111 112
      src/views/work/deliveryModal.vue
  25. 441 423
      src/views/work/detail.vue
  26. 311 306
      src/views/work/followedList.vue
  27. 229 228
      src/views/work/maintenance.vue
  28. 256 256
      src/views/work/outModal.vue
  29. 95 87
      src/views/work/partsListModal.vue
  30. 72 69
      src/views/work/payLogModal.vue
  31. 392 378
      src/views/work/recoveryModal.vue
  32. 134 132
      src/views/work/reviewModal.vue
  33. 165 159
      src/views/work/takingOrdersModel.vue
  34. 231 232
      src/views/work/testList.vue

+ 1 - 1
src/locales/lang/en/code.ts

@@ -27,5 +27,5 @@ export default {
     '50044': 'The scene is captured by this camera and no transfer is required!',
     '50034': 'SN code does not exist!',
     '5037': 'Calculating,please wait.',
-  }
+  },
 };

+ 2 - 2
src/locales/lang/en/common.ts

@@ -18,6 +18,6 @@ export default {
   no: 'no',
   light: 'Light',
   dark: 'Dark',
-  reminder:'reminder',
-  operating:'Operation',
+  reminder: 'reminder',
+  operating: 'Operation',
 };

+ 4 - 4
src/locales/lang/en/routes/dashboard.ts

@@ -4,9 +4,9 @@ export default {
   workbench: 'Workbench',
   analysis: 'Analysis',
   devices: 'Equipment Management',
-  equity:'Subscription Management',
-  scene:'Scene Management',
-  finance:'Sales Statistics',
+  equity: 'Subscription Management',
+  scene: 'Scene Management',
+  finance: 'Sales Statistics',
   cameraScene: 'Scene Management',
-  loglist:'Operation Log',
+  loglist: 'Operation Log',
 };

+ 21 - 22
src/locales/lang/en/routes/device.ts

@@ -1,25 +1,24 @@
 export default {
-  snCode:'S/N',
-  wifiName:'Wifi',
-  deviceType:'Camera type',
-  activatedTime:'Time',
-  userName:'Bound account',
-  NoBind:'Unbind',
-  type:{
-    0:'4DKanKan Lite',
-    1:'4DKanKan',
-    2:'4DMinion',
-    3:'4DMega',
-    9:'4DMinion',
-    10:'4DMega',
+  snCode: 'S/N',
+  wifiName: 'Wifi',
+  deviceType: 'Camera type',
+  activatedTime: 'Time',
+  userName: 'Bound account',
+  NoBind: 'Unbind',
+  type: {
+    0: '4DKanKan Lite',
+    1: '4DKanKan',
+    2: '4DMinion',
+    3: '4DMega',
+    9: '4DMinion',
+    10: '4DMega',
   },
-  status:{
-    0:'Active',
-    1:'Expired',
-    2:'Bind',
-    3:'Unbind',
+  status: {
+    0: 'Active',
+    1: 'Expired',
+    2: 'Bind',
+    3: 'Unbind',
   },
-  bindStatus:'Binding status',
-  statusName:'Status'
-}
-
+  bindStatus: 'Binding status',
+  statusName: 'Status',
+};

+ 64 - 65
src/locales/lang/en/routes/equity.ts

@@ -1,76 +1,75 @@
 export default {
-  add:'New Authorization',
-  addDowm:'New Download',
-  renew:'Renew',
-  userName:'User Account',
-  count:'User Account',
-  orderSn:'Order Number',
-  payTime:'Payment Time',
-  invoiceTime:'Invoicing application time',
-  money:'Invoiced Amount',
-  id:'ID',
-  dowmCount:'Download Time',
-  timeList:'Authorization Time',
-  expiryTime: 'Expiry Date', 
-  newTime:'Latest Authorization Time',
-  time:'Start Date',
-  countNumber:'Quantity',
-  Type:'Type',
-  giveType:'Methods',
-  nickName:'Nickname',
-  userName1:'Account',
-  email:'Email',
-  userCount:'Authorized Quantity',
-  incrementType:{
-    0:'Membership Subscription',
-    1:'Scene Download',
+  add: 'New Authorization',
+  addDowm: 'New Download',
+  renew: 'Renew',
+  userName: 'User Account',
+  count: 'User Account',
+  orderSn: 'Order Number',
+  payTime: 'Payment Time',
+  invoiceTime: 'Invoicing application time',
+  money: 'Invoiced Amount',
+  id: 'ID',
+  dowmCount: 'Download Time',
+  timeList: 'Authorization Time',
+  expiryTime: 'Expiry Date',
+  newTime: 'Latest Authorization Time',
+  time: 'Start Date',
+  countNumber: 'Quantity',
+  Type: 'Type',
+  giveType: 'Methods',
+  nickName: 'Nickname',
+  userName1: 'Account',
+  email: 'Email',
+  userCount: 'Authorized Quantity',
+  incrementType: {
+    0: 'Membership Subscription',
+    1: 'Scene Download',
   },
-  equityType:{
-    0:'Premium (Yearly)',
-    1:'Premium (Yearly)',
-    2:'Premium (Yearly)',
-    3:'Senior (Monthly)',
+  equityType: {
+    0: 'Premium (Yearly)',
+    1: 'Premium (Yearly)',
+    2: 'Premium (Yearly)',
+    3: 'Senior (Monthly)',
   },
-  zhTips:'Chinese characters are not supported',
-  listTitle:'Sales Statistics List',
-  exportExcel:'Export to Excel',
-  excelTitle:'Are you sure you want to export excel?',
+  zhTips: 'Chinese characters are not supported',
+  listTitle: 'Sales Statistics List',
+  exportExcel: 'Export to Excel',
+  excelTitle: 'Are you sure you want to export excel?',
   CardMajorNum: "Last Month's Premium Membership Sales (Yearly)",
   CardHighNum: "Last Month's Senior Membership Sales (Monthly)",
   CardDownNum: "Last Month's Download Sales",
-  syks:'surplus',
-  addcount:'Quantity',
-  rules:{
-    userName:'Please enter the user account',
-    userName1:'Please enter the correct user account',
-    userName2:'The account does not exist',
-    id:'Please enter the correct benefit ID',
+  syks: 'surplus',
+  addcount: 'Quantity',
+  rules: {
+    userName: 'Please enter the user account',
+    userName1: 'Please enter the correct user account',
+    userName2: 'The account does not exist',
+    id: 'Please enter the correct benefit ID',
   },
-  unit:{
-    1:'',
-    2:'/Number of times',
-    '-1':'-Year',
-    '-2':'-Month',
-    '-3':'-Month',
+  unit: {
+    1: '',
+    2: '/Number of times',
+    '-1': '-Year',
+    '-2': '-Month',
+    '-3': '-Month',
   },
-  titleHelpMessage:{
-    1:'Statistical Guidelines:',
-    2:'Membership Subscription: current records of new authorizations by dealers and related ID renewal records, including dealer authorizations and renewals, platform authorizations (renewals), and official website purchases (renewals).',
-    3:'Scene Download: statistical information on the number of downloads of current new authorizations by sales.',
+  titleHelpMessage: {
+    1: 'Statistical Guidelines:',
+    2: 'Membership Subscription: current records of new authorizations by dealers and related ID renewal records, including dealer authorizations and renewals, platform authorizations (renewals), and official website purchases (renewals).',
+    3: 'Scene Download: statistical information on the number of downloads of current new authorizations by sales.',
   },
-  totalTime:'Duration',
-  totalMessge:'Insufficient Remaining Saleable Membership Subscriptions',
-  operationType:'Operation',
-  operationUserName:'User',
-  operationTime:'Operation Time',
-  incrementId:'Membership Subscription ID',
+  totalTime: 'Duration',
+  totalMessge: 'Insufficient Remaining Saleable Membership Subscriptions',
+  operationType: 'Operation',
+  operationUserName: 'User',
+  operationTime: 'Operation Time',
+  incrementId: 'Membership Subscription ID',
   platform: 'Platform',
-  operation:{
-    0:'Authorize',
-    1:'Deauthorize',
-    2:'Bind',
-    3:'Unbind',
+  operation: {
+    0: 'Authorize',
+    1: 'Deauthorize',
+    2: 'Bind',
+    3: 'Unbind',
   },
-  jjxs:'total',
-}
-
+  jjxs: 'total',
+};

+ 1 - 1
src/locales/lang/en/routes/finance.ts

@@ -22,5 +22,5 @@ export default {
     2: 'Official Website Purchase',
     3: 'Platform Authorization',
   },
-  totalTime:'Total duration of the authorization (year/month)',
+  totalTime: 'Total duration of the authorization (year/month)',
 };

+ 40 - 39
src/locales/lang/en/routes/scene.ts

@@ -1,42 +1,43 @@
 export default {
-  tableType:{
-    0:'4DKanKan',
-    1:'4DMinion',
-    2:'4DMega',
-    3:'4DKanKan Lite',
+  tableType: {
+    0: '4DKanKan',
+    1: '4DMinion',
+    2: '4DMega',
+    3: '4DKanKan Lite',
   },
-  transfer:'transfer',
-  copy:'copy',
-  down:'download',
-  canlenDown:'Cancel Download',
-  sceneName:'Scene Title',
-  num:'Scene Code',
-  createTime:'Shooting Time',
-  amount:'Calculation Completion Time',
-  snCode:'SN',
-  sceneSize:'Scene Size',
-  userName:'Bound account',
-  viewCount:'Views',
-  status:'Status',
-  copyTime:'Scene Copied Time',
-  isCopy:'Copied scene',
-  statusType:{
-    '0':'In calculation',
-    '1':'Calculation succeeded',
-    '-2':'Calculation succeeded',
-    '-1':'Calculation failed',
-    '-3':'Sealing',
+  transfer: 'transfer',
+  copy: 'copy',
+  down: 'download',
+  canlenDown: 'Cancel Download',
+  sceneName: 'Scene Title',
+  num: 'Scene Code',
+  createTime: 'Shooting Time',
+  amount: 'Calculation Completion Time',
+  snCode: 'SN',
+  sceneSize: 'Scene Size',
+  userName: 'Bound account',
+  viewCount: 'Views',
+  status: 'Status',
+  copyTime: 'Scene Copied Time',
+  isCopy: 'Copied scene',
+  statusType: {
+    '0': 'In calculation',
+    '1': 'Calculation succeeded',
+    '-2': 'Calculation succeeded',
+    '-1': 'Calculation failed',
+    '-3': 'Sealing',
   },
-  copyTipsTitle:'Copy Scene',
-  copyTipsText:'Copy the scene, and the scene belongs to the original camera<br/>Are you sure you want to copy the scene?',
-  copySccuse:'Copy succeeded',
-  deleteSccuse:'Deletion succeeded',
-  downErr:'Download failed',
-  transferSccuse:'Scenario migration succeeded.',
-  transferTitle:'Migration Scenario',
-  toSnCode:'Migrate to',
-  rules:{
-    snCode:'Please enter the SN code of the camera',
-    snCode1:'Chinese characters are not supported',
-  }
-};
+  copyTipsTitle: 'Copy Scene',
+  copyTipsText:
+    'Copy the scene, and the scene belongs to the original camera<br/>Are you sure you want to copy the scene?',
+  copySccuse: 'Copy succeeded',
+  deleteSccuse: 'Deletion succeeded',
+  downErr: 'Download failed',
+  transferSccuse: 'Scenario migration succeeded.',
+  transferTitle: 'Migration Scenario',
+  toSnCode: 'Migrate to',
+  rules: {
+    snCode: 'Please enter the SN code of the camera',
+    snCode1: 'Chinese characters are not supported',
+  },
+};

+ 1 - 1
src/locales/lang/zh-CN/code.ts

@@ -36,5 +36,5 @@ export default {
     '60016': '备件id为空!',
     '60017': '人工id为空!',
     '60018': '备件库存不足!',
-  }
+  },
 };

+ 1 - 1
src/locales/lang/zh-CN/common.ts

@@ -52,5 +52,5 @@ export default {
   userNick: '请输入员工名称',
   userCorrectNameNick: '请输入正确的员工名称',
   warning: '警告',
-  reminder:'温馨提示',
+  reminder: '温馨提示',
 };

+ 6 - 6
src/locales/lang/zh-CN/routes/account.ts

@@ -1,7 +1,7 @@
 export default {
-  type:{
-    1:'权益订单',
-    2:'下载订单',
-    3:'消费订单',
-  }
-};
+  type: {
+    1: '权益订单',
+    2: '下载订单',
+    3: '消费订单',
+  },
+};

+ 5 - 5
src/locales/lang/zh-CN/routes/dashboard.ts

@@ -31,7 +31,7 @@ export default {
   scenesRoom: '房间管理',
   product: '产品管理',
   firmware: '固件管理',
-  account:'用户管理',
+  account: '用户管理',
   overview: '用户概览',
   details: '订单详情',
   productData: '产品数据',
@@ -64,8 +64,8 @@ export default {
   customerDevice: '客户设备',
   customerScene: '客户场景',
   devices: '设备管理',
-  equity:'权益管理',
-  scene:'场景管理',
-  finance:'销售统计',
-  loglist:'操作日志',
+  equity: '权益管理',
+  scene: '场景管理',
+  finance: '销售统计',
+  loglist: '操作日志',
 };

+ 21 - 21
src/locales/lang/zh-CN/routes/device.ts

@@ -1,24 +1,24 @@
 export default {
-  snCode:'SN码',
-  wifiName:'wifi名称',
-  deviceType:'设备类型',
-  activatedTime:'出库时间',
-  userName:'绑定账号',
-  NoBind:'未绑定',
-  type:{
-    0:'旧双目相机',
-    1:'四维看看',
-    2:'四维看见',
-    3:'四维深时',
-    9:'四维看见',
-    10:'四维深时',
+  snCode: 'SN码',
+  wifiName: 'wifi名称',
+  deviceType: '设备类型',
+  activatedTime: '出库时间',
+  userName: '绑定账号',
+  NoBind: '未绑定',
+  type: {
+    0: '旧双目相机',
+    1: '四维看看',
+    2: '四维看见',
+    3: '四维深时',
+    9: '四维看见',
+    10: '四维深时',
   },
-  status:{
-    0:'生效中',
-    1:'已过期',
-    2:'已绑定',
-    3:'未绑定',
+  status: {
+    0: '生效中',
+    1: '已过期',
+    2: '已绑定',
+    3: '未绑定',
   },
-  bindStatus:'绑定状态',
-  statusName:'权益状态'
-}
+  bindStatus: '绑定状态',
+  statusName: '权益状态',
+};

+ 64 - 65
src/locales/lang/zh-CN/routes/equity.ts

@@ -1,76 +1,75 @@
 export default {
-  add:'新增授权',
-  addDowm:'新增下载',
-  renew:'续费',
-  userName:'用户账号',
-  count:'用户账号',
-  orderSn:'订单号',
-  payTime:'支付时间',
-  invoiceTime:'开票申请时间',
-  money:'开票金额',
-  id:'权益ID',
-  dowmCount:'下载次数',
-  timeList:'授权时间',
-  expiryTime: '到期日期', 
-  newTime:'最新授权时间',
-  time:'开始日期',
-  countNumber:'数量',
-  Type:'权益类型',
-  giveType:'授权方式',
-  nickName:'昵称',
-  userName1:'账号',
-  email:'邮箱',
-  userCount:'授权数量',
-  incrementType:{
-    0:'会员权益',
-    1:'场景下载',
+  add: '新增授权',
+  addDowm: '新增下载',
+  renew: '续费',
+  userName: '用户账号',
+  count: '用户账号',
+  orderSn: '订单号',
+  payTime: '支付时间',
+  invoiceTime: '开票申请时间',
+  money: '开票金额',
+  id: '权益ID',
+  dowmCount: '下载次数',
+  timeList: '授权时间',
+  expiryTime: '到期日期',
+  newTime: '最新授权时间',
+  time: '开始日期',
+  countNumber: '数量',
+  Type: '权益类型',
+  giveType: '授权方式',
+  nickName: '昵称',
+  userName1: '账号',
+  email: '邮箱',
+  userCount: '授权数量',
+  incrementType: {
+    0: '会员权益',
+    1: '场景下载',
   },
-  equityType:{
-    0:'专业会员(年)',
-    1:'专业会员(年)',
-    2:'专业会员(年)',
-    3:'高级会员(月)',
+  equityType: {
+    0: '专业会员(年)',
+    1: '专业会员(年)',
+    2: '专业会员(年)',
+    3: '高级会员(月)',
   },
-  zhTips:'不支持中文字符',
-  listTitle:'销售统计列表',
-  exportExcel:'导出excel',
-  excelTitle:'确定导出excel?',
+  zhTips: '不支持中文字符',
+  listTitle: '销售统计列表',
+  exportExcel: '导出excel',
+  excelTitle: '确定导出excel?',
   CardMajorNum: '上月销售专业会员(年)',
   CardHighNum: '上月销售高级会员(月)',
   CardDownNum: '上月销售场景下载',
-  syks:'剩余可售',
-  addcount:'新增次数',
-  rules:{
-    userName:'请输入用户账号',
-    userName1:'请输入正确的用户账号',
-    userName2:'该账号不存在',
+  syks: '剩余可售',
+  addcount: '新增次数',
+  rules: {
+    userName: '请输入用户账号',
+    userName1: '请输入正确的用户账号',
+    userName2: '该账号不存在',
     id: '请输入正确的权益ID',
-},
-  unit:{
-    1:'个',
-    2:'次',
-    '-1':'年',
-    '-2':'月',
-    '-3':'个月',
   },
-  titleHelpMessage:{
-    1:'统计规则:',
-    2:'1、会员权益:统计当前经销商新授权的记录、以及相关权益ID续费记录,包括经销商授权和续费、平台授权(续费)、官网自购(续费);',
-    3:'2、场景下载:统计当前经销售新授权(除相关用户)的下载次数;',
+  unit: {
+    1: '个',
+    2: '次',
+    '-1': '年',
+    '-2': '月',
+    '-3': '个月',
   },
-  totalTime:'期限',
-  totalMessge:'剩余可售权益不足',
-  operationType:'操作类型',
-  operationUserName:'操作用户',
-  operationTime:'操作时间',
-  incrementId:'权益ID',
+  titleHelpMessage: {
+    1: '统计规则:',
+    2: '1、会员权益:统计当前经销商新授权的记录、以及相关权益ID续费记录,包括经销商授权和续费、平台授权(续费)、官网自购(续费);',
+    3: '2、场景下载:统计当前经销售新授权(除相关用户)的下载次数;',
+  },
+  totalTime: '期限',
+  totalMessge: '剩余可售权益不足',
+  operationType: '操作类型',
+  operationUserName: '操作用户',
+  operationTime: '操作时间',
+  incrementId: '权益ID',
   platform: '平台',
-  operation:{
-    0:'授权权益',
-    1:'解除权益',
-    2:'绑定相机',
-    3:'解绑相机',
+  operation: {
+    0: '授权权益',
+    1: '解除权益',
+    2: '绑定相机',
+    3: '解绑相机',
   },
-  jjxs:'即将销售',
-}
-
+  jjxs: '即将销售',
+};

+ 1 - 1
src/locales/lang/zh-CN/routes/finance.ts

@@ -22,5 +22,5 @@ export default {
     2: '官网自购',
     3: '平台授权',
   },
-  totalTime:'授权总期限(年/月)',
+  totalTime: '授权总期限(年/月)',
 };

+ 8 - 8
src/locales/lang/zh-CN/routes/operate.ts

@@ -1,9 +1,9 @@
 export default {
-  releaseTime:'发布时间',
-  newsTitle:'新闻标题',
-  newsAdd:'新增新闻',
-  source:'来源',
-  objTitle:'职位名称',
-  submitTitle:'提交时间',
-  mesgContent:'留言内容',
-};
+  releaseTime: '发布时间',
+  newsTitle: '新闻标题',
+  newsAdd: '新增新闻',
+  source: '来源',
+  objTitle: '职位名称',
+  submitTitle: '提交时间',
+  mesgContent: '留言内容',
+};

+ 32 - 32
src/locales/lang/zh-CN/routes/product.ts

@@ -1,40 +1,40 @@
 export default {
-  addVstive:'新增版本',
-  newsTitle:'新闻标题',
-  newsAdd:'新增新闻',
-  source:'来源',
-  objTitle:'职位名称',
-  submitTitle:'提交时间',
-  mesgContent:'留言内容',
-  types:'设备类型',
-  minVersion:'最低版本号',
-  version:'版本号',
-  versionPlaceholder:'最新版本号',
-  versionTips:'(低于此版本号强制更新)',
-  description:'版本更新说明',
-  description_zh:'中文更新说明',
-  description_en:'英文更新说明',
-  file:'文件',
-  type:{
-    0:'旧双目相机',
-    1:'四维看看',
-    2:'四维看见',
-    3:'四维深时',
-    9:'四维看见',
-    10:'四维深时',
+  addVstive: '新增版本',
+  newsTitle: '新闻标题',
+  newsAdd: '新增新闻',
+  source: '来源',
+  objTitle: '职位名称',
+  submitTitle: '提交时间',
+  mesgContent: '留言内容',
+  types: '设备类型',
+  minVersion: '最低版本号',
+  version: '版本号',
+  versionPlaceholder: '最新版本号',
+  versionTips: '(低于此版本号强制更新)',
+  description: '版本更新说明',
+  description_zh: '中文更新说明',
+  description_en: '英文更新说明',
+  file: '文件',
+  type: {
+    0: '旧双目相机',
+    1: '四维看看',
+    2: '四维看见',
+    3: '四维深时',
+    9: '四维看见',
+    10: '四维深时',
   },
-  outType:{
-    0:'正常销售',
-    1:'员工自用',
-    2:'礼品赠送',
-    3:'其他',
+  outType: {
+    0: '正常销售',
+    1: '员工自用',
+    2: '礼品赠送',
+    3: '其他',
   },
-  sdkType:{
-    1:'Unity',
-    2:'UE4',
+  sdkType: {
+    1: 'Unity',
+    2: 'UE4',
   },
   statusType: {
     0: '未发布',
     1: '已发布',
   },
-};
+};

+ 39 - 39
src/locales/lang/zh-CN/routes/scene.ts

@@ -1,42 +1,42 @@
 export default {
-  tableType:{
-    0:'四维看看',
-    1:'四维看见',
-    2:'四维深时',
-    3:'四维双目Lite',
+  tableType: {
+    0: '四维看看',
+    1: '四维看见',
+    2: '四维深时',
+    3: '四维双目Lite',
   },
-  transfer:'迁移',
-  copy:'复制',
-  down:'下载',
-  canlenDown:'取消下载',
-  sceneName:'场景标题',
-  num:'场景码',
-  createTime:'拍摄时间',
-  amount:'计算完成时间',
-  snCode:'SN码',
-  sceneSize:'场景大小',
-  userName:'绑定账号',
-  viewCount:'浏览量',
-  copyTime:'复制时间',
-  isCopy:'是否复制',
-  status:'状态',
-  statusType:{
-    '0':'计算中',
-    '1':'计算成功',
-    '-2':'计算成功',
-    '-1':'计算失败',
-    '-3':'封存',
+  transfer: '迁移',
+  copy: '复制',
+  down: '下载',
+  canlenDown: '取消下载',
+  sceneName: '场景标题',
+  num: '场景码',
+  createTime: '拍摄时间',
+  amount: '计算完成时间',
+  snCode: 'SN码',
+  sceneSize: '场景大小',
+  userName: '绑定账号',
+  viewCount: '浏览量',
+  copyTime: '复制时间',
+  isCopy: '是否复制',
+  status: '状态',
+  statusType: {
+    '0': '计算中',
+    '1': '计算成功',
+    '-2': '计算成功',
+    '-1': '计算失败',
+    '-3': '封存',
   },
-  copyTipsTitle:'复制场景',
-  copyTipsText:'复制场景,场景归属在原相机下。<br/>确定要复制场景吗?',
-  copySccuse:'复制成功',
-  deleteSccuse:'删除成功',
-  downErr:'下载失败',
-  transferSccuse:'场景迁移成功。',
-  transferTitle:'迁移场景',
-  toSnCode:'迁移至',
-  rules:{
-    snCode:'请输入相机SN码',
-    snCode1:'不支持中文字符',
-  }
-};
+  copyTipsTitle: '复制场景',
+  copyTipsText: '复制场景,场景归属在原相机下。<br/>确定要复制场景吗?',
+  copySccuse: '复制成功',
+  deleteSccuse: '删除成功',
+  downErr: '下载失败',
+  transferSccuse: '场景迁移成功。',
+  transferTitle: '迁移场景',
+  toSnCode: '迁移至',
+  rules: {
+    snCode: '请输入相机SN码',
+    snCode1: '不支持中文字符',
+  },
+};

+ 25 - 25
src/locales/lang/zh-CN/routes/spares.ts

@@ -1,27 +1,27 @@
 export default {
-  tableType:{
-    '-1':'全部',
-    0:'待接单',
-    10:'待检测',
-    20:'待报价',
-    30:'待确认',
-    40:'已取消',
-    50:'待备料',
-    60:'维修中',
-    70:'待测试',
-    80:'待支付',
-    90:'待回收',
-    91:'待回收',
-    100:'待发货',
-    110:'已发货',
-    12:'已评价',
-    13:'待评价',
-    21:'待跟进',
-    22:'维修完成',
-    23:'已完结',
-    24:'待备料',
-    25:'已备料',
-    26:'待测试',
-    27:'测试完成',
+  tableType: {
+    '-1': '全部',
+    0: '待接单',
+    10: '待检测',
+    20: '待报价',
+    30: '待确认',
+    40: '已取消',
+    50: '待备料',
+    60: '维修中',
+    70: '待测试',
+    80: '待支付',
+    90: '待回收',
+    91: '待回收',
+    100: '待发货',
+    110: '已发货',
+    12: '已评价',
+    13: '待评价',
+    21: '待跟进',
+    22: '维修完成',
+    23: '已完结',
+    24: '待备料',
+    25: '已备料',
+    26: '待测试',
+    27: '测试完成',
   },
-}
+};

+ 2 - 2
src/locales/lang/zh-CN/routes/system.ts

@@ -1,5 +1,5 @@
 const account = {
-  roleBut:'权限',
+  roleBut: '权限',
   userName: '用户名',
   accountList: '账户列表',
   addHost: '新增主持人',
@@ -25,7 +25,7 @@ const account = {
   setTitle: '详情:用户',
   enable: '启用',
   stopUsing: '停用',
-  description:  '角色说明',
+  description: '角色说明',
   remarks: '备注',
   newMenu: '新增菜单',
   editMenu: '编辑菜单',

+ 260 - 260
src/views/work/addAccessoryModel.vue

@@ -24,291 +24,291 @@
   </BasicModal>
 </template>
 <script lang="ts">
-import { defineComponent, h, onMounted, reactive, ref } from 'vue';
-import { BasicModal, useModalInner } from '/@/components/Modal';
-import { BasicForm, FormSchema, useForm } from '/@/components/Form/index';
-import { useMessage } from '/@/hooks/web/useMessage';
-import { partAllList, faultAllList, checkRegister, repairAddPart } from '/@/api/spares';
-import { useI18n } from '/@/hooks/web/useI18n';
-import { uploadApi } from '/@/api/product/index';
+  import { defineComponent, h, onMounted, reactive, ref } from 'vue';
+  import { BasicModal, useModalInner } from '/@/components/Modal';
+  import { BasicForm, FormSchema, useForm } from '/@/components/Form/index';
+  import { useMessage } from '/@/hooks/web/useMessage';
+  import { partAllList, faultAllList, checkRegister, repairAddPart } from '/@/api/spares';
+  import { useI18n } from '/@/hooks/web/useI18n';
+  import { uploadApi } from '/@/api/product/index';
 
-const { t } = useI18n();
-export default defineComponent({
-  components: { BasicModal, BasicForm },
-  props: {
-    userData: { type: Object },
-  },
-  emits: ['update', 'register'],
-  setup(props, { emit }) {
-    const n = ref(1);
-    const fileFlow = reactive({
-      file: null,
-      title: '添加备件',
-      cameraType: 0,
-      type: 2, //2-普通发票,3-专用发票
-      faultList: [],
-    });
-    const loading = ref(false);
-    const { createMessage, createConfirm } = useMessage();
-    let schemas: FormSchema[] = [
-      {
-        field: 'repairId',
-        component: 'Input',
-        label: '维修单号',
-        slot: 'text',
-        colProps: {
-          span: 24,
-        },
-      },
-      {
-        field: 'deviceInfo',
-        component: 'Input',
-        label: '设备信息',
-        slot: 'text',
-        colProps: {
-          span: 18,
-        },
-      },
-      // {
-      //   field: 'faultIds',
-      //   component: 'CheckboxGroup',
-      //   label: '维修登记',
-      //   required: true,
-      //   componentProps: {
-      //     options: fileFlow.faultList,
-      //     maxLength: 50,
-      //   },
-      //   colProps: {
-      //     span: 18,
-      //   },
-      // },
-      {
-        field: 'checkResult',
-        component: 'InputTextArea',
-        label: '维修登记',
-        required: true,
-        componentProps: {
-          maxLength: 500,
-          rows: 3,
-          placeholder: '请描述检测后的具体故障情况。',
-        },
-        colProps: {
-          span: 18,
-        },
-      },
-      {
-        field: 'checkImg',
-        component: 'Upload',
-        label: '相关图片',
-        rules: [{ required: false, message: t('common.uploadMessge') }],
-        itemProps: {
-          validateTrigger: 'blur',
-        },
-        componentProps: {
-          api: uploadApi,
-          // fileFlow:true,
-          maxNumber: 6,
-          maxSize: 1000,
-          accept: ['jpeg', 'jpg', 'png'],
-          // afterFetch: function (data) {
-          //   console.log('url',data)
-          //   // Reflect.set(data, 'url', data.file);
-          //   fileFlow.file = data.file
-          //   return data;
-          // },
-        },
-
-        colProps: {
-          span: 12,
-        },
-      },
-      {
-        field: '0',
-        component: 'Input',
-        label: '所需备件',
-        // labelWidth: 0,
-        colProps: {
-          span: 18,
-        },
-        slot: 'add',
-      },
-    ];
-
-    const [
-      registerForm,
-      {
-        validate,
-        resetFields,
-        setFieldsValue,
-        removeSchemaByFiled,
-        appendSchemaByField,
-        updateSchema,
-      },
-    ] = useForm({
-      labelWidth: 100,
-      schemas: schemas,
-      showActionButtonGroup: false,
-      actionColOptions: {
-        span: 24,
-      },
-    });
-    onMounted(() => {});
-    // getFaultList();
-    let addListFunc = () => {};
-    const [register, { closeModal }] = useModalInner((data) => {
-      data && onDataReceive(data);
-    });
-    async function getFaultList() {
-      const res = await faultAllList({});
-      fileFlow.faultList = res.map((item) => {
-        return {
-          ...item,
-          label: item.faultMsg,
-          value: item.faultId,
-        };
-      });
-    }
-
-    function onDataReceive(data) {
-      resetFields();
-      // updateSchema({
-      //   field: 'faultIds',
-      //   componentProps: {
-      //     options: fileFlow.faultList,
-      //   },
-      // });
-      fileFlow.type = data.type;
-      fileFlow.cameraType = data.cameraType;
-      setFieldsValue({
-        ...data,
-        deviceInfo: t(`routes.scene.tableType.${data.cameraType}`) + data.cameraSnCode,
-      });
-    }
-    function del(field) {
-      removeSchemaByFiled([`partId${field}`, `partCount${field}`, `${field}`]);
-      // n.value--;
-    }
-    function add() {
-      let list = addSchemas(n.value);
-      list.map((ele) => {
-        appendSchemaByField(ele, '');
+  const { t } = useI18n();
+  export default defineComponent({
+    components: { BasicModal, BasicForm },
+    props: {
+      userData: { type: Object },
+    },
+    emits: ['update', 'register'],
+    setup(props, { emit }) {
+      const n = ref(1);
+      const fileFlow = reactive({
+        file: null,
+        title: '添加备件',
+        cameraType: 0,
+        type: 2, //2-普通发票,3-专用发票
+        faultList: [],
       });
-      n.value++;
-    }
-    function addSchemas(number) {
-      let parentList: FormSchema[] = [
+      const loading = ref(false);
+      const { createMessage, createConfirm } = useMessage();
+      let schemas: FormSchema[] = [
         {
-          field: 'partId' + number,
-          label: '备件' + number,
-          component: 'ApiSelect',
+          field: 'repairId',
+          component: 'Input',
+          label: '维修单号',
+          slot: 'text',
           colProps: {
-            span: 12,
+            span: 24,
+          },
+        },
+        {
+          field: 'deviceInfo',
+          component: 'Input',
+          label: '设备信息',
+          slot: 'text',
+          colProps: {
+            span: 18,
           },
+        },
+        // {
+        //   field: 'faultIds',
+        //   component: 'CheckboxGroup',
+        //   label: '维修登记',
+        //   required: true,
+        //   componentProps: {
+        //     options: fileFlow.faultList,
+        //     maxLength: 50,
+        //   },
+        //   colProps: {
+        //     span: 18,
+        //   },
+        // },
+        {
+          field: 'checkResult',
+          component: 'InputTextArea',
+          label: '维修登记',
           required: true,
           componentProps: {
-            maxLength: 15,
-            style: 'width: 220px',
-            api: partAllList,
-            labelField: 'partName',
-            valueField: 'partId',
-            params: {
-              cameraType: fileFlow.cameraType,
-            },
-            showSearch: true,
-            optionFilterProp: 'label',
+            maxLength: 500,
+            rows: 3,
+            placeholder: '请描述检测后的具体故障情况。',
+          },
+          colProps: {
+            span: 18,
           },
         },
         {
-          field: 'partCount' + number,
-          label: '数量',
-          component: 'InputNumber',
-          required: true,
-          defaultValue: 1,
-          labelWidth: 50,
+          field: 'checkImg',
+          component: 'Upload',
+          label: '相关图片',
+          rules: [{ required: false, message: t('common.uploadMessge') }],
+          itemProps: {
+            validateTrigger: 'blur',
+          },
           componentProps: {
-            max: 999,
-            min: 1,
+            api: uploadApi,
+            // fileFlow:true,
+            maxNumber: 6,
+            maxSize: 1000,
+            accept: ['jpeg', 'jpg', 'png'],
+            // afterFetch: function (data) {
+            //   console.log('url',data)
+            //   // Reflect.set(data, 'url', data.file);
+            //   fileFlow.file = data.file
+            //   return data;
+            // },
           },
+
           colProps: {
-            span: 6,
+            span: 12,
           },
         },
         {
-          field: number.toString(),
+          field: '0',
           component: 'Input',
-          label: '',
-          labelWidth: 0,
+          label: '所需备件',
+          // labelWidth: 0,
           colProps: {
-            span: 6,
+            span: 18,
           },
-          slot: 'del',
+          slot: 'add',
         },
       ];
-      return parentList;
-    }
-    function clearInfo(val) {
-      if (!val) {
+
+      const [
+        registerForm,
+        {
+          validate,
+          resetFields,
+          setFieldsValue,
+          removeSchemaByFiled,
+          appendSchemaByField,
+          updateSchema,
+        },
+      ] = useForm({
+        labelWidth: 100,
+        schemas: schemas,
+        showActionButtonGroup: false,
+        actionColOptions: {
+          span: 24,
+        },
+      });
+      onMounted(() => {});
+      // getFaultList();
+      let addListFunc = () => {};
+      const [register, { closeModal }] = useModalInner((data) => {
+        data && onDataReceive(data);
+      });
+      async function getFaultList() {
+        const res = await faultAllList({});
+        fileFlow.faultList = res.map((item) => {
+          return {
+            ...item,
+            label: item.faultMsg,
+            value: item.faultId,
+          };
+        });
+      }
+
+      function onDataReceive(data) {
         resetFields();
+        // updateSchema({
+        //   field: 'faultIds',
+        //   componentProps: {
+        //     options: fileFlow.faultList,
+        //   },
+        // });
+        fileFlow.type = data.type;
+        fileFlow.cameraType = data.cameraType;
+        setFieldsValue({
+          ...data,
+          deviceInfo: t(`routes.scene.tableType.${data.cameraType}`) + data.cameraSnCode,
+        });
       }
-      let clearFiled = [];
-      for (let index = 1; index < n.value; index++) {
-        clearFiled.push(`partId${index}`, `partCount${index}`, `${index}`);
+      function del(field) {
+        removeSchemaByFiled([`partId${field}`, `partCount${field}`, `${field}`]);
+        // n.value--;
       }
-      removeSchemaByFiled(clearFiled);
-      n.value = 1;
-    }
-    const handleSubmit = async () => {
-      const params = await validate();
-      try {
-        createConfirm({
-          iconType: 'warning',
-          title: () => h('span', '温馨提示'),
-          content: '确定要添加备件吗?',
-          onOk: async () => {
-            loading.value = true;
-            let partList = [];
-            for (let s = 1; s <= n.value; s++) {
-              console.log('params', params, partList);
-              if (params[`partId${s}`]) {
-                partList.push({
-                  partId: params[`partId${s}`],
-                  partCount: params[`partCount${s}`],
-                });
-              }
-            }
-            console.log('params', params, partList);
-            await repairAddPart({
-              ...params,
-              partList,
-            });
-            loading.value = false;
-            createMessage.success(t('common.optSuccess'));
-            closeModal();
-            clearInfo();
-            emit('update');
+      function add() {
+        let list = addSchemas(n.value);
+        list.map((ele) => {
+          appendSchemaByField(ele, '');
+        });
+        n.value++;
+      }
+      function addSchemas(number) {
+        let parentList: FormSchema[] = [
+          {
+            field: 'partId' + number,
+            label: '备件' + number,
+            component: 'ApiSelect',
+            colProps: {
+              span: 12,
+            },
+            required: true,
+            componentProps: {
+              maxLength: 15,
+              style: 'width: 220px',
+              api: partAllList,
+              labelField: 'partName',
+              valueField: 'partId',
+              params: {
+                cameraType: fileFlow.cameraType,
+              },
+              showSearch: true,
+              optionFilterProp: 'label',
+            },
           },
-          onCancel: () => {
-            loading.value = false;
+          {
+            field: 'partCount' + number,
+            label: '数量',
+            component: 'InputNumber',
+            required: true,
+            defaultValue: 1,
+            labelWidth: 50,
+            componentProps: {
+              max: 999,
+              min: 1,
+            },
+            colProps: {
+              span: 6,
+            },
           },
-        });
-      } catch (error) {
-        loading.value = false;
-        console.log('not passing', error);
+          {
+            field: number.toString(),
+            component: 'Input',
+            label: '',
+            labelWidth: 0,
+            colProps: {
+              span: 6,
+            },
+            slot: 'del',
+          },
+        ];
+        return parentList;
+      }
+      function clearInfo(val) {
+        if (!val) {
+          resetFields();
+        }
+        let clearFiled = [];
+        for (let index = 1; index < n.value; index++) {
+          clearFiled.push(`partId${index}`, `partCount${index}`, `${index}`);
+        }
+        removeSchemaByFiled(clearFiled);
+        n.value = 1;
       }
-    };
-    return {
-      register,
-      registerForm,
-      fileFlow,
-      handleSubmit,
-      addListFunc,
-      resetFields,
-      loading,
-      clearInfo,
-      t,
-      del,
-      add,
-    };
-  },
-});
+      const handleSubmit = async () => {
+        const params = await validate();
+        try {
+          createConfirm({
+            iconType: 'warning',
+            title: () => h('span', '温馨提示'),
+            content: '确定要添加备件吗?',
+            onOk: async () => {
+              loading.value = true;
+              let partList = [];
+              for (let s = 1; s <= n.value; s++) {
+                console.log('params', params, partList);
+                if (params[`partId${s}`]) {
+                  partList.push({
+                    partId: params[`partId${s}`],
+                    partCount: params[`partCount${s}`],
+                  });
+                }
+              }
+              console.log('params', params, partList);
+              await repairAddPart({
+                ...params,
+                partList,
+              });
+              loading.value = false;
+              createMessage.success(t('common.optSuccess'));
+              closeModal();
+              clearInfo();
+              emit('update');
+            },
+            onCancel: () => {
+              loading.value = false;
+            },
+          });
+        } catch (error) {
+          loading.value = false;
+          console.log('not passing', error);
+        }
+      };
+      return {
+        register,
+        registerForm,
+        fileFlow,
+        handleSubmit,
+        addListFunc,
+        resetFields,
+        loading,
+        clearInfo,
+        t,
+        del,
+        add,
+      };
+    },
+  });
 </script>

+ 186 - 184
src/views/work/aftermarket.vue

@@ -1,207 +1,209 @@
 <template>
-    <BasicTable @register="registerTable">
-      <template #toolbar>
-        <a-button type="primary" @click="handleExport" v-if="getCheckPerm('aftermarket_export')" > 数据导出</a-button>
-      </template>
-    </BasicTable>
+  <BasicTable @register="registerTable">
+    <template #toolbar>
+      <a-button type="primary" @click="handleExport" v-if="getCheckPerm('aftermarket_export')">
+        数据导出</a-button
+      >
+    </template>
+  </BasicTable>
 </template>
 <script lang="ts">
-import { defineComponent, onMounted, ref, h, onActivated, computed } from 'vue';
-import { PageWrapper } from '/@/components/Page';
-import {
-  BasicTable,
-  useTable,
-  TableAction,
-  BasicColumn,
-  TableImg,
-  FormProps,
-} from '/@/components/Table';
-import { Tabs } from 'ant-design-vue';
-import { operateSceneList } from '/@/api/operate';
-import { useI18n } from '/@/hooks/web/useI18n';
-import { usePermissionStore } from '/@/store/modules/permission';
-import recoveryModal from './recoveryModal.vue';
-import { useModal } from '/@/components/Modal';
-import { useRouter } from 'vue-router'
-import { repairPayList, DownExport } from '/@/api/spares';
-import { useMessage } from '/@/hooks/web/useMessage';
-import { useLocaleStore } from '/@/store/modules/locale';
-export default defineComponent({
-  name:'售后订单',
-  components: {
+  import { defineComponent, onMounted, ref, h, onActivated, computed } from 'vue';
+  import { PageWrapper } from '/@/components/Page';
+  import {
     BasicTable,
+    useTable,
     TableAction,
+    BasicColumn,
     TableImg,
-    recoveryModal,
-    PageWrapper,
-    [Tabs.name]: Tabs,
-    [Tabs.TabPane.name]: Tabs.TabPane,
-  },
-  setup() {
-    const { t } = useI18n();
-    const permissionStore = usePermissionStore();
-    const router = useRouter()
-    const { getCheckPerm } = permissionStore;
-    const tableType = ref<Recordable>(0); //0看看 、1看见、2深时
-    const { createConfirm } = useMessage();
-    const localeStore = useLocaleStore();
-    const isEn = computed(() => localeStore.getLocale === 'en');
-    onMounted(() => {
-      // console.log(router.currentRoute.value.params.id);
-    });
-    const columns: BasicColumn[] = [
-      {
-        title: '下单时间',
-        dataIndex: 'createTime',
-        width: 180,
-      },
-      {
-        title: '订单号',
-        dataIndex: 'orderSn',
-        width: 180,
-      },
-      {
-        title: 'OpenId',
-        dataIndex: 'wxPayOpenId',
-        width: 230,
-      },
-      {
-        title: '维修单号',
-        dataIndex: 'repairId',
-        width: 150,
-      },
-      {
-        title: '订单金额(元)',
-        dataIndex: 'payAmount',
-        width: 130,
-      },
-      {
-        title: '支付方式',
-        dataIndex: 'payType	',
-        width: 100,
-        customRender: ({ record }) => {
-          return record.payType	 == 0 ? '银行转账' : record.payType	 == 1 ? '微信' : '支付宝';
+    FormProps,
+  } from '/@/components/Table';
+  import { Tabs } from 'ant-design-vue';
+  import { operateSceneList } from '/@/api/operate';
+  import { useI18n } from '/@/hooks/web/useI18n';
+  import { usePermissionStore } from '/@/store/modules/permission';
+  import recoveryModal from './recoveryModal.vue';
+  import { useModal } from '/@/components/Modal';
+  import { useRouter } from 'vue-router';
+  import { repairPayList, DownExport } from '/@/api/spares';
+  import { useMessage } from '/@/hooks/web/useMessage';
+  import { useLocaleStore } from '/@/store/modules/locale';
+  export default defineComponent({
+    name: '售后订单',
+    components: {
+      BasicTable,
+      TableAction,
+      TableImg,
+      recoveryModal,
+      PageWrapper,
+      [Tabs.name]: Tabs,
+      [Tabs.TabPane.name]: Tabs.TabPane,
+    },
+    setup() {
+      const { t } = useI18n();
+      const permissionStore = usePermissionStore();
+      const router = useRouter();
+      const { getCheckPerm } = permissionStore;
+      const tableType = ref<Recordable>(0); //0看看 、1看见、2深时
+      const { createConfirm } = useMessage();
+      const localeStore = useLocaleStore();
+      const isEn = computed(() => localeStore.getLocale === 'en');
+      onMounted(() => {
+        // console.log(router.currentRoute.value.params.id);
+      });
+      const columns: BasicColumn[] = [
+        {
+          title: '下单时间',
+          dataIndex: 'createTime',
+          width: 180,
+        },
+        {
+          title: '订单号',
+          dataIndex: 'orderSn',
+          width: 180,
         },
-      },
-      {
-        title: '支付时间',
-        dataIndex: 'payTime',
-        width: 150,
-      },
-      {
-        title: '交易号',
-        dataIndex: 'tradeNo',
-        width: 250,
-      },
-      {
-        title: '订单状态',
-        dataIndex: 'payStatus',
-        width: 100,
-        customRender: ({ record }) => {
-          return record.payStatus	 == 0 ? '未支付' : record.payStatus	 == 1 ? '已支付' : '支付失败';
+        {
+          title: 'OpenId',
+          dataIndex: 'wxPayOpenId',
+          width: 230,
         },
-      },
-    ];
-    const searchForm: Partial<FormProps> = {
-      labelWidth: 120,
-      autoAdvancedLine: 1,
-      actionColOptions: {
-        span: 24,
-      },
-      schemas: [
         {
-          field: 'repairId',
-          component: 'Input',
-          label: '维修单号',
-          colProps: {
-            xl: 7,
-            xxl: 7,
-          },
+          title: '维修单号',
+          dataIndex: 'repairId',
+          width: 150,
         },
         {
-          field: 'tradeNo',
-          component: 'Input',
-          label: '交易号',
-          colProps: {
-            xl: 7,
-            xxl: 7,
+          title: '订单金额(元)',
+          dataIndex: 'payAmount',
+          width: 130,
+        },
+        {
+          title: '支付方式',
+          dataIndex: 'payType	',
+          width: 100,
+          customRender: ({ record }) => {
+            return record.payType == 0 ? '银行转账' : record.payType == 1 ? '微信' : '支付宝';
           },
         },
         {
-          field: 'timeList',
-          label: '支付时间',
-          component: 'RangePicker',
-          componentProps: {
-            maxLength: 100,
-            format: 'YYYY-MM-DD',
-            valueFormat: 'YYYY-MM-DD',
-            showTime: true,
+          title: '支付时间',
+          dataIndex: 'payTime',
+          width: 150,
+        },
+        {
+          title: '交易号',
+          dataIndex: 'tradeNo',
+          width: 250,
+        },
+        {
+          title: '订单状态',
+          dataIndex: 'payStatus',
+          width: 100,
+          customRender: ({ record }) => {
+            return record.payStatus == 0 ? '未支付' : record.payStatus == 1 ? '已支付' : '支付失败';
+          },
+        },
+      ];
+      const searchForm: Partial<FormProps> = {
+        labelWidth: 120,
+        autoAdvancedLine: 1,
+        actionColOptions: {
+          span: 24,
+        },
+        schemas: [
+          {
+            field: 'repairId',
+            component: 'Input',
+            label: '维修单号',
+            colProps: {
+              xl: 7,
+              xxl: 7,
+            },
+          },
+          {
+            field: 'tradeNo',
+            component: 'Input',
+            label: '交易号',
+            colProps: {
+              xl: 7,
+              xxl: 7,
+            },
           },
-          colProps: {
-            xl: 7,
-            xxl: 7,
+          {
+            field: 'timeList',
+            label: '支付时间',
+            component: 'RangePicker',
+            componentProps: {
+              maxLength: 100,
+              format: 'YYYY-MM-DD',
+              valueFormat: 'YYYY-MM-DD',
+              showTime: true,
+            },
+            colProps: {
+              xl: 7,
+              xxl: 7,
+            },
           },
+        ],
+      };
+      const [registerRecovery, { openModal }] = useModal();
+      const [registerTable, { reload }] = useTable({
+        api: repairPayList,
+        columns: columns,
+        useSearchForm: true,
+        searchInfo: { type: tableType },
+        formConfig: searchForm,
+        showTableSetting: true,
+        showIndexColumn: false,
+        fetchSetting: {
+          pageField: 'pageNum',
+          sizeField: 'pageSize',
+          listField: 'list',
+          totalField: 'total',
         },
-      ],
-    };
-    const [registerRecovery, { openModal }] = useModal();
-    const [registerTable, { reload }] = useTable({
-      api: repairPayList,
-      columns: columns,
-      useSearchForm: true,
-      searchInfo: { type: tableType },
-      formConfig: searchForm,
-      showTableSetting: true,
-      showIndexColumn: false,
-      fetchSetting: {
-        pageField: 'pageNum',
-        sizeField: 'pageSize',
-        listField: 'list',
-        totalField: 'total',
-      },
-      canResize: false,
-    });
-    async function handleDetail(record: Recordable) {
-      console.log('record', record);
-      router.push({path:`detail/${record.repairId||'20230215174919387'}`})
-    }
-    async function handleRecover(record: Recordable) {
-      openModal(true, {
-        ...record,
+        canResize: false,
       });
-    }
-    onActivated(()=>{
-      reload();
-    })
-    function handleExport() {
-      createConfirm({
-        iconType: 'warning',
-        title: () => h('span', t('common.reminder')),
-        content: () => h('span', t('routes.equity.excelTitle')),
-        onOk: async () => {
-          await DownExport({});
-        },
+      async function handleDetail(record: Recordable) {
+        console.log('record', record);
+        router.push({ path: `detail/${record.repairId || '20230215174919387'}` });
+      }
+      async function handleRecover(record: Recordable) {
+        openModal(true, {
+          ...record,
+        });
+      }
+      onActivated(() => {
+        reload();
       });
-    }
-    return {
-      registerTable,
-      reload,
-      t,
-      tableType,
-      handleExport,
-      getCheckPerm,
-      handleDetail,
-      handleRecover,
-      registerRecovery,
-    };
-  },
-});
+      function handleExport() {
+        createConfirm({
+          iconType: 'warning',
+          title: () => h('span', t('common.reminder')),
+          content: () => h('span', t('routes.equity.excelTitle')),
+          onOk: async () => {
+            await DownExport({});
+          },
+        });
+      }
+      return {
+        registerTable,
+        reload,
+        t,
+        tableType,
+        handleExport,
+        getCheckPerm,
+        handleDetail,
+        handleRecover,
+        registerRecovery,
+      };
+    },
+  });
 </script>
 <style lang="less" scoped>
-.desc-wrap-BasicTable {
-  background-color: #f0f2f5;
-  .vben-basic-table-form-container {
-    padding: 0;
+  .desc-wrap-BasicTable {
+    background-color: #f0f2f5;
+    .vben-basic-table-form-container {
+      padding: 0;
+    }
   }
-}
 </style>

+ 312 - 307
src/views/work/checkModel.vue

@@ -1,346 +1,351 @@
 <template>
-    <BasicModal 
-      v-bind="$attrs"
-      @register="register"
-      title="检测登记"
-      width="700px"
-      @cancel="clearInfo"
-      :confirmLoading="loading"
-      @ok="handleSubmit"
-    >
-      <div class="pt-2px pr-3px myRadioGroup">
-        <BasicForm @register="registerForm">
-          <template #text="{ model, field }">
-            {{ model[field] }}
-          </template>
-          <template #add>
-            <Button @click="add">添加备件</Button>
-          </template>
-          <template #del="{ field }">
-            <Button @click="del(field)">删除</Button>
-          </template>
-        </BasicForm>
-        <div class="tips" style="padding:0 100px">
-          <p>说明</p>
-          <p>1、保内维修,直接进入待备料或维修中</p>
-          <p>2、保外维修,由售后人员进行报价确认后再备料维修</p>
-        </div>
+  <BasicModal
+    v-bind="$attrs"
+    @register="register"
+    title="检测登记"
+    width="700px"
+    @cancel="clearInfo"
+    :confirmLoading="loading"
+    @ok="handleSubmit"
+  >
+    <div class="pt-2px pr-3px myRadioGroup">
+      <BasicForm @register="registerForm">
+        <template #text="{ model, field }">
+          {{ model[field] }}
+        </template>
+        <template #add>
+          <Button @click="add">添加备件</Button>
+        </template>
+        <template #del="{ field }">
+          <Button @click="del(field)">删除</Button>
+        </template>
+      </BasicForm>
+      <div class="tips" style="padding: 0 100px">
+        <p>说明</p>
+        <p>1、保内维修,直接进入待备料或维修中</p>
+        <p>2、保外维修,由售后人员进行报价确认后再备料维修</p>
       </div>
-    </BasicModal>
+    </div>
+  </BasicModal>
 </template>
 <script lang="ts">
-import { defineComponent, h, onMounted, reactive, ref } from 'vue';
-import { BasicModal, useModalInner } from '/@/components/Modal';
-import { BasicForm, FormSchema, useForm } from '/@/components/Form/index';
-import { useMessage } from '/@/hooks/web/useMessage';
-import { partAllList, faultAllList, checkRegister } from '/@/api/spares';
-import { useI18n } from '/@/hooks/web/useI18n';
-import { uploadApi } from '/@/api/product/index';
+  import { defineComponent, h, onMounted, reactive, ref } from 'vue';
+  import { BasicModal, useModalInner } from '/@/components/Modal';
+  import { BasicForm, FormSchema, useForm } from '/@/components/Form/index';
+  import { useMessage } from '/@/hooks/web/useMessage';
+  import { partAllList, faultAllList, checkRegister } from '/@/api/spares';
+  import { useI18n } from '/@/hooks/web/useI18n';
+  import { uploadApi } from '/@/api/product/index';
 
-const { t } = useI18n();
-export default defineComponent({
-  components: { BasicModal, BasicForm },
-  props: {
-    userData: { type: Object },
-  },
-  emits: ['update', 'register'],
-  setup(props, { emit }) {
-    const n = ref(1);
-    const fileFlow = reactive({
-      file: null,
-      cameraType: 0,
-      type: 2, //2-普通发票,3-专用发票
-      faultList: [],
-    });
-    const loading = ref(false);
-    const { createMessage, createConfirm } = useMessage();
-    let schemas: FormSchema[] = [
-      {
-        field: 'repairId',
-        component: 'Input',
-        label: '维修单号',
-        slot: 'text',
-        colProps: {
-          span: 24,
-        },
-      },
-      {
-        field: 'deviceInfo',
-        component: 'Input',
-        label: '设备信息',
-        slot: 'text',
-        colProps: {
-          span: 18,
-        },
-      },
-      {
-        field: 'warrantyExpirationDateText',
-        component: 'Input',
-        slot: 'text',
-        label: '保修届满日期',
-      },
-      {
-        field: 'faultIds',
-        component: 'CheckboxGroup',
-        label: '故障类型',
-        required: true,
-        componentProps: {
-          options: fileFlow.faultList,
-          maxLength: 50,
-        },
-        colProps: {
-          span: 18,
-        },
-      },        
-      {
-        field: 'defineDamage',
-        component: 'RadioGroup',
-        label: '定损结论',
-        helpMessage:'保修期内人为损坏将转为保修外',
-        defaultValue: 0,
-        componentProps: {
-          options: [
-            {
-              label: '非人为损坏',
-              value: 0,
-            },
-            {
-              label: '人为损坏',
-              value: 1,
-            },
-          ],
-        },
-        colProps: {
-          span: 22,
-        },
-      },
-      {
-        field: 'checkResult',
-        component: 'InputTextArea',
-        label: '检测结果',
-        required: true,
-        componentProps: {
-          maxLength: 500,
-          rows: 3,
-          placeholder: '请描述检测后的具体故障情况。',
-        },
-        colProps: {
-          span: 18,
-        },
-      },
-      {
-        field: 'checkImg',
-        component: 'Upload',
-        label: '相关图片',
-        rules: [{ required: false, message: t('common.uploadMessge') }],
-        itemProps: {
-          validateTrigger: 'blur',
-        },
-        componentProps: {
-          api: uploadApi,
-          maxNumber: 6,
-          maxSize: 1000,
-          accept: ['jpeg', 'jpg', 'png'],
+  const { t } = useI18n();
+  export default defineComponent({
+    components: { BasicModal, BasicForm },
+    props: {
+      userData: { type: Object },
+    },
+    emits: ['update', 'register'],
+    setup(props, { emit }) {
+      const n = ref(1);
+      const fileFlow = reactive({
+        file: null,
+        cameraType: 0,
+        type: 2, //2-普通发票,3-专用发票
+        faultList: [],
+      });
+      const loading = ref(false);
+      const { createMessage, createConfirm } = useMessage();
+      let schemas: FormSchema[] = [
+        {
+          field: 'repairId',
+          component: 'Input',
+          label: '维修单号',
+          slot: 'text',
+          colProps: {
+            span: 24,
+          },
         },
-
-        colProps: {
-          span: 12,
+        {
+          field: 'deviceInfo',
+          component: 'Input',
+          label: '设备信息',
+          slot: 'text',
+          colProps: {
+            span: 18,
+          },
         },
-      },
-      {
-        field: '0',
-        component: 'Input',
-        label: '所需备件',
-        colProps: {
-          span: 18,
+        {
+          field: 'warrantyExpirationDateText',
+          component: 'Input',
+          slot: 'text',
+          label: '保修届满日期',
         },
-        slot: 'add',
-      },
-    ];
-
-    const [
-      registerForm,
-      {
-        validate,
-        resetFields,
-        setFieldsValue,
-        removeSchemaByFiled,
-        appendSchemaByField,
-        updateSchema,
-      },
-    ] = useForm({
-      labelWidth: 100,
-      schemas: schemas,
-      showActionButtonGroup: false,
-      actionColOptions: {
-        span: 24,
-      },
-    });
-    onMounted(() => {});
-    getFaultList();
-    let addListFunc = () => {};
-    const [register, { closeModal }] = useModalInner((data) => {
-      data && onDataReceive(data);
-    });
-    async function getFaultList() {
-      const res = await faultAllList({});
-      fileFlow.faultList = res.map((item) => {
-        return {
-          ...item,
-          label: item.faultMsg,
-          value: item.faultId,
-        };
-      });
-    }
-
-    function onDataReceive(data) {
-      resetFields();
-      updateSchema([{
-        field: 'faultIds',
-        componentProps: {
-          options: fileFlow.faultList,
+        {
+          field: 'faultIds',
+          component: 'CheckboxGroup',
+          label: '故障类型',
+          required: true,
+          componentProps: {
+            options: fileFlow.faultList,
+            maxLength: 50,
+          },
+          colProps: {
+            span: 18,
+          },
         },
-      },{
-        field: 'damage',
-        ifShow: data.warrantyType == 0,
-      }]);
-      fileFlow.type = data.type;
-      fileFlow.cameraType = data.cameraType;
-      setFieldsValue({
-        ...data,
-        warrantyExpirationDateText: `${data.warrantyDate} (${data.warrantyType==0?'保内维修':data.warrantyType==1?'保内转保外':'保外维修'})`,
-        deviceInfo: t(`routes.scene.tableType.${data.cameraType}`) + data.cameraSnCode,
-      });
-    }
-    function del(field) {
-      removeSchemaByFiled([`partId${field}`, `partCount${field}`, `${field}`]);
-      // n.value--;
-    }
-    function add() {
-      let list = addSchemas(n.value);
-      list.map((ele) => {
-        appendSchemaByField(ele, '');
-      });
-      n.value++;
-    }
-    function addSchemas(number) {
-      let parentList: FormSchema[] = [
         {
-          field: 'partId' + number,
-          label: '备件' + number,
-          component: 'ApiSelect',
+          field: 'defineDamage',
+          component: 'RadioGroup',
+          label: '定损结论',
+          helpMessage: '保修期内人为损坏将转为保修外',
+          defaultValue: 0,
+          componentProps: {
+            options: [
+              {
+                label: '非人为损坏',
+                value: 0,
+              },
+              {
+                label: '人为损坏',
+                value: 1,
+              },
+            ],
+          },
           colProps: {
-            span: 12,
+            span: 22,
           },
+        },
+        {
+          field: 'checkResult',
+          component: 'InputTextArea',
+          label: '检测结果',
           required: true,
           componentProps: {
-            maxLength: 15,
-            style:'width: 220px',
-            api: partAllList,
-            labelField: 'partName',
-            valueField: 'partId',
-            params: {
-              cameraType: fileFlow.cameraType,
-            },
-            showSearch: true,
-            optionFilterProp: 'label',
+            maxLength: 500,
+            rows: 3,
+            placeholder: '请描述检测后的具体故障情况。',
+          },
+          colProps: {
+            span: 18,
           },
         },
         {
-          field: 'partCount' + number,
-          label: '数量',
-          component: 'InputNumber',
-          required: true,
-          defaultValue: 1,
-          labelWidth: 50,
+          field: 'checkImg',
+          component: 'Upload',
+          label: '相关图片',
+          rules: [{ required: false, message: t('common.uploadMessge') }],
+          itemProps: {
+            validateTrigger: 'blur',
+          },
           componentProps: {
-            max: 999,
-            min: 1,
+            api: uploadApi,
+            maxNumber: 6,
+            maxSize: 1000,
+            accept: ['jpeg', 'jpg', 'png'],
           },
+
           colProps: {
-            span: 6,
+            span: 12,
           },
         },
         {
-          field: number.toString(),
+          field: '0',
           component: 'Input',
-          label: '',
-          labelWidth: 0,
+          label: '所需备件',
           colProps: {
-            span: 6,
+            span: 18,
           },
-          slot: 'del',
+          slot: 'add',
         },
       ];
-      return parentList;
-    }
-    function clearInfo(val){
-        if(!val){
-          resetFields()
+
+      const [
+        registerForm,
+        {
+          validate,
+          resetFields,
+          setFieldsValue,
+          removeSchemaByFiled,
+          appendSchemaByField,
+          updateSchema,
+        },
+      ] = useForm({
+        labelWidth: 100,
+        schemas: schemas,
+        showActionButtonGroup: false,
+        actionColOptions: {
+          span: 24,
+        },
+      });
+      onMounted(() => {});
+      getFaultList();
+      let addListFunc = () => {};
+      const [register, { closeModal }] = useModalInner((data) => {
+        data && onDataReceive(data);
+      });
+      async function getFaultList() {
+        const res = await faultAllList({});
+        fileFlow.faultList = res.map((item) => {
+          return {
+            ...item,
+            label: item.faultMsg,
+            value: item.faultId,
+          };
+        });
+      }
+
+      function onDataReceive(data) {
+        resetFields();
+        updateSchema([
+          {
+            field: 'faultIds',
+            componentProps: {
+              options: fileFlow.faultList,
+            },
+          },
+          {
+            field: 'damage',
+            ifShow: data.warrantyType == 0,
+          },
+        ]);
+        fileFlow.type = data.type;
+        fileFlow.cameraType = data.cameraType;
+        setFieldsValue({
+          ...data,
+          warrantyExpirationDateText: `${data.warrantyDate} (${
+            data.warrantyType == 0 ? '保内维修' : data.warrantyType == 1 ? '保内转保外' : '保外维修'
+          })`,
+          deviceInfo: t(`routes.scene.tableType.${data.cameraType}`) + data.cameraSnCode,
+        });
+      }
+      function del(field) {
+        removeSchemaByFiled([`partId${field}`, `partCount${field}`, `${field}`]);
+        // n.value--;
+      }
+      function add() {
+        let list = addSchemas(n.value);
+        list.map((ele) => {
+          appendSchemaByField(ele, '');
+        });
+        n.value++;
+      }
+      function addSchemas(number) {
+        let parentList: FormSchema[] = [
+          {
+            field: 'partId' + number,
+            label: '备件' + number,
+            component: 'ApiSelect',
+            colProps: {
+              span: 12,
+            },
+            required: true,
+            componentProps: {
+              maxLength: 15,
+              style: 'width: 220px',
+              api: partAllList,
+              labelField: 'partName',
+              valueField: 'partId',
+              params: {
+                cameraType: fileFlow.cameraType,
+              },
+              showSearch: true,
+              optionFilterProp: 'label',
+            },
+          },
+          {
+            field: 'partCount' + number,
+            label: '数量',
+            component: 'InputNumber',
+            required: true,
+            defaultValue: 1,
+            labelWidth: 50,
+            componentProps: {
+              max: 999,
+              min: 1,
+            },
+            colProps: {
+              span: 6,
+            },
+          },
+          {
+            field: number.toString(),
+            component: 'Input',
+            label: '',
+            labelWidth: 0,
+            colProps: {
+              span: 6,
+            },
+            slot: 'del',
+          },
+        ];
+        return parentList;
+      }
+      function clearInfo(val) {
+        if (!val) {
+          resetFields();
         }
-        let clearFiled = []
+        let clearFiled = [];
         for (let index = 1; index < n.value; index++) {
-          clearFiled.push(`partId${index}`,`partCount${index}`,`${index}`)
+          clearFiled.push(`partId${index}`, `partCount${index}`, `${index}`);
         }
         removeSchemaByFiled(clearFiled);
-        n.value = 1
+        n.value = 1;
       }
-    const handleSubmit = async () => {
-      loading.value = true;
-      try {
-        // createConfirm({
-        //   iconType: 'warning',
-        //   title: () => h('span', '温馨提示'),
-        //   content: '确定要提交检测报告吗?',
-        //   onOk: async () => {
-        const params = await validate();
-        let partList = [];
-        for (let s = 1; s <= n.value; s++) {
-          console.log('params', params, partList);
-          if (params[`partId${s}`]) {
-            partList.push({
-              partId: params[`partId${s}`],
-              partCount: params[`partCount${s}`],
-              type:0,
-            });
+      const handleSubmit = async () => {
+        loading.value = true;
+        try {
+          // createConfirm({
+          //   iconType: 'warning',
+          //   title: () => h('span', '温馨提示'),
+          //   content: '确定要提交检测报告吗?',
+          //   onOk: async () => {
+          const params = await validate();
+          let partList = [];
+          for (let s = 1; s <= n.value; s++) {
+            console.log('params', params, partList);
+            if (params[`partId${s}`]) {
+              partList.push({
+                partId: params[`partId${s}`],
+                partCount: params[`partCount${s}`],
+                type: 0,
+              });
+            }
           }
+          console.log('params', params, partList);
+          await checkRegister({
+            ...params,
+            partList,
+          });
+          clearInfo(false);
+          loading.value = false;
+          createMessage.success(t('common.optSuccess'));
+          closeModal();
+          emit('update');
+        } catch (error) {
+          loading.value = false;
+          console.log('not passing', error);
         }
-        console.log('params', params, partList);
-        await checkRegister({
-          ...params,
-          partList,
-        })
-        clearInfo(false)
-        loading.value = false;
-        createMessage.success(t('common.optSuccess'));
-        closeModal();
-        emit('update');
-      } catch (error) {
-        loading.value = false;
-        console.log('not passing', error);
-      }
-    };
-    return {
-      register,
-      registerForm,
-      fileFlow,
-      handleSubmit,
-      addListFunc,
-      resetFields,
-      loading,
-      clearInfo,
-      t,
-      del,
-      add,
-    };
-  },
-});
+      };
+      return {
+        register,
+        registerForm,
+        fileFlow,
+        handleSubmit,
+        addListFunc,
+        resetFields,
+        loading,
+        clearInfo,
+        t,
+        del,
+        add,
+      };
+    },
+  });
 </script>
 <style lang="less">
-.myRadioGroup{
-  .ant-checkbox-group{
-    overflow-y: auto;
-    height: 90px;
+  .myRadioGroup {
+    .ant-checkbox-group {
+      overflow-y: auto;
+      height: 90px;
+    }
   }
-}
 </style>

+ 201 - 179
src/views/work/confirmPriceModal.vue

@@ -8,7 +8,7 @@
     :confirmLoading="loading"
   >
     <template #footer>
-      <div style="text-align:center">
+      <div style="text-align: center">
         <a-button type="primary" danger @click="handleCancel">取消维修</a-button>
         <a-button type="primary" @click="handleSubmit">确认维修</a-button>
       </div>
@@ -31,9 +31,9 @@
   import { BasicModal, useModalInner } from '/@/components/Modal';
   import { BasicForm, FormSchema, useForm } from '/@/components/Form/index';
   import { useMessage } from '/@/hooks/web/useMessage';
-  import { getPriceList, confirmRepair, allList } from '/@/api/spares'
+  import { getPriceList, confirmRepair, allList } from '/@/api/spares';
   import { useI18n } from '/@/hooks/web/useI18n';
-  import { RedoOutlined, } from '@ant-design/icons-vue';
+  import { RedoOutlined } from '@ant-design/icons-vue';
   const { t } = useI18n();
   export default defineComponent({
     components: { BasicModal, BasicForm, RedoOutlined },
@@ -44,87 +44,100 @@
     setup(props, { emit }) {
       const n = ref(1);
       const fileFlow = reactive({
-        file:null,
-        type:2,//2-普通发票,3-专用发票
-        count:1,//第一次报价
-        priceCount:0,//总价
-        priceLists:[],
-        priceListsPrice:{}
-      })
-      const loading = ref(false)
-      const { createMessage,createConfirm } = useMessage();
+        file: null,
+        type: 2, //2-普通发票,3-专用发票
+        count: 1, //第一次报价
+        priceCount: 0, //总价
+        priceLists: [],
+        priceListsPrice: {},
+      });
+      const loading = ref(false);
+      const { createMessage, createConfirm } = useMessage();
       const schemas: FormSchema[] = [
-          {
-            field: 'id',
-            component: 'Input',
-            show:false,
-            label: '发票编号',
+        {
+          field: 'id',
+          component: 'Input',
+          show: false,
+          label: '发票编号',
+        },
+        {
+          field: 'repairId',
+          component: 'Input',
+          label: '维修单号',
+          slot: 'text',
+          colProps: {
+            span: 24,
           },
-          {
-            field: 'repairId',
-            component: 'Input',
-            label: '维修单号',
-            slot: 'text',
-            colProps: {
-              span: 24,
-            },
-          },{
-            field: 'deviceInfo',
-            component: 'Input',
-            label: '设备信息',
-            slot: 'text',
-            colProps: {
-              span: 18,
-            },
-          },{
-            field: 'checkResult',
-            component: 'Input',
-            label: '检测结果',
-            slot: 'text',
-            colProps: {
-              span: 18,
-            },
+        },
+        {
+          field: 'deviceInfo',
+          component: 'Input',
+          label: '设备信息',
+          slot: 'text',
+          colProps: {
+            span: 18,
           },
+        },
+        {
+          field: 'checkResult',
+          component: 'Input',
+          label: '检测结果',
+          slot: 'text',
+          colProps: {
+            span: 18,
+          },
+        },
       ];
 
-      const [registerForm, { validate, getFieldsValue, resetFields, setFieldsValue, removeSchemaByFiled, appendSchemaByField, updateSchema }] = useForm({
+      const [
+        registerForm,
+        {
+          validate,
+          getFieldsValue,
+          resetFields,
+          setFieldsValue,
+          removeSchemaByFiled,
+          appendSchemaByField,
+          updateSchema,
+        },
+      ] = useForm({
         labelWidth: 100,
-        labelAlign:'left',
-        schemas:schemas,
+        labelAlign: 'left',
+        schemas: schemas,
         showActionButtonGroup: false,
         actionColOptions: {
           span: 24,
         },
       });
       onMounted(async () => {
-        let allListOption = await allList()//获取价格
-        fileFlow.priceListsPrice
-        allListOption.map(ele => {
-          fileFlow.priceListsPrice[ele.laborCostId] = ele.price
-        })
+        let allListOption = await allList(); //获取价格
+        fileFlow.priceListsPrice;
+        allListOption.map((ele) => {
+          fileFlow.priceListsPrice[ele.laborCostId] = ele.price;
+        });
       });
       let addListFunc = () => {};
       const [register, { closeModal }] = useModalInner((data) => {
         data && onDataReceive(data);
       });
       async function updataRepairInfo() {
-        let { repairId } = getFieldsValue()
-        console.log('20230228171427939',repairId)
-        const { priceLists } = await getPriceList({repairId})//
-        addPriceItem(priceLists)
-        clearInfo(true)
+        let { repairId } = getFieldsValue();
+        console.log('20230228171427939', repairId);
+        const { priceLists } = await getPriceList({ repairId }); //
+        addPriceItem(priceLists);
+        clearInfo(true);
         setTimeout(() => {
-          updataCount()
+          updataCount();
         }, 100);
       }
       async function onDataReceive(data) {
-        const { priceLists } = await getPriceList({repairId:data.repairId})//
-        addPriceItem(priceLists)
+        const { priceLists } = await getPriceList({ repairId: data.repairId }); //
+        addPriceItem(priceLists);
         resetFields();
-        fileFlow.type = data.type
+        fileFlow.type = data.type;
         setFieldsValue({
           ...data,
-          deviceInfo:t(`routes.scene.tableType.${data.cameraType}`)+data.cameraSnCode
+          deviceInfo: t(`routes.scene.tableType.${data.cameraType}`) + data.cameraSnCode,
         });
       }
       function del(field) {
@@ -133,69 +146,76 @@
       }
       function add() {
         let list = addSchemas(n.value);
-        list.map(ele => {
-          appendSchemaByField(ele,'')
-        })
-        n.value++
+        list.map((ele) => {
+          appendSchemaByField(ele, '');
+        });
+        n.value++;
       }
-      function addPriceItem(list){
-        fileFlow.priceLists = list.reverse()
-        let priceSchema = [],valueObj = {},count=0
-        list.map(ele => {
-          if(ele.count==0){
-            return
+      function addPriceItem(list) {
+        fileFlow.priceLists = list.reverse();
+        let priceSchema = [],
+          valueObj = {},
+          count = 0;
+        list.map((ele) => {
+          if (ele.count == 0) {
+            return;
           }
-          let price = ele.discount == 1?ele.priceDiscount:ele.price
-          valueObj[`priceList${ele.priceListId}`] = ele.count || 0
-          valueObj[`priceListText${ele.priceListId}`] = `${ele.name} ${price} 元${ele.type == 0?('/'+ele.partUnit):''}`
-          count = count + ele.count*price
-          priceSchema.unshift({
-            field: 'priceListText' + ele.priceListId,
-            component: 'InputNumber',
-            label: ele.type == 0?'备件':'人工',
-            slot: 'text',
-            // labelWidth:300,
-            // subLabel:"数量",
-            colProps: {
-              span: 12,
-            }
-          },{
-            field: 'priceList' + ele.priceListId,
-            label: '数量',//`${ele.type == 0?'备件':'人工'}:  ${ele.name} ${ele.price} 元/次`,
-            // suffix:'数量',
-            component: 'InputNumber',
-            slot: 'text',
-            defaultValue:ele.count || 0,
-            // labelWidth:300,
-            // subLabel:"数量",
-            colProps: {
-              span: 12,
+          let price = ele.discount == 1 ? ele.priceDiscount : ele.price;
+          valueObj[`priceList${ele.priceListId}`] = ele.count || 0;
+          valueObj[`priceListText${ele.priceListId}`] = `${ele.name} ${price} 元${
+            ele.type == 0 ? '/' + ele.partUnit : ''
+          }`;
+          count = count + ele.count * price;
+          priceSchema.unshift(
+            {
+              field: 'priceListText' + ele.priceListId,
+              component: 'InputNumber',
+              label: ele.type == 0 ? '备件' : '人工',
+              slot: 'text',
+              // labelWidth:300,
+              // subLabel:"数量",
+              colProps: {
+                span: 12,
+              },
             },
-            required: true,
-            componentProps: {
-              disabled:ele.status == 1,
-              min:0,
-              max:999,
-              maxLength: 15,
-              onChange:(_) =>{
-                setTimeout(() => {
-                updataCount()
-              }, 100)
-              }
+            {
+              field: 'priceList' + ele.priceListId,
+              label: '数量', //`${ele.type == 0?'备件':'人工'}:  ${ele.name} ${ele.price} 元/次`,
+              // suffix:'数量',
+              component: 'InputNumber',
+              slot: 'text',
+              defaultValue: ele.count || 0,
+              // labelWidth:300,
+              // subLabel:"数量",
+              colProps: {
+                span: 12,
+              },
+              required: true,
+              componentProps: {
+                disabled: ele.status == 1,
+                min: 0,
+                max: 999,
+                maxLength: 15,
+                onChange: (_) => {
+                  setTimeout(() => {
+                    updataCount();
+                  }, 100);
+                },
+              },
             },
-          })
-        })
-        fileFlow.priceCount = count.toFixed(2)
-        priceSchema.map(item =>{
-          console.log('priceSchema',item)
-          appendSchemaByField(item,'')
-        })
-        console.log('addPriceItem',valueObj)
-        setTimeout(()=>{
-          setFieldsValue(valueObj)
-        },10)
+          );
+        });
+        fileFlow.priceCount = count.toFixed(2);
+        priceSchema.map((item) => {
+          console.log('priceSchema', item);
+          appendSchemaByField(item, '');
+        });
+        console.log('addPriceItem', valueObj);
+        setTimeout(() => {
+          setFieldsValue(valueObj);
+        }, 10);
       }
-      function addSchemas(number){
+      function addSchemas(number) {
         let parentList: FormSchema[] = [
           {
             field: 'deviceType' + number,
@@ -209,10 +229,10 @@
               api: allList,
               labelField: 'name',
               valueField: 'laborCostId',
-              showSearch:true,
-              onChange:(value)=>{
-                console.log('onchange',value,arguments)
-              }
+              showSearch: true,
+              onChange: (value) => {
+                console.log('onchange', value, arguments);
+              },
             },
           },
           {
@@ -221,94 +241,96 @@
             component: 'InputNumber',
             required: true,
             defaultValue: 1,
-            labelWidth:50,
+            labelWidth: 50,
             componentProps: {
               max: 999,
-              min:1,
+              min: 1,
             },
             colProps: {
               span: 6,
             },
-          },{
+          },
+          {
             field: number.toString(),
             component: 'Input',
             label: '',
-            labelWidth:0,
+            labelWidth: 0,
             colProps: {
               span: 6,
             },
             slot: 'del',
-          }
+          },
         ];
-        return parentList
+        return parentList;
       }
 
       const handleCancel = async (val) => {
-        console.log('handleCancel',val,arguments)
-        handleApi(true)
-      }
+        console.log('handleCancel', val, arguments);
+        handleApi(true);
+      };
 
       const handleApi = async (val) => {
-        const params = await validate(); 
+        const params = await validate();
         try {
           createConfirm({
-          iconType: 'warning',
-          title: () => h('span', '温馨提示'),
-          content: val?'确定取消维修吗':'确定报价并开始维修吗?',
-          onOk: async () => {
-            loading.value = true
-            let res = await confirmRepair({
-              repairId:params.repairId,
-              confirm:val?1:0,
-            })
-            console.log('res',res)
-            createMessage.success(t('common.optSuccess'));
-            closeModal();
-            emit('update');
-            loading.value = false
-            clearInfo(false)
-          },
-          onCancel: () => {
-            loading.value = false
-          }
-        });
+            iconType: 'warning',
+            title: () => h('span', '温馨提示'),
+            content: val ? '确定取消维修吗' : '确定报价并开始维修吗?',
+            onOk: async () => {
+              loading.value = true;
+              let res = await confirmRepair({
+                repairId: params.repairId,
+                confirm: val ? 1 : 0,
+              });
+              console.log('res', res);
+              createMessage.success(t('common.optSuccess'));
+              closeModal();
+              emit('update');
+              loading.value = false;
+              clearInfo(false);
+            },
+            onCancel: () => {
+              loading.value = false;
+            },
+          });
         } catch (error) {
-          loading.value = false
+          loading.value = false;
           console.log('not passing', error);
         }
-      }
+      };
 
       const handleSubmit = async () => {
-        handleApi(false)
+        handleApi(false);
       };
-      function updataCount(){
-        let fromData = getFieldsValue() ,count = 0
+      function updataCount() {
+        let fromData = getFieldsValue(),
+          count = 0;
         // fileFlow.priceListsPrice
-        console.log('fromData',fromData)
-        fileFlow.priceLists.map(ele => {
-          count = count + fromData[`priceList${ele.priceListId}`]*ele.price
-        })
+        console.log('fromData', fromData);
+        fileFlow.priceLists.map((ele) => {
+          count = count + fromData[`priceList${ele.priceListId}`] * ele.price;
+        });
         for (let index = 1; index < n.value; index++) {
-          if(fromData[`deviceType${index}`] && fromData[`device_${index}`]){
-            let priceId = fromData[`deviceType${index}`]
-            let fromPrice = fromData[`device_${index}`] * fileFlow.priceListsPrice[priceId]
-            count = count +fromPrice
+          if (fromData[`deviceType${index}`] && fromData[`device_${index}`]) {
+            let priceId = fromData[`deviceType${index}`];
+            let fromPrice = fromData[`device_${index}`] * fileFlow.priceListsPrice[priceId];
+            count = count + fromPrice;
           }
         }
-        fileFlow.priceCount = count.toFixed(2)
+        fileFlow.priceCount = count.toFixed(2);
       }
 
-      function clearInfo(val){
-        fileFlow.priceCount = 0
-        if(!val){
-          resetFields()
+      function clearInfo(val) {
+        fileFlow.priceCount = 0;
+        if (!val) {
+          resetFields();
         }
-        let clearFiled = []
-        fileFlow.priceLists.map(ele =>{
-          clearFiled.push(`priceList${ele.priceListId}`,`priceListText${ele.priceListId}`)
-        })
+        let clearFiled = [];
+        fileFlow.priceLists.map((ele) => {
+          clearFiled.push(`priceList${ele.priceListId}`, `priceListText${ele.priceListId}`);
+        });
         removeSchemaByFiled(clearFiled);
-        n.value = 1
+        n.value = 1;
       }
 
       return {
@@ -332,10 +354,10 @@
 </script>
 
 <style lang="less" scoped>
-.priceCount{
-  line-height: 32px;
-  .label{
-    display: inline-block;
+  .priceCount {
+    line-height: 32px;
+    .label {
+      display: inline-block;
+    }
   }
-}
 </style>

+ 111 - 112
src/views/work/deliveryModal.vue

@@ -13,132 +13,131 @@
           {{ model[field] }}
         </template>
       </BasicForm>
-      <div v-show="fileFlow.tips" style="padding-left:120px">请确保取回后再做登记。</div>
+      <div v-show="fileFlow.tips" style="padding-left: 120px">请确保取回后再做登记。</div>
     </div>
   </BasicModal>
 </template>
 <script lang="ts">
-import { defineComponent, onMounted, reactive, ref } from 'vue';
-import { BasicModal, useModalInner } from '/@/components/Modal';
-import { BasicForm, FormSchema, useForm } from '/@/components/Form/index';
-import { useMessage } from '/@/hooks/web/useMessage';
-import { sendRegister } from '/@/api/spares';
-import { useI18n } from '/@/hooks/web/useI18n';
-import { uploadApi } from '/@/api/product/index';
+  import { defineComponent, onMounted, reactive, ref } from 'vue';
+  import { BasicModal, useModalInner } from '/@/components/Modal';
+  import { BasicForm, FormSchema, useForm } from '/@/components/Form/index';
+  import { useMessage } from '/@/hooks/web/useMessage';
+  import { sendRegister } from '/@/api/spares';
+  import { useI18n } from '/@/hooks/web/useI18n';
+  import { uploadApi } from '/@/api/product/index';
 
-const { t } = useI18n();
-export default defineComponent({
-  components: { BasicModal, BasicForm },
-  props: {
-    userData: { type: Object },
-  },
-  emits: ['update', 'register'],
-  setup(props, { emit }) {
-    const fileFlow = reactive({
-      file: null,
-      type: 2, //2-普通发票,3-专用发票
-      tips:false,
-    });
-    const loading = ref(false);
-    const { createMessage } = useMessage();
-    const schemas: FormSchema[] = [
-      {
-        field: 'repairId',
-        slot: 'text',
-        component: 'Input',
-        label: '维修单号',
-      },
-      {
-        field: 'deviceInfo',
-        component: 'Input',
-        label: '设备信息',
-        slot: 'text',
-        colProps: {
-          span: 18,
+  const { t } = useI18n();
+  export default defineComponent({
+    components: { BasicModal, BasicForm },
+    props: {
+      userData: { type: Object },
+    },
+    emits: ['update', 'register'],
+    setup(props, { emit }) {
+      const fileFlow = reactive({
+        file: null,
+        type: 2, //2-普通发票,3-专用发票
+        tips: false,
+      });
+      const loading = ref(false);
+      const { createMessage } = useMessage();
+      const schemas: FormSchema[] = [
+        {
+          field: 'repairId',
+          slot: 'text',
+          component: 'Input',
+          label: '维修单号',
+        },
+        {
+          field: 'deviceInfo',
+          component: 'Input',
+          label: '设备信息',
+          slot: 'text',
+          colProps: {
+            span: 18,
+          },
         },
-      },
-      {
-        field: 'getType',
-        component: 'RadioGroup',
-        label: '取回方式',
-        defaultValue: 1,
-        componentProps: {
-          placeholder: '请填写姓名',
-          options: [
-            { label: '前台取回', value: 0 },
-            { label: '快递寄回', value: 1 },
-          ],
-          onChange: (e) => {
-            fileFlow.tips = e.target.value != 1
-            updateSchema(
-              {
+        {
+          field: 'getType',
+          component: 'RadioGroup',
+          label: '取回方式',
+          defaultValue: 1,
+          componentProps: {
+            placeholder: '请填写姓名',
+            options: [
+              { label: '前台取回', value: 0 },
+              { label: '快递寄回', value: 1 },
+            ],
+            onChange: (e) => {
+              fileFlow.tips = e.target.value != 1;
+              updateSchema({
                 field: 'trackingNum',
                 ifShow: e.target.value == 1,
               });
+            },
           },
         },
-      },
-      {
-        field: 'trackingNum',
-        component: 'Input',
-        label: '快递单号',
-        required: true,
-        colProps: {
-          span: 18,
+        {
+          field: 'trackingNum',
+          component: 'Input',
+          label: '快递单号',
+          required: true,
+          colProps: {
+            span: 18,
+          },
         },
-      },
-    ];
+      ];
 
-    const [registerForm, { validate, resetFields, setFieldsValue, updateSchema }] = useForm({
-      labelWidth: 120,
-      schemas: schemas,
-      showActionButtonGroup: false,
-      actionColOptions: {
-        span: 24,
-      },
-    });
-    onMounted(() => {});
-    let addListFunc = () => {};
-    const [register, { closeModal }] = useModalInner((data) => {
-      data && onDataReceive(data);
-    });
-    function onDataReceive(data) {
-      resetFields();
-      updateSchema({
-                field: 'trackingNum',
-                ifShow: true,
-              });
-      setFieldsValue({
-        ...data,
-        getType:1,
-        deviceInfo: t(`routes.scene.tableType.${data.cameraType}`) + data.cameraSnCode,
+      const [registerForm, { validate, resetFields, setFieldsValue, updateSchema }] = useForm({
+        labelWidth: 120,
+        schemas: schemas,
+        showActionButtonGroup: false,
+        actionColOptions: {
+          span: 24,
+        },
+      });
+      onMounted(() => {});
+      let addListFunc = () => {};
+      const [register, { closeModal }] = useModalInner((data) => {
+        data && onDataReceive(data);
       });
-    }
-    const handleSubmit = async () => {
-      loading.value = true;
-      try {
-        const params = await validate();
-        await sendRegister(params);
-        closeModal();
+      function onDataReceive(data) {
         resetFields();
-        createMessage.success(t('common.optSuccess'));
-        emit('update');
-        loading.value = false;
-      } catch (error) {
-        loading.value = false;
-        console.log('not passing', error);
+        updateSchema({
+          field: 'trackingNum',
+          ifShow: true,
+        });
+        setFieldsValue({
+          ...data,
+          getType: 1,
+          deviceInfo: t(`routes.scene.tableType.${data.cameraType}`) + data.cameraSnCode,
+        });
       }
-    };
-    return {
-      register,
-      registerForm,
-      fileFlow,
-      handleSubmit,
-      addListFunc,
-      resetFields,
-      loading,
-      t,
-    };
-  },
-});
+      const handleSubmit = async () => {
+        loading.value = true;
+        try {
+          const params = await validate();
+          await sendRegister(params);
+          closeModal();
+          resetFields();
+          createMessage.success(t('common.optSuccess'));
+          emit('update');
+          loading.value = false;
+        } catch (error) {
+          loading.value = false;
+          console.log('not passing', error);
+        }
+      };
+      return {
+        register,
+        registerForm,
+        fileFlow,
+        handleSubmit,
+        addListFunc,
+        resetFields,
+        loading,
+        t,
+      };
+    },
+  });
 </script>

+ 441 - 423
src/views/work/detail.vue

@@ -54,7 +54,9 @@
             </DescriptionsItem>
             <DescriptionsItem label="故障描述" :span="3">
               <div>
-                <p class="htmlText" :title="detailData.repairerVo.faultMsg">{{ detailData.repairerVo.faultMsg }}</p>
+                <p class="htmlText" :title="detailData.repairerVo.faultMsg">{{
+                  detailData.repairerVo.faultMsg
+                }}</p>
                 <PreviewGroup>
                   <Image
                     :width="80"
@@ -62,13 +64,15 @@
                     v-for="item in detailData.repairerVo.faultImg"
                     :key="item"
                     :src="item"
-                  ></Image>
+                  />
                 </PreviewGroup>
               </div>
             </DescriptionsItem>
             <DescriptionsItem label="机器外观">
               <div>
-                <p class="htmlText" :title="detailData.orderReceivingVo?.orderFaultMsg">{{ detailData.orderReceivingVo?.orderFaultMsg }}</p>
+                <p class="htmlText" :title="detailData.orderReceivingVo?.orderFaultMsg">{{
+                  detailData.orderReceivingVo?.orderFaultMsg
+                }}</p>
                 <PreviewGroup>
                   <Image
                     :width="80"
@@ -76,7 +80,7 @@
                     v-for="item in detailData.orderReceivingVo?.orderFaultImg"
                     :key="item"
                     :src="item"
-                  ></Image>
+                  />
                 </PreviewGroup>
               </div>
             </DescriptionsItem>
@@ -92,32 +96,41 @@
               {{ detailData.repairerVo?.remark }}
             </DescriptionsItem>
           </Descriptions> -->
-          <Descriptions v-for="(Voitem, index) in detailData.repairRegisterVoList" :key="Voitem.createTime" :column="3">
-                <DescriptionsItem :label="index=='0'?'检测结果':'维修登记'">
-                <div>
-                  <p class="htmlText" :title="Voitem.checkResult">{{ Voitem.checkResult }}</p>
-                  <PreviewGroup>
-                    <Image
-                      style="margin-right:20px"
-                      :width="80"
-                      :height="80"
-                      v-for="item in Voitem.checkImg"
-                      :key="item"
-                      :src="item"
-                    ></Image>
-                  </PreviewGroup>
-                </div>
-              </DescriptionsItem>
-              <DescriptionsItem :label="index=='0'?'检测日期':'登记日期'">
-                {{ Voitem?.createTime }}
-              </DescriptionsItem>
-              <DescriptionsItem label="所需备件">
-                {{ Voitem?.partNamesStr }}
-              </DescriptionsItem>
+          <Descriptions
+            v-for="(Voitem, index) in detailData.repairRegisterVoList"
+            :key="Voitem.createTime"
+            :column="3"
+          >
+            <DescriptionsItem :label="index == '0' ? '检测结果' : '维修登记'">
+              <div>
+                <p class="htmlText" :title="Voitem.checkResult">{{ Voitem.checkResult }}</p>
+                <PreviewGroup>
+                  <Image
+                    style="margin-right: 20px"
+                    :width="80"
+                    :height="80"
+                    v-for="item in Voitem.checkImg"
+                    :key="item"
+                    :src="item"
+                  />
+                </PreviewGroup>
+              </div>
+            </DescriptionsItem>
+            <DescriptionsItem :label="index == '0' ? '检测日期' : '登记日期'">
+              {{ Voitem?.createTime }}
+            </DescriptionsItem>
+            <DescriptionsItem label="所需备件">
+              {{ Voitem?.partNamesStr }}
+            </DescriptionsItem>
           </Descriptions>
-          <Descriptions title="维修清单" :column="3" layout="vertical" v-show="detailData.repairerVo.status > 30">
+          <Descriptions
+            title="维修清单"
+            :column="3"
+            layout="vertical"
+            v-show="detailData.repairerVo.status > 30"
+          >
             <DescriptionsItem label="备件信息" :span="3">
-              <BasicTable @register="registerTable"></BasicTable>
+              <BasicTable @register="registerTable" />
             </DescriptionsItem>
           </Descriptions>
           <Descriptions :column="3">
@@ -152,7 +165,7 @@
                     v-for="item in detailData.repairPay.payImg"
                     :key="item"
                     :src="item"
-                  ></Image>
+                  />
                 </PreviewGroup>
               </div>
             </DescriptionsItem>
@@ -169,16 +182,18 @@
             </DescriptionsItem>
           </Descriptions>
           <Descriptions title="单据下载" :column="3" v-if="detailData.repairerVo.status > 30">
-            <DescriptionsItem label="报价单" :span="3" v-if="detailData.repairerVo.status > 30"> 
-                <div class="link" @click="dowmFile(0)"> {{repairId}}报价单.pdf</div>  
+            <DescriptionsItem label="报价单" :span="3" v-if="detailData.repairerVo.status > 30">
+              <div class="link" @click="dowmFile(0)"> {{ repairId }}报价单.pdf</div>
             </DescriptionsItem>
-            <DescriptionsItem label="维修工单" :span="3" v-if="detailData.repairerVo.status > 70"> 
-              <div class="link" @click="dowmFile(1)"> {{repairId}}维修工单.pdf</div>  
+            <DescriptionsItem label="维修工单" :span="3" v-if="detailData.repairerVo.status > 70">
+              <div class="link" @click="dowmFile(1)"> {{ repairId }}维修工单.pdf</div>
             </DescriptionsItem>
           </Descriptions>
           <Descriptions title="客户评价" :column="3" v-if="detailData.repairComment">
             <DescriptionsItem label="评价内容">
-              <div class="htmlText" :title="detailData.repairComment.comment">{{ detailData.repairComment.comment }}</div>
+              <div class="htmlText" :title="detailData.repairComment.comment">{{
+                detailData.repairComment.comment
+              }}</div>
             </DescriptionsItem>
             <DescriptionsItem label="评分">
               {{ detailData.repairComment.starRank }}分
@@ -186,7 +201,9 @@
           </Descriptions>
           <Descriptions title="备注" :column="3">
             <DescriptionsItem label="备注内容">
-              <div class="htmlText" :title="detailData.repairerVo?.remark">{{ detailData.repairerVo?.remark }}</div>
+              <div class="htmlText" :title="detailData.repairerVo?.remark">{{
+                detailData.repairerVo?.remark
+              }}</div>
             </DescriptionsItem>
           </Descriptions>
         </div>
@@ -194,15 +211,15 @@
       <div class="content_right">
         <Timeline>
           <a-timeline>
-          <timeline-item
-            v-for="(item, indexs) in stepList"
-            :color="indexs == 0 ? 'red' : 'green'"
-            :key="indexs"
-          >
-            <div class="timeItem">
-              <div class="name">
-                <span>{{ item.title || item.remark }}</span>
-                <!-- <a-button
+            <timeline-item
+              v-for="(item, indexs) in stepList"
+              :color="indexs == 0 ? 'red' : 'green'"
+              :key="indexs"
+            >
+              <div class="timeItem">
+                <div class="name">
+                  <span>{{ item.title || item.remark }}</span>
+                  <!-- <a-button
                   style="margin-left: 50px"
                   @click="handleBut(butItem)"
                   v-for="butItem in butList"
@@ -211,49 +228,50 @@
                 >
                   {{ butItem }}
                 </a-button> -->
-              </div>
-              <div class="status" v-if="item.repairLogId ">
-                {{ item.subTitle }} <span>{{ item.createTime }}</span>
                 </div>
-              <div class="status" v-else>
-                {{ item.subTitle }}
+                <div class="status" v-if="item.repairLogId">
+                  {{ item.subTitle }} <span>{{ item.createTime }}</span>
                 </div>
-              <div class="itemText" v-if="item.customerAddress">{{
-                item.customerAddress.getType == 0
-                  ? '前台取回'
-                  : `快递寄回  ${item.customerAddress.getTrackingNum}`
-              }}</div>
-              <!-- <div class="itemText" v-if="item.customerAddress">{{
+                <div class="status" v-else>
+                  {{ item.subTitle }}
+                </div>
+                <div class="itemText" v-if="item.customerAddress">{{
+                  item.customerAddress.getType == 0
+                    ? '前台取回'
+                    : `快递寄回  ${item.customerAddress.getTrackingNum}`
+                }}</div>
+                <!-- <div class="itemText" v-if="item.customerAddress">{{
                 item.customerAddress.sendType == 0
                   ? '前台送修'
                   : `快递寄送  ${item.customerAddress.sendTrackingNum}`
               }}</div> -->
-              <div class="itemText htmlText" v-if="item.repairRegisterVo"
-                >检测结论: {{ item.repairRegisterVo.checkResult }}</div
-              >
-              <div class="itemText htmlText" v-if="item.repairRegisterVo"
-                >所需备件: {{ item.repairRegisterVo.partNamesStr }}</div
-              >
-              <div class="itemText htmlText" v-if="item.orderReceiving"
-                >机器外观: {{ item.orderReceiving.orderFaultMsg }}</div
-              >
-              <div class="itemText htmlText" v-if="item.repairTest?.resultInfo"
-                >测试描述: {{ item.repairTest.resultInfo }}</div
-              >
-              <div class="iamgeList">
-                <PreviewGroup>
-                  <Image style="overflow:hidden"
-                    :width="80"
-                    :height="80"
-                    v-for="itemSrc in item.imagesInfo"
-                    :key="itemSrc"
-                    :src="itemSrc"
-                  ></Image>
-                </PreviewGroup>
+                <div class="itemText htmlText" v-if="item.repairRegisterVo"
+                  >检测结论: {{ item.repairRegisterVo.checkResult }}</div
+                >
+                <div class="itemText htmlText" v-if="item.repairRegisterVo"
+                  >所需备件: {{ item.repairRegisterVo.partNamesStr }}</div
+                >
+                <div class="itemText htmlText" v-if="item.orderReceiving"
+                  >机器外观: {{ item.orderReceiving.orderFaultMsg }}</div
+                >
+                <div class="itemText htmlText" v-if="item.repairTest?.resultInfo"
+                  >测试描述: {{ item.repairTest.resultInfo }}</div
+                >
+                <div class="iamgeList">
+                  <PreviewGroup>
+                    <Image
+                      style="overflow: hidden"
+                      :width="80"
+                      :height="80"
+                      v-for="itemSrc in item.imagesInfo"
+                      :key="itemSrc"
+                      :src="itemSrc"
+                    />
+                  </PreviewGroup>
+                </div>
               </div>
-            </div>
-          </timeline-item>
-        </a-timeline>
+            </timeline-item>
+          </a-timeline>
         </Timeline>
       </div>
     </div>
@@ -279,318 +297,318 @@
   </div>
 </template>
 <script lang="ts">
-import { defineComponent, ref, onMounted, reactive, h } from 'vue';
-import { useI18n } from '/@/hooks/web/useI18n';
-import { useRouter } from 'vue-router';
-import { useMessage } from '/@/hooks/web/useMessage';
-import { detail, process, detailDownExport } from '/@/api/spares';
-import { detailResult } from '/@/api/spares/model';
-import { useModal } from '/@/components/Modal';
-// import recoveryModal from './recoveryModal.vue';//录单
-import quoteModel from './quoteModel.vue';
-import deliveryModal from './deliveryModal.vue';
-import payLogModal from './payLogModal.vue';
-import takingOrdersModel from './takingOrdersModel.vue';
-import remarksModal from '../spares/remarksModal.vue';
-import checkModel from './checkModel.vue';
-import partsListModal from './partsListModal.vue';
-import outModal from './outModal.vue';
-import reviewModal from './reviewModal.vue';
-import { cloneDeep } from 'lodash-es';
-import addAccessoryModel from './addAccessoryModel.vue';
-import { usePermissionStore } from '/@/store/modules/permission';
-import { BasicTable, useTable, BasicColumn } from '/@/components/Table';
-import { Timeline, TimelineItem, Descriptions, Image, } from 'ant-design-vue';
-export default defineComponent({
-  name: 'detail',
-  components: {
-    Image,
-    BasicTable,
-    quoteModel,
-    deliveryModal,
-    payLogModal,
-    takingOrdersModel,
-    remarksModal,
-    checkModel,
-    partsListModal,
-    outModal,
-    addAccessoryModel,
-    Descriptions: Descriptions,
-    DescriptionsItem: Descriptions.Item,
-    // Timeline: Timeline,
-    TimelineItem: TimelineItem,
-    [Timeline.name]: Timeline,
-    // [Timeline.Item.name]: Timeline.Item,
-    PreviewGroup: Image.PreviewGroup,
-    reviewModal,
-  },
-  setup(props) {
-    const router = useRouter();
-    const { createMessage, createConfirm } = useMessage();
-    const { t } = useI18n();
-    const permissionStore = usePermissionStore();
-    const { getCheckPerm } = permissionStore;
-    const repairId = ref<string | string[]>(router.currentRoute.value.params.id || '0');
-    const detailData = ref<detailResult>({
-      customer: {},
-      customerAddress: {},
-      repairerVo: {},
-      RepairTestVo: {},
-      repairRegisterVo: {},
-      orderReceivingVo: {},
-      repairPay: {},
-      repairComment: {},
-      priceList: [],
-      lastRepairId: '',
-      repairRegisterVoList:[],
-    });
-    const priceTotal = ref(0)
-    const stepList = ref<any>([]);
-    const butList = ref<any>([]);
-    onMounted(() => {
-      getData();
-    });
-    let dataSource = reactive<any>([]);
-    const columns: BasicColumn[] = [
-      {
-        title: '备件名称',
-        dataIndex: 'name',
-        width: 150,
-      },
-      {
-        title: '单价(元)',
-        dataIndex: 'price',
-        width: 100,
-      },
-      {
-        title: '数量',
-        dataIndex: 'count',
-        width: 110,
-      },
-      {
-        title: '小计(元)',
-        dataIndex: 'total',
-        width: 140,
-      },
-    ];
-    async function getData() {
-      const stepRes = await process({ repairId: repairId.value });
-      let butTypeList = {
-        0: ['接单'],
-        10: ['检测登记'],
-        20: ['报价'],
-        30: ['修改报价'],
-        40: ['付款登记'],
-        50: ['备件出库'],
-        60: ['添加备件', '完成维修'],
+  import { defineComponent, ref, onMounted, reactive, h } from 'vue';
+  import { useI18n } from '/@/hooks/web/useI18n';
+  import { useRouter } from 'vue-router';
+  import { useMessage } from '/@/hooks/web/useMessage';
+  import { detail, process, detailDownExport } from '/@/api/spares';
+  import { detailResult } from '/@/api/spares/model';
+  import { useModal } from '/@/components/Modal';
+  // import recoveryModal from './recoveryModal.vue';//录单
+  import quoteModel from './quoteModel.vue';
+  import deliveryModal from './deliveryModal.vue';
+  import payLogModal from './payLogModal.vue';
+  import takingOrdersModel from './takingOrdersModel.vue';
+  import remarksModal from '../spares/remarksModal.vue';
+  import checkModel from './checkModel.vue';
+  import partsListModal from './partsListModal.vue';
+  import outModal from './outModal.vue';
+  import reviewModal from './reviewModal.vue';
+  import { cloneDeep } from 'lodash-es';
+  import addAccessoryModel from './addAccessoryModel.vue';
+  import { usePermissionStore } from '/@/store/modules/permission';
+  import { BasicTable, useTable, BasicColumn } from '/@/components/Table';
+  import { Timeline, TimelineItem, Descriptions, Image } from 'ant-design-vue';
+  export default defineComponent({
+    name: 'Detail',
+    components: {
+      Image,
+      BasicTable,
+      quoteModel,
+      deliveryModal,
+      payLogModal,
+      takingOrdersModel,
+      remarksModal,
+      checkModel,
+      partsListModal,
+      outModal,
+      addAccessoryModel,
+      Descriptions: Descriptions,
+      DescriptionsItem: Descriptions.Item,
+      // Timeline: Timeline,
+      TimelineItem: TimelineItem,
+      [Timeline.name]: Timeline,
+      // [Timeline.Item.name]: Timeline.Item,
+      PreviewGroup: Image.PreviewGroup,
+      reviewModal,
+    },
+    setup(props) {
+      const router = useRouter();
+      const { createMessage, createConfirm } = useMessage();
+      const { t } = useI18n();
+      const permissionStore = usePermissionStore();
+      const { getCheckPerm } = permissionStore;
+      const repairId = ref<string | string[]>(router.currentRoute.value.params.id || '0');
+      const detailData = ref<detailResult>({
+        customer: {},
+        customerAddress: {},
+        repairerVo: {},
+        RepairTestVo: {},
+        repairRegisterVo: {},
+        orderReceivingVo: {},
+        repairPay: {},
+        repairComment: {},
+        priceList: [],
+        lastRepairId: '',
+        repairRegisterVoList: [],
+      });
+      const priceTotal = ref(0);
+      const stepList = ref<any>([]);
+      const butList = ref<any>([]);
+      onMounted(() => {
+        getData();
+      });
+      let dataSource = reactive<any>([]);
+      const columns: BasicColumn[] = [
+        {
+          title: '备件名称',
+          dataIndex: 'name',
+          width: 150,
+        },
+        {
+          title: '单价(元)',
+          dataIndex: 'price',
+          width: 100,
+        },
+        {
+          title: '数量',
+          dataIndex: 'count',
+          width: 110,
+        },
+        {
+          title: '小计(元)',
+          dataIndex: 'total',
+          width: 140,
+        },
+      ];
+      async function getData() {
+        const stepRes = await process({ repairId: repairId.value });
+        let butTypeList = {
+          0: ['接单'],
+          10: ['检测登记'],
+          20: ['报价'],
+          30: ['修改报价'],
+          40: ['付款登记'],
+          50: ['备件出库'],
+          60: ['添加备件', '完成维修'],
 
-        70: ['测试登记'],
-        80: ['付款登记'],
-        90: ['备件回收'],
-        91: ['备件回收'],
-        // 70: ['备件回收'],
-        // 80: ['测试登记'],
-        // 90: ['付款登记'],
-        100: ['发货登记'],
-      };
-      let butTypeShow = {
-        0: ['work_orderTakers'],
-        10: ['maintenance_testing'],
-        20: ['work_quotedPrice'],
-        30: ['work_setPrice'],
-        40: ['work_payments'],
-        50: ['repairspares_out'],
-        60: ['maintenance_add', 'maintenance_finish'],
-        90: ['repairspares_in'],
-        91: ['repairspares_in'],
-        70: ['repair_test'],
-        80: ['work_payments'],
-        100: ['work_dispatched'],
+          70: ['测试登记'],
+          80: ['付款登记'],
+          90: ['备件回收'],
+          91: ['备件回收'],
+          // 70: ['备件回收'],
+          // 80: ['测试登记'],
+          // 90: ['付款登记'],
+          100: ['发货登记'],
+        };
+        let butTypeShow = {
+          0: ['work_orderTakers'],
+          10: ['maintenance_testing'],
+          20: ['work_quotedPrice'],
+          30: ['work_setPrice'],
+          40: ['work_payments'],
+          50: ['repairspares_out'],
+          60: ['maintenance_add', 'maintenance_finish'],
+          90: ['repairspares_in'],
+          91: ['repairspares_in'],
+          70: ['repair_test'],
+          80: ['work_payments'],
+          100: ['work_dispatched'],
+        };
+        stepList.value = stepRes;
+        let res = await detail({ repairId: repairId.value });
+        detailData.value = res;
+        let butListjh = [];
+        if (stepRes[0] && res.haveButton == 1 && res.repairerVo.status != undefined) {
+          butTypeList[res.repairerVo.status] &&
+            butTypeList[res.repairerVo.status].map((ele, index) => {
+              let butKey = butTypeShow[res.repairerVo.status][index];
+              if (getCheckPerm(butKey)) {
+                butListjh.push(ele);
+              }
+            });
+        }
+        butList.value = butListjh;
+        let countItem = {
+          id: 3,
+          price: null,
+          name: '',
+          count: '合计(元)',
+          total: 0,
+        };
+        let newdataSource = [];
+        res.priceList.map((ele) => {
+          let price = ele.discount == 1 ? ele.priceDiscount : ele.price;
+          let elePrice = countItem.total + parseFloat(price) * ele.count;
+          countItem.total = elePrice;
+          newdataSource.push({
+            // ...ele,
+            count: ele.count,
+            name: ele.name,
+            price: price,
+            id: ele.laborId,
+            total: (price * ele.count).toFixed(2),
+          });
+        });
+        dataSource = newdataSource;
+        priceTotal.value = countItem.total?.toFixed(2);
+        countItem.total = res.repairerVo.warrantyType == 0 ? '0.00' : priceTotal.value;
+        let addItemList = [countItem];
+        if (res.repairerVo.warrantyType == 0) {
+          addItemList.unshift({
+            id: 4,
+            price: null,
+            name: '保内维修',
+            count: '',
+            total: '-' + priceTotal.value,
+          });
+        }
+        if (countItem.total && res.priceList.length) {
+          setTableData(cloneDeep([...dataSource, ...addItemList]));
+        }
       }
-      stepList.value = stepRes;
-      let res = await detail({ repairId: repairId.value });
-      detailData.value = res;
-      let butListjh = [];
-      if(stepRes[0] && res.haveButton == 1 && res.repairerVo.status != undefined){
-        butTypeList[res.repairerVo.status] && butTypeList[res.repairerVo.status].map((ele, index) =>{
-          let butKey = butTypeShow[res.repairerVo.status][index]
-          if(getCheckPerm(butKey)){
-            butListjh.push(ele)
-          }
-        })
+      function goBack() {
+        router.go(-1);
       }
-      butList.value = butListjh
-      let countItem = {
-        id: 3,
-        price: null,
-        name: '',
-        count: '合计(元)',
-        total: 0,
-      };
-      let newdataSource = [] 
-      res.priceList.map((ele) => {
-        let price = ele.discount == 1?ele.priceDiscount:ele.price
-        let elePrice = countItem.total + parseFloat(price) * ele.count
-        countItem.total = elePrice;
-        newdataSource.push({
-          // ...ele,
-          count: ele.count,
-          name: ele.name,
-          price: price,
-          id: ele.laborId,
-          total: (price * ele.count).toFixed(2),
-        })
-      });
-      dataSource = newdataSource
-      priceTotal.value = countItem.total?.toFixed(2)
-      countItem.total = res.repairerVo.warrantyType == 0?'0.00':priceTotal.value
-      let addItemList = [countItem]
-      if(res.repairerVo.warrantyType == 0){
-        addItemList.unshift({
-        id: 4,
-        price: null,
-        name: '保内维修',
-        count: '',
-        total: '-'+priceTotal.value,
-      })
+      function handleBut(item) {
+        console.log('handleBut', item, stepList.value[0].repairStatus);
+        let status = detailData.value.repairerVo.status;
+        let record = {
+          repairId: repairId.value || detailData.value.orderReceivingVo?.repairId,
+          cameraSnCode: detailData.value.repairerVo?.cameraSnCode,
+          cameraType: detailData.value.repairerVo?.cameraType,
+          status: status,
+          payAmount: 0,
+        };
+        if (status == 80 || status == 40) {
+          record.payAmount = priceTotal.value;
+        }
+        let openList = {
+          0: openTakingOrders, //检测登记
+          10: openCheckModal, //检测登记
+          20: openQuoteModal, //报价
+          30: openQuoteModal, //修改报价
+          40: openPayLogModal, //付款登记
+          50: openPartsModal, //备件出库
+          90: openPartsModal, //备件回收
+          91: openPartsModal, //备件回收
+          70: openReviewModal, //测试登记
+          80: openPayLogModal, //付款登记
+          100: openDeliveryModal, //发货登记
+          61: openAddModal, //添加备件
+          62: openOutModal, //完成维修
+        };
+        console.log('detailData.value.repairerVo', detailData.value.repairerVo.warrantyDate);
+        if (status == 60) {
+          openList[item == '添加备件' ? 61 : 62](true, {
+            ...record,
+            warrantyDate: detailData.value.repairerVo?.warrantyDate,
+            warrantyType: detailData.value.repairerVo?.warrantyType,
+            repairManName: detailData.value.repairRegisterVo?.sysUserName,
+          });
+        } else {
+          openList[status](true, {
+            ...record,
+            checkResult: detailData.value.repairRegisterVoList?.[0]?.checkResult,
+            warrantyDate: detailData.value.repairerVo?.warrantyDate,
+            warrantyType: detailData.value.repairerVo?.warrantyType,
+            repairManName: detailData.value.repairRegisterVo?.sysUserName,
+          });
+        }
       }
-      if (countItem.total && res.priceList.length) {
-        setTableData(cloneDeep([...dataSource, ...addItemList]));
+      function handleSubmit() {
+        createMessage.success(t('common.optSuccess'));
       }
-    }
-    function goBack() {
-      router.go(-1);
-    }
-    function handleBut(item) {
-      console.log('handleBut', item, stepList.value[0].repairStatus);
-      let status = detailData.value.repairerVo.status;
-      let record = {
-        repairId:repairId || detailData.value.orderReceivingVo?.repairId,
-        cameraSnCode: detailData.value.repairerVo?.cameraSnCode,
-        cameraType: detailData.value.repairerVo?.cameraType,
-        status:status,
-        payAmount:0,
-      };
-      if(status == 80 || status == 40){
-        record.payAmount = priceTotal.value
+      function reload() {
+        getData();
       }
-      let openList = {
-        0: openTakingOrders, //检测登记
-        10: openCheckModal, //检测登记
-        20: openQuoteModal, //报价
-        30: openQuoteModal, //修改报价
-        40: openPayLogModal, //付款登记
-        50: openPartsModal, //备件出库
-        90: openPartsModal, //备件回收
-        91: openPartsModal, //备件回收
-        70: openReviewModal, //测试登记
-        80: openPayLogModal, //付款登记
-        100: openDeliveryModal, //发货登记
-        61: openAddModal, //添加备件
-        62: openOutModal, //完成维修
-      };
-      console.log('detailData.value.repairerVo',detailData.value.repairerVo.warrantyDate)
-      if(status == 60){
-        openList[item == '添加备件'?61:62](true, {
-        ...record,
-        warrantyDate: detailData.value.repairerVo?.warrantyDate,
-        warrantyType: detailData.value.repairerVo?.warrantyType,
-        repairManName: detailData.value.repairRegisterVo?.sysUserName,
-      });
-      }else{
-        openList[status](true, {
-        ...record,
-        checkResult:detailData.value.repairRegisterVoList?.[0]?.checkResult,
-        warrantyDate: detailData.value.repairerVo?.warrantyDate,
-        warrantyType: detailData.value.repairerVo?.warrantyType,
-        repairManName: detailData.value.repairRegisterVo?.sysUserName,
-      });
+      function dowmFile(type) {
+        let name = type == 0 ? '报价单' : '维修工单';
+        createConfirm({
+          iconType: 'warning',
+          title: () => h('span', t('common.reminder')),
+          content: () => h('span', `是否导出${name}`),
+          onOk: async () => {
+            console.log('repairId');
+            let apiData = {
+              repairId: repairId.value,
+              name: repairId.value + name,
+              type,
+            };
+            console.log('apiData', apiData);
+            await detailDownExport(apiData);
+          },
+        });
       }
-    }
-    function handleSubmit() {
-      createMessage.success(t('common.optSuccess'));
-    }
-    function reload() {
-      getData();
-    }
-    function dowmFile(type){
-      let name = type==0?'报价单':'维修工单'
-      createConfirm({
-        iconType: 'warning',
-        title: () => h('span', t('common.reminder')),
-        content: () => h('span', `是否导出${name}`),
-        onOk: async () => {
-          console.log('repairId')
-          let apiData = {
-            repairId:repairId.value,
-            name:repairId.value + name,
-            type,
-          }
-          console.log('apiData',apiData)
-          await detailDownExport(apiData);
-        },
+      const [registerParts, { openModal: openPartsModal }] = useModal();
+      const [registerReview, { openModal: openReviewModal }] = useModal();
+      const [registerRecovery, { openModal }] = useModal();
+      const [registerCheck, { openModal: openCheckModal }] = useModal();
+      const [registerQuote, { openModal: openQuoteModal }] = useModal();
+      const [registerPayLog, { openModal: openPayLogModal }] = useModal();
+      const [registerDelivery, { openModal: openDeliveryModal }] = useModal();
+      const [registerTakingOrders, { openModal: openTakingOrders }] = useModal();
+      const [registerRemarks, { openModal: openRemarksModal }] = useModal();
+      // const [registerRecovery, { openModal }] = useModal();
+      const [registerOut, { openModal: openOutModal }] = useModal();
+      const [registerAdd, { openModal: openAddModal }] = useModal();
+      const [registerTable, { setTableData }] = useTable({
+        dataSource: dataSource,
+        columns,
+        showSummary: true,
+        showIndexColumn: false,
+        rowKey: 'id',
+        pagination: false,
+        bordered: true,
+        canResize: false,
       });
-      
-    }
-    const [registerParts, { openModal: openPartsModal }] = useModal();
-    const [registerReview, { openModal: openReviewModal }] = useModal();
-    const [registerRecovery, { openModal }] = useModal();
-    const [registerCheck, { openModal:openCheckModal }] = useModal();
-    const [registerQuote, { openModal: openQuoteModal }] = useModal();
-    const [registerPayLog, { openModal: openPayLogModal }] = useModal();
-    const [registerDelivery, { openModal: openDeliveryModal }] = useModal();
-    const [registerTakingOrders, { openModal: openTakingOrders }] = useModal();
-    const [registerRemarks, { openModal: openRemarksModal }] = useModal();
-    // const [registerRecovery, { openModal }] = useModal();
-    const [registerOut, { openModal: openOutModal }] = useModal();
-    const [registerAdd, { openModal: openAddModal }] = useModal();
-    const [registerTable, { setTableData }] = useTable({
-      dataSource: dataSource,
-      columns,
-      showSummary: true,
-      showIndexColumn: false,
-      rowKey: 'id',
-      pagination: false,
-      bordered: true,
-      canResize: false,
-    });
-    return {
-      repairId,
-      registerParts,
-      registerReview,
-      registerRecovery,
-      registerQuote,
-      registerPayLog,
-      registerDelivery,
-      registerTakingOrders,
-      registerRemarks,
-      registerOut,
-      registerCheck,
-      registerAdd,
-      registerTable,
-      handleSubmit,
-      goBack,
-      handleBut,
-      reload,
-      detailData,
-      butList,
-      dataSource,
-      stepList,
-      dowmFile,
-      t,
-    };
-  },
-});
+      return {
+        repairId,
+        registerParts,
+        registerReview,
+        registerRecovery,
+        registerQuote,
+        registerPayLog,
+        registerDelivery,
+        registerTakingOrders,
+        registerRemarks,
+        registerOut,
+        registerCheck,
+        registerAdd,
+        registerTable,
+        handleSubmit,
+        goBack,
+        handleBut,
+        reload,
+        detailData,
+        butList,
+        dataSource,
+        stepList,
+        dowmFile,
+        t,
+      };
+    },
+  });
 </script>
 <style lang="less" scoped>
-.detailPage {
-  margin: 20px;
-  padding: 20px;
-  background-color: #fff;
-  .topButton {
-    text-align: right;
-  }
-  .htmlText{
+  .detailPage {
+    margin: 20px;
+    padding: 20px;
+    background-color: #fff;
+    .topButton {
+      text-align: right;
+    }
+    .htmlText {
       overflow: hidden;
       text-overflow: ellipsis;
       width: 100%;
@@ -598,54 +616,54 @@ export default defineComponent({
       -webkit-box-orient: vertical;
       -webkit-line-clamp: 3;
       word-break: break-all;
-  }
-  .content {
-    width: 100%;
-    display: flex;
-    justify-content: space-between;
-    
-    &_right {
-      width: 400px;
-      padding: 40px 20px;
-      .timeItem{
-        .ant-image-img{
-          width: 100%;
-          height: 100%;
+    }
+    .content {
+      width: 100%;
+      display: flex;
+      justify-content: space-between;
+
+      &_right {
+        width: 400px;
+        padding: 40px 20px;
+        .timeItem {
+          .ant-image-img {
+            width: 100%;
+            height: 100%;
+          }
         }
       }
+      &_left {
+        width: calc(100% - 400px);
+      }
     }
-    &_left {
-      width: calc(100% - 400px);
+    .bottom_but {
+      text-align: center;
+      button {
+        margin: 20px;
+      }
     }
-  }
-  .bottom_but {
-    text-align: center;
-    button {
-      margin: 20px;
+    .link {
+      color: cornflowerblue;
+      cursor: pointer;
     }
   }
-  .link{
-    color:cornflowerblue;
-    cursor: pointer;
-  }
-}
 </style>
 <style lang="less">
-.detailPage {
-  .ellipsis {
-    // .ant-descriptions-item-container{
-    //   overflow: hidden;
-    //   white-space: nowrap;
-    //   text-overflow: ellipsis;
-    // }
-  }
-  .ant-image-img{
-    width: 100%;
-    height: 100%;
-    object-fit: cover;
-  }
-  .ant-image{
-    margin-right: 10px;
+  .detailPage {
+    .ellipsis {
+      // .ant-descriptions-item-container{
+      //   overflow: hidden;
+      //   white-space: nowrap;
+      //   text-overflow: ellipsis;
+      // }
+    }
+    .ant-image-img {
+      width: 100%;
+      height: 100%;
+      object-fit: cover;
+    }
+    .ant-image {
+      margin-right: 10px;
+    }
   }
-}
 </style>

+ 311 - 306
src/views/work/followedList.vue

@@ -4,337 +4,342 @@
       <a-tabs v-model:activeKey="tableType" @change="changeTable">
         <a-tab-pane :key="0" :tab="t('routes.spares.tableType.0')" />
         <a-tab-pane :key="1" :tab="t('routes.spares.tableType.21')" />
-        <a-tab-pane :key="2" :tab="t('routes.spares.tableType.23')" />
-      </a-tabs></template
-    >
+        <a-tab-pane :key="2" :tab="t('routes.spares.tableType.23')" /> </a-tabs
+    ></template>
     <div class="desc-wrap-BasicTable">
-    <BasicTable @register="registerTable">
-      <template #toolbar>
-        <a-button type="primary" @click="handleOrder" v-if="getCheckPerm('work_Add')"> 录单</a-button>
-      </template>
-      <template #action="{ record }">
-        <TableAction
-          stopButtonPropagation
-          :actions="[  
-            {
-              label: '详情',
-              ifShow:getCheckPerm('work_detail'),
-              onClick: handleDetail.bind(null, record),
-            },
-            {
-              label: '接单',
-              ifShow:getCheckPerm('work_orderTakers') && record.status == 0,
-              onClick: handleRecover.bind(null, record),
-            },
-            {
-              label: '报价',
-              ifShow:getCheckPerm('work_quotedPrice') && record.status == 20,
-              onClick: handleQuote.bind(null, record),
-            },
-            {
-              label: '修改报价',
-              ifShow:getCheckPerm('work_setPrice') && record.status == 30,
-              onClick: handleQuote.bind(null, record),
-            },
-            {
-              label: '确认报价',
-              ifShow:getCheckPerm('work_confirmPrice') && record.status == 30 && record.receiverType == 0,
-              onClick: handleConfirmPrice.bind(null, record),
-            },
-            {
-              label: '付款登记',
-              ifShow:getCheckPerm('work_payments') && (record.status == 80 ||record.status == 40),
-              onClick: handlePayLog.bind(null, record),
-            },
-            {
-              label: '发货登记',
-              ifShow:getCheckPerm('work_dispatched') && record.status == 100,
-              onClick: handleDelivery.bind(null, record),
-            },
-            {
-              label: '备注',
-              ifShow:getCheckPerm('work_mark'),
-              onClick: handleRemarks.bind(null, record),
-            },
-          ]"
-        />
-      </template>
-    </BasicTable>
-    <recoveryModal @update="reload" @register="registerRecovery" />
-    <remarksModal @update="reload" @register="registerRemarks" />
-    <takingOrdersModel @update="reload" @register="registerTakingOrders" />
-    <quoteModel @update="reload" @register="registerQuote" />
-    <deliveryModal @update="reload" @register="registerDelivery" />
-    <payLogModal @update="reload" @register="registerPayLog" />
-    <confirmPriceModal @update="reload" @register="registerConfirmPrice" />
-    <!-- ifShow: getCheckPerm('device-out') && !Boolean(record.outType), -->
-  </div>
-</PageWrapper>
+      <BasicTable @register="registerTable">
+        <template #toolbar>
+          <a-button type="primary" @click="handleOrder" v-if="getCheckPerm('work_Add')">
+            录单</a-button
+          >
+        </template>
+        <template #action="{ record }">
+          <TableAction
+            stopButtonPropagation
+            :actions="[
+              {
+                label: '详情',
+                ifShow: getCheckPerm('work_detail'),
+                onClick: handleDetail.bind(null, record),
+              },
+              {
+                label: '接单',
+                ifShow: getCheckPerm('work_orderTakers') && record.status == 0,
+                onClick: handleRecover.bind(null, record),
+              },
+              {
+                label: '报价',
+                ifShow: getCheckPerm('work_quotedPrice') && record.status == 20,
+                onClick: handleQuote.bind(null, record),
+              },
+              {
+                label: '修改报价',
+                ifShow: getCheckPerm('work_setPrice') && record.status == 30,
+                onClick: handleQuote.bind(null, record),
+              },
+              {
+                label: '确认报价',
+                ifShow:
+                  getCheckPerm('work_confirmPrice') &&
+                  record.status == 30 &&
+                  record.receiverType == 0,
+                onClick: handleConfirmPrice.bind(null, record),
+              },
+              {
+                label: '付款登记',
+                ifShow:
+                  getCheckPerm('work_payments') && (record.status == 80 || record.status == 40),
+                onClick: handlePayLog.bind(null, record),
+              },
+              {
+                label: '发货登记',
+                ifShow: getCheckPerm('work_dispatched') && record.status == 100,
+                onClick: handleDelivery.bind(null, record),
+              },
+              {
+                label: '备注',
+                ifShow: getCheckPerm('work_mark'),
+                onClick: handleRemarks.bind(null, record),
+              },
+            ]"
+          />
+        </template>
+      </BasicTable>
+      <recoveryModal @update="reload" @register="registerRecovery" />
+      <remarksModal @update="reload" @register="registerRemarks" />
+      <takingOrdersModel @update="reload" @register="registerTakingOrders" />
+      <quoteModel @update="reload" @register="registerQuote" />
+      <deliveryModal @update="reload" @register="registerDelivery" />
+      <payLogModal @update="reload" @register="registerPayLog" />
+      <confirmPriceModal @update="reload" @register="registerConfirmPrice" />
+      <!-- ifShow: getCheckPerm('device-out') && !Boolean(record.outType), -->
+    </div>
+  </PageWrapper>
 </template>
 <script lang="ts">
-import { defineComponent, onMounted, onActivated, ref } from 'vue';
-import { PageWrapper } from '/@/components/Page';
-import {
-  BasicTable,
-  useTable,
-  TableAction,
-  BasicColumn,
-  TableImg,
-  FormProps,
-} from '/@/components/Table';
-import { Tabs } from 'ant-design-vue';
-import { operateSceneList } from '/@/api/operate';
-import { useI18n } from '/@/hooks/web/useI18n';
-import { usePermissionStore } from '/@/store/modules/permission';
-import recoveryModal from './recoveryModal.vue';
-import quoteModel from './quoteModel.vue';
-import deliveryModal from './deliveryModal.vue';
-import payLogModal from './payLogModal.vue';
-import takingOrdersModel from './takingOrdersModel.vue';
-import remarksModal from '../spares/remarksModal.vue';
-import confirmPriceModal from './confirmPriceModal.vue'
-import { useModal } from '/@/components/Modal';
-import { useRouter } from 'vue-router'
-import { saleOrderList } from '/@/api/spares';
-export default defineComponent({
-  name:'工单跟进',
-  components: {
+  import { defineComponent, onMounted, onActivated, ref } from 'vue';
+  import { PageWrapper } from '/@/components/Page';
+  import {
     BasicTable,
+    useTable,
     TableAction,
+    BasicColumn,
     TableImg,
-    recoveryModal,
-    takingOrdersModel,
-    remarksModal,
-    deliveryModal,
-    payLogModal,
-    confirmPriceModal,
-    quoteModel,
-    PageWrapper,
-    [Tabs.name]: Tabs,
-    [Tabs.TabPane.name]: Tabs.TabPane,
-  },
-  setup() {
-    const { t } = useI18n();
-    const permissionStore = usePermissionStore();
-    const router = useRouter()
-    const { getCheckPerm } = permissionStore;
-    const tableType = ref<Recordable>(0); //0看看 、1看见、2深时
-    onMounted(() => {
-      console.log(1);
-    });
-    const columns: BasicColumn[] = [
-      {
-        title: '报修日期',
-        dataIndex: 'createTime',
-        width: 180,
-      },
-      {
-        title: '客户名称',
-        dataIndex: 'companyName',
-        width: 100,
-      },
-      {
-        title: '产品类型',
-        dataIndex: 'cameraType',
-        width: 100,
-        customRender: ({ record }) => {
-          return t(`routes.scene.tableType.${record.cameraType}`);
-        },
-      },
-      {
-        title: '产品SN码',
-        dataIndex: 'cameraSnCode',
-        width: 120,
-      },
-      {
-        title: '故障描述',
-        dataIndex: 'faultMsg',
-        width: 100,
-      },
-      {
-        title: '送修方式',
-        dataIndex: 'sendType',
-        width: 100,
-        customRender: ({ record }) => {
-          return record.sendType == 0 ? '前台送修' : '快递寄送';
+    FormProps,
+  } from '/@/components/Table';
+  import { Tabs } from 'ant-design-vue';
+  import { operateSceneList } from '/@/api/operate';
+  import { useI18n } from '/@/hooks/web/useI18n';
+  import { usePermissionStore } from '/@/store/modules/permission';
+  import recoveryModal from './recoveryModal.vue';
+  import quoteModel from './quoteModel.vue';
+  import deliveryModal from './deliveryModal.vue';
+  import payLogModal from './payLogModal.vue';
+  import takingOrdersModel from './takingOrdersModel.vue';
+  import remarksModal from '../spares/remarksModal.vue';
+  import confirmPriceModal from './confirmPriceModal.vue';
+  import { useModal } from '/@/components/Modal';
+  import { useRouter } from 'vue-router';
+  import { saleOrderList } from '/@/api/spares';
+  export default defineComponent({
+    name: '工单跟进',
+    components: {
+      BasicTable,
+      TableAction,
+      TableImg,
+      recoveryModal,
+      takingOrdersModel,
+      remarksModal,
+      deliveryModal,
+      payLogModal,
+      confirmPriceModal,
+      quoteModel,
+      PageWrapper,
+      [Tabs.name]: Tabs,
+      [Tabs.TabPane.name]: Tabs.TabPane,
+    },
+    setup() {
+      const { t } = useI18n();
+      const permissionStore = usePermissionStore();
+      const router = useRouter();
+      const { getCheckPerm } = permissionStore;
+      const tableType = ref<Recordable>(0); //0看看 、1看见、2深时
+      onMounted(() => {
+        console.log(1);
+      });
+      const columns: BasicColumn[] = [
+        {
+          title: '报修日期',
+          dataIndex: 'createTime',
+          width: 180,
         },
-      },
-      {
-        title: '快递单号',
-        dataIndex: 'sendTrackingNum',
-        width: 150,
-      },
-      {
-        title: '状态',
-        dataIndex: 'status',
-        width: 100,
-        customRender: ({ record }) => {
-          return t(`routes.spares.tableType.${record.status || 0}`);
+        {
+          title: '客户名称',
+          dataIndex: 'companyName',
+          width: 100,
         },
-      },
-      {
-        title: '工单号',
-        dataIndex: 'repairId',
-        width: 150,
-      },
-      {
-        title: t('common.operating'),
-        dataIndex: 'action',
-        slots: { customRender: 'action' },
-        ifShow: true,
-        fixed: 'right',
-        flag: 'ACTION',
-        width: 240,
-      },
-    ];
-    const searchForm: Partial<FormProps> = {
-      labelWidth: 120,
-      autoAdvancedLine: 1,
-      actionColOptions: {
-        span: 24,
-      },
-      schemas: [
         {
-          field: 'customerName',
-          component: 'Input',
-          label: '客户名称',
-          colProps: {
-            xl: 7,
-            xxl: 7,
+          title: '产品类型',
+          dataIndex: 'cameraType',
+          width: 100,
+          customRender: ({ record }) => {
+            return t(`routes.scene.tableType.${record.cameraType}`);
           },
         },
         {
-          field: 'cameraSnCode',
-          component: 'Input',
-          label: t('routes.device.snCode'),
-          colProps: {
-            xl: 7,
-            xxl: 7,
-          },
+          title: '产品SN码',
+          dataIndex: 'cameraSnCode',
+          width: 120,
         },
         {
-          field: 'trackingNum',
-          component: 'Input',
-          label: '快递单号',
-          colProps: {
-            xl: 7,
-            xxl: 7,
+          title: '故障描述',
+          dataIndex: 'faultMsg',
+          width: 100,
+        },
+        {
+          title: '送修方式',
+          dataIndex: 'sendType',
+          width: 100,
+          customRender: ({ record }) => {
+            return record.sendType == 0 ? '前台送修' : '快递寄送';
           },
         },
         {
-          field: 'repairId',
-          component: 'Input',
-          label: '工单号',
-          colProps: {
-            xl: 7,
-            xxl: 7,
+          title: '快递单号',
+          dataIndex: 'sendTrackingNum',
+          width: 150,
+        },
+        {
+          title: '状态',
+          dataIndex: 'status',
+          width: 100,
+          customRender: ({ record }) => {
+            return t(`routes.spares.tableType.${record.status || 0}`);
           },
         },
         {
-          field: 'timeList',
-          label: '报修日期',
-          component: 'RangePicker',
-          componentProps: {
-            maxLength: 100,
-            format: 'YYYY-MM-DD',
-            valueFormat: 'YYYY-MM-DD',
-            showTime: true,
+          title: '工单号',
+          dataIndex: 'repairId',
+          width: 150,
+        },
+        {
+          title: t('common.operating'),
+          dataIndex: 'action',
+          slots: { customRender: 'action' },
+          ifShow: true,
+          fixed: 'right',
+          flag: 'ACTION',
+          width: 240,
+        },
+      ];
+      const searchForm: Partial<FormProps> = {
+        labelWidth: 120,
+        autoAdvancedLine: 1,
+        actionColOptions: {
+          span: 24,
+        },
+        schemas: [
+          {
+            field: 'customerName',
+            component: 'Input',
+            label: '客户名称',
+            colProps: {
+              xl: 7,
+              xxl: 7,
+            },
+          },
+          {
+            field: 'cameraSnCode',
+            component: 'Input',
+            label: t('routes.device.snCode'),
+            colProps: {
+              xl: 7,
+              xxl: 7,
+            },
+          },
+          {
+            field: 'trackingNum',
+            component: 'Input',
+            label: '快递单号',
+            colProps: {
+              xl: 7,
+              xxl: 7,
+            },
           },
-          colProps: {
-            xl: 7,
-            xxl: 7,
+          {
+            field: 'repairId',
+            component: 'Input',
+            label: '工单号',
+            colProps: {
+              xl: 7,
+              xxl: 7,
+            },
           },
+          {
+            field: 'timeList',
+            label: '报修日期',
+            component: 'RangePicker',
+            componentProps: {
+              maxLength: 100,
+              format: 'YYYY-MM-DD',
+              valueFormat: 'YYYY-MM-DD',
+              showTime: true,
+            },
+            colProps: {
+              xl: 7,
+              xxl: 7,
+            },
+          },
+        ],
+      };
+      const [registerRecovery, { openModal }] = useModal();
+      const [registerQuote, { openModal: openQuoteModal }] = useModal();
+      const [registerConfirmPrice, { openModal: openConfirmPriceModal }] = useModal();
+      const [registerPayLog, { openModal: openPayLogModal }] = useModal();
+      const [registerDelivery, { openModal: openDeliveryModal }] = useModal();
+      const [registerTakingOrders, { openModal: openTakingOrders }] = useModal();
+      const [registerRemarks, { openModal: openRemarksModal }] = useModal();
+      const [registerTable, { reload }] = useTable({
+        api: saleOrderList,
+        columns: columns,
+        useSearchForm: true,
+        searchInfo: { statusParam: tableType },
+        formConfig: searchForm,
+        showTableSetting: true,
+        showIndexColumn: false,
+        fetchSetting: {
+          pageField: 'pageNum',
+          sizeField: 'pageSize',
+          listField: 'list',
+          totalField: 'total',
         },
-      ],
-    };
-    const [registerRecovery, { openModal }] = useModal();
-    const [registerQuote, { openModal:openQuoteModal }] = useModal();
-    const [registerConfirmPrice, { openModal:openConfirmPriceModal }] = useModal();
-    const [registerPayLog, { openModal:openPayLogModal }] = useModal();
-    const [registerDelivery, { openModal:openDeliveryModal }] = useModal();
-    const [registerTakingOrders, { openModal:openTakingOrders }] = useModal();
-    const [registerRemarks, { openModal:openRemarksModal }] = useModal();
-    const [registerTable, { reload }] = useTable({
-      api: saleOrderList,
-      columns: columns,
-      useSearchForm: true,
-      searchInfo: { statusParam: tableType },
-      formConfig: searchForm,
-      showTableSetting: true,
-      showIndexColumn: false,
-      fetchSetting: {
-        pageField: 'pageNum',
-        sizeField: 'pageSize',
-        listField: 'list',
-        totalField: 'total',
-      },
-      canResize: false,
-    });
-    async function handleDetail(record: Recordable) {
-      console.log('record', record);
-      router.push({path:`detail/${record.repairId||'20230215174919387'}`})
-    }
-    async function handleRecover(record: Recordable) {
-      openTakingOrders(true, {
-        ...record,
+        canResize: false,
       });
-    }
-    function handleRemarks(record: Recordable) {
-      openRemarksModal(true,record);
-    }
-    function handlePayLog(record: Recordable) {
-      openPayLogModal(true,record);
-    }
-    function handleConfirmPrice(record: Recordable) {
-      openConfirmPriceModal(true,record);
-    }
-    function handleDelivery(record: Recordable) {
-      openDeliveryModal(true,record);
-    }
-    function handleOrder() {
-      openModal(true,{});
-    }
-    function handleQuote(record: Recordable) {
-      openQuoteModal(true,record)
-    }
-    function changeTable(val: string) {
-      tableType.value = val;
-      reload();
-    }
-    onActivated(()=>{
-      reload();
-    })
-    return {
-      registerTable,
-      reload,
-      t,
-      tableType,
-      registerRemarks,
-      registerPayLog,
-      registerDelivery,
-      registerConfirmPrice,
-      changeTable,
-      handleOrder,
-      getCheckPerm,
-      handleDetail,
-      handleQuote,
-      registerTakingOrders,
-      handleRecover,
-      handleConfirmPrice,
-      handlePayLog,
-      handleDelivery,
-      handleRemarks,
-      registerQuote,
-      registerRecovery,
-    };
-  },
-});
+      async function handleDetail(record: Recordable) {
+        console.log('record', record);
+        router.push({ path: `detail/${record.repairId || '20230215174919387'}` });
+      }
+      async function handleRecover(record: Recordable) {
+        openTakingOrders(true, {
+          ...record,
+        });
+      }
+      function handleRemarks(record: Recordable) {
+        openRemarksModal(true, record);
+      }
+      function handlePayLog(record: Recordable) {
+        openPayLogModal(true, record);
+      }
+      function handleConfirmPrice(record: Recordable) {
+        openConfirmPriceModal(true, record);
+      }
+      function handleDelivery(record: Recordable) {
+        openDeliveryModal(true, record);
+      }
+      function handleOrder() {
+        openModal(true, {});
+      }
+      function handleQuote(record: Recordable) {
+        openQuoteModal(true, record);
+      }
+      function changeTable(val: string) {
+        tableType.value = val;
+        reload();
+      }
+      onActivated(() => {
+        reload();
+      });
+      return {
+        registerTable,
+        reload,
+        t,
+        tableType,
+        registerRemarks,
+        registerPayLog,
+        registerDelivery,
+        registerConfirmPrice,
+        changeTable,
+        handleOrder,
+        getCheckPerm,
+        handleDetail,
+        handleQuote,
+        registerTakingOrders,
+        handleRecover,
+        handleConfirmPrice,
+        handlePayLog,
+        handleDelivery,
+        handleRemarks,
+        registerQuote,
+        registerRecovery,
+      };
+    },
+  });
 </script>
 <style lang="less" scoped>
-.desc-wrap-BasicTable {
-  background-color: #f0f2f5;
-  .vben-basic-table-form-container {
-    padding: 0;
+  .desc-wrap-BasicTable {
+    background-color: #f0f2f5;
+    .vben-basic-table-form-container {
+      padding: 0;
+    }
   }
-}
 </style>

+ 229 - 228
src/views/work/maintenance.vue

@@ -4,157 +4,156 @@
       <a-tabs v-model:activeKey="tableType" @change="changeTable">
         <a-tab-pane :key="0" :tab="t('routes.spares.tableType.10')" />
         <a-tab-pane :key="1" :tab="t('routes.spares.tableType.21')" />
-        <a-tab-pane :key="2" :tab="t('routes.spares.tableType.22')" />
-      </a-tabs></template
-    >
+        <a-tab-pane :key="2" :tab="t('routes.spares.tableType.22')" /> </a-tabs
+    ></template>
     <div class="desc-wrap-BasicTable">
-    <BasicTable @register="registerTable">
-      <template #action="{ record }">
-        <TableAction
-          stopButtonPropagation
-          :actions="[
-            {
-              label: '详情',
-              ifShow:getCheckPerm('work_detail'),
-              onClick: handleDetail.bind(null, record),
-            },
-            {
-              label: '添加备件',
-              ifShow:getCheckPerm('maintenance_add') && tableType == 1 && record.status == 60,
-              onClick: handleAdd.bind(null, record),
-            },
-            {
-              label: '完成维修',
-              ifShow:getCheckPerm('maintenance_finish') && tableType == 1 && record.status == 60,
-              onClick: handleOut.bind(null, record),
-            },
-            {
-              label: '检测登记',
-              ifShow:getCheckPerm('maintenance_testing') && tableType == 0,
-              onClick: handleRecover.bind(null, record),
-            },
-          ]"
-        />
-      </template>
-    </BasicTable>
-    <checkModel @update="reload" @register="registerRecovery" />
-    <addAccessoryModel @update="reload" @register="registerAdd" />
-    <outModal @update="reload" @register="registerOut" />
-    
-    <!-- ifShow: getCheckPerm('device-out') && !Boolean(record.outType), -->
-  </div>
-</PageWrapper>
+      <BasicTable @register="registerTable">
+        <template #action="{ record }">
+          <TableAction
+            stopButtonPropagation
+            :actions="[
+              {
+                label: '详情',
+                ifShow: getCheckPerm('work_detail'),
+                onClick: handleDetail.bind(null, record),
+              },
+              {
+                label: '添加备件',
+                ifShow: getCheckPerm('maintenance_add') && tableType == 1 && record.status == 60,
+                onClick: handleAdd.bind(null, record),
+              },
+              {
+                label: '完成维修',
+                ifShow: getCheckPerm('maintenance_finish') && tableType == 1 && record.status == 60,
+                onClick: handleOut.bind(null, record),
+              },
+              {
+                label: '检测登记',
+                ifShow: getCheckPerm('maintenance_testing') && tableType == 0,
+                onClick: handleRecover.bind(null, record),
+              },
+            ]"
+          />
+        </template>
+      </BasicTable>
+      <checkModel @update="reload" @register="registerRecovery" />
+      <addAccessoryModel @update="reload" @register="registerAdd" />
+      <outModal @update="reload" @register="registerOut" />
+
+      <!-- ifShow: getCheckPerm('device-out') && !Boolean(record.outType), -->
+    </div>
+  </PageWrapper>
 </template>
 <script lang="ts">
-import { defineComponent, onMounted, ref, onActivated } from 'vue';
-import { PageWrapper } from '/@/components/Page';
-import {
-  BasicTable,
-  useTable,
-  TableAction,
-  BasicColumn,
-  TableImg,
-  FormProps,
-} from '/@/components/Table';
-import { Tabs } from 'ant-design-vue';
-import { operateSceneList } from '/@/api/operate';
-import { useI18n } from '/@/hooks/web/useI18n';
-
-import { usePermissionStore } from '/@/store/modules/permission';
-import checkModel from './checkModel.vue';
-import outModal from './outModal.vue';
-import addAccessoryModel from './addAccessoryModel.vue';
-import { useModal } from '/@/components/Modal';
-import { useRouter } from 'vue-router'
-import { saleOrderList, repairOrderList } from '/@/api/spares';
-export default defineComponent({
-  name:'维修管理',
-  components: {
+  import { defineComponent, onMounted, ref, onActivated } from 'vue';
+  import { PageWrapper } from '/@/components/Page';
+  import {
     BasicTable,
+    useTable,
     TableAction,
+    BasicColumn,
     TableImg,
-    checkModel,
-    outModal,
-    PageWrapper,
-    addAccessoryModel,
-    [Tabs.name]: Tabs,
-    [Tabs.TabPane.name]: Tabs.TabPane,
-  },
-  setup() {
-    const { t } = useI18n();
-    const permissionStore = usePermissionStore();
-    const router = useRouter()
-    const { getCheckPerm } = permissionStore;
-    const tableType = ref<number>(0); //0 待接单,1待跟进,2已完结
-    onMounted(() => {
-      // console.log(router.currentRoute.value.params.id);
-    });
-    const columns: BasicColumn[] = [
-      {
-        title: '报修日期',
-        dataIndex: 'createTime',
-        width: 180,
-      },
-      {
-        title: '客户名称',
-        dataIndex: 'companyName',
-        width: 80,
-      },
-      {
-        title: '产品类型',
-        dataIndex: 'cameraType',
-        width: 80,
-        customRender: ({ record }) => {
-          return t(`routes.scene.tableType.${record.cameraType}`);
+    FormProps,
+  } from '/@/components/Table';
+  import { Tabs } from 'ant-design-vue';
+  import { operateSceneList } from '/@/api/operate';
+  import { useI18n } from '/@/hooks/web/useI18n';
+
+  import { usePermissionStore } from '/@/store/modules/permission';
+  import checkModel from './checkModel.vue';
+  import outModal from './outModal.vue';
+  import addAccessoryModel from './addAccessoryModel.vue';
+  import { useModal } from '/@/components/Modal';
+  import { useRouter } from 'vue-router';
+  import { saleOrderList, repairOrderList } from '/@/api/spares';
+  export default defineComponent({
+    name: '维修管理',
+    components: {
+      BasicTable,
+      TableAction,
+      TableImg,
+      checkModel,
+      outModal,
+      PageWrapper,
+      addAccessoryModel,
+      [Tabs.name]: Tabs,
+      [Tabs.TabPane.name]: Tabs.TabPane,
+    },
+    setup() {
+      const { t } = useI18n();
+      const permissionStore = usePermissionStore();
+      const router = useRouter();
+      const { getCheckPerm } = permissionStore;
+      const tableType = ref<number>(0); //0 待接单,1待跟进,2已完结
+      onMounted(() => {
+        // console.log(router.currentRoute.value.params.id);
+      });
+      const columns: BasicColumn[] = [
+        {
+          title: '报修日期',
+          dataIndex: 'createTime',
+          width: 180,
+        },
+        {
+          title: '客户名称',
+          dataIndex: 'companyName',
+          width: 80,
         },
-      },
-      {
-        title: '产品SN码',
-        dataIndex: 'cameraSnCode',
-        width: 100,
-      },
-      {
-        title: '故障描述',
-        dataIndex: 'faultMsg',
-        width: 100,
-      },
-      {
-        title: '售后工程师',
-        dataIndex: 'saleName',
-        width: 100,
-      },
-      {
-        title: '接单日期',
-        dataIndex: 'orderReceivingTime',
-        width: 100,
-      },
-      {
-        title: '状态',
-        dataIndex: 'status',
-        width: 100,
-        customRender: ({ record }) => {
-          return t(`routes.spares.tableType.${record.status || 0}`);
+        {
+          title: '产品类型',
+          dataIndex: 'cameraType',
+          width: 80,
+          customRender: ({ record }) => {
+            return t(`routes.scene.tableType.${record.cameraType}`);
+          },
+        },
+        {
+          title: '产品SN码',
+          dataIndex: 'cameraSnCode',
+          width: 100,
+        },
+        {
+          title: '故障描述',
+          dataIndex: 'faultMsg',
+          width: 100,
+        },
+        {
+          title: '售后工程师',
+          dataIndex: 'saleName',
+          width: 100,
+        },
+        {
+          title: '接单日期',
+          dataIndex: 'orderReceivingTime',
+          width: 100,
+        },
+        {
+          title: '状态',
+          dataIndex: 'status',
+          width: 100,
+          customRender: ({ record }) => {
+            return t(`routes.spares.tableType.${record.status || 0}`);
+          },
         },
-      },
-      {
-        title: '工单号',
-        dataIndex: 'repairId',
-        width: 150,
-      },
-      {
-        title: t('common.operating'),
-        dataIndex: 'action',
-        slots: { customRender: 'action' },
-        ifShow: true,
-        fixed: 'right',
-        flag: 'ACTION',
-        width: 200,
-      },
-    ];
-    const searchForm: Partial<FormProps> = {
-      labelWidth: 120,
-      schemas: [
         {
+          title: '工单号',
+          dataIndex: 'repairId',
+          width: 150,
+        },
+        {
+          title: t('common.operating'),
+          dataIndex: 'action',
+          slots: { customRender: 'action' },
+          ifShow: true,
+          fixed: 'right',
+          flag: 'ACTION',
+          width: 200,
+        },
+      ];
+      const searchForm: Partial<FormProps> = {
+        labelWidth: 120,
+        schemas: [
+          {
             field: 'cameraType',
             label: '设备类型',
             component: 'Select',
@@ -163,10 +162,12 @@ export default defineComponent({
                 {
                   label: t('routes.scene.tableType.0'),
                   value: '0',
-                },{
+                },
+                {
                   label: t('routes.scene.tableType.1'),
                   value: '1',
-                },{
+                },
+                {
                   label: t('routes.scene.tableType.2'),
                   value: '2',
                 },
@@ -177,94 +178,94 @@ export default defineComponent({
               xxl: 6,
             },
           },
-        {
-          field: 'cameraSnCode',
-          component: 'Input',
-          label: t('routes.device.snCode'),
-          colProps: {
-            xl: 7,
-            xxl: 7,
+          {
+            field: 'cameraSnCode',
+            component: 'Input',
+            label: t('routes.device.snCode'),
+            colProps: {
+              xl: 7,
+              xxl: 7,
+            },
           },
-        },
-        {
-          field: 'repairId',
-          component: 'Input',
-          label: '工单号',
-          colProps: {
-            xl: 7,
-            xxl: 7,
+          {
+            field: 'repairId',
+            component: 'Input',
+            label: '工单号',
+            colProps: {
+              xl: 7,
+              xxl: 7,
+            },
           },
+        ],
+      };
+
+      const [registerRecovery, { openModal }] = useModal();
+      const [registerOut, { openModal: openOutModal }] = useModal();
+      const [registerAdd, { openModal: openAddModal }] = useModal();
+      const [registerTable, { reload }] = useTable({
+        api: repairOrderList,
+        columns: columns,
+        useSearchForm: true,
+        searchInfo: { statusParam: tableType },
+        formConfig: searchForm,
+        showTableSetting: true,
+        showIndexColumn: false,
+        fetchSetting: {
+          pageField: 'pageNum',
+          sizeField: 'pageSize',
+          listField: 'list',
+          totalField: 'total',
         },
-      ],
-    };
-    
-    const [registerRecovery, { openModal }] = useModal();
-    const [registerOut, { openModal:openOutModal }] = useModal();
-    const [registerAdd, { openModal:openAddModal }] = useModal();
-    const [registerTable, { reload }] = useTable({
-      api: repairOrderList,
-      columns: columns,
-      useSearchForm: true,
-      searchInfo: { statusParam: tableType },
-      formConfig: searchForm,
-      showTableSetting: true,
-      showIndexColumn: false,
-      fetchSetting: {
-        pageField: 'pageNum',
-        sizeField: 'pageSize',
-        listField: 'list',
-        totalField: 'total',
-      },
-      canResize: false,
-    });
-    onActivated(()=>{
-      reload();
-    })
-    async function handleDetail(record: Recordable) {
-      console.log('record', record);
-      router.push({path:`detail/${record.repairId||'20230215174919387'}`})
-    }
-    async function handleRecover(record: Recordable) {
-      openModal(true, record);
-    }
-    function handleAdd(record: Recordable) {
-      openAddModal(true,record);
-    }
-    function handleOut(record: Recordable) {
-      openOutModal(true,record);
-    }
-    function handleOrder() {
-      openModal(true);
-    }
-    function changeTable(val: string) {
-      tableType.value = val;
-      reload();
-    }
-    return {
-      registerTable,
-      reload,
-      t,
-      tableType,
-      openAddModal,
-      registerOut,
-      registerAdd,
-      changeTable,
-      handleOrder,
-      getCheckPerm,
-      handleDetail,
-      handleAdd,
-      handleOut,
-      handleRecover,
-      registerRecovery,
-    };
-  },
-});
+        canResize: false,
+      });
+      onActivated(() => {
+        reload();
+      });
+      async function handleDetail(record: Recordable) {
+        console.log('record', record);
+        router.push({ path: `detail/${record.repairId || '20230215174919387'}` });
+      }
+      async function handleRecover(record: Recordable) {
+        openModal(true, record);
+      }
+      function handleAdd(record: Recordable) {
+        openAddModal(true, record);
+      }
+      function handleOut(record: Recordable) {
+        openOutModal(true, record);
+      }
+      function handleOrder() {
+        openModal(true);
+      }
+      function changeTable(val: string) {
+        tableType.value = val;
+        reload();
+      }
+      return {
+        registerTable,
+        reload,
+        t,
+        tableType,
+        openAddModal,
+        registerOut,
+        registerAdd,
+        changeTable,
+        handleOrder,
+        getCheckPerm,
+        handleDetail,
+        handleAdd,
+        handleOut,
+        handleRecover,
+        registerRecovery,
+      };
+    },
+  });
 </script>
 <style lang="less" scoped>
-.desc-wrap-BasicTable {
-  background-color: #f0f2f5;
-  .vben-basic-table-form-container {
-    padding: 0;
+  .desc-wrap-BasicTable {
+    background-color: #f0f2f5;
+    .vben-basic-table-form-container {
+      padding: 0;
+    }
   }
-}
 </style>

+ 256 - 256
src/views/work/outModal.vue

@@ -25,278 +25,278 @@
   </BasicModal>
 </template>
 <script lang="ts">
-import { defineComponent, h, onMounted, reactive, ref } from 'vue';
-import { BasicModal, useModalInner } from '/@/components/Modal';
-import { BasicForm, FormSchema, useForm } from '/@/components/Form/index';
-import { useMessage } from '/@/hooks/web/useMessage';
-import {
-  partAllList,
-  faultAllList,
-  checkRegister,
-  partInfo,
-  partInfo,
-  checkRegisterInfo,
-  repairOver,
-} from '/@/api/spares';
-import { useI18n } from '/@/hooks/web/useI18n';
-import { uploadApi } from '/@/api/product/index';
-import { BasicTable, useTable } from '/@/components/Table';
-const { t } = useI18n();
-export default defineComponent({
-  components: { BasicModal, BasicForm, BasicTable },
-  props: {
-    userData: { type: Object },
-  },
-  emits: ['update', 'register'],
-  setup(props, { emit }) {
-    const n = ref(1);
-    const repairId = ref('');
-    const fileFlow = reactive({
-      file: null,
-      title: '完成维修',
-      repairId: null,
-      cameraType: 0,
-      type: 2, //2-普通发票,3-专用发票
-      faultList: [],
-    });
-    const loading = ref(false);
-    const { createMessage, createConfirm } = useMessage();
-    let schemas: FormSchema[] = [
-      {
-        field: 'repairId',
-        component: 'Input',
-        label: '维修单号',
-        slot: 'text',
-        colProps: {
-          span: 24,
-        },
-      },
-      {
-        field: 'deviceInfo',
-        component: 'Input',
-        label: '设备信息',
-        slot: 'text',
-        colProps: {
-          span: 18,
-        },
-      },
-      // {
-      //   field: 'faultIds',
-      //   component: 'CheckboxGroup',
-      //   label: '维修登记',
-      //   required: true,
-      //   componentProps: {
-      //     options: fileFlow.faultList,
-      //     maxLength: 50,
-      //   },
-      //   colProps: {
-      //     span: 18,
-      //   },
-      // },
-      {
-        field: 'remark',
-        component: 'InputTextArea',
-        label: '维修记录',
-        required: true,
-        componentProps: {
-          maxLength: 500,
-          rows: 3,
-          placeholder: '请填写维修记录',
-        },
-        colProps: {
-          span: 18,
-        },
-      },
-    ];
-    const columns = [
-      {
-        title: '备件编号',
-        dataIndex: 'partNum',
-        width: 50,
-      },
-      {
-        title: '备件名称',
-        dataIndex: 'partName',
-        width: 150,
-      },
-      {
-        title: '数量',
-        dataIndex: 'partCount',
-        width: 50,
-      },
-    ];
-    const [registerTable, { reload }] = useTable({
-      api:partInfo,
-      columns: columns,
-      searchInfo: { repairId: repairId, type:'2' },
-      showTableSetting: true,
-      showIndexColumn: false,
-      afterFetch: (T) => {
-        console.log(T);
-        return T;
-      },
-      immediate: false,
-      pagination: false,
-      fetchSetting: {
-        listField: 'partList',
-      },
-      canResize: false,
-    });
-    const [
-      registerForm,
-      {
-        validate,
-        resetFields,
-        setFieldsValue,
-        removeSchemaByFiled,
-        appendSchemaByField,
-        updateSchema,
-      },
-    ] = useForm({
-      labelWidth: 100,
-      schemas: schemas,
-      showActionButtonGroup: false,
-      actionColOptions: {
-        span: 24,
-      },
-    });
-    onMounted(() => {});
-    // getFaultList();
-    let addListFunc = () => {};
-    const [register, { closeModal }] = useModalInner((data) => {
-      repairId.value = data?.repairId;
-      data && onDataReceive(data);
-    });
-    async function getFaultList() {
-      const res = await faultAllList({});
-      fileFlow.faultList = res.map((item) => {
-        return {
-          ...item,
-          label: item.faultMsg,
-          value: item.faultId,
-        };
-      });
-    }
-
-    function onDataReceive(data) {
-      console.log('openOutModal', repairId.value);
-      resetFields();
-      if (repairId.value) {
-        reload();
-      }
-      // updateSchema({
-      //   field: 'faultIds',
-      //   componentProps: {
-      //     options: fileFlow.faultList,
-      //   },
-      // });
-      fileFlow.type = data.type;
-      fileFlow.cameraType = data.cameraType;
-      setFieldsValue({
-        ...data,
-        remark:'',
-        deviceInfo: t(`routes.scene.tableType.${data.cameraType}`) + data.cameraSnCode,
+  import { defineComponent, h, onMounted, reactive, ref } from 'vue';
+  import { BasicModal, useModalInner } from '/@/components/Modal';
+  import { BasicForm, FormSchema, useForm } from '/@/components/Form/index';
+  import { useMessage } from '/@/hooks/web/useMessage';
+  import {
+    partAllList,
+    faultAllList,
+    checkRegister,
+    partInfo,
+    partInfo,
+    checkRegisterInfo,
+    repairOver,
+  } from '/@/api/spares';
+  import { useI18n } from '/@/hooks/web/useI18n';
+  import { uploadApi } from '/@/api/product/index';
+  import { BasicTable, useTable } from '/@/components/Table';
+  const { t } = useI18n();
+  export default defineComponent({
+    components: { BasicModal, BasicForm, BasicTable },
+    props: {
+      userData: { type: Object },
+    },
+    emits: ['update', 'register'],
+    setup(props, { emit }) {
+      const n = ref(1);
+      const repairId = ref('');
+      const fileFlow = reactive({
+        file: null,
+        title: '完成维修',
+        repairId: null,
+        cameraType: 0,
+        type: 2, //2-普通发票,3-专用发票
+        faultList: [],
       });
-    }
-    function del(field) {
-      removeSchemaByFiled([`deviceType${field}`, `device_${field}`, `${field}`]);
-      n.value--;
-    }
-    function add() {
-      let list = addSchemas(n.value);
-      list.map((ele) => {
-        appendSchemaByField(ele, '');
-      });
-      n.value++;
-    }
-    function addSchemas(number) {
-      let parentList: FormSchema[] = [
+      const loading = ref(false);
+      const { createMessage, createConfirm } = useMessage();
+      let schemas: FormSchema[] = [
         {
-          field: 'partId' + number,
-          label: '备件' + number,
-          component: 'ApiSelect',
+          field: 'repairId',
+          component: 'Input',
+          label: '维修单号',
+          slot: 'text',
           colProps: {
-            span: 12,
+            span: 24,
           },
-          required: true,
-          componentProps: {
-            maxLength: 15,
-            api: partAllList,
-            style:'width: 220px',
-            labelField: 'partName',
-            valueField: 'partId',
-            params: {
-              cameraType: fileFlow.cameraType,
-            },
-            showSearch: true,
-            optionFilterProp: 'label',
+        },
+        {
+          field: 'deviceInfo',
+          component: 'Input',
+          label: '设备信息',
+          slot: 'text',
+          colProps: {
+            span: 18,
           },
         },
+        // {
+        //   field: 'faultIds',
+        //   component: 'CheckboxGroup',
+        //   label: '维修登记',
+        //   required: true,
+        //   componentProps: {
+        //     options: fileFlow.faultList,
+        //     maxLength: 50,
+        //   },
+        //   colProps: {
+        //     span: 18,
+        //   },
+        // },
         {
-          field: 'partCount' + number,
-          label: '数量',
-          component: 'InputNumber',
+          field: 'remark',
+          component: 'InputTextArea',
+          label: '维修记录',
           required: true,
-          defaultValue: 1,
-          labelWidth: 50,
           componentProps: {
-            max: 999,
-            min: 1,
+            maxLength: 500,
+            rows: 3,
+            placeholder: '请填写维修记录',
           },
           colProps: {
-            span: 6,
+            span: 18,
           },
         },
+      ];
+      const columns = [
         {
-          field: number.toString(),
-          component: 'Input',
-          label: '',
-          labelWidth: 0,
-          colProps: {
-            span: 6,
-          },
-          slot: 'del',
+          title: '备件编号',
+          dataIndex: 'partNum',
+          width: 50,
+        },
+        {
+          title: '备件名称',
+          dataIndex: 'partName',
+          width: 150,
+        },
+        {
+          title: '数量',
+          dataIndex: 'partCount',
+          width: 50,
         },
       ];
-      return parentList;
-    }
-    const handleSubmit = async () => {
-      const params = await validate();
-      try {
-        createConfirm({
-          iconType: 'warning',
-          title: () => h('span', '温馨提示'),
-          content: '确定要完成维修吗?',
-          onOk: async () => {
-            loading.value = true;
-            await repairOver(params);
-            loading.value = false;
-            createMessage.success(t('common.optSuccess'));
-            closeModal();
-            emit('update');
-          },
-          onCancel: () => {
-            loading.value = false
-          }
+      const [registerTable, { reload }] = useTable({
+        api: partInfo,
+        columns: columns,
+        searchInfo: { repairId: repairId, type: '2' },
+        showTableSetting: true,
+        showIndexColumn: false,
+        afterFetch: (T) => {
+          console.log(T);
+          return T;
+        },
+        immediate: false,
+        pagination: false,
+        fetchSetting: {
+          listField: 'partList',
+        },
+        canResize: false,
+      });
+      const [
+        registerForm,
+        {
+          validate,
+          resetFields,
+          setFieldsValue,
+          removeSchemaByFiled,
+          appendSchemaByField,
+          updateSchema,
+        },
+      ] = useForm({
+        labelWidth: 100,
+        schemas: schemas,
+        showActionButtonGroup: false,
+        actionColOptions: {
+          span: 24,
+        },
+      });
+      onMounted(() => {});
+      // getFaultList();
+      let addListFunc = () => {};
+      const [register, { closeModal }] = useModalInner((data) => {
+        repairId.value = data?.repairId;
+        data && onDataReceive(data);
+      });
+      async function getFaultList() {
+        const res = await faultAllList({});
+        fileFlow.faultList = res.map((item) => {
+          return {
+            ...item,
+            label: item.faultMsg,
+            value: item.faultId,
+          };
         });
-      } catch (error) {
-        loading.value = false;
-        console.log('not passing', error);
       }
-    };
-    return {
-      register,
-      registerForm,
-      fileFlow,
-      handleSubmit,
-      addListFunc,
-      resetFields,
-      registerTable,
-      loading,
-      t,
-      del,
-      add,
-    };
-  },
-});
+
+      function onDataReceive(data) {
+        console.log('openOutModal', repairId.value);
+        resetFields();
+        if (repairId.value) {
+          reload();
+        }
+        // updateSchema({
+        //   field: 'faultIds',
+        //   componentProps: {
+        //     options: fileFlow.faultList,
+        //   },
+        // });
+        fileFlow.type = data.type;
+        fileFlow.cameraType = data.cameraType;
+        setFieldsValue({
+          ...data,
+          remark: '',
+          deviceInfo: t(`routes.scene.tableType.${data.cameraType}`) + data.cameraSnCode,
+        });
+      }
+      function del(field) {
+        removeSchemaByFiled([`deviceType${field}`, `device_${field}`, `${field}`]);
+        n.value--;
+      }
+      function add() {
+        let list = addSchemas(n.value);
+        list.map((ele) => {
+          appendSchemaByField(ele, '');
+        });
+        n.value++;
+      }
+      function addSchemas(number) {
+        let parentList: FormSchema[] = [
+          {
+            field: 'partId' + number,
+            label: '备件' + number,
+            component: 'ApiSelect',
+            colProps: {
+              span: 12,
+            },
+            required: true,
+            componentProps: {
+              maxLength: 15,
+              api: partAllList,
+              style: 'width: 220px',
+              labelField: 'partName',
+              valueField: 'partId',
+              params: {
+                cameraType: fileFlow.cameraType,
+              },
+              showSearch: true,
+              optionFilterProp: 'label',
+            },
+          },
+          {
+            field: 'partCount' + number,
+            label: '数量',
+            component: 'InputNumber',
+            required: true,
+            defaultValue: 1,
+            labelWidth: 50,
+            componentProps: {
+              max: 999,
+              min: 1,
+            },
+            colProps: {
+              span: 6,
+            },
+          },
+          {
+            field: number.toString(),
+            component: 'Input',
+            label: '',
+            labelWidth: 0,
+            colProps: {
+              span: 6,
+            },
+            slot: 'del',
+          },
+        ];
+        return parentList;
+      }
+      const handleSubmit = async () => {
+        const params = await validate();
+        try {
+          createConfirm({
+            iconType: 'warning',
+            title: () => h('span', '温馨提示'),
+            content: '确定要完成维修吗?',
+            onOk: async () => {
+              loading.value = true;
+              await repairOver(params);
+              loading.value = false;
+              createMessage.success(t('common.optSuccess'));
+              closeModal();
+              emit('update');
+            },
+            onCancel: () => {
+              loading.value = false;
+            },
+          });
+        } catch (error) {
+          loading.value = false;
+          console.log('not passing', error);
+        }
+      };
+      return {
+        register,
+        registerForm,
+        fileFlow,
+        handleSubmit,
+        addListFunc,
+        resetFields,
+        registerTable,
+        loading,
+        t,
+        del,
+        add,
+      };
+    },
+  });
 </script>

+ 95 - 87
src/views/work/partsListModal.vue

@@ -9,110 +9,118 @@
     :min-height="0"
   >
     <div class="pt-2px pr-3px recoverPage">
-      <div class="form_item"><div class="item_lable">维修单号:</div>{{modelRef.repairId}}</div>
-      <div class="form_item"><div class="item_lable">维修工程师:</div>{{modelRef.repairManName}}</div>
+      <div class="form_item"><div class="item_lable">维修单号:</div>{{ modelRef.repairId }}</div>
+      <div class="form_item"
+        ><div class="item_lable">维修工程师:</div>{{ modelRef.repairManName }}</div
+      >
       <BasicTable @register="registerTable" />
-      <div class="tips">{{ modelRef.title == '备件出库'?'注:请按备件清单给维修工程师提供备件':'回收说明:完成维修,请回收废旧备件;取消维修,请回收新的备件 (自动恢复库存)。' }}</div>
+      <div class="tips">{{
+        modelRef.title == '备件出库'
+          ? '注:请按备件清单给维修工程师提供备件'
+          : '回收说明:完成维修,请回收废旧备件;取消维修,请回收新的备件 (自动恢复库存)。'
+      }}</div>
     </div>
   </BasicModal>
 </template>
 <script lang="ts">
-import { defineComponent, ref, onMounted, h } from 'vue';
-import { BasicModal, useModalInner } from '/@/components/Modal';
-import { BasicTable, useTable, BasicColumn } from '/@/components/Table';
-import { useMessage } from '/@/hooks/web/useMessage';
-import { partInfo, partRecovery, partOut } from '/@/api/spares';
-import { useI18n } from '/@/hooks/web/useI18n';
-const { t } = useI18n();
-export default defineComponent({
-  components: { BasicModal, BasicTable },
-  props: {
-    userData: { type: Object },
-  },
-  emits: ['update'],
-  setup(_, { emit }) {
-    const repairId = ref('')
-    const type = ref(0)
-    const modelRef = ref({
-      title:'设备入库',
-      repairId:'0000123',
-      repairManName:'',
-    });
-    const columns: BasicColumn[] = [
-      {
-        title: '备件编号',
-        dataIndex: 'partNum',
-        width: 100,
-      },{
-        title: '备件名称',
-        dataIndex: 'partName',
-        width: 100,
-      },{
-        title: '数量',
-        dataIndex: 'partCount',
-        width: 100,
-      },
-    ]
-    const [registerTable, { reload }] = useTable({
-      api: partInfo,
-      searchInfo: {repairId:repairId,type:type},
-      immediate:false,
-      pagination:false,
-      columns,
-    });
-    const { createMessage, createConfirm } = useMessage();
-    onMounted(() => {});
-    let addListFunc = () => {};
-    const [register, { closeModal }] = useModalInner((data) => {
-      // console.log(data);
-      data && onDataReceive(data);
-    });
+  import { defineComponent, ref, onMounted, h } from 'vue';
+  import { BasicModal, useModalInner } from '/@/components/Modal';
+  import { BasicTable, useTable, BasicColumn } from '/@/components/Table';
+  import { useMessage } from '/@/hooks/web/useMessage';
+  import { partInfo, partRecovery, partOut } from '/@/api/spares';
+  import { useI18n } from '/@/hooks/web/useI18n';
+  const { t } = useI18n();
+  export default defineComponent({
+    components: { BasicModal, BasicTable },
+    props: {
+      userData: { type: Object },
+    },
+    emits: ['update'],
+    setup(_, { emit }) {
+      const repairId = ref('');
+      const type = ref(0);
+      const modelRef = ref({
+        title: '设备入库',
+        repairId: '0000123',
+        repairManName: '',
+      });
+      const columns: BasicColumn[] = [
+        {
+          title: '备件编号',
+          dataIndex: 'partNum',
+          width: 100,
+        },
+        {
+          title: '备件名称',
+          dataIndex: 'partName',
+          width: 100,
+        },
+        {
+          title: '数量',
+          dataIndex: 'partCount',
+          width: 100,
+        },
+      ];
+      const [registerTable, { reload }] = useTable({
+        api: partInfo,
+        searchInfo: { repairId: repairId, type: type },
+        immediate: false,
+        pagination: false,
+        columns,
+      });
+      const { createMessage, createConfirm } = useMessage();
+      onMounted(() => {});
+      let addListFunc = () => {};
+      const [register, { closeModal }] = useModalInner((data) => {
+        // console.log(data);
+        data && onDataReceive(data);
+      });
 
-    function onDataReceive(data) {
-      type.value = data.status == 50?0:1
-      modelRef.value.title = data.status == 50?'备件出库':'备件回收';
-      repairId.value = data.repairId
-      modelRef.value.repairId = data.repairId;
-      modelRef.value.repairManName = data.repairManName;
-      reload()
-    }
-    function handleVisibleChange() {}
+      function onDataReceive(data) {
+        type.value = data.status == 50 ? 0 : 1;
+        modelRef.value.title = data.status == 50 ? '备件出库' : '备件回收';
+        repairId.value = data.repairId;
+        modelRef.value.repairId = data.repairId;
+        modelRef.value.repairManName = data.repairManName;
+        reload();
+      }
+      function handleVisibleChange() {}
 
-    const handleSubmit = async () => {
-      let api = modelRef.value.title == '备件出库'?partOut:partRecovery
-      createConfirm({
+      const handleSubmit = async () => {
+        let api = modelRef.value.title == '备件出库' ? partOut : partRecovery;
+        createConfirm({
           iconType: 'warning',
           title: () => h('span', '温馨提示'),
-          content: `确定要提交${modelRef.value.title == '备件出库'?'出库':'备件回收'}吗?`,
+          content: `确定要提交${modelRef.value.title == '备件出库' ? '出库' : '备件回收'}吗?`,
           onOk: async () => {
-            await api({repairId:modelRef.value.repairId})
+            await api({ repairId: modelRef.value.repairId });
             createMessage.success(t('common.optSuccess'));
             closeModal();
             emit('update');
           },
         });
-    };
-    return {
-      register,
-      modelRef,
-      registerTable,
-      handleVisibleChange,
-      handleSubmit,
-      addListFunc,
-      t,
-    };
-  },
-});
+      };
+      return {
+        register,
+        modelRef,
+        registerTable,
+        handleVisibleChange,
+        handleSubmit,
+        addListFunc,
+        t,
+      };
+    },
+  });
 </script>
 <style lang="less" scoped>
-.recoverPage{
-  .form_item{
-    line-height: 30px;
-    .item_lable{
-      display: inline-block;
-      width: 100px;
-      text-align: right;
+  .recoverPage {
+    .form_item {
+      line-height: 30px;
+      .item_lable {
+        display: inline-block;
+        width: 100px;
+        text-align: right;
+      }
     }
   }
-}
 </style>

+ 72 - 69
src/views/work/payLogModal.vue

@@ -10,7 +10,7 @@
     <div class="pt-2px pr-3px">
       <BasicForm @register="registerForm">
         <template #text="{ model, field }">
-          {{ model[field]  }}
+          {{ model[field] }}
         </template>
       </BasicForm>
     </div>
@@ -34,76 +34,79 @@
     emits: ['update', 'register'],
     setup(props, { emit }) {
       const fileFlow = reactive({
-        file:null,
-        type:2,//2-普通发票,3-专用发票
-      })
-      const loading = ref(false)
+        file: null,
+        type: 2, //2-普通发票,3-专用发票
+      });
+      const loading = ref(false);
       const { createMessage, createConfirm } = useMessage();
       const schemas: FormSchema[] = [
-          {
-            field: 'repairId',
-            slot: 'text',
-            component: 'Input',
-            label: '维修单号',
-          },{
-            field: 'deviceInfo',
-            component: 'Input',
-            label: '设备信息',
-            slot: 'text',
-            colProps: {
-              span: 18,
-            },
+        {
+          field: 'repairId',
+          slot: 'text',
+          component: 'Input',
+          label: '维修单号',
+        },
+        {
+          field: 'deviceInfo',
+          component: 'Input',
+          label: '设备信息',
+          slot: 'text',
+          colProps: {
+            span: 18,
+          },
+        },
+        {
+          field: 'payAmount',
+          component: 'Input',
+          label: '应收金额',
+          slot: 'text',
+          colProps: {
+            span: 24,
+          },
+        },
+        {
+          field: 'payType',
+          component: 'Select',
+          label: '付款方式',
+          required: true,
+          colProps: {
+            span: 18,
           },
-          {
-            field: 'payAmount',
-            component: 'Input',
-            label: '应收金额',
-            slot: 'text',
-            colProps: {
-              span: 24,
-            },
-          },{
-            field: 'payType',
-            component: 'Select',
-            label: '付款方式',
-            required: true,
-            colProps: {
-              span: 18,
-            },
-            defaultValue:0,
-            componentProps: {
-              options: [
-                {
-                  label: '银行转账',
-                  value: 0,
-                  key: 0,
-                }
-              ],
-            },
-          },{
-            field: 'payImg',
-            component: 'Upload',
-            label: '付款凭证',
-            required: true,
-            rules: [{ required: true, message: t('common.uploadMessge') }],
-            itemProps: {
-              validateTrigger: 'blur',
-            },
-            componentProps: {
-              api: uploadApi,
-              maxNumber: 6,
-              maxSize: 10,
-              accept: ['jpeg','jpg','png'],
-            },
-            colProps: {
-              span: 22,
-            },
+          defaultValue: 0,
+          componentProps: {
+            options: [
+              {
+                label: '银行转账',
+                value: 0,
+                key: 0,
+              },
+            ],
           },
+        },
+        {
+          field: 'payImg',
+          component: 'Upload',
+          label: '付款凭证',
+          required: true,
+          rules: [{ required: true, message: t('common.uploadMessge') }],
+          itemProps: {
+            validateTrigger: 'blur',
+          },
+          componentProps: {
+            api: uploadApi,
+            maxNumber: 6,
+            maxSize: 10,
+            accept: ['jpeg', 'jpg', 'png'],
+          },
+          colProps: {
+            span: 22,
+          },
+        },
       ];
 
       const [registerForm, { validate, resetFields, setFieldsValue, updateSchema }] = useForm({
         labelWidth: 120,
-        schemas:schemas,
+        schemas: schemas,
         showActionButtonGroup: false,
         actionColOptions: {
           span: 24,
@@ -118,7 +121,7 @@
         resetFields();
         setFieldsValue({
           ...data,
-          deviceInfo:t(`routes.scene.tableType.${data.cameraType}`)+data.cameraSnCode
+          deviceInfo: t(`routes.scene.tableType.${data.cameraType}`) + data.cameraSnCode,
         });
       }
       const handleSubmit = async () => {
@@ -128,22 +131,22 @@
           title: () => h('span', '温馨提示'),
           content: '确定提交付款登记吗?',
           onOk: async () => {
-            loading.value = true
+            loading.value = true;
             try {
               await payRegister(params);
               closeModal();
               resetFields();
               createMessage.success(t('common.optSuccess'));
               emit('update');
-              loading.value = false
+              loading.value = false;
             } catch (error) {
-              loading.value = false
+              loading.value = false;
               console.log('not passing', error);
             }
           },
           onCancel: () => {
-            loading.value = false
-          }
+            loading.value = false;
+          },
         });
       };
       return {

+ 392 - 378
src/views/work/recoveryModal.vue

@@ -11,406 +11,420 @@
   </BasicModal>
 </template>
 <script lang="ts">
-import { defineComponent, ref, onMounted, h } from 'vue';
-import { BasicModal, useModalInner } from '/@/components/Modal';
-import { useMessage } from '/@/hooks/web/useMessage';
-import { BasicForm, FormSchema, useForm } from '/@/components/Form/index';
-import { supplyOrderList, getByRoleType, recording } from '/@/api/spares';
-import { uploadApi } from '/@/api/product/index';
-import { useI18n } from '/@/hooks/web/useI18n';
-const { t } = useI18n();
-export default defineComponent({
-  components: { BasicModal, BasicForm },
-  props: {
-    userData: { type: Object },
-  },
-  emits: ['update'],
-  setup(_, { emit }) {
-    const modelRef = ref({});
-    const schemas: FormSchema[] = [
-      {
-        field: 'connection-info',
-        component: 'Divider',
-        label: '客户信息',
-      },
-      {
-        field: 'companyName',
-        component: 'Input',
-        required: true,
-        label: '公司名称',
-        componentProps: {
-          maxLength: 50,
-        },        
-        colProps: {
-          span: 18,
-        },  
-      },
-      {
-        field: 'customerName',
-        component: 'Input',
-        required: true,
-        label: '联系人',
-        componentProps: {
-          placeholder: '请填写姓名',
-          maxLength: 50,
-        },        colProps: {
-          span: 18,
-        },  
-      },
-      {
-        field: 'phone',
-        component: 'Input',
-        required: true,
-        label: '联系电话',
-        rules: [
-          {
-            required: true,
-            // @ts-ignore
-            validator: async (rule, value) => {
-              var reg_tel =
-                /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/;
-              // var reg = /\S+@\S+\.\S+/;
-              if (!value) {
-                /* eslint-disable-next-line */
+  import { defineComponent, ref, onMounted, h } from 'vue';
+  import { BasicModal, useModalInner } from '/@/components/Modal';
+  import { useMessage } from '/@/hooks/web/useMessage';
+  import { BasicForm, FormSchema, useForm } from '/@/components/Form/index';
+  import { supplyOrderList, getByRoleType, recording } from '/@/api/spares';
+  import { uploadApi } from '/@/api/product/index';
+  import { useI18n } from '/@/hooks/web/useI18n';
+  const { t } = useI18n();
+  export default defineComponent({
+    components: { BasicModal, BasicForm },
+    props: {
+      userData: { type: Object },
+    },
+    emits: ['update'],
+    setup(_, { emit }) {
+      const modelRef = ref({});
+      const schemas: FormSchema[] = [
+        {
+          field: 'connection-info',
+          component: 'Divider',
+          label: '客户信息',
+        },
+        {
+          field: 'companyName',
+          component: 'Input',
+          required: true,
+          label: '公司名称',
+          componentProps: {
+            maxLength: 50,
+          },
+          colProps: {
+            span: 18,
+          },
+        },
+        {
+          field: 'customerName',
+          component: 'Input',
+          required: true,
+          label: '联系人',
+          componentProps: {
+            placeholder: '请填写姓名',
+            maxLength: 50,
+          },
+          colProps: {
+            span: 18,
+          },
+        },
+        {
+          field: 'phone',
+          component: 'Input',
+          required: true,
+          label: '联系电话',
+          rules: [
+            {
+              required: true,
+              // @ts-ignore
+              validator: async (rule, value) => {
+                var reg_tel =
+                  /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/;
+                // var reg = /\S+@\S+\.\S+/;
+                if (!value) {
+                  /* eslint-disable-next-line */
 
-                return Promise.reject(t('common.phone'));
-              }
-              if (!reg_tel.test(value)) {
-                /* eslint-disable-next-line */
+                  return Promise.reject(t('common.phone'));
+                }
+                if (!reg_tel.test(value)) {
+                  /* eslint-disable-next-line */
                 return Promise.reject(t('common.phoneError'));
-              }
-              return Promise.resolve();
+                }
+                return Promise.resolve();
+              },
+              trigger: 'change',
             },
-            trigger: 'change',
+          ],
+          colProps: {
+            span: 18,
+          },
+          componentProps: {
+            placeholder: '请填写手机号',
+            maxLength: 50,
           },
-        ],        colProps: {
-          span: 18,
-        },  
-        componentProps: {
-          placeholder: '请填写手机号',
-          maxLength: 50,
         },
-      },
-      {
-        field: 'hitch-info',
-        component: 'Divider',
-        label: '故障信息',
-      },
-      {
-        field: 'cameraSnCode',
-        component: 'Input',
-        label: '产品SN码',        
-        required: true,
-        colProps: {
-          span: 18,
-        },  
-        componentProps: {
-          placeholder: '请填写下划线后的数字母组合',
-          maxLength: 50,
+        {
+          field: 'hitch-info',
+          component: 'Divider',
+          label: '故障信息',
         },
-      },
-      {
-        field: 'faultMsg',
-        component: 'InputTextArea',
-        label: '故障描述',
-        required: true,
-        componentProps: {
-          maxLength: 500,
-          rows: 3,
-          placeholder: '请具体描述故障现象,相关操作等。',
+        {
+          field: 'cameraSnCode',
+          component: 'Input',
+          label: '产品SN码',
+          required: true,
+          colProps: {
+            span: 18,
+          },
+          componentProps: {
+            placeholder: '请填写下划线后的数字母组合',
+            maxLength: 50,
+          },
         },
-        colProps: {
-          span: 18,
+        {
+          field: 'faultMsg',
+          component: 'InputTextArea',
+          label: '故障描述',
+          required: true,
+          componentProps: {
+            maxLength: 500,
+            rows: 3,
+            placeholder: '请具体描述故障现象,相关操作等。',
+          },
+          colProps: {
+            span: 18,
+          },
         },
-      },
-      {
-        field: 'faultImg',
-        component: 'Upload',
-        label: '相关图片',
-        required: true,
-        rules: [{ required: true, message: t('common.uploadMessge') }],
-        itemProps: {
-          validateTrigger: 'blur',
+        {
+          field: 'faultImg',
+          component: 'Upload',
+          label: '相关图片',
+          required: true,
+          rules: [{ required: true, message: t('common.uploadMessge') }],
+          itemProps: {
+            validateTrigger: 'blur',
+          },
+          componentProps: {
+            api: uploadApi,
+            // fileFlow:true,
+            maxNumber: 6,
+            maxSize: 5,
+            accept: ['jpeg', 'jpg', 'png'],
+          },
+          colProps: {
+            span: 12,
+          },
         },
-        componentProps: {
-          api: uploadApi,
-          // fileFlow:true,
-          maxNumber: 6,
-          maxSize: 5,
-          accept: ['jpeg', 'jpg', 'png'],
+        {
+          field: 'sendType',
+          component: 'RadioGroup',
+          required: true,
+          label: '送修方式',
+          defaultValue: 1,
+          componentProps: {
+            placeholder: '请填写姓名',
+            options: [
+              { label: '前台送修', value: 0 },
+              { label: '快递寄送', value: 1 },
+            ],
+            onChange: (e) => {
+              updateSchema([
+                {
+                  field: 'sendTrackingNum',
+                  ifShow: e.target.value == 1,
+                },
+              ]);
+            },
+          },
         },
-        colProps: {
-          span: 12,
+        {
+          field: 'sendTrackingNum',
+          component: 'Input',
+          label: '快递单号',
+          required: true,
+          colProps: {
+            span: 18,
+          },
         },
-      },
-      {
-        field: 'sendType',
-        component: 'RadioGroup',
-        required: true,
-        label: '送修方式',
-        defaultValue:1,
-        componentProps: {
-          placeholder: '请填写姓名',
-          options:[
-            { label: '前台送修', value: 0 },
-            { label: '快递寄送', value: 1 },
-          ],
-          onChange:(e)=>{
-            updateSchema([{
-              field: 'sendTrackingNum',
-              ifShow:e.target.value == 1
-            }])
-          }
+        {
+          field: 'getType',
+          component: 'RadioGroup',
+          required: true,
+          label: '取回方式',
+          defaultValue: 1,
+          componentProps: {
+            placeholder: '请填写姓名',
+            options: [
+              { label: '前台取回', value: 0 },
+              { label: '快递寄回', value: 1 },
+            ],
+            onChange: (e) => {
+              updateSchema([
+                {
+                  field: 'getAddress',
+                  ifShow: e.target.value == 1,
+                },
+                {
+                  field: 'getAddrName',
+                  ifShow: e.target.value == 1,
+                },
+                {
+                  field: 'getAddrPhone',
+                  ifShow: e.target.value == 1,
+                },
+              ]);
+            },
+          },
         },
-      },
-      {
-        field: 'sendTrackingNum',
-        component: 'Input',
-        label: '快递单号',
-        required: true,
-        colProps: {
-          span: 18,
+        {
+          field: 'getAddress',
+          component: 'Input',
+          required: true,
+          label: '收件地址',
+          colProps: {
+            span: 18,
+          },
+          componentProps: {
+            maxLength: 50,
+          },
         },
-      },{
-        field: 'getType',
-        component: 'RadioGroup',
-        required: true,
-        label: '取回方式',
-        defaultValue:1,
-        componentProps: {
-          placeholder: '请填写姓名',
-          options:[
-            { label: '前台取回', value: 0 },
-            { label: '快递寄回', value: 1 },
-          ],
-          onChange:(e)=>{
-            updateSchema([{
-              field: 'getAddress',
-              ifShow:e.target.value == 1
-            },{
-              field: 'getAddrName',
-              ifShow:e.target.value == 1
-            },{
-              field: 'getAddrPhone',
-              ifShow:e.target.value == 1
-            }])
-          }
+        {
+          field: 'getAddrName',
+          component: 'Input',
+          required: true,
+          label: '收件人',
+          colProps: {
+            span: 18,
+          },
+          componentProps: {
+            maxLength: 50,
+          },
         },
-      },
-      {
-        field: 'getAddress',
-        component: 'Input',
-        required: true,
-        label: '收件地址',
-        colProps: {
-          span: 18,
-        },   
-        componentProps: {
-          maxLength: 50,
-        },  
-      },
-      {
-        field: 'getAddrName',
-        component: 'Input',
-        required: true,
-        label: '收件人',
-        colProps: {
-          span: 18,
-        },   
-        componentProps: {
-          maxLength: 50,
-        },  
-      },
-      {
-        field: 'getAddrPhone',
-        component: 'Input',
-        label: '收件人电话',
-        colProps: {
-          span: 18,
-        },      
-        componentProps: {
-          maxLength: 50,
-          placeholder: '请填写手机号',
-        },  
-        rules: [
-          {
-            required: true,
-            // @ts-ignore
-            validator: async (rule, value) => {
-              var reg_tel =
-                /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/;
-              // var reg = /\S+@\S+\.\S+/;
-              if (!value) {
-                /* eslint-disable-next-line */
+        {
+          field: 'getAddrPhone',
+          component: 'Input',
+          label: '收件人电话',
+          colProps: {
+            span: 18,
+          },
+          componentProps: {
+            maxLength: 50,
+            placeholder: '请填写手机号',
+          },
+          rules: [
+            {
+              required: true,
+              // @ts-ignore
+              validator: async (rule, value) => {
+                var reg_tel =
+                  /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/;
+                // var reg = /\S+@\S+\.\S+/;
+                if (!value) {
+                  /* eslint-disable-next-line */
 
-                return Promise.reject(t('common.phone'));
-              }
-              if (!reg_tel.test(value)) {
-                /* eslint-disable-next-line */
+                  return Promise.reject(t('common.phone'));
+                }
+                if (!reg_tel.test(value)) {
+                  /* eslint-disable-next-line */
                 return Promise.reject(t('common.phoneError'));
-              }
-              return Promise.resolve();
+                }
+                return Promise.resolve();
+              },
+              trigger: 'change',
             },
-            trigger: 'change',
+          ],
+        },
+        // {
+        //   field: 'work-info',
+        //   component: 'Divider',
+        //   label: '工单信息',
+        // },{
+        //   field: 'warrantyType',
+        //   component: 'RadioGroup',
+        //   required: true,
+        //   label: '保修类型',
+        //   defaultValue:1,
+        //   componentProps: {
+        //     placeholder: '请填写姓名',
+        //     options:[
+        //       { label: '保内维修', value: 0 },
+        //       { label: '保修期外', value: 1 },
+        //       { label: '非保修项目', value: 2 },
+        //     ],
+        //   },
+        // },
+        // {
+        //   field: 'warrantyExpirationDate',
+        //   component: 'DatePicker',
+        //   label: '保修届满日期',
+        //   required: true,
+        //   colProps: {
+        //     span: 18,
+        //   },
+        //   componentProps: {
+        //     valueFormat: 'YYYY-MM-DD',
+        //   },
+        // },{
+        //     field: 'repairManId',
+        //     label: '维修工程师',
+        //     component: 'ApiSelect',
+        //     required: true,
+        //     componentProps: {
+        //       api: getByRoleType,
+        //       numberToString: true,
+        //       labelField: 'nickName',
+        //       valueField: 'id',
+        //       immediate: true,
+        //       params: {
+        //         roleType: 3,
+        //       },
+        //     },
+        //     colProps: {
+        //       span: 18,
+        //     },
+        //   },{
+        //     field: 'supplyAdminId',
+        //     label: '供应链管理员',
+        //     component: 'ApiSelect',
+        //     required: true,
+        //     componentProps: {
+        //       api: getByRoleType,
+        //       numberToString: true,
+        //       labelField: 'nickName',
+        //       valueField: 'id',
+        //       immediate: true,
+        //       params: {
+        //         roleType: 4,
+        //       },
+        //     },
+        //     colProps: {
+        //       span: 18,
+        //     },
+        //   },{
+        //     field: 'testerId',
+        //     label: '测试工程师',
+        //     component: 'ApiSelect',
+        //     required: true,
+        //     componentProps: {
+        //       api: getByRoleType,
+        //       numberToString: true,
+        //       labelField: 'nickName',
+        //       valueField: 'id',
+        //       immediate: true,
+        //       params: {
+        //         roleType: 5,
+        //       },
+        //     },
+        //     colProps: {
+        //       span: 18,
+        //     },
+        //   },
+      ];
+      const [registerForm, { validate, resetFields, setFieldsValue, updateSchema }] = useForm({
+        labelWidth: 100,
+        schemas: schemas,
+        showActionButtonGroup: false,
+        actionColOptions: {
+          span: 24,
+        },
+      });
+      const { createMessage, createConfirm } = useMessage();
+      onMounted(() => {});
+      let addListFunc = () => {};
+      const [register, { closeModal }] = useModalInner((data) => {
+        // console.log(data);
+        resetFields();
+        updateSchema([
+          {
+            field: 'getAddress',
+            ifShow: true,
+          },
+          {
+            field: 'getAddrName',
+            ifShow: true,
           },
-        ],
-      },
-      // {
-      //   field: 'work-info',
-      //   component: 'Divider',
-      //   label: '工单信息',
-      // },{
-      //   field: 'warrantyType',
-      //   component: 'RadioGroup',
-      //   required: true,
-      //   label: '保修类型',
-      //   defaultValue:1,
-      //   componentProps: {
-      //     placeholder: '请填写姓名',
-      //     options:[
-      //       { label: '保内维修', value: 0 },
-      //       { label: '保修期外', value: 1 },
-      //       { label: '非保修项目', value: 2 },
-      //     ],
-      //   },
-      // },
-      // {
-      //   field: 'warrantyExpirationDate',
-      //   component: 'DatePicker',
-      //   label: '保修届满日期',
-      //   required: true,
-      //   colProps: {
-      //     span: 18,
-      //   },   
-      //   componentProps: {
-      //     valueFormat: 'YYYY-MM-DD',
-      //   },  
-      // },{
-      //     field: 'repairManId',
-      //     label: '维修工程师',
-      //     component: 'ApiSelect',
-      //     required: true,
-      //     componentProps: {
-      //       api: getByRoleType,
-      //       numberToString: true,
-      //       labelField: 'nickName',
-      //       valueField: 'id',
-      //       immediate: true,
-      //       params: {
-      //         roleType: 3,
-      //       },
-      //     },
-      //     colProps: {
-      //       span: 18,
-      //     },
-      //   },{
-      //     field: 'supplyAdminId',
-      //     label: '供应链管理员',
-      //     component: 'ApiSelect',
-      //     required: true,
-      //     componentProps: {
-      //       api: getByRoleType,
-      //       numberToString: true,
-      //       labelField: 'nickName',
-      //       valueField: 'id',
-      //       immediate: true,
-      //       params: {
-      //         roleType: 4,
-      //       },
-      //     },
-      //     colProps: {
-      //       span: 18,
-      //     },
-      //   },{
-      //     field: 'testerId',
-      //     label: '测试工程师',
-      //     component: 'ApiSelect',
-      //     required: true,
-      //     componentProps: {
-      //       api: getByRoleType,
-      //       numberToString: true,
-      //       labelField: 'nickName',
-      //       valueField: 'id',
-      //       immediate: true,
-      //       params: {
-      //         roleType: 5,
-      //       },
-      //     },
-      //     colProps: {
-      //       span: 18,
-      //     },
-      //   },
-    ];
-    const [registerForm, { validate, resetFields, setFieldsValue, updateSchema }] = useForm({
-      labelWidth: 100,
-      schemas: schemas,
-      showActionButtonGroup: false,
-      actionColOptions: {
-        span: 24,
-      },
-    });
-    const { createMessage, createConfirm } = useMessage();
-    onMounted(() => {});
-    let addListFunc = () => {};
-    const [register, { closeModal }] = useModalInner((data) => {
-      // console.log(data);
-      resetFields()
-      updateSchema([{
-              field: 'getAddress',
-              ifShow:true,
-            },{
-              field: 'getAddrName',
-              ifShow:true,
-            },{
-              field: 'getAddrPhone',
-              ifShow:true,
-            },{
-              field: 'sendTrackingNum',
-              ifShow:true,
-            }])
-      data && onDataReceive(data);
-    });
+          {
+            field: 'getAddrPhone',
+            ifShow: true,
+          },
+          {
+            field: 'sendTrackingNum',
+            ifShow: true,
+          },
+        ]);
+        data && onDataReceive(data);
+      });
 
-    function onDataReceive(data) {
-      modelRef.value = data;
-    }
+      function onDataReceive(data) {
+        modelRef.value = data;
+      }
 
-    const handleSubmit = async () => {
-      // createConfirm({
-      //   iconType: 'warning',
-      //   title: () => h('span', '温馨提示'),
-      //   content: '删除设备后需要重新入库<br/>确定删除吗?',
-      //   onOk: async () => {
-          const params = await validate()
-          const res = await recording(params);
-          console.log('validate',params,res)
-          createMessage.success(t('common.optSuccess'));
-          closeModal();
-          emit('update');
-      //   },
-      // });
-    };
-    return {
-      register,
-      model: modelRef,
-      registerForm,
-      handleSubmit,
-      addListFunc,
-      resetFields,
-      t,
-    };
-  },
-});
+      const handleSubmit = async () => {
+        // createConfirm({
+        //   iconType: 'warning',
+        //   title: () => h('span', '温馨提示'),
+        //   content: '删除设备后需要重新入库<br/>确定删除吗?',
+        //   onOk: async () => {
+        const params = await validate();
+        const res = await recording(params);
+        console.log('validate', params, res);
+        createMessage.success(t('common.optSuccess'));
+        closeModal();
+        emit('update');
+        //   },
+        // });
+      };
+      return {
+        register,
+        model: modelRef,
+        registerForm,
+        handleSubmit,
+        addListFunc,
+        resetFields,
+        t,
+      };
+    },
+  });
 </script>
 <style lang="less" scoped>
-.recoverPage {
-  .form_item {
-    line-height: 30px;
-    .item_lable {
-      display: inline-block;
-      width: 100px;
-      text-align: right;
+  .recoverPage {
+    .form_item {
+      line-height: 30px;
+      .item_lable {
+        display: inline-block;
+        width: 100px;
+        text-align: right;
+      }
     }
   }
-}
 </style>

+ 134 - 132
src/views/work/reviewModal.vue

@@ -7,152 +7,154 @@
     @ok="handleSubmit"
     :min-height="0"
   >
-    <BasicForm @register="registerForm" >
-        <template #text="{ model, field }">
-          {{ model[field]  }}
-        </template>
+    <BasicForm @register="registerForm">
+      <template #text="{ model, field }">
+        {{ model[field] }}
+      </template>
     </BasicForm>
   </BasicModal>
 </template>
 <script lang="ts">
-import { defineComponent, ref, onMounted, h } from 'vue';
-import { BasicModal, useModalInner } from '/@/components/Modal';
-import { useMessage } from '/@/hooks/web/useMessage';
-import { BasicForm, FormSchema, useForm } from '/@/components/Form/index';
-import { testPassOrFail } from '/@/api/spares';
-import { uploadApi } from '/@/api/product/index';
-import { useI18n } from '/@/hooks/web/useI18n';
-const { t } = useI18n();
-export default defineComponent({
-  components: { BasicModal, BasicForm },
-  props: {
-    userData: { type: Object },
-  },
-  emits: ['update'],
-  setup(_, { emit }) {
-    const modelRef = ref({});
-    const schemas: FormSchema[] = [
-      {
-        field: 'repairId',
-        component: 'Input',
-        slot: 'text',
-        label: '维修单号',
-        componentProps: {
-          maxLength: 50,
-        },        colProps: {
-          span: 18,
-        },  
-      },
-      {
-        field: 'deviceType',
-        component: 'Input',
-        slot: 'text',
-        label: '设备信息',
-      },{
-        field: 'resultStatus',
-        component: 'RadioGroup',
-        required: true,
-        label: '测试结果',
-        defaultValue:0,
-        componentProps: {
-          options:[
-            { label: '通过', value: 0 },
-            { label: '不通过', value: 1 },
-          ],
+  import { defineComponent, ref, onMounted, h } from 'vue';
+  import { BasicModal, useModalInner } from '/@/components/Modal';
+  import { useMessage } from '/@/hooks/web/useMessage';
+  import { BasicForm, FormSchema, useForm } from '/@/components/Form/index';
+  import { testPassOrFail } from '/@/api/spares';
+  import { uploadApi } from '/@/api/product/index';
+  import { useI18n } from '/@/hooks/web/useI18n';
+  const { t } = useI18n();
+  export default defineComponent({
+    components: { BasicModal, BasicForm },
+    props: {
+      userData: { type: Object },
+    },
+    emits: ['update'],
+    setup(_, { emit }) {
+      const modelRef = ref({});
+      const schemas: FormSchema[] = [
+        {
+          field: 'repairId',
+          component: 'Input',
+          slot: 'text',
+          label: '维修单号',
+          componentProps: {
+            maxLength: 50,
+          },
+          colProps: {
+            span: 18,
+          },
         },
-      },
-      {
-        field: 'resultInfo',
-        component: 'InputTextArea',
-        label: '测试描述',
-        componentProps: {
-          maxLength: 500,
-          rows: 3,
+        {
+          field: 'deviceType',
+          component: 'Input',
+          slot: 'text',
+          label: '设备信息',
         },
-        colProps: {
-          span: 18,
+        {
+          field: 'resultStatus',
+          component: 'RadioGroup',
+          required: true,
+          label: '测试结果',
+          defaultValue: 0,
+          componentProps: {
+            options: [
+              { label: '通过', value: 0 },
+              { label: '不通过', value: 1 },
+            ],
+          },
         },
-      },
-      {
-        field: 'resultImg',
-        component: 'Upload',
-        label: '相关图片',
-        itemProps: {
-          validateTrigger: 'blur',
+        {
+          field: 'resultInfo',
+          component: 'InputTextArea',
+          label: '测试描述',
+          componentProps: {
+            maxLength: 500,
+            rows: 3,
+          },
+          colProps: {
+            span: 18,
+          },
         },
-        componentProps: {
-          api: uploadApi,
-          // fileFlow:true,
-          maxNumber: 6,
-          maxSize: 5,
-          accept: ['jpeg', 'jpg', 'png'],
+        {
+          field: 'resultImg',
+          component: 'Upload',
+          label: '相关图片',
+          itemProps: {
+            validateTrigger: 'blur',
+          },
+          componentProps: {
+            api: uploadApi,
+            // fileFlow:true,
+            maxNumber: 6,
+            maxSize: 5,
+            accept: ['jpeg', 'jpg', 'png'],
+          },
+          colProps: {
+            span: 12,
+          },
         },
-        colProps: {
-          span: 12,
+      ];
+      const [registerForm, { validate, resetFields, setFieldsValue }] = useForm({
+        labelWidth: 100,
+        schemas: schemas,
+        showActionButtonGroup: false,
+        actionColOptions: {
+          span: 24,
         },
-      },
-    ];
-    const [registerForm, { validate, resetFields, setFieldsValue }] = useForm({
-      labelWidth: 100,
-      schemas: schemas,
-      showActionButtonGroup: false,
-      actionColOptions: {
-        span: 24,
-      },
-    });
-    const { createMessage, createConfirm } = useMessage();
-    onMounted(() => {});
-    let addListFunc = () => {};
-    const [register, { closeModal }] = useModalInner((data) => {
-      // console.log(data);
-      data && onDataReceive(data);
-    });
-
-    function onDataReceive(data) {
-      modelRef.value = data;
-      resetFields();
-      setFieldsValue({
-        ...data,
-        deviceType:t(`routes.scene.tableType.${data.cameraType}`) +' '+ data.cameraSnCode
       });
-    }
-
-    const handleSubmit = async () => {
-      createConfirm({
-        iconType: 'warning',
-        title: () => h('span', '温馨提示'),
-        content: '确定要提交测试结果吗?',
-        onOk: async () => {
-          const params = await validate()
-          const res = await testPassOrFail(params);
-          console.log('validate',params,res)
-          createMessage.success(t('common.optSuccess'));
-          closeModal();
-          emit('update');
-        },
+      const { createMessage, createConfirm } = useMessage();
+      onMounted(() => {});
+      let addListFunc = () => {};
+      const [register, { closeModal }] = useModalInner((data) => {
+        // console.log(data);
+        data && onDataReceive(data);
       });
-    };
-    return {
-      register,
-      model: modelRef,
-      registerForm,
-      handleSubmit,
-      addListFunc,
-      resetFields,
-      t,
-    };
-  },
-});
+
+      function onDataReceive(data) {
+        modelRef.value = data;
+        resetFields();
+        setFieldsValue({
+          ...data,
+          deviceType: t(`routes.scene.tableType.${data.cameraType}`) + ' ' + data.cameraSnCode,
+        });
+      }
+
+      const handleSubmit = async () => {
+        createConfirm({
+          iconType: 'warning',
+          title: () => h('span', '温馨提示'),
+          content: '确定要提交测试结果吗?',
+          onOk: async () => {
+            const params = await validate();
+            const res = await testPassOrFail(params);
+            console.log('validate', params, res);
+            createMessage.success(t('common.optSuccess'));
+            closeModal();
+            emit('update');
+          },
+        });
+      };
+      return {
+        register,
+        model: modelRef,
+        registerForm,
+        handleSubmit,
+        addListFunc,
+        resetFields,
+        t,
+      };
+    },
+  });
 </script>
 <style lang="less" scoped>
-.recoverPage {
-  .form_item {
-    line-height: 30px;
-    .item_lable {
-      display: inline-block;
-      width: 100px;
-      text-align: right;
+  .recoverPage {
+    .form_item {
+      line-height: 30px;
+      .item_lable {
+        display: inline-block;
+        width: 100px;
+        text-align: right;
+      }
     }
   }
-}
 </style>

+ 165 - 159
src/views/work/takingOrdersModel.vue

@@ -7,113 +7,115 @@
     @ok="handleSubmit"
     :min-height="0"
   >
-    <BasicForm @register="registerForm" >
-        <template #text="{ model, field }">
-          {{ model[field]  }}
-        </template>
+    <BasicForm @register="registerForm">
+      <template #text="{ model, field }">
+        {{ model[field] }}
+      </template>
     </BasicForm>
   </BasicModal>
 </template>
 <script lang="ts">
-import { defineComponent, ref, onMounted, h } from 'vue';
-import { BasicModal, useModalInner } from '/@/components/Modal';
-import { useMessage } from '/@/hooks/web/useMessage';
-import { BasicForm, FormSchema, useForm } from '/@/components/Form/index';
-import { supplyOrderList, getByRoleType, orderReceiving } from '/@/api/spares';
-import { uploadApi } from '/@/api/product/index';
-import { useI18n } from '/@/hooks/web/useI18n';
-const { t } = useI18n();
-export default defineComponent({
-  components: { BasicModal, BasicForm },
-  props: {
-    userData: { type: Object },
-  },
-  emits: ['update'],
-  setup(_, { emit }) {
-    const modelRef = ref({});
-    const schemas: FormSchema[] = [
-      {
-        field: 'repairId',
-        component: 'Input',
-        slot: 'text',
-        label: '维修单号',
-        componentProps: {
-          maxLength: 50,
-        },        colProps: {
-          span: 18,
-        },  
-      },
-      {
-        field: 'deviceType',
-        component: 'Input',
-        slot: 'text',
-        label: '设备信息',
-      },
-      {
-        field: 'warrantyExpirationDateText',
-        component: 'Input',
-        slot: 'text',
-        label: '保修届满日期',
-      },
-      {
-        field: 'cameraFaultInfo',
-        component: 'InputTextArea',
-        label: '机器外观',
-        required: true,
-        componentProps: {
-          maxLength: 500,
-          rows: 3,
-          placeholder: '请描述检测后的具体故障情况。',
+  import { defineComponent, ref, onMounted, h } from 'vue';
+  import { BasicModal, useModalInner } from '/@/components/Modal';
+  import { useMessage } from '/@/hooks/web/useMessage';
+  import { BasicForm, FormSchema, useForm } from '/@/components/Form/index';
+  import { supplyOrderList, getByRoleType, orderReceiving } from '/@/api/spares';
+  import { uploadApi } from '/@/api/product/index';
+  import { useI18n } from '/@/hooks/web/useI18n';
+  const { t } = useI18n();
+  export default defineComponent({
+    components: { BasicModal, BasicForm },
+    props: {
+      userData: { type: Object },
+    },
+    emits: ['update'],
+    setup(_, { emit }) {
+      const modelRef = ref({});
+      const schemas: FormSchema[] = [
+        {
+          field: 'repairId',
+          component: 'Input',
+          slot: 'text',
+          label: '维修单号',
+          componentProps: {
+            maxLength: 50,
+          },
+          colProps: {
+            span: 18,
+          },
         },
-        colProps: {
-          span: 24,
+        {
+          field: 'deviceType',
+          component: 'Input',
+          slot: 'text',
+          label: '设备信息',
         },
-      },
-      {
-        field: 'imageUrl',
-        component: 'Upload',
-        label: '相关图片',
-        rules: [{ required: true, message: t('common.uploadMessge') }],
-        itemProps: {
-          validateTrigger: 'blur',
+        {
+          field: 'warrantyExpirationDateText',
+          component: 'Input',
+          slot: 'text',
+          label: '保修届满日期',
         },
-        componentProps: {
-          api: uploadApi,
-          // fileFlow:true,
-          maxNumber: 6,
-          maxSize: 5,
-          accept: ['jpeg', 'jpg', 'png'],
+        {
+          field: 'cameraFaultInfo',
+          component: 'InputTextArea',
+          label: '机器外观',
+          required: true,
+          componentProps: {
+            maxLength: 500,
+            rows: 3,
+            placeholder: '请描述检测后的具体故障情况。',
+          },
+          colProps: {
+            span: 24,
+          },
         },
-        colProps: {
-          span: 12,
+        {
+          field: 'imageUrl',
+          component: 'Upload',
+          label: '相关图片',
+          rules: [{ required: true, message: t('common.uploadMessge') }],
+          itemProps: {
+            validateTrigger: 'blur',
+          },
+          componentProps: {
+            api: uploadApi,
+            // fileFlow:true,
+            maxNumber: 6,
+            maxSize: 5,
+            accept: ['jpeg', 'jpg', 'png'],
+          },
+          colProps: {
+            span: 12,
+          },
+          // },{
+          //   field: 'warrantyType',
+          //   component: 'RadioGroup',
+          //   required: true,
+          //   label: '保修类型',
+          //   defaultValue:1,
+          //   componentProps: {
+          //     placeholder: '请填写姓名',
+          //     options:[
+          //       { label: '保内维修', value: 0 },
+          //       { label: '保修期外', value: 1 },
+          //       { label: '非保修项目', value: 2 },
+          //     ],
+          //   },
+          // },
+          // {
+          //   field: 'warrantyExpirationDate',
+          //   component: 'DatePicker',
+          //   label: '保修届满日期',
+          //   required: true,
+          //   colProps: {
+          //     span: 18,
+          //   },
+          //   componentProps: {
+          //     valueFormat: 'YYYY-MM-DD',
+          //   },
         },
-      // },{
-      //   field: 'warrantyType',
-      //   component: 'RadioGroup',
-      //   required: true,
-      //   label: '保修类型',
-      //   defaultValue:1,
-      //   componentProps: {
-      //     placeholder: '请填写姓名',
-      //     options:[
-      //       { label: '保内维修', value: 0 },
-      //       { label: '保修期外', value: 1 },
-      //       { label: '非保修项目', value: 2 },
-      //     ],
-      //   },
-      // },
-      // {
-      //   field: 'warrantyExpirationDate',
-      //   component: 'DatePicker',
-      //   label: '保修届满日期',
-      //   required: true,
-      //   colProps: {
-      //     span: 18,
-      //   },   
-      //   componentProps: {
-      //     valueFormat: 'YYYY-MM-DD',
-      //   },  
-      },{
+        {
           field: 'repairManId',
           label: '维修工程师',
           component: 'ApiSelect',
@@ -131,7 +133,8 @@ export default defineComponent({
           colProps: {
             span: 18,
           },
-        },{
+        },
+        {
           field: 'supplyAdminId',
           label: '供应链管理员',
           component: 'ApiSelect',
@@ -149,7 +152,8 @@ export default defineComponent({
           colProps: {
             span: 18,
           },
-        },{
+        },
+        {
           field: 'testerId',
           label: '测试工程师',
           component: 'ApiSelect',
@@ -168,69 +172,71 @@ export default defineComponent({
             span: 18,
           },
         },
-    ];
-    const [registerForm, { validate, resetFields, setFieldsValue, updateSchema }] = useForm({
-      labelWidth: 100,
-      schemas: schemas,
-      showActionButtonGroup: false,
-      actionColOptions: {
-        span: 24,
-      },
-    });
-    const { createMessage, createConfirm } = useMessage();
-    onMounted(() => {});
-    let addListFunc = () => {};
-    const [register, { closeModal }] = useModalInner((data) => {
-      // console.log(data);
-      data && onDataReceive(data);
-    });
-
-    function onDataReceive(data) {
-      modelRef.value = data;
-      resetFields();
-      setFieldsValue({
-        ...data,
-        warrantyExpirationDateText: `${data.warrantyDate} (${data.warrantyType==0?'保内维修':data.warrantyType==1?'保内转保外':'保外维修'})`,
-        deviceType:t(`routes.scene.tableType.${data.cameraType}`) +' '+ data.cameraSnCode
+      ];
+      const [registerForm, { validate, resetFields, setFieldsValue, updateSchema }] = useForm({
+        labelWidth: 100,
+        schemas: schemas,
+        showActionButtonGroup: false,
+        actionColOptions: {
+          span: 24,
+        },
       });
-    }
+      const { createMessage, createConfirm } = useMessage();
+      onMounted(() => {});
+      let addListFunc = () => {};
+      const [register, { closeModal }] = useModalInner((data) => {
+        // console.log(data);
+        data && onDataReceive(data);
+      });
+
+      function onDataReceive(data) {
+        modelRef.value = data;
+        resetFields();
+        setFieldsValue({
+          ...data,
+          warrantyExpirationDateText: `${data.warrantyDate} (${
+            data.warrantyType == 0 ? '保内维修' : data.warrantyType == 1 ? '保内转保外' : '保外维修'
+          })`,
+          deviceType: t(`routes.scene.tableType.${data.cameraType}`) + ' ' + data.cameraSnCode,
+        });
+      }
 
-    const handleSubmit = async () => {  
-      // createConfirm({
-      //   iconType: 'warning',
-      //   title: () => h('span', '温馨提示'),
-      //   content: '删除设备后需要重新入库<br/>确定删除吗?',
-      //   onOk: async () => {
-          const params = await validate()
-          const res = await orderReceiving(params);
-          console.log('validate',params,res)
-          createMessage.success(t('common.optSuccess'));
-          closeModal();
-          emit('update');
-      //   },
-      // });
-    };
-    return {
-      register,
-      model: modelRef,
-      registerForm,
-      handleSubmit,
-      addListFunc,
-      resetFields,
-      t,
-    };
-  },
-});
+      const handleSubmit = async () => {
+        // createConfirm({
+        //   iconType: 'warning',
+        //   title: () => h('span', '温馨提示'),
+        //   content: '删除设备后需要重新入库<br/>确定删除吗?',
+        //   onOk: async () => {
+        const params = await validate();
+        const res = await orderReceiving(params);
+        console.log('validate', params, res);
+        createMessage.success(t('common.optSuccess'));
+        closeModal();
+        emit('update');
+        //   },
+        // });
+      };
+      return {
+        register,
+        model: modelRef,
+        registerForm,
+        handleSubmit,
+        addListFunc,
+        resetFields,
+        t,
+      };
+    },
+  });
 </script>
 <style lang="less" scoped>
-.recoverPage {
-  .form_item {
-    line-height: 30px;
-    .item_lable {
-      display: inline-block;
-      width: 100px;
-      text-align: right;
+  .recoverPage {
+    .form_item {
+      line-height: 30px;
+      .item_lable {
+        display: inline-block;
+        width: 100px;
+        text-align: right;
+      }
     }
   }
-}
 </style>

+ 231 - 232
src/views/work/testList.vue

@@ -3,259 +3,258 @@
     <template #footer>
       <a-tabs v-model:activeKey="tableType" @change="changeTable">
         <a-tab-pane :key="0" :tab="t('routes.spares.tableType.26')" />
-        <a-tab-pane :key="1" :tab="t('routes.spares.tableType.27')" />
-      </a-tabs></template
-    >
+        <a-tab-pane :key="1" :tab="t('routes.spares.tableType.27')" /> </a-tabs
+    ></template>
     <div class="desc-wrap-BasicTable">
-    <BasicTable @register="registerTable">
-      <!-- <template #toolbar>
+      <BasicTable @register="registerTable">
+        <!-- <template #toolbar>
         <a-button type="primary" @click="handleOrder" v-if="getCheckPerm('invoice-export')"> 录单</a-button>
       </template> -->
-      <template #action="{ record }">
-        <TableAction
-          stopButtonPropagation
-          :actions="[
-            {
-              label: '详情',
-              ifShow:getCheckPerm('work_detail'),
-              onClick: handleDetail.bind(null, record),
-            },
-            {
-              label: '测试登记',
-              ifShow: getCheckPerm('repair_test') && tableType == 0,
-              onClick: handleRecover.bind(null, record),
-            },
-          ]"
-        />
-      </template>
-    </BasicTable>
-    <reviewModal @update="reload" @register="registerRecovery" />
-    <!-- ifShow: getCheckPerm('device-out') && !Boolean(record.outType), -->
-  </div>
-</PageWrapper>
+        <template #action="{ record }">
+          <TableAction
+            stopButtonPropagation
+            :actions="[
+              {
+                label: '详情',
+                ifShow: getCheckPerm('work_detail'),
+                onClick: handleDetail.bind(null, record),
+              },
+              {
+                label: '测试登记',
+                ifShow: getCheckPerm('repair_test') && tableType == 0,
+                onClick: handleRecover.bind(null, record),
+              },
+            ]"
+          />
+        </template>
+      </BasicTable>
+      <reviewModal @update="reload" @register="registerRecovery" />
+      <!-- ifShow: getCheckPerm('device-out') && !Boolean(record.outType), -->
+    </div>
+  </PageWrapper>
 </template>
 <script lang="ts">
-import { defineComponent, onMounted, ref, onActivated } from 'vue';
-import { PageWrapper } from '/@/components/Page';
-import {
-  BasicTable,
-  useTable,
-  TableAction,
-  BasicColumn,
-  TableImg,
-  FormProps,
-} from '/@/components/Table';
-import { Tabs } from 'ant-design-vue';
-import { operateSceneList } from '/@/api/operate';
-import { useI18n } from '/@/hooks/web/useI18n';
-import { usePermissionStore } from '/@/store/modules/permission';
-import reviewModal from './reviewModal.vue';
-import { useModal } from '/@/components/Modal';
-import { useRouter } from 'vue-router'
-import { repairTesterList } from '/@/api/spares';
-export default defineComponent({
-  name:'维修测试',
-  components: {
+  import { defineComponent, onMounted, ref, onActivated } from 'vue';
+  import { PageWrapper } from '/@/components/Page';
+  import {
     BasicTable,
+    useTable,
     TableAction,
+    BasicColumn,
     TableImg,
-    reviewModal,
-    PageWrapper,
-    [Tabs.name]: Tabs,
-    [Tabs.TabPane.name]: Tabs.TabPane,
-  },
-  setup() {
-    const { t } = useI18n();
-    const permissionStore = usePermissionStore();
-    const router = useRouter()
-    const { getCheckPerm } = permissionStore;
-    const tableType = ref<Recordable>(0); //0看看 、1看见、2深时
-    onMounted(() => {
-      // console.log(router.currentRoute.value.params.id);
-    });
-    const columns: BasicColumn[] = [
-      {
-        title: '报修日期',
-        dataIndex: 'createTime',
-        width: 180,
-      },
-      {
-        title: '客户名称',
-        dataIndex: 'companyName',
-        width: 80,
-        // customRender: ({ record }) => {
-        //   return t(`routes.equity.operation.${record.operationType || 0}`);
-        // },
-      },
-      {
-        title: '产品类型',
-        dataIndex: 'cameraType',
-        width: 80,
-        customRender: ({ record }) => {
-          return t(`routes.scene.tableType.${record.cameraType}`);
+    FormProps,
+  } from '/@/components/Table';
+  import { Tabs } from 'ant-design-vue';
+  import { operateSceneList } from '/@/api/operate';
+  import { useI18n } from '/@/hooks/web/useI18n';
+  import { usePermissionStore } from '/@/store/modules/permission';
+  import reviewModal from './reviewModal.vue';
+  import { useModal } from '/@/components/Modal';
+  import { useRouter } from 'vue-router';
+  import { repairTesterList } from '/@/api/spares';
+  export default defineComponent({
+    name: '维修测试',
+    components: {
+      BasicTable,
+      TableAction,
+      TableImg,
+      reviewModal,
+      PageWrapper,
+      [Tabs.name]: Tabs,
+      [Tabs.TabPane.name]: Tabs.TabPane,
+    },
+    setup() {
+      const { t } = useI18n();
+      const permissionStore = usePermissionStore();
+      const router = useRouter();
+      const { getCheckPerm } = permissionStore;
+      const tableType = ref<Recordable>(0); //0看看 、1看见、2深时
+      onMounted(() => {
+        // console.log(router.currentRoute.value.params.id);
+      });
+      const columns: BasicColumn[] = [
+        {
+          title: '报修日期',
+          dataIndex: 'createTime',
+          width: 180,
         },
-      },
-      {
-        title: '产品SN码',
-        dataIndex: 'cameraSnCode',
-        width: 100,
-      },
-      {
-        title: '售后工程师',
-        dataIndex: 'saleName',
-        width: 100,
-      },
-      {
-        title: '接单日期',
-        dataIndex: 'orderReceivingTime',
-        width: 100,
-      },
-      {
-        title: '故障分析',
-        dataIndex: 'checkResult',
-        width: 150,
-      },
-      {
-        title: '维修工程师',
-        dataIndex: 'repairManName',
-        width: 100,
-      },
-      {
-        title: '状态',
-        dataIndex: 'status',
-        width: 100,
-        customRender: ({ record }) => {
-          return t(`routes.spares.tableType.${record.status || 0}`);
+        {
+          title: '客户名称',
+          dataIndex: 'companyName',
+          width: 80,
+          // customRender: ({ record }) => {
+          //   return t(`routes.equity.operation.${record.operationType || 0}`);
+          // },
         },
-      },
-      {
-        title: '工单号',
-        dataIndex: 'repairId',
-        width: 150,
-      },
-      {
-        title: t('common.operating'),
-        dataIndex: 'action',
-        slots: { customRender: 'action' },
-        ifShow: true,
-        fixed: 'right',
-        flag: 'ACTION',
-        width: 120,
-      },
-    ];
-    const searchForm: Partial<FormProps> = {
-      labelWidth: 120,
-      autoAdvancedLine: 1,
-      actionColOptions: {
-        span: 24,
-      },
-      schemas: [
         {
-          field: 'cameraType',
-          component: 'Select',
-          label: '产品类型',
-          colProps: {
-            xl: 7,
-            xxl: 7,
-          },          
-          componentProps: {
-            options: [
-              {
-                label: t('routes.device.type.1'),
-                value: 0,
-                key: '0',
-              },
-              {
-                label: t('routes.device.type.2'),
-                value: 1,
-                key: '1',
-              },
-              {
-                label: t('routes.device.type.3'),
-                value: 2,
-                key: '2',
-              },
-            ],
+          title: '产品类型',
+          dataIndex: 'cameraType',
+          width: 80,
+          customRender: ({ record }) => {
+            return t(`routes.scene.tableType.${record.cameraType}`);
           },
         },
         {
-          field: 'cameraSnCode',
-          component: 'Input',
-          label: t('routes.device.snCode'),
-          colProps: {
-            xl: 7,
-            xxl: 7,
+          title: '产品SN码',
+          dataIndex: 'cameraSnCode',
+          width: 100,
+        },
+        {
+          title: '售后工程师',
+          dataIndex: 'saleName',
+          width: 100,
+        },
+        {
+          title: '接单日期',
+          dataIndex: 'orderReceivingTime',
+          width: 100,
+        },
+        {
+          title: '故障分析',
+          dataIndex: 'checkResult',
+          width: 150,
+        },
+        {
+          title: '维修工程师',
+          dataIndex: 'repairManName',
+          width: 100,
+        },
+        {
+          title: '状态',
+          dataIndex: 'status',
+          width: 100,
+          customRender: ({ record }) => {
+            return t(`routes.spares.tableType.${record.status || 0}`);
           },
         },
         {
-          field: 'repairId',
-          component: 'Input',
-          label: '工单号',
-          colProps: {
-            xl: 7,
-            xxl: 7,
+          title: '工单号',
+          dataIndex: 'repairId',
+          width: 150,
+        },
+        {
+          title: t('common.operating'),
+          dataIndex: 'action',
+          slots: { customRender: 'action' },
+          ifShow: true,
+          fixed: 'right',
+          flag: 'ACTION',
+          width: 120,
+        },
+      ];
+      const searchForm: Partial<FormProps> = {
+        labelWidth: 120,
+        autoAdvancedLine: 1,
+        actionColOptions: {
+          span: 24,
+        },
+        schemas: [
+          {
+            field: 'cameraType',
+            component: 'Select',
+            label: '产品类型',
+            colProps: {
+              xl: 7,
+              xxl: 7,
+            },
+            componentProps: {
+              options: [
+                {
+                  label: t('routes.device.type.1'),
+                  value: 0,
+                  key: '0',
+                },
+                {
+                  label: t('routes.device.type.2'),
+                  value: 1,
+                  key: '1',
+                },
+                {
+                  label: t('routes.device.type.3'),
+                  value: 2,
+                  key: '2',
+                },
+              ],
+            },
           },
+          {
+            field: 'cameraSnCode',
+            component: 'Input',
+            label: t('routes.device.snCode'),
+            colProps: {
+              xl: 7,
+              xxl: 7,
+            },
+          },
+          {
+            field: 'repairId',
+            component: 'Input',
+            label: '工单号',
+            colProps: {
+              xl: 7,
+              xxl: 7,
+            },
+          },
+        ],
+      };
+      const [registerRecovery, { openModal }] = useModal();
+      const [registerTable, { reload }] = useTable({
+        api: repairTesterList,
+        columns: columns,
+        useSearchForm: true,
+        searchInfo: { statusParam: tableType },
+        formConfig: searchForm,
+        showTableSetting: true,
+        showIndexColumn: false,
+        fetchSetting: {
+          pageField: 'pageNum',
+          sizeField: 'pageSize',
+          listField: 'list',
+          totalField: 'total',
         },
-      ],
-    };
-    const [registerRecovery, { openModal }] = useModal();
-    const [registerTable, { reload }] = useTable({
-      api: repairTesterList,
-      columns: columns,
-      useSearchForm: true,
-      searchInfo: { statusParam: tableType },
-      formConfig: searchForm,
-      showTableSetting: true,
-      showIndexColumn: false,
-      fetchSetting: {
-        pageField: 'pageNum',
-        sizeField: 'pageSize',
-        listField: 'list',
-        totalField: 'total',
-      },
-      canResize: false,
-    });
-    async function handleDetail(record: Recordable) {
-      console.log('record', record);
-      router.push({path:`detail/${record.repairId||'20230215174919387'}`})
-    }
-    async function handleRecover(record: Recordable) {
-      openModal(true, {
-        tableType:tableType.value,
-        ...record,
+        canResize: false,
       });
-    }
-    function handleOrder() {
-      openModal(true);
-    }
-    
-    onActivated(()=>{
-      reload();
-    })
-    function changeTable(val: string) {
-      tableType.value = val;
-      reload();
-    }
-    return {
-      registerTable,
-      reload,
-      t,
-      tableType,
-      changeTable,
-      handleOrder,
-      getCheckPerm,
-      handleDetail,
-      handleRecover,
-      registerRecovery,
-    };
-  },
-});
+      async function handleDetail(record: Recordable) {
+        console.log('record', record);
+        router.push({ path: `detail/${record.repairId || '20230215174919387'}` });
+      }
+      async function handleRecover(record: Recordable) {
+        openModal(true, {
+          tableType: tableType.value,
+          ...record,
+        });
+      }
+      function handleOrder() {
+        openModal(true);
+      }
+
+      onActivated(() => {
+        reload();
+      });
+      function changeTable(val: string) {
+        tableType.value = val;
+        reload();
+      }
+      return {
+        registerTable,
+        reload,
+        t,
+        tableType,
+        changeTable,
+        handleOrder,
+        getCheckPerm,
+        handleDetail,
+        handleRecover,
+        registerRecovery,
+      };
+    },
+  });
 </script>
 <style lang="less" scoped>
-.desc-wrap-BasicTable {
-  background-color: #f0f2f5;
-  .vben-basic-table-form-container {
-    padding: 0;
+  .desc-wrap-BasicTable {
+    background-color: #f0f2f5;
+    .vben-basic-table-form-container {
+      padding: 0;
+    }
   }
-}
 </style>