瀏覽代碼

no message

linwenxin 5 月之前
父節點
當前提交
7fc09d1072
共有 2 個文件被更改,包括 752 次插入37 次删除
  1. 18 0
      src/api/workerProfileInit.js
  2. 734 37
      src/views/userManagement/workerProfileInit/index.vue

+ 18 - 0
src/api/workerProfileInit.js

@@ -36,3 +36,21 @@ export function memberUserWatitUpdate(data) {
     data
   })
 }
+
+// 工程师初始化资料详情2
+export function memberUserWatitDetail2(params) {
+  return request({
+    url: `/member/userWatit/detail`,
+    method: 'post',
+    params
+  })
+}
+
+// 工程师初始化资料编辑2
+export function memberUserWatitUpdate2(data) {
+  return request({
+    url: `/member/userWatit/update`,
+    method: 'post',
+    data
+  })
+}

+ 734 - 37
src/views/userManagement/workerProfileInit/index.vue

@@ -14,7 +14,30 @@
         <zj-page-container>
           <zj-page-fill class="neibuview">
             <zj-form-container ref="formRef" :form-data="formData" :form-attributes="{ size: 'mini' }">
-              <zj-form-module title="基本信息" label-width="100px" :form-data="formData" :form-items="formItems" />
+              <zj-form-module
+                title="详情"
+                label-width="100px"
+                :showPackUp="false"
+                :form-data="formData"
+                :form-items="formItems"
+              >
+              </zj-form-module>
+              <zj-form-module
+                title="证件信息"
+                label-width="100px"
+                :showPackUp="false"
+                :form-data="formData"
+                :form-items="formItems2"
+              >
+              </zj-form-module>
+              <zj-form-module
+                title="保险信息"
+                label-width="100px"
+                :showPackUp="false"
+                :form-data="formData"
+                :form-items="formItems3"
+              >
+              </zj-form-module>
             </zj-form-container>
           </zj-page-fill>
           <div style="box-sizing: border-box; padding: 16px; text-align: right !important">
@@ -33,12 +56,21 @@ import import_mixin from '@/components/template/import_mixin.js'
 import ImageUpload from '@/components/file-upload'
 import { downloadFiles } from '@/utils/util'
 import { required, mobileRequired, mobile, httpUrl, email } from '@/components/template/rules_verify.js'
-import { listPageV2, pageExport, del, listImport, memberUserWatitUpdate } from '@/api/workerProfileInit'
+import {
+  listPageV2,
+  pageExport,
+  del,
+  listImport,
+  memberUserWatitUpdate,
+  memberUserWatitDetail2,
+  memberUserWatitUpdate2
+} from '@/api/workerProfileInit'
 import { commonTemplateDownload } from '@/api/common.js'
 import operation_mixin from '@/components/template/operation_mixin.js'
