Browse Source

no message

linwenxin 3 tháng trước cách đây
mục cha
commit
684d807691
2 tập tin đã thay đổi với 1184 bổ sung0 xóa
  1. 65 0
      src/api/qualityFeedback.js
  2. 1119 0
      src/views/workOrder/qualityFeedback/index.vue

+ 65 - 0
src/api/qualityFeedback.js

@@ -0,0 +1,65 @@
+import request, { postBlob, getBlob, handleImport } from '@/utils/request'
+
+export function qualityFeedbackList(data) {
+  return request({
+    url: `/quality/feedback/list?moduleId=${data.moduleId}`,
+    method: 'post',
+    data
+  })
+}
+
+export function qualityFeedbackListExport(data, name) {
+  return postBlob({
+    url: '/quality/feedback/list/export',
+    data,
+    name
+  })
+}
+
+export function qualityFeedbackAdd(data) {
+  return request({
+    url: '/quality/feedback/add',
+    method: 'post',
+    data: data
+  })
+}
+
+export function qualityFeedbackUpdate(data) {
+  return request({
+    url: '/quality/feedback/update',
+    method: 'post',
+    data: data
+  })
+}
+
+export function qualityFeedbackDetail(params) {
+  return request({
+    url: '/quality/feedback/detail',
+    method: 'post',
+    params: params
+  })
+}
+
+export function qualityFeedbackConfirm(params) {
+  return request({
+    url: '/quality/feedback/confirm',
+    method: 'post',
+    params: params
+  })
+}
+
+export function qualityFeedbackUpdateUpload(params) {
+  return request({
+    url: '/quality/feedback/update/upload',
+    method: 'post',
+    params: params
+  })
+}
+
+export function qualityFeedbackCount(params) {
+  return request({
+    url: '/quality/feedback/count',
+    method: 'post',
+    params: params
+  })
+}

+ 1119 - 0
src/views/workOrder/qualityFeedback/index.vue

