From 8db1014ad0c02e88609ef3e46a0236f40820ed1d Mon Sep 17 00:00:00 2001
From: mayf <m13160102112@163.com>
Date: 星期五, 23 八月 2024 17:49:19 +0800
Subject: [PATCH] 售后相关改动 内容管理改动

---
 pages/order/after-sale/index.vue |  253 ++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 203 insertions(+), 50 deletions(-)

diff --git a/pages/order/after-sale/index.vue b/pages/order/after-sale/index.vue
index d9d5e89..36d7cdb 100644
--- a/pages/order/after-sale/index.vue
+++ b/pages/order/after-sale/index.vue
@@ -1,9 +1,20 @@
 <template>
-  <el-bus-crud ref="crud" v-bind="tableConfig"></el-bus-crud>
+  <el-bus-crud ref="crud" v-bind="tableConfig">
+    <template #table="{ list }">
+      <template v-if="list && list.length > 0">
+        <after-sale-table :list="list" @detail="onDetail" @handle="onHandle" />
+      </template>
+      <el-bus-empty v-else />
+    </template>
+  </el-bus-crud>
 </template>
 
 <script>
+import AfterSaleTable from '@/components/order/after-sale-table'
 export default {
+  components: {
+    AfterSaleTable,
+  },
   data() {
     return {
       tableConfig: {
@@ -11,48 +22,27 @@
         hasNew: false,
         hasEdit: false,
         hasDelete: false,
-        onResetView: (row) => {
-          this.$router.push(`${this.$route.path}/view/${row.id}`)
-        },
-        operationAttrs: {
-          width: 120,
-          fixed: 'right',
-        },
-        extraButtons: [
-          {
-            text: '售后处理',
-            show: (row) => row.status === 'PENDING',
-            atClick: (row) => {
-              this.$router.push(`${this.$route.path}/handle/${row.id}`)
-            },
-          },
-        ],
-        columns: [
-          { label: '订单号', prop: 'orderNo', minWidth: 150, fixed: 'left' },
-          { label: '售后单号', prop: 'salesNo', minWidth: 150 },
-          { label: '收货人', prop: 'customer', minWidth: 120 },
-          { label: '收货人电话', prop: 'customerTel', minWidth: 120 },
-          {
-            label: '收货地址',
-            formatter: (row) =>
-              `${row.customerProvince || ''}${row.customerCity || ''}${
-                row.customerRegion || ''
-              }${row.customerAddress || ''}`,
-            minWidth: 250,
-          },
-          { label: '订单金额', prop: 'totalOrderAmount', minWidth: 150 },
-          { label: '售后理由', prop: 'reason', minWidth: 200 },
-          { label: '售后状态', prop: 'statusStr', minWidth: 120 },
-          { label: '审核状态', prop: 'auditStatusStr', minWidth: 120 },
-          { label: '申请时间', prop: 'createTime', minWidth: 180 },
-          { label: '处理时间', prop: 'auditTime', minWidth: 180 },
-        ],
+        hasExport: true,
+        exportUrl: 'flower/api/sales/list/export',
+        exportText: '售后导出',
         searchFormAttrs: {
           labelWidth: 'auto',
+        },
+        beforeRequest: (params) => {
+          const searchForm = this.$refs.crud?.$refs?.searchForm
+          if (searchForm) {
+            const statusComp = searchForm.getComponentById('status')
+            if (statusComp) {
+              // 组件内部不会修改这个prop直接修改可忽略警告
+              statusComp.extraQuery = { ...params, status: '' }
+              statusComp.getOtherOptions()
+            }
+          }
         },
         searchForm: [
           {
             type: 'row',
+            id: 'row',
             items: [
               {
                 label: '售后状态:',
@@ -60,29 +50,184 @@
                 type: 'bus-radio',
                 el: {
                   hasAll: true,
+                  otherInterfaceUri: 'flower/api/sales/status/count',
                   childType: 'el-radio-button',
-                  code: 'SALES_STATUS',
+                  filterOptions: (list) => {
+                    return list.map((item) => {
+                      return {
+                        ...item,
+                        label: `${item.label}(${item.orderCount})`,
+                      }
+                    })
+                  },
+                  // code: 'ORDER_SALES_STATUS',
                 },
                 default: '',
                 span: 24,
                 searchImmediately: true,
-              },
-              {
-                label: '审核状态:',
-                id: 'auditStatus',
-                type: 'bus-radio',
-                el: {
-                  hasAll: true,
-                  childType: 'el-radio-button',
-                  code: 'SALES_AUDIT_STATUS',
+                on: {
+                  optionsChange: (e, updateForm, { currentComp }) => {
+                    if (Array.isArray(e[0]) && e[0].length > 0) {
+                      const totalCount = e[0].reduce((total, current) => {
+                        return (total += current.orderCount)
+                      }, 0)
+                      // 组件内部不会修改这个prop直接修改可忽略警告
+                      currentComp.props = {
+                        allLabel: `不限(${totalCount})`,
+                      }
+                    }
+                  },
                 },
-                default: '',
-                span: 24,
-                searchImmediately: true,
               },
+              { label: '商品名称:', id: 'flowerName', type: 'input' },
               { label: '订单号:', id: 'orderNo', type: 'input' },
               { label: '售后单号:', id: 'salesNo', type: 'input' },
+              { label: '收货人姓名:', id: 'customer', type: 'input' },
+              { label: '收货人电话:', id: 'customerTel', type: 'input' },
+              { label: '供应商:', id: 'supplierName', type: 'input' },
+              {
+                label: '下单时间:',
+                id: 'orderStartDateStr',
+                component: 'el-bus-date-range',
+                commonFormat: true,
+                commonFormatProps: ['orderStartDateStr', 'orderEndDateStr'],
+                customClass: 'in-bus-form',
+              },
+              {
+                label: '售后时间:',
+                id: 'salesStartDateStr',
+                component: 'el-bus-date-range',
+                commonFormat: true,
+                commonFormatProps: ['salesStartDateStr', 'salesEndDateStr'],
+                customClass: 'in-bus-form',
+              },
             ],
+          },
+        ],
+        form: [
+          {
+            type: 'row',
+            items: [
+              { label: '商品名称:', id: 'flowerName', type: 'input' },
+              { label: '合伙人加价(元):', id: 'markupPartner', type: 'input' },
+              { label: '商品价格(元):', id: 'price', type: 'input' },
+              { label: '供应商价格(元):', id: 'supplierPrice', type: 'input' },
+              { label: '商品数量:', id: 'flowerNum', type: 'input' },
+              { label: '申请售后数量:', id: 'num', type: 'input' },
+            ],
+          },
+        ],
+        extraDialogs: [
+          {
+            title: '售后处理',
+            readonly: true,
+            confirmText: '通过',
+            cancelText: '不通过',
+            confirmButtonAttrs: {
+              type: 'success',
+            },
+            cancelButtonAttrs: {
+              type: 'danger',
+            },
+            dialogAttrs: {
+              width: '70%',
+            },
+            form: [
+              {
+                type: 'row',
+                items: [
+                  {
+                    label: '供应商(元):',
+                    id: 'feeSupplier',
+                    type: 'input-number',
+                    el: { min: 0, precision: 2, controls: false },
+                  },
+                  {
+                    label: '平台(元):',
+                    id: 'feePlatform',
+                    type: 'input-number',
+                    el: { min: 0, precision: 2, controls: false },
+                  },
+                  {
+                    label: '合伙人(元):',
+                    id: 'feePartner',
+                    type: 'input-number',
+                    el: { min: 0, precision: 2, controls: false },
+                  },
+                  {
+                    label: '打包(元):',
+                    id: 'feePlatformPack',
+                    type: 'input-number',
+                    el: { min: 0, precision: 2, controls: false },
+                  },
+                  {
+                    label: '质检(元):',
+                    id: 'feePlatformCheck',
+                    type: 'input-number',
+                    el: { min: 0, precision: 2, controls: false },
+                  },
+                  {
+                    label: '物流(元):',
+                    id: 'feePlatformTransport',
+                    type: 'input-number',
+                    el: { min: 0, precision: 2, controls: false },
+                  },
+                  {
+                    label: '申请理由:',
+                    id: 'reason',
+                    type: 'input',
+                    el: {
+                      type: 'textarea',
+                    },
+                    readonly: true,
+                    span: 24,
+                  },
+                  {
+                    label: '平台回复:',
+                    id: 'remarks',
+                    type: 'input',
+                    el: {
+                      type: 'textarea',
+                      rows: 6,
+                    },
+                    rules: {
+                      required: true,
+                      message: '请输入平台回复',
+                      trigger: 'blur',
+                    },
+                    span: 24,
+                  },
+                ],
+              },
+            ],
+            atConfirm: async (val) => {
+              const { code } = await this.$elBusHttp.request(
+                'flower/api/sales/audit/agree',
+                { method: 'post', data: val }
+              )
+              if (code === 0) {
+                this.$message.success('操作成功')
+              } else {
+                return false
+              }
+            },
+            atCancel: async (val) => {
+              const { code } = await this.$elBusHttp.request(
+                'flower/api/sales/audit/reject',
+                {
+                  method: 'post',
+                  data: {
+                    id: val.id,
+                    remarks: val.remarks,
+                  },
+                }
+              )
+              if (code === 0) {
+                this.$message.success('操作成功')
+              } else {
+                return false
+              }
+            },
           },
         ],
       },
@@ -93,6 +238,14 @@
       title: '售后理赔',
     }
   },
+  methods: {
+    onDetail(item) {
+      this.$router.push(`${this.$route.path}/view/${item.id}`)
+    },
+    onHandle(item) {
+      this.$refs.crud.$refs.extraDialog[0].show(item)
+    },
+  },
 }
 </script>
 

--
Gitblit v1.9.3