+import editTable from '@/components/template/editTable.js'
 export default {
   components: { TemplatePage, ImageUpload },
-  mixins: [import_mixin, operation_mixin],
+  mixins: [import_mixin, operation_mixin, editTable],
   data() {
     return {
       // 表格属性
@@ -86,11 +118,21 @@ export default {
     formItems() {
       return [
         {
+          md: 12,
+          isShow: true,
           name: 'el-input',
+          attributes: { placeholder: '请输入', disabled: true },
+          formItemAttributes: {
+            label: '网点名称',
+            prop: 'websitName',
+            rules: [...required]
+          }
+        },
+        {
           md: 6,
-          attributes: {
-            placeholder: '请输入'
-          },
+          isShow: true,
+          name: 'el-input',
+          attributes: { placeholder: '请输入' },
           formItemAttributes: {
             label: '师傅名称',
             prop: 'name',
@@ -98,11 +140,22 @@ export default {
           }
         },
         {
+          md: 6,
+          isShow: true,
           name: 'el-input',
+          attributes: { placeholder: '请输入' },
+          formItemAttributes: {
+            label: '联系电话',
+            prop: 'mobile',
+            rules: [...required]
+          }
+        },
+
+        {
           md: 6,
-          attributes: {
-            placeholder: '请输入'
-          },
+          isShow: true,
+          name: 'el-input',
+          attributes: { placeholder: '请输入' },
           formItemAttributes: {
             label: '师傅编号',
             prop: 'workerNumber',
@@ -110,39 +163,533 @@ export default {
           }
         },
         {
-          name: 'el-input',
           md: 6,
-          attributes: {
-            placeholder: '请输入'
-          },
+          isShow: true,
+          name: 'el-input',
+          attributes: { placeholder: '请输入' },
           formItemAttributes: {
-            label: '身份证',
-            prop: 'idcard',
-            rules: [...required]
+            label: '银行卡',
+            prop: 'bankAccount',
+            rules: []
           }
-        },
+        }
+      ]
+    },
+    formItems2() {
+      return [
         {
-          name: 'el-input',
-          md: 6,
-          attributes: {
-            placeholder: '请输入'
-          },
+          name: 'slot-component',
+          md: 24,
           formItemAttributes: {
-            label: '手机号',
-            prop: 'mobile',
-            rules: [...required]
+            'label-width': '0px',
+            label: '',
+            prop: 'items',
+            rules: []
+          },
+          render: (h, { props }) => {
+            return (
+              <zj-table
+                columns={[
+                  {
+                    columnAttributes: {
+                      label: '证件名称',
+                      prop: 'type'
+                    },
+                    render: (h, { row, column, index }) => {
+                      return (
+                        <div class="redbordererr">
+                          <el-form-item
+                            label=""
+                            label-width="0px"
+                            prop={`userWaitWorkerImgsCp.${index}.${column.columnAttributes.prop}`}
+                          >
+                            <el-select
+                              value={row[column.columnAttributes.prop]}
+                              onInput={val => {
+                                row[column.columnAttributes.prop] = val
+                              }}
+                              placeholder="请选择"
+                              disabled={true}
+                            >
+                              {[
+                                { value: 'HIGHT', label: '高空证' },
+                                { value: 'ID', label: '身份证' }
+                              ].map((item, index_) => (
+                                <el-option key={index_} label={item.label} value={item.value}></el-option>
+                              ))}
+                            </el-select>
+                          </el-form-item>
+                        </div>
+                      )
+                    }
+                  },
+                  {
+                    columnAttributes: {
+                      label: '证件号码',
+                      prop: 'number'
+                    },
+                    render: (h, { row, column, index }) => {
+                      return (
+                        <div class="redbordererr">
+                          <el-input
+                            value={row[column.columnAttributes.prop]}
+                            onInput={val => {
+                              row[column.columnAttributes.prop] = val
+                            }}
+                            placeholder="请输入内容"
+                          ></el-input>
+                        </div>
+                      )
+                    }
+                  },
+                  {
+                    columnAttributes: {
+                      label: '有效期开始日期',
+                      prop: 'startTime'
+                    },
+                    render: (h, { row, column, index }) => {
+                      return (
+                        <div class="redbordererr">
+                          <el-form-item
+                            label=""
+                            label-width="0px"
+                            prop={`userWaitWorkerImgsCp.${index}.${column.columnAttributes.prop}`}
+                          >
+                            <el-date-picker
+                              value={row[column.columnAttributes.prop]}
+                              value-format={'yyyy-MM-dd HH:mm:ss'}
+                              onInput={val => {
+                                row[column.columnAttributes.prop] = val
+                              }}
+                              type="date"
+                              placeholder="选择日期"
+                            ></el-date-picker>
+                          </el-form-item>
+                        </div>
+                      )
+                    }
+                  },
+                  {
+                    columnAttributes: {
+                      label: '有效期结束日期',
+                      prop: 'endTime'
+                    },
+                    render: (h, { row, column, index }) => {
+                      return (
+                        <div class="redbordererr">
+                          <el-form-item
+                            label=""
+                            label-width="0px"
+                            prop={`userWaitWorkerImgsCp.${index}.${column.columnAttributes.prop}`}
+                          >
+                            <el-date-picker
+                              value={row[column.columnAttributes.prop]}
+                              onInput={val => {
+                                row[column.columnAttributes.prop] = val
+                              }}
+                              value-format={'yyyy-MM-dd HH:mm:ss'}
+                              type="date"
+                              placeholder="选择日期"
+                            ></el-date-picker>
+                          </el-form-item>
+                        </div>
+                      )
+                    }
+                  },
+                  {
+                    columnAttributes: {
+                      label: '复审日期',
+                      prop: 'reexamineTime'
+                    },
+                    render: (h, { row, column, index }) => {
+                      if (index) {
+                        return (
+                          <div class="redbordererr">
+                            <el-form-item
+                              label=""
+                              label-width="0px"
+                              prop={`userWaitWorkerImgsCp.${index}.${column.columnAttributes.prop}`}
+                            >
+                              <el-date-picker
+                                value={row[column.columnAttributes.prop]}
+                                onInput={val => {
+                                  row[column.columnAttributes.prop] = val
+                                }}
+                                value-format={'yyyy-MM-dd HH:mm:ss'}
+                                type="date"
+                                placeholder="选择日期"
+                              ></el-date-picker>
+                            </el-form-item>
+                          </div>
+                        )
+                      } else {
+                        return null
+                      }
+                    }
+                  },
+                  {
+                    columnAttributes: {
+                      label: '正面',
+                      prop: 'positive',
+                      width: 130
+                    },
+                    render: (h, { row, column, index }) => {
+                      return (
+                        <div class="redbordererr">
+                          <ImageUpload fileList={row[column.columnAttributes.prop]} limit={1} isEdit={true} />
+                        </div>
+                      )
+                    }
+                  },
+                  {
+                    columnAttributes: {
+                      label: '反面',
+                      prop: 'negative',
+                      width: 130
+                    },
+                    render: (h, { row, column, index }) => {
+                      return (
+                        <div class="redbordererr">
+                          <ImageUpload fileList={row[column.columnAttributes.prop]} limit={1} isEdit={true} />
+                        </div>
+                      )
+                    }
+                  }
+                ]}
+                table-data={this.formData.userWaitWorkerImgsCp || []}
+              />
+            )
           }
-        },
+        }
+      ]
+    },
+    formItems3() {
+      return [
         {
-          name: 'el-input',
-          md: 6,
-          attributes: {
-            placeholder: '请输入'
-          },
+          name: 'slot-component',
+          md: 24,
           formItemAttributes: {
-            label: '银行卡号',
-            prop: 'bankAccount',
+            label: '',
+            'label-width': '0px',
+            prop: 'userWaitPolicies',
             rules: []
+          },
+          render: (h, { props, onInput }) => {
+            var { value } = props
+            return this.convertTableJson(
+              value,
+              [
+                {
+                  columnAttributes: {
+                    label: '保险公司名字',
+                    prop: 'company',
+                    'min-width': '200px'
+                  },
+                  render: (h, { row, column, index }) => {
+                    return (
+                      <div class="redbordererr">
+                        <el-form-item
+                          label=""
+                          label-width="0px"
+                          prop={`userWaitPolicies.${index}.${column.columnAttributes.prop}`}
+                          rules={
+                            row.type == 'IN' || ~[1, 2, 3].indexOf(this.openType)
+                              ? []
+                              : [{ required: true, message: '请填写', trigger: 'blur' }]
+                          }
+                        >
+                          <el-input
+                            value={row[column.columnAttributes.prop]}
+                            onInput={val => {
+                              row[column.columnAttributes.prop] = val
+                            }}
+                            placeholder="请输入内容"
+                          ></el-input>
+                        </el-form-item>
+                      </div>
+                    )
+                  }
+                },
+                {
+                  columnAttributes: {
+                    label: '购买类型',
+                    prop: 'type',
+                    'min-width': '200px'
+                  },
+                  render: (h, { row, column, index }) => {
+                    return (
+                      <div class="redbordererr">
+                        <el-form-item
+                          label=""
+                          label-width="0px"
+                          prop={`userWaitPolicies.${index}.${column.columnAttributes.prop}`}
+                          rules={[{ required: true, message: '请填写', trigger: 'blur' }]}
+                        >
+                          <el-select
+                            value={row[column.columnAttributes.prop]}
+                            onInput={val => {
+                              row[column.columnAttributes.prop] = val
+                            }}
+                            placeholder="请输入内容"
+                            disabled={true}
+                          >
+                            {[
+                              { label: '线下购买', value: 'LINE' },
+                              { label: '在线购买', value: 'IN' }
+                            ].map((item, index_) => (
+                              <el-option key={index_} label={item.label} value={item.value}></el-option>
+                            ))}
+                          </el-select>
+                        </el-form-item>
+                      </div>
+                    )
+                  }
+                },
+                {
+                  columnAttributes: {
+                    label: '保险单名称',
+                    prop: 'policyName',
+                    'min-width': '200px'
+                  },
+                  render: (h, { row, column, index }) => {
+                    return (
+                      <div class="redbordererr">
+                        <el-form-item
+                          label=""
+                          label-width="0px"
+                          prop={`userWaitPolicies.${index}.${column.columnAttributes.prop}`}
+                          rules={[{ required: true, message: '请填写', trigger: 'blur' }]}
+                        >
+                          <el-input
+                            value={row[column.columnAttributes.prop]}
+                            onInput={val => {
+                              row[column.columnAttributes.prop] = val
+                            }}
+                            placeholder="请输入内容"
+                            disabled={row.type == 'IN'}
+                          ></el-input>
+                        </el-form-item>
+                      </div>
+                    )
+                  }
+                },
+                {
+                  columnAttributes: {
+                    label: '保单类型',
+                    prop: 'policyType',
+                    'min-width': '200px'
+                  },
+                  render: (h, { row, column, index }) => {
+                    return (
+                      <div class="redbordererr">
+                        <el-form-item
+                          label=""
+                          label-width="0px"
+                          prop={`userWaitPolicies.${index}.${column.columnAttributes.prop}`}
+                          rules={[{ required: true, message: '请填写', trigger: 'blur' }]}
+                        >
+                          <el-select
+                            disabled={row.type == 'IN'}
+                            value={row[column.columnAttributes.prop]}
+                            onInput={val => {
+                              row[column.columnAttributes.prop] = val
+                            }}
+                            placeholder="请输入内容"
+                          >
+                            {[
+                              { label: '意外险', value: 'AC' },
+                              { label: '雇主险', value: 'EM' },
+                              { label: '工伤险', value: 'IN' }
+                            ].map((item, index_) => (
+                              <el-option key={index_} label={item.label} value={item.value}></el-option>
+                            ))}
+                          </el-select>
+                        </el-form-item>
+                      </div>
+                    )
+                  }
+                },
+                {
+                  columnAttributes: {
+                    label: '保单状态',
+                    prop: 'status',
+                    'min-width': '200px'
+                  },
+                  render: (h, { row, column, index }) => {
+                    return (
+                      <div class="redbordererr">
+                        <el-form-item
+                          label=""
+                          label-width="0px"
+                          rules={[{ required: true, message: '请填写', trigger: 'blur' }]}
+                        >
+                          {/* disabled={true} */}
+                          <el-select
+                            value={row[column.columnAttributes.prop]}
+                            onInput={val => {
+                              row[column.columnAttributes.prop] = val
+                            }}
+                            placeholder="请输入内容"
+                          >
+                            {[
+                              { label: '保障中', value: 'BZZ' },
+                              { label: '失效', value: 'YSX' },
+                              { label: '待生效', value: 'DSX' }
+                            ].map((item, index_) => (
+                              <el-option key={index_} label={item.label} value={item.value}></el-option>
+                            ))}
+                          </el-select>
+                        </el-form-item>
+                      </div>
+                    )
+                  }
+                },
+                {
+                  columnAttributes: {
+                    label: '保险单号',
+                    prop: 'policyOrder',
+                    'min-width': '200px'
+                  },
+                  render: (h, { row, column, index }) => {
+                    return (
+                      <div class="redbordererr">
+                        <el-form-item
+                          label=""
+                          label-width="0px"
+                          prop={`userWaitPolicies.${index}.${column.columnAttributes.prop}`}
+                        >
+                          {/* rules={[{ required: true, message: '请填写', trigger: 'blur' }]} */}
+                          <el-input
+                            disabled={row.type == 'IN'}
+                            value={row[column.columnAttributes.prop]}
+                            onInput={val => {
+                              row[column.columnAttributes.prop] = val
+                            }}
+                            placeholder="请输入内容"
+                          ></el-input>
+                        </el-form-item>
+                      </div>
+                    )
+                  }
+                },
+                {
+                  columnAttributes: {
+                    label: '有效期开始日期',
+                    prop: 'startTime',
+                    'min-width': '200px'
+                  },
+                  render: (h, { row, column, index }) => {
+                    return (
+                      <div class="redbordererr">
+                        <el-form-item
+                          label=""
+                          label-width="0px"
+                          prop={`userWaitPolicies.${index}.${column.columnAttributes.prop}`}
+                          rules={[{ required: true, message: '请填写', trigger: 'blur' }]}
+                        >
+                          <el-date-picker
+                            disabled={row.type == 'IN'}
+                            value-format="yyyy-MM-dd HH:mm:ss"
+                            value={row[column.columnAttributes.prop]}
+                            onInput={val => {
+                              row[column.columnAttributes.prop] = val
+                            }}
+                            type="date"
+                            placeholder="选择日期"
+                          ></el-date-picker>
+                        </el-form-item>
+                      </div>
+                    )
+                  }
+                },
+                {
+                  columnAttributes: {
+                    label: '有效期结束日期',
+                    prop: 'endTime',
+                    'min-width': '200px'
+                  },
+                  render: (h, { row, column, index }) => {
+                    return (
+                      <div class="redbordererr">
+                        <el-form-item
+                          label=""
+                          label-width="0px"
+                          prop={`userWaitPolicies.${index}.${column.columnAttributes.prop}`}
+                          rules={[{ required: true, message: '请填写', trigger: 'blur' }]}
+                        >
+                          <el-date-picker
+                            disabled={row.type == 'IN'}
+                            value-format="yyyy-MM-dd HH:mm:ss"
+                            value={row[column.columnAttributes.prop]}
+                            onInput={val => {
+                              row[column.columnAttributes.prop] = val
+                            }}
+                            type="date"
+                            placeholder="选择日期"
+                          ></el-date-picker>
+                        </el-form-item>
+                      </div>
+                    )
+                  }
+                },
+                {
+                  columnAttributes: {
+                    label: '附件',
+                    prop: 'policyUrls',
+                    'min-width': '440px'
+                  },
+                  render: (h, { row, column, index }) => {
+                    return (
+                      <div class="redbordererr">
+                        <ImageUpload
+                          fileList={row[column.columnAttributes.prop]}
+                          limit={100}
+                          isEdit={row.type !== 'IN'}
+                        />
+                      </div>
+                    )
+                  }
+                }
+              ],
+              {
+                isEdit: true,
+                isAdd: this.openType !== 0 && value.filter(item => item.status === 'BZZ').length < 2,
+                isDel: true,
+                isUpdate: false,
+                isConfirm: false
+              },
+              {
+                add: () => {
+                  this.formData.userWaitPolicies.push({
+                    company: '',
+                    endTime: '',
+                    exTime: '',
+                    policyId: '',
+                    policyName: '',
+                    policyOrder: '',
+                    policyPrice: '',
+                    policyType: '',
+                    startTime: '',
+                    status: '',
+                    type: 'LINE',
+                    websitId: '',
+                    websitName: '',
+                    websitUserId: '',
+                    workerId: '',
+                    workerName: ''
+                  })
+                  this.isEditTableIndex = this.formData.userWaitPolicies.length - 1
+                },
+                delete: ({ row, column, index }, cb) => {
+                  if (this.isEditTableIndex == index) {
+                    this.isEditTableIndex = -1
+                  } else if (this.isEditTableIndex > index) {
+                    this.isEditTableIndex--
+                  }
+                  cb && cb()
+                }
+              }
+            )
           }
         }
       ]
@@ -189,14 +736,164 @@ export default {
         },
         edit: {
           click: ({ row, index, column }) => {
-            this.formData = { ...row }
-            this.$nextTick(() => {
-              this.openForm()
+            memberUserWatitDetail2({
+              id: row.id
+            }).then(res => {
+              this.formData = {
+                ...res.data,
+                userWaitWorkerImgsCp: [
+                  {
+                    type: 'ID',
+                    number: res.data?.user?.idCard || '',
+                    startTime: res.data?.user?.idCardStartTime || '',
+                    endTime: res.data?.user?.idCardEndTime || '',
+                    reexamineTime: '',
+                    positive: (() => {
+                      var data = (res.data?.userWaitWorkerImgs || [])
+                        .filter(item => item.type == 'ID')
+                        .map(item => ({
+                          name: item.imgName,
+                          url: item.imgUrl
+                        }))?.[0]
+
+                      if (data) {
+                        return [data]
+                      }
+                      return []
+                    })(),
+                    negative: (() => {
+                      var data = (res.data?.userWaitWorkerImgs || [])
+                        .filter(item => item.type == 'ID')
+                        .map(item => ({
+                          name: item.imgName,
+                          url: item.imgUrl
+                        }))?.[1]
+
+                      if (data) {
+                        return [data]
+                      }
+                      return []
+                    })()
+                  },
+                  {
+                    type: 'HIGHT',
+                    number: res.data?.user?.number || '',
+                    startTime: res.data?.user?.startTime || '',
+                    endTime: res.data?.user?.endTime || '',
+                    reexamineTime: res.data?.user?.hightExamineTime || '',
+                    positive: (() => {
+                      var data = (res.data?.userWaitWorkerImgs || [])
+                        .filter(item => item.type == 'HIGHT')
+                        .map(item => ({
+                          name: item.imgName,
+                          url: item.imgUrl
+                        }))?.[0]
+
+                      if (data) {
+                        return [data]
+                      }
+                      return []
+                    })(),
+                    negative: (() => {
+                      var data = (res.data?.userWaitWorkerImgs || [])
+                        .filter(item => item.type == 'HIGHT')
+                        .map(item => ({
+                          name: item.imgName,
+                          url: item.imgUrl
+                        }))?.[1]
+
+                      if (data) {
+                        return [data]
+                      }
+                      return []
+                    })()
+                  }
+                ],
+                userWaitPolicies: res.data?.userWaitPolicies?.map(item => {
+                  return {
+                    ...item,
+                    policyUrls: item.policyUrl ? item.policyUrl.split(',').map(url => ({ url })) : []
+                  }
+                })
+              }
+              // this.formData = { ...res.data }
+              this.$nextTick(() => {
+                this.openForm()
+              })
             })
           }
         }
       })
     },
+    getPam() {
+      return {
+        ...this.formData,
+        userWaitWorkerImgs: [
+          ...(() => {
+            var url = this.formData?.userWaitWorkerImgsCp?.find(item => item.type == 'ID')?.positive?.[0]?.url
+            if (url) {
+              return [
+                {
+                  type: 'ID',
+                  imgName: '身份证正面',
+                  imgUrl: url
+                }
+              ]
+            } else {
+              return []
+            }
+          })(),
+          ...(() => {
+            var url = this.formData?.userWaitWorkerImgsCp?.find(item => item.type == 'ID')?.negative?.[0]?.url
+            if (url) {
+              return [
+                {
+                  type: 'ID',
+                  imgName: '身份证反面',
+                  imgUrl: url
+                }
+              ]
+            } else {
+              return []
+            }
+          })(),
+          ...(() => {
+            var url = this.formData?.userWaitWorkerImgsCp?.find(item => item.type == 'HIGHT')?.positive?.[0]?.url
+            if (url) {
+              return [
+                {
+                  type: 'HIGHT',
+                  imgName: '高空证正面',
+                  imgUrl: url
+                }
+              ]
+            } else {
+              return []
+            }
+          })(),
+          ...(() => {
+            var url = this.formData?.userWaitWorkerImgsCp?.find(item => item.type == 'HIGHT')?.negative?.[0]?.url
+            if (url) {
+              return [
+                {
+                  type: 'HIGHT',
+                  imgName: '高空证反面',
+                  imgUrl: url
+                }
+              ]
+            } else {
+              return []
+            }
+          })()
+        ],
+        userWaitPolicies: this.formData?.userWaitPolicies?.map(item => {
+          return {
+            ...item,
+            policyUrl: item.policyUrls?.map(v => v.url)?.join(',')
+          }
+        })
+      }
+    },
     openForm() {
       this.formDialog = true
     },
@@ -208,7 +905,7 @@ export default {
     formConfirm() {
       this.$refs.formRef.validate((valid, invalidFields, errLabels) => {
         if (valid) {
-          memberUserWatitUpdate(this.formData).then(res => {
+          memberUserWatitUpdate2(this.getPam()).then(res => {
             this.$message({ type: 'success', message: `编辑成功!` })
             this.formCancel()
             this.$refs.pageRef.refreshList()