@@ -0,0 +1,1119 @@
+<template>
+  <template-page
+    ref="pageRef"
+    :getList="getList"
+    :exportList="exportList"
+    :columnParsing="columnParsing"
+    :optionsEvensGroup="optionsEvensGroup"
+    :tableAttributes="tableAttributes"
+    :tableEvents="tableEvents"
+    :operation="operation()"
+  >
+    <div class="cartographer_big">
+      <el-dialog title="配置" width="100%" :modal="false" :visible.sync="formBool" :before-close="handleClose">
+        <zj-page-container v-if="formBool">
+          <zj-page-fill class="neibuview">
+            <zj-form-container
+              ref="formRef"
+              :form-data="formData"
+              :form-rules="formRules"
+              :form-attributes="{ size: 'mini' }"
+            >
+              <zj-form-module title="申请信息" label-width="140px" :form-data="formData" :form-items="items" />
+              <zj-form-module
+                v-if="~[2, 3].indexOf(formType)"
+                title="中心审批信息"
+                label-width="140px"
+                :form-data="formData"
+                :form-items="items2"
+              />
+            </zj-form-container>
+          </zj-page-fill>
+          <!-- 操作按钮 -->
+          <div style="box-sizing: border-box; padding: 10px; text-align: right">
+            <el-button size="mini" @click="handleClose">取 消</el-button>
+            <el-button v-if="~[0, 1].indexOf(formType)" size="mini" @click="formConfirm" type="primary"
+              >提 交</el-button
+            >
+            <el-button v-if="~[2].indexOf(formType)" size="mini" @click="formConfirmShenHe" type="primary"
+              >确定</el-button
+            >
+          </div>
+        </zj-page-container>
+      </el-dialog>
+    </div>
+  </template-page>
+</template>
+
+<script>
+import TemplatePage from '@/components/template/template-page-1.vue'
+import import_mixin from '@/components/template/import_mixin.js'
+import operation_mixin from '@/components/template/operation_mixin.js'
+import ImageUpload from '@/components/file-upload'
+import { required } from '@/components/template/rules_verify.js'
+import {
+  qualityFeedbackList,
+  qualityFeedbackListExport,
+  qualityFeedbackDetail,
+  qualityFeedbackAdd,
+  qualityFeedbackUpdate,
+  qualityFeedbackConfirm,
+  qualityFeedbackCount,
+  qualityFeedbackUpdateUpload
+} from '@/api/qualityFeedback'
+import { lbsAmapRegion } from '@/api/common.js'
+import { getClassifyList } from '@/api/goods'
+import { getWebsit } from '@/api/customerManagement.js'
+export default {
+  components: { TemplatePage, ImageUpload },
+  mixins: [import_mixin, operation_mixin],
+  data() {
+    return {
+      // 表格属性
+      tableAttributes: {
+        selectColumn: true
+      },
+      // 表格事件
+      tableEvents: {
+        'selection-change': this.selectionChange
+      },
+      recordSelected: [],
+      formBool: false,
+      formType: 0,
+      formData: {
+        address: '',
+        area: '',
+        areaId: '',
+        bugPartCode: '',
+        bugPartName: '',
+        bugRemark: '',
+        city: '',
+        cityId: '',
+        companyWechatId: '',
+        companyWechatName: '',
+        confirmBy: '',
+        confirmTime: '',
+        createBy: '',
+        createTime: '',
+        customerMobile: '',
+        customerName: '',
+        insideCode: '',
+        isNeedPlan: true,
+        isPartSend: true,
+        isSalesBefore: true,
+        isUpload: true,
+        items: [],
+        mainId: '',
+        mainName: '',
+        num: '',
+        orderNo: '',
+        outCode: '',
+        outDate: '',
+        productName: '',
+        province: '',
+        provinceId: '',
+        remark: '',
+        repairDate: '',
+        seriesName: '',
+        smallId: '',
+        smallName: '',
+        status: '',
+        street: '',
+        streetId: '',
+        submitBy: '',
+        submitTime: '',
+        supplyDate: '',
+        title: '',
+        useDate: '',
+        websitAnalyse: '',
+        websitHandleMethod: '',
+        websitId: '',
+        websitName: '',
+        workerMobie: '',
+        workerName: '',
+        fujian: [],
+        neijitiaoma: [],
+        waijitiaoma: [],
+        qita: []
+      },
+      formRules: {},
+      provinceList: [],
+      cityList: [],
+      areaList: [],
+      streetList: [],
+      classifyList: [],
+      classifyListLv2: [],
+      createWebsitList: []
+    }
+  },
+  computed: {
+    optionsEvensGroup() {
+      return [
+        [
+          [
+            this.optionsEvensAuth('add', {
+              click: () => {
+                this.getinitlbslist()
+                this.getClassifyListData()
+                this.formType = 0
+                this.formBool = true
+              }
+            })
+          ]
+        ],
+        [
+          [
+            this.optionsEvensAuth('recordedAtHeadquarters', {
+              click: () => {
+                if (this.recordSelected.length === 0) {
+                  this.$message.warning('请勾选数据')
+                  return
+                }
+                qualityFeedbackUpdateUpload({
+                  ids: this.recordSelected.map(item => item.id)
+                }).then(res => {
+                  this.$message({
+                    type: 'success',
+                    message: '操作成功!'
+                  })
+                  this.$refs?.pageRef?.refreshList()
+                })
+              }
+            })
+          ]
+        ]
+      ]
+    },
+    items() {
+      return [
+        {
+          name: 'el-input',
+          md: 18,
+          attributes: {
+            disabled: [2, 3].includes(this.formType),
+            placeholder: '请输入'
+          },
+          formItemAttributes: {
+            label: '反馈主题',
+            prop: 'title',
+            rules: [...required]
+          }
+        },
+        {
+          md: 6,
+          name: 'el-radio',
+          options: [
+            { label: '是', value: true },
+            { label: '否', value: false }
+          ],
+          attributes: {
+            disabled: [2, 3].includes(this.formType)
+          },
+          formItemAttributes: {
+            label: '是否售前机',
+            prop: 'isSalesBefore'
+          }
+        },
+        {
+          name: 'el-select',
+          md: 12,
+          options: this.createWebsitList.map(item => ({ ...item, label: `(${item.value})${item.label}` })),
+          attributes: {
+            disabled: [1, 2, 3].includes(this.formType),
+            placeholder: '请选择',
+            clearable: true,
+            filterable: true
+          },
+          formItemAttributes: {
+            label: '反馈网点',
+            prop: 'websitId',
+            rules: [...required]
+          },
+          events: {
+            change: val => {
+              this.formData.websitName = this.createWebsitList.find(item => item.value == val).label || ''
+            }
+          }
+        },
+        {
+          name: 'el-input',
+          md: 6,
+          attributes: {
+            disabled: true,
+            placeholder: '请输入'
+          },
+          formItemAttributes: {
+            label: '反馈时间',
+            prop: 'submitTime'
+          }
+        },
+        {
+          name: 'el-input',
+          md: 6,
+          attributes: {
+            disabled: [2, 3].includes(this.formType),
+            placeholder: '请输入'
+          },
+          formItemAttributes: {
+            label: '云售后4.0单号',
+            prop: 'orderNo',
+            rules: [...required]
+          }
+        },
+        {
+          name: 'el-input',
+          md: 6,
+          attributes: {
+            disabled: [2, 3].includes(this.formType),
+            placeholder: '请输入'
+          },
+          formItemAttributes: {
+            label: '工程师名称',
+            prop: 'workerName',
+            rules: [...required]
+          }
+        },
+        {
+          name: 'el-input',
+          md: 6,
+          attributes: {
+            disabled: [2, 3].includes(this.formType),
+            placeholder: '请输入'
+          },
+          formItemAttributes: {
+            label: '工程师电话',
+            prop: 'workerMobie',
+            rules: [...required]
+          }
+        },
+        {
+          name: 'el-input',
+          md: 6,
+          attributes: {
+            disabled: [2, 3].includes(this.formType),
+            placeholder: '请输入'
+          },
+          formItemAttributes: {
+            label: '客户名称',
+            prop: 'customerName',
+            rules: [...required]
+          }
+        },
+        {
+          name: 'el-input',
+          md: 6,
+          attributes: {
+            disabled: [2, 3].includes(this.formType),
+            placeholder: '请输入'
+          },
+          formItemAttributes: {
+            label: '客户电话',
+            prop: 'customerMobile',
+            rules: [...required]
+          }
+        },
+        {
+          name: 'el-select',
+          md: 6,
+          formItemAttributes: {
+            label: '省',
+            prop: 'provinceId',
+            rules: [...required]
+          },
+          options: this.provinceList.map((v, i) => ({ value: v.id, label: v.name })),
+          attributes: {
+            disabled: [2, 3].includes(this.formType),
+            clearable: true,
+            filterable: true,
+            placeholder: '请选择'
+          },
+          events: {
+            change: val => {
+              // 获取省名称
+              this.formData.province =
+                this.provinceList.map((v, i) => ({ value: v.id, label: v.name })).find(item => item.value === val)
+                  ?.label || ''
+              // 清除市区街道以及详细地址数据
+              this.delDataK(1)
+              lbsAmapRegion({ pid: val }).then(res => {
+                this.cityList = res.data
+              })
+            }
+          }
+        },
+        {
+          name: 'el-select',
+          md: 6,
+          formItemAttributes: {
+            label: '市',
+            prop: 'cityId',
+            rules: [...required]
+          },
+          options: this.cityList.map((v, i) => ({ value: v.id, label: v.name })),
+          attributes: {
+            disabled: [2, 3].includes(this.formType),
+            clearable: true,
+            filterable: true,
+            placeholder: '请选择'
+          },
+          events: {
+            change: val => {
+              // 获取市名称
+              this.formData.city =
+                this.cityList.map((v, i) => ({ value: v.id, label: v.name })).find(item => item.value === val)?.label ||
+                ''
+              // 清除区街道以及详细地址数据
+              this.delDataK(2)
+              lbsAmapRegion({ pid: val }).then(res => {
+                this.areaList = res.data
+              })
+            }
+          }
+        },
+
+        {
+          name: 'el-select',
+          md: 6,
+          formItemAttributes: {
+            label: '区',
+            prop: 'areaId',
+            rules: [...required]
+          },
+          options: this.areaList.map((v, i) => ({ value: v.id, label: v.name })),
+          attributes: {
+            disabled: [2, 3].includes(this.formType),
+            clearable: true,
+            filterable: true,
+            placeholder: '请选择'
+          },
+          events: {
+            change: val => {
+              // 获取区名称
+              this.formData.area =
+                this.areaList.map((v, i) => ({ value: v.id, label: v.name })).find(item => item.value === val)?.label ||
+                ''
+              // 清除街道以及详细地址数据
+              this.delDataK(3)
+              lbsAmapRegion({ pid: val }).then(res => {
+                this.streetList = res.data
+              })
+            }
+          }
+        },
+        {
+          name: 'el-select',
+          md: 6,
+          formItemAttributes: {
+            label: '街道', //
+            prop: 'streetId',
+            rules: [...required]
+          },
+          options: this.streetList.map((v, i) => ({ value: v.id, label: v.name })),
+          attributes: {
+            disabled: [2, 3].includes(this.formType),
+            clearable: true,
+            filterable: true,
+            placeholder: '请选择'
+          },
+          events: {
+            change: val => {
+              // 获取街道名称
+              this.formData.street =
+                this.streetList.map((v, i) => ({ value: v.id, label: v.name })).find(item => item.value === val)
+                  ?.label || ''
+              // 清除详细地址数据
+              this.delDataK(4)
+            }
+          }
+        },
+        {
+          name: 'el-input',
+          md: 24,
+          attributes: {
+            disabled: [2, 3].includes(this.formType),
+            placeholder: '请输入'
+          },
+          formItemAttributes: {
+            label: '详细地址',
+            prop: 'address',
+            rules: [...required]
+          }
+        },
+        {
+          name: 'el-select',
+          md: 6,
+          formItemAttributes: {
+            label: '产品大类',
+            prop: 'mainId',
+            rules: [...required]
+          },
+          options: this.classifyList.map((v, i) => ({ value: v.categoryId, label: v.name })),
+          attributes: {
+            disabled: [2, 3].includes(this.formType),
+            clearable: true,
+            filterable: true,
+            placeholder: '请选择'
+          },
+          events: {
+            change: val => {
+              this.formData.mainName =
+                this.classifyList
+                  .map((v, i) => ({ value: v.categoryId, label: v.name }))
+                  .find(item => item.value === val)?.label || ''
+              this.formData.smallId = ''
+              this.formData.smallName = ''
+            }
+          }
+        },
+        {
+          name: 'el-select',
+          md: 6,
+          formItemAttributes: {
+            label: '产品小类型',
+            prop: 'smallId',
+            rules: [...required]
+          },
+          options: this.classifyListLv2
+            .filter(item => item.parentId === this.formData.mainId)
+            .map((v, i) => ({ value: v.categoryId, label: v.name })),
+          attributes: {
+            disabled: [2, 3].includes(this.formType),
+            clearable: true,
+            filterable: true,
+            placeholder: '请选择'
+          },
+          events: {
+            change: val => {
+              this.formData.smallName =
+                this.classifyListLv2
+                  .filter(item => item.parentId === this.formData.mainId)
+                  .map((v, i) => ({ value: v.categoryId, label: v.name }))?.label || ''
+            }
+          }
+        },
+        {
+          name: 'el-input',
+          md: 6,
+          attributes: {
+            disabled: [2, 3].includes(this.formType),
+            placeholder: '请输入'
+          },
+          formItemAttributes: {
+            label: '系列名称',
+            prop: 'seriesName',
+            rules: [...required]
+          }
+        },
+        {
+          name: 'el-input',
+          md: 6,
+          attributes: {
+            disabled: [2, 3].includes(this.formType),
+            placeholder: '请输入'
+          },
+          formItemAttributes: {
+            label: '机型名称',
+            prop: 'productName',
+            rules: [...required]
+          }
+        },
+        {
+          name: 'el-input',
+          md: 6,
+          attributes: {
+            disabled: [2, 3].includes(this.formType),
+            placeholder: '请输入'
+          },
+          formItemAttributes: {
+            label: '内机条码',
+            prop: 'insideCode',
+            rules: [...required]
+          }
+        },
+        {
+          name: 'el-input',
+          md: 6,
+          attributes: {
+            disabled: [2, 3].includes(this.formType),
+            placeholder: '请输入'
+          },
+          formItemAttributes: {
+            label: '外机条码',
+            prop: 'outCode'
+          }
+        },
+        {
+          name: 'el-input',
+          md: 6,
+          attributes: {
+            disabled: [2, 3].includes(this.formType),
+            placeholder: '请输入'
+          },
+          formItemAttributes: {
+            label: '发生数量',
+            prop: 'num',
+            rules: [...required]
+          }
+        },
+        {
+          name: 'el-date-picker',
+          md: 6,
+          attributes: {
+            'picker-options': 'pickerOptions11',
+            'popper-class': 'custom-popper11',
+            'append-to-body': true,
+            'value-format': 'yyyy-MM-dd HH:mm:ss',
+            disabled: [2, 3].includes(this.formType),
+            style: { width: '100%' },
+            type: 'datetime',
+            placeholder: '请选择'
+          },
+          formItemAttributes: {
+            label: '出厂日期',
+            prop: 'outDate'
+          }
+        },
+        {
+          name: 'el-date-picker',
+          md: 6,
+          attributes: {
+            'picker-options': 'pickerOptions11',
+            'popper-class': 'custom-popper11',
+            'append-to-body': true,
+            'value-format': 'yyyy-MM-dd HH:mm:ss',
+            disabled: [2, 3].includes(this.formType),
+            style: { width: '100%' },
+            type: 'datetime',
+            placeholder: '请选择'
+          },
+          formItemAttributes: {
+            label: '安装或使用日期',
+            prop: 'useDate',
+            rules: [...required]
+          }
+        },
+        {
+          name: 'el-date-picker',
+          md: 6,
+          attributes: {
+            'picker-options': 'pickerOptions11',
+            'popper-class': 'custom-popper11',
+            'append-to-body': true,
+            'value-format': 'yyyy-MM-dd HH:mm:ss',
+            disabled: [2, 3].includes(this.formType),
+            style: { width: '100%' },
+            type: 'datetime',
+            placeholder: '请选择'
+          },
+          formItemAttributes: {
+            label: '报修或发生日期',
+            prop: 'repairDate',
+            rules: [...required]
+          }
+        },
+        {
+          md: 6,
+          isShow: true,
+          name: 'el-radio',
+          options: [
+            { label: '有', value: true },
+            { label: '无', value: false }
+          ],
+          attributes: {
+            disabled: [2, 3].includes(this.formType)
+          },
+          formItemAttributes: {
+            label: '有无配件寄回',
+            prop: 'isPartSend',
+            rules: [...required]
+          }
+        },
+        {
+          name: 'el-input',
+          md: 6,
+          attributes: {
+            disabled: [2, 3].includes(this.formType),
+            placeholder: '请输入'
+          },
+          formItemAttributes: {
+            label: '故障配件名称及规格',
+            prop: 'bugPartName'
+          }
+        },
+        {
+          name: 'el-input',
+          md: 24,
+          attributes: {
+            disabled: [2, 3].includes(this.formType),
+            type: 'textarea',
+            rows: 3,
+            placeholder: '请输入'
+          },
+          formItemAttributes: {
+            label: '故障代码(包含检测器检测)',
+            prop: 'bugPartCode',
+            rules: [...required]
+          }
+        },
+        {
+          md: 6,
+          isShow: true,
+          name: 'el-radio',
+          options: [
+            { label: '是', value: true },
+            { label: '否', value: false }
+          ],
+          attributes: {
+            disabled: [2, 3].includes(this.formType)
+          },
+          formItemAttributes: {
+            label: '是否需要处理方案',
+            prop: 'isNeedPlan',
+            rules: [...required]
+          }
+        },
+        {
+          name: 'el-date-picker',
+          md: 6,
+          attributes: {
+            'picker-options': 'pickerOptions11',
+            'popper-class': 'custom-popper11',
+            'append-to-body': true,
+            'value-format': 'yyyy-MM-dd HH:mm:ss',
+            disabled: [2, 3].includes(this.formType),
+            style: { width: '100%' },
+            type: 'datetime',
+            placeholder: '请选择'
+          },
+          formItemAttributes: {
+            label: '要求提供日期',
+            prop: 'supplyDate',
+            rules: [...required]
+          }
+        },
+        {
+          name: 'el-input',
+          md: 24,
+          attributes: {
+            disabled: [2, 3].includes(this.formType),
+            type: 'textarea',
+            rows: 3,
+            placeholder: '请输入'
+          },
+          formItemAttributes: {
+            label: '故障描述',
+            prop: 'bugRemark',
+            rules: [...required]
+          }
+        },
+        {
+          name: 'el-input',
+          md: 24,
+          attributes: {
+            disabled: [2, 3].includes(this.formType),
+            type: 'textarea',
+            rows: 3,
+            placeholder: '请输入'
+          },
+          formItemAttributes: {
+            label: '网点分析',
+            prop: 'websitAnalyse',
+            rules: [...required]
+          }
+        },
+        {
+          name: 'el-input',
+          md: 24,
+          attributes: {
+            disabled: [2, 3].includes(this.formType),
+            type: 'textarea',
+            rows: 3,
+            placeholder: '请输入'
+          },
+          formItemAttributes: {
+            label: '网点处理方法',
+            prop: 'websitHandleMethod',
+            rules: [...required]
+          }
+        },
+        {
+          md: 5,
+          name: 'slot-component',
+          formItemAttributes: {
+            label: '内机条码',
+            prop: 'neijitiaoma',
+            rules: [...required]
+          },
+          render: (h, { props, onInput }) => {
+            return (
+              <ImageUpload fileList={this.formData.neijitiaoma} limit={1} isEdit={![2, 3].includes(this.formType)} />
+            )
+          }
+        },
+        {
+          md: 5,
+          name: 'slot-component',
+          formItemAttributes: {
+            label: '外机条码',
+            prop: 'waijitiaoma',
+            rules: []
+          },
+          render: (h, { props, onInput }) => {
+            return (
+              <ImageUpload fileList={this.formData.waijitiaoma} limit={1} isEdit={![2, 3].includes(this.formType)} />
+            )
+          }
+        },
+        {
+          md: 14,
+          name: 'slot-component',
+          formItemAttributes: {
+            label: '其他',
+            prop: 'qita',
+            rules: []
+          },
+          render: (h, { props, onInput }) => {
+            return (
+              <div>
+                <ImageUpload fileList={this.formData.qita} limit={3} isEdit={![2, 3].includes(this.formType)} />
+                <div style="color:orange">可上传最多3个图片</div>
+              </div>
+            )
+          }
+        },
+        {
+          md: 24,
+          name: 'slot-component',
+          formItemAttributes: {
+            label: '附件',
+            prop: 'fujian',
+            rules: []
+          },
+          render: (h, { props, onInput }) => {
+            return (
+              <div>
+                <ImageUpload fileList={this.formData.fujian} limit={9} isEdit={![2, 3].includes(this.formType)} />
+                <div style="color:orange">可上传最多9个文件,不限文件格式</div>
+              </div>
+            )
+          }
+        }
+      ]
+    },
+    items2() {
+      return [
+        {
+          name: 'el-input',
+          md: 6,
+          attributes: {
+            disabled: true,
+            placeholder: '请输入'
+          },
+          formItemAttributes: {
+            label: '网点提交人',
+            prop: 'createBy'
+          }
+        },
+        {
+          name: 'el-input',
+          md: 6,
+          attributes: {
+            disabled: true,
+            placeholder: '请输入'
+          },
+          formItemAttributes: {
+            label: '网点提交时间',
+            prop: 'createTime'
+          }
+        },
+        {
+          name: 'el-input',
+          md: 6,
+          attributes: {
+            disabled: true,
+            placeholder: '请输入'
+          },
+          formItemAttributes: {
+            label: '中心审核人',
+            prop: 'confirmBy'
+          }
+        },
+        {
+          name: 'el-input',
+          md: 6,
+          attributes: {
+            disabled: true,
+            placeholder: '请输入'
+          },
+          formItemAttributes: {
+            label: 'confirmTime',
+            prop: 'title'
+          }
+        },
+        {
+          md: 24,
+          name: 'el-radio',
+          options: [
+            { label: '通过', value: 'OK' },
+            { label: '驳回不可修改', value: 'FAIL' },
+            { label: '驳回可修改', value: 'REJECT' }
+          ],
+          attributes: {
+            disabled: [0, 1, 3].includes(this.formType)
+          },
+          formItemAttributes: {
+            label: '中心审核',
+            prop: 'status',
+            rules: [...required]
+          }
+        },
+        {
+          name: 'el-input',
+          md: 24,
+          attributes: {
+            disabled: [0, 1, 3].includes(this.formType),
+            type: 'textarea',
+            rows: 3,
+            placeholder: '请输入'
+          },
+          formItemAttributes: {
+            label: '审核备注',
+            prop: 'remark',
+            rules: [...required]
+          }
+        }
+      ]
+    }
+  },
+  methods: {
+    getClassifyListData() {
+      // 获取产品大类小类
+      getClassifyList({ type: 2, status: true }).then(res => {
+        var classifyListLv2 = []
+        this.classifyList = res.data.map(item => {
+          var { children, ...data } = item
+          classifyListLv2.push(...(children || []))
+          return {
+            ...data
+          }
+        })
+        this.classifyListLv2 = classifyListLv2
+      })
+      // 获取可选网点
+      getWebsit({ status: true }).then(res => {
+        this.createWebsitList = res.data.map(item => ({
+          value: item.websitId,
+          label: item.name
+        }))
+      })
+    },
+    getinitlbslist() {
+      // 初始化请求省市区街道下拉选项数据
+      lbsAmapRegion({ pid: 0 }).then(res => {
+        this.provinceList = res.data
+        if (this.formData.provinceId) {
+          lbsAmapRegion({ pid: this.formData.provinceId }).then(res => {
+            this.cityList = res.data
+          })
+        }
+        if (this.formData.cityId) {
+          lbsAmapRegion({ pid: this.formData.cityId }).then(res => {
+            this.areaList = res.data
+          })
+        }
+        if (this.formData.areaId) {
+          lbsAmapRegion({ pid: this.formData.areaId }).then(res => {
+            this.streetList = res.data
+          })
+        }
+      })
+    },
+    delDataK(num) {
+      if (num <= 1) {
+        // 删除市
+        this.formData.cityId = ''
+        this.formData.city = ''
+        // 删除市选项
+        this.cityList = []
+      }
+      if (num <= 2) {
+        // 删除区
+        this.formData.areaId = ''
+        this.formData.area = ''
+        // 删除区选项
+        this.areaList = []
+      }
+      if (num <= 3) {
+        // 删除街道
+        this.formData.streetId = ''
+        this.formData.street = ''
+        // 删除街道选项
+        this.streetList = []
+      }
+      // 删除地址
+      this.formData.address = ''
+    },
+    // 列表请求函数
+    getList: qualityFeedbackList,
+    // 导出
+    exportList: qualityFeedbackListExport,
+    // 表格列解析渲染数据更改
+    columnParsing(item, defaultData) {
+      return defaultData
+    },
+    // 获取勾选框数据
+    selectionChange(data) {
+      this.recordSelected = data
+    },
+    operation() {
+      return this.operationBtn({
+        edit: {
+          click: ({ row, index, column }) => {
+            this.getClassifyListData()
+            qualityFeedbackDetail({
+              id: row.id
+            }).then(res => {
+              this.formData = {
+                ...res.data,
+                fujian: res.data.items.filter(item => item.type === 'FILE').map(item => ({ url: item.url })),
+                neijitiaoma: res.data.items
+                  .filter(item => item.type === 'INSIDE_CODE')
+                  .map(item => ({ url: item.url })),
+                waijitiaoma: res.data.items.filter(item => item.type === 'OUT_CODE').map(item => ({ url: item.url })),
+                qita: res.data.items.filter(item => item.type === 'OTHER').map(item => ({ url: item.url }))
+              }
+              this.$nextTick(() => {
+                this.getinitlbslist()
+                this.formType = 1
+                this.formBool = true
+              })
+            })
+          }
+        },
+        centralAudit: {
+          click: ({ row, index, column }) => {
+            this.getClassifyListData()
+            qualityFeedbackDetail({
+              id: row.id
+            }).then(res => {
+              this.formData = {
+                ...res.data,
+                fujian: res.data.items.filter(item => item.type === 'FILE').map(item => ({ url: item.url })),
+                neijitiaoma: res.data.items
+                  .filter(item => item.type === 'INSIDE_CODE')
+                  .map(item => ({ url: item.url })),
+                waijitiaoma: res.data.items.filter(item => item.type === 'OUT_CODE').map(item => ({ url: item.url })),
+                qita: res.data.items.filter(item => item.type === 'OTHER').map(item => ({ url: item.url }))
+              }
+              this.$nextTick(() => {
+                this.getinitlbslist()
+                this.formType = 2
+                this.formBool = true
+              })
+            })
+          }
+        },
+        details: {
+          click: ({ row, index, column }) => {
+            this.getClassifyListData()
+            qualityFeedbackDetail({
+              id: row.id
+            }).then(res => {
+              this.formData = {
+                ...res.data,
+                fujian: res.data.items.filter(item => item.type === 'FILE').map(item => ({ url: item.url })),
+                neijitiaoma: res.data.items
+                  .filter(item => item.type === 'INSIDE_CODE')
+                  .map(item => ({ url: item.url })),
+                waijitiaoma: res.data.items.filter(item => item.type === 'OUT_CODE').map(item => ({ url: item.url })),
+                qita: res.data.items.filter(item => item.type === 'OTHER').map(item => ({ url: item.url }))
+              }
+              this.$nextTick(() => {
+                this.getinitlbslist()
+                this.formType = 3
+                this.formBool = true
+              })
+            })
+          }
+        }
+      })
+    },
+    handleClose() {
+      this.$refs?.pageRef?.refreshList()
+      this.$data.formData = this.$options.data().formData
+      this.formType = 0
+      this.formBool = false
+    },
+    formConfirm() {
+      this.$refs.formRef.validate((valid, invalidFields, errLabels) => {
+        if (valid) {
+          ;(this.formData.id ? qualityFeedbackUpdate : qualityFeedbackAdd)({
+            ...this.formData,
+            items: [
+              ...this.formData.neijitiaoma.map(item => ({
+                qualityFeedbckId: this.formData.id || undefined,
+                type: 'INSIDE_CODE',
+                url: item.url
+              })),
+              ...this.formData.waijitiaoma.map(item => ({
+                qualityFeedbckId: this.formData.id || undefined,
+                type: 'OUT_CODE',
+                url: item.url
+              })),
+              ...this.formData.qita.map(item => ({
+                qualityFeedbckId: this.formData.id || undefined,
+                type: 'OTHER',
+                url: item.url
+              })),
+              ...this.formData.fujian.map(item => ({
+                qualityFeedbckId: this.formData.id || undefined,
+                type: 'FILE',
+                url: item.url
+              }))
+            ],
+            fujian: undefined,
+            neijitiaoma: undefined,
+            waijitiaoma: undefined,
+            qita: undefined
+          }).then(res => {
+            this.$message({ type: 'success', message: '提交成功!' })
+            this.$refs.pageRef.refreshList()
+            this.handleClose()
+          })
+        }
+      })
+    },
+    formConfirmShenHe() {
+      this.$refs.formRef.validate((valid, invalidFields, errLabels) => {
+        if (valid) {
+          qualityFeedbackConfirm({
+            id: this.formData.id,
+            status: this.formData.status,
+            remark: this.formData.remark
+          }).then(res => {
+            this.$message({ type: 'success', message: '审核成功!' })
+            this.$refs.pageRef.refreshList()
+            this.handleClose()
+          })
+        }
+      })
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.neibuview {
+  box-sizing: border-box;
+  padding-left: 16px;
+
+  ::v-deep & > .zj-page-fill-scroll {
+    box-sizing: border-box;
+    padding-right: 16px;
+
+    & > div:nth-child(1) {
+      margin-top: 20px;
+    }
+  }
+}
+</style>