linwenxin 7 meses atrás
pai
commit
54efd9a0ed

+ 41 - 0
src/api/parts-config.js

@@ -0,0 +1,41 @@
+import request from '@/utils/request'
+
+export function partsRefundConfigList(data) {
+  return request({
+    url: `/parts/refund/config/list?moduleId=${data.moduleId}`,
+    method: 'post',
+    data
+  })
+}
+
+export function partsRefundConfigAdd(data) {
+  return request({
+    url: `/parts/refund/config/add`,
+    method: 'post',
+    data
+  })
+}
+
+export function partsRefundConfigEdit(data) {
+  return request({
+    url: `/parts/refund/config/edit`,
+    method: 'post',
+    data
+  })
+}
+
+export function partsRefundConfigBatchDel(data) {
+  return request({
+    url: `/parts/refund/config/batch/del`,
+    method: 'post',
+    data
+  })
+}
+
+export function partsRefundConfigDetail(params) {
+  return request({
+    url: '/parts/refund/config/detail',
+    method: 'post',
+    params
+  })
+}

+ 395 - 0
src/views/commonPage/parts-config/index.vue

@@ -0,0 +1,395 @@
+<template>
+  <template-page
+    ref="pageRef"
+    :getList="getList"
+    :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="150px" :form-data="formData" :form-items="items" />
+              <zj-form-module title="销售价格倍率" label-width="150px" :form-data="formData" :form-items="items2" />
+            </zj-form-container>
+          </zj-page-fill>
+          <!-- 操作按钮 -->
+          <div style="box-sizing: border-box; padding: 10px">
+            <el-button size="mini" @click="handleClose">取 消</el-button>
+            <el-button v-if="~[0, 1].indexOf(formType)" size="mini" @click="formConfirm" 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 {
+  partsRefundConfigList,
+  partsRefundConfigAdd,
+  partsRefundConfigEdit,
+  partsRefundConfigBatchDel,
+  partsRefundConfigDetail
+} from '@/api/parts-config'
+import operation_mixin from '@/components/template/operation_mixin.js'
+import { required } from '@/components/template/rules_verify.js'
+import { getWebsit } from '@/api/customerManagement.js'
+export default {
+  components: { TemplatePage },
+  mixins: [import_mixin, operation_mixin],
+  data() {
+    return {
+      // 表格属性
+      tableAttributes: {
+        selectColumn: false
+      },
+      // 表格事件
+      tableEvents: {
+        'selection-change': this.selectionChange
+      },
+      recordSelected: [],
+      formBool: false,
+      formType: 0,
+      formData: {
+        companyWechatId: '',
+        companyWechatName: '',
+        isDefault: false,
+        newRefundInner: 0,
+        newRefundOutside: 0,
+        oldRefund: 0,
+        priceRate1: 0,
+        priceRate2: 0,
+        priceRate3: 0,
+        websitId: '',
+        websitName: ''
+      },
+      formRules: {},
+      websitList: []
+    }
+  },
+  computed: {
+    optionsEvensGroup() {
+      return [
+        [
+          [
+            this.optionsEvensAuth('add', {
+              click: () => {
+                getWebsit({ type: 'C', status: true, queryPartsWebsit: true }).then(res => {
+                  this.websitList = res.data
+                  this.formType = 0
+                  this.formBool = true
+                })
+              }
+            })
+          ]
+        ]
+      ]
+    },
+    items() {
+      return [
+        {
+          isShow: !this.formData.isDefault,
+          name: 'el-select',
+          md: 8,
+          options: this.websitList.map(item => ({ label: item.name, value: item.websitId })),
+          attributes: {
+            clearable: true,
+            filterable: true,
+            disabled: this.formType === 2,
+            placeholder: '请输入'
+          },
+          formItemAttributes: {
+            label: '配置网点',
+            prop: 'websitId',
+            rules: this.formData.isDefault ? [] : [...required]
+          }
+        },
+        {
+          isShow: !this.formData.isDefault,
+          name: 'slot-component',
+          md: 16,
+          attributes: {},
+          formItemAttributes: {
+            label: '',
+            prop: '',
+            'label-width': '0px'
+          },
+          render: (h, { props, onInput }) => {
+            return <div></div>
+          }
+        },
+        {
+          name: 'el-input',
+          md: 8,
+          attributes: {
+            disabled: this.formType === 2,
+            placeholder: '请输入',
+            type: 'number'
+          },
+          formItemAttributes: {
+            label: '新件返还(市区)',
+            prop: 'newRefundInner',
+            rules: [...required]
+          }
+        },
+        {
+          name: 'slot-component',
+          md: 16,
+          attributes: {},
+          formItemAttributes: {
+            label: '',
+            prop: '',
+            'label-width': '0px'
+          },
+          render: (h, { props, onInput }) => {
+            return <div>天内返还不使用的新件</div>
+          }
+        },
+        {
+          name: 'el-input',
+          md: 8,
+          attributes: {
+            disabled: this.formType === 2,
+            placeholder: '请输入',
+            type: 'number'
+          },
+          formItemAttributes: {
+            label: '新件返还(外区)',
+            prop: 'newRefundOutside',
+            rules: [...required]
+          }
+        },
+        {
+          name: 'slot-component',
+          md: 16,
+          attributes: {},
+          formItemAttributes: {
+            label: '',
+            prop: '',
+            'label-width': '0px'
+          },
+          render: (h, { props, onInput }) => {
+            return <div>天内返还不使用的新件</div>
+          }
+        },
+        {
+          name: 'el-input',
+          md: 8,
+          attributes: {
+            disabled: this.formType === 2,
+            placeholder: '请输入',
+            type: 'number'
+          },
+          formItemAttributes: {
+            label: '旧件返还',
+            prop: 'oldRefund',
+            rules: [...required]
+          }
+        },
+        {
+          name: 'slot-component',
+          md: 16,
+          attributes: {},
+          formItemAttributes: {
+            label: '',
+            prop: '',
+            'label-width': '0px'
+          },
+          render: (h, { props, onInput }) => {
+            return <div>天内返维修完工时替换的旧件</div>
+          }
+        }
+      ]
+    },
+    items2() {
+      return [
+        {
+          name: 'el-input',
+          md: 8,
+          attributes: {
+            disabled: this.formType === 2 || this.$route.name == 'website-refund-config',
+            placeholder: '请输入',
+            type: 'number'
+          },
+          formItemAttributes: {
+            label: '空调',
+            prop: 'priceRate1',
+            rules: [...required]
+          }
+        },
+        {
+          name: 'slot-component',
+          md: 16,
+          attributes: {},
+          formItemAttributes: {
+            label: '',
+            prop: '',
+            'label-width': '0px'
+          },
+          render: (h, { props, onInput }) => {
+            return <div>销售价格倍率设置,注需要大于等于 1</div>
+          }
+        },
+        {
+          name: 'el-input',
+          md: 8,
+          attributes: {
+            disabled: this.formType === 2 || this.$route.name == 'website-refund-config',
+            placeholder: '请输入',
+            type: 'number'
+          },
+          formItemAttributes: {
+            label: '生活电器',
+            prop: 'priceRate3',
+            rules: [...required]
+          }
+        },
+        {
+          name: 'slot-component',
+          md: 16,
+          attributes: {},
+          formItemAttributes: {
+            label: '',
+            prop: '',
+            'label-width': '0px'
+          },
+          render: (h, { props, onInput }) => {
+            return <div>销售价格倍率设置,注需要大于等于 1</div>
+          }
+        },
+        {
+          name: 'el-input',
+          md: 8,
+          attributes: {
+            disabled: this.formType === 2 || this.$route.name == 'website-refund-config',
+            placeholder: '请输入',
+            type: 'number'
+          },
+          formItemAttributes: {
+            label: '冰箱',
+            prop: 'priceRate2',
+            rules: [...required]
+          }
+        },
+        {
+          name: 'slot-component',
+          md: 16,
+          attributes: {},
+          formItemAttributes: {
+            label: '',
+            prop: '',
+            'label-width': '0px'
+          },
+          render: (h, { props, onInput }) => {
+            return <div>销售价格倍率设置,注需要大于等于 1</div>
+          }
+        }
+      ]
+    }
+  },
+  methods: {
+    // 列表请求函数
+    getList: partsRefundConfigList,
+    // 表格列解析渲染数据更改
+    columnParsing(item, defaultData) {
+      return defaultData
+    },
+    // 获取勾选框数据
+    selectionChange(data) {
+      this.recordSelected = data
+    },
+    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 ? partsRefundConfigEdit : partsRefundConfigAdd)(this.formData).then(res => {
+            this.$message({ type: 'success', message: '配置成功!' })
+            this.$refs.pageRef.refreshList()
+            this.handleClose()
+          })
+        }
+      })
+    },
+    operation() {
+      return this.operationBtn({
+        view: {
+          click: ({ row, index, column }) => {
+            getWebsit({ type: 'C', status: true, queryPartsWebsit: true }).then(res => {
+              this.websitList = res.data
+            })
+            partsRefundConfigDetail({
+              id: row.id
+            }).then(res => {
+              this.formData = res.data
+              this.$nextTick(() => {
+                this.formType = 2
+                this.formBool = true
+              })
+            })
+          }
+        },
+        edit: {
+          click: ({ row, index, column }) => {
+            getWebsit({ type: 'C', status: true, queryPartsWebsit: true }).then(res => {
+              this.websitList = res.data
+            })
+            partsRefundConfigDetail({
+              id: row.id
+            }).then(res => {
+              this.formData = res.data
+              this.$nextTick(() => {
+                this.formType = 1
+                this.formBool = true
+              })
+            })
+          }
+        },
+        del: {
+          prompt: '确定删除吗?',
+          click: ({ row, index, column }) => {
+            partsRefundConfigBatchDel([row.id]).then(res => {
+              this.$message({ type: 'success', message: '删除成功!' })
+              this.$refs.pageRef.refreshList()
+            })
+          }
+        }
+      })
+    }
+  }
+}
+</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>

+ 3 - 0
src/views/partsManagement/accessoryCenterIdentity/center-parts-config/index.vue

@@ -0,0 +1,3 @@
+<script>
+export { default } from '@/views/commonPage/parts-config/index.vue'
+</script>

+ 3 - 0
src/views/partsManagement/accessoryWebsite/website-refund-config/index.vue

@@ -0,0 +1,3 @@
+<script>
+export { default } from '@/views/commonPage/parts-config/index.vue'
+</script>