Преглед изворни кода

fix 回收订单列表接口对接

haveyou пре 1 година
родитељ
комит
8b3951d7e0
29 измењених фајлова са 1511 додато и 2305 уклоњено
  1. 127 0
      src/components/CommonPage/AreaSelect.vue
  2. 7 2
      src/components/CommonPage/ProSearch2.vue
  3. 14 5
      src/components/CommonPage/SimpleFormModal.vue
  4. 38 14
      src/styles/index.scss
  5. 8 1
      src/views/recycle/orderSetting/components/not-supported-area.vue
  6. 7 1
      src/views/recycle/orderSetting/components/not-supported-returned.vue
  7. 12 0
      src/views/recycle/orderSetting/index.vue
  8. 39 194
      src/views/recycleOrder/auditNotSubmit/index.vue
  9. 32 180
      src/views/recycleOrder/awaitAudit/index.vue
  10. 32 161
      src/views/recycleOrder/awaitDelivery/index.vue
  11. 35 184
      src/views/recycleOrder/awaitPay/index.vue
  12. 34 147
      src/views/recycleOrder/awaitPickup/index.vue
  13. 25 86
      src/views/recycleOrder/awaitReview/index.vue
  14. 31 161
      src/views/recycleOrder/awaitSign/index.vue
  15. 23 114
      src/views/recycleOrder/cancelled/index.vue
  16. 31 175
      src/views/recycleOrder/completed/index.vue
  17. 76 0
      src/views/recycleOrder/components/first-check-modal.vue
  18. 128 0
      src/views/recycleOrder/components/modify-address.vue
  19. 35 22
      src/views/recycleOrder/components/order-amount.vue
  20. 13 7
      src/views/recycleOrder/components/order-customer.vue
  21. 48 0
      src/views/recycleOrder/components/order-detail.vue
  22. 17 23
      src/views/recycleOrder/components/order-modal.vue
  23. 55 38
      src/views/recycleOrder/components/order-number.vue
  24. 326 369
      src/views/recycleOrder/components/order-page-all.vue
  25. 113 93
      src/views/recycleOrder/components/order-search.vue
  26. 22 17
      src/views/recycleOrder/components/order-time.vue
  27. 26 34
      src/views/recycleOrder/detail/index.vue
  28. 22 86
      src/views/recycleOrder/failedAudit/index.vue
  29. 135 191
      src/views/recycleOrder/search/index.vue

+ 127 - 0
src/components/CommonPage/AreaSelect.vue

@@ -0,0 +1,127 @@
+<template>
+    <el-cascader v-model="selectedValue" :options="areaOptions" :props="propsCascader" @change="handleChange"
+        style="width:100%" placeholder="请选择省/市/区" clearable />
+</template>
+
+<script setup>
+import { ref, watch, onMounted } from 'vue'
+import request from '@/utils/request'
+
+const props = defineProps({
+    modelValue: {
+        type: Array,
+        default: () => []
+    },
+    level: {
+        type: Number,
+        default: 2
+    }
+})
+
+const emit = defineEmits(['update:modelValue'])
+
+const selectedValue = ref([])
+const areaOptions = ref([])
+
+// 配置级联选择器属性
+const propsCascader = {
+    lazy: true,
+    lazyLoad: loadAreaData,
+    value: 'id',
+    label: 'district',
+    checkStrictly: false,
+}
+
+// 监听外部传入的值变化,用于数据回填
+watch(() => props.modelValue, (newVal) => {
+    if (newVal && newVal.length > 0) {
+        selectedValue.value = newVal
+        // 如果有初始值,需要预加载数据
+        initAreaData(newVal)
+    }
+}, { immediate: true })
+
+// 值变化时触发
+const handleChange = (value) => {
+    console.log(value, selectedValue.value, 'value')
+    emit('update:modelValue', value)
+}
+
+// 加载区域数据
+async function loadAreaData(node, resolve) {
+    const { level, value } = node
+    try {
+        let data = []
+        if (level === 0) {
+            // 加载省份数据
+            data = await getProvinceList()
+            console.log(data, 'data')
+        } else if (level === 1) {
+            // 加载城市数据
+            data = await getProvinceList(value)
+        } else if (level === 2) {
+            // 加载区县数据
+            data = await getProvinceList(value)
+            data.forEach(item => {
+                item.leaf = true
+            })
+        }
+        resolve(data)
+    } catch (error) {
+        console.error('加载地区数据失败:', error)
+        resolve([])
+    }
+}
+
+function getProvinceList(id = 1) {
+    return new Promise((resolve, reject) => {
+        request.get(`/baseinfo/districtInfo/findInfo/${id}`).then(res => {
+            resolve(res.data.data)
+        }).catch(err => {
+            resolve([])
+            reject(err)
+        })
+    })
+}
+
+// 初始化数据(用于回填)
+async function initAreaData(codes) {
+    try {
+        // 加载省份列表
+        areaOptions.value = await getProvinceList()
+
+        if (codes.length > 0) {
+            // 预加载市
+            const cityList = await getProvinceList(codes[0])
+            const province = areaOptions.value.find(p => p.id === codes[0])
+            if (province) {
+                province.children = cityList
+            }
+
+            if (codes.length > 1) {
+                // 预加载区
+                const districtList = await getProvinceList(codes[1])
+                const city = cityList.find(c => c.id === codes[1])
+                if (city) {
+                    city.children = districtList
+                }
+            }
+        }
+    } catch (error) {
+        console.error('初始化地区数据失败:', error)
+    }
+}
+
+onMounted(() => {
+    // 初始加载省份数据
+    loadAreaData({ level: 0 }, (data) => {
+        areaOptions.value = data
+    })
+})
+</script>
+
+<style scoped>
+.el-cascader {
+    width: 100%;
+}
+</style>

+ 7 - 2
src/components/CommonPage/ProSearch2.vue

@@ -1,7 +1,7 @@
 <!-- 显示 4 列的搜索表单, 操作按钮所在的 el-col 自动计算 offset 保证一直靠右 -->
 <template>
   <pro-form
-    class="search-form"
+    :class="isShowLabel ? 'search-form' : 'search-form no-label-search'"
     ref="proFormRef"
     :model="form"
     :items="items"
@@ -12,7 +12,7 @@
     :footer-props="{ labelWidth: '0px' }"
     :footer-col-props="{
       span: 4,
-      offset: 0,
+      offset: 0
     }"
   >
     <template #footer>
@@ -57,6 +57,11 @@
       // 操作按钮的 offset 值
       type: Number,
       default: 0
+    },
+    isShowLabel: {
+      // 是否显示 label
+      type: Boolean,
+      default: true
     }
   });
 

+ 14 - 5
src/components/CommonPage/SimpleFormModal.vue

@@ -6,7 +6,7 @@
     v-model="visible"
     :title="title"
     position="center"
-    :body-style="{ overflow: 'auto', maxHeight: '84vh',position: 'relative' }"
+    :body-style="{ maxHeight: '84vh', position: 'relative' }"
   >
     <slot name="other"></slot>
 
@@ -17,12 +17,19 @@
       v-bind="formProps"
       :disabled="type === 'detail'"
     >
-    <template v-for="(val, key) in slotArray" v-slot:[key]="{ item, model, updateValue }">
-      <slot :name="key" :item="item" :model="model" :updateValue="updateValue"></slot>
-    </template>
+      <template
+        v-for="(val, key) in slotArray"
+        v-slot:[key]="{ item, model, updateValue }"
+      >
+        <slot
+          :name="key"
+          :item="item"
+          :model="model"
+          :updateValue="updateValue"
+        ></slot>
+      </template>
     </SimpleForm>
 
-
     <template #footer>
       <el-button @click="handleCancel">关闭</el-button>
       <el-button type="primary" @click="handleSumbit" v-if="type !== 'detail'"
@@ -103,6 +110,8 @@
     console.log(props.formatData, '格式化数据');
 
     formRef.value?.submitForm().then((data) => {
+      console.log(data, '格式化数据data');
+
       data.id = form.value?.id;
       let url = data.id ? props.baseUrl.update : props.baseUrl.add;
       let format = props.formatData(data);

+ 38 - 14
src/styles/index.scss

@@ -176,7 +176,8 @@ body {
       padding: 9px 15px;
     }
   }
-  .el-tag__content{
+
+  .el-tag__content {
     display: flex;
     width: 100%;
   }
@@ -203,6 +204,11 @@ body {
     }
   }
 
+  //不显示label
+  &.no-label-search .el-form-item .el-form-item__label {
+    display: none;
+  }
+
   .el-date-editor.el-input,
   .el-date-editor.el-input__wrapper {
     width: 100%
@@ -255,22 +261,40 @@ html.disabled-transition :not(.view-transition-trigger) * {
   }
 }
 
-.common-title{
-    font-size: 18px;
-    font-weight: 550;
+.common-title {
+  font-size: 18px;
+  font-weight: 550;
 }
-.el-statistic{
-    .el-statistic__head{
-        font-size: 14px;
-    }
+
+.el-statistic {
+  .el-statistic__head {
+    font-size: 14px;
+  }
+}
+
+
+.common-section {
+  padding: 12px 30px;
+  background-color: #fcfbfa;
+  border-radius: 6px;
+
+  .el-form-item {
+    margin-bottom: 10px;
+  }
 }
 
 
-.common-section{
-    padding: 12px 30px;
-    background-color: #fcfbfa;
-    border-radius: 6px;
-    .el-form-item{
-        margin-bottom: 10px;
+.custom-select {
+  .el-select__wrapper {
+    .el-select__placeholder {
+      position: relative;
+      white-space: pre-wrap;
+      top: 0;
+      transform: translateY(0);
     }
+  }
+
+  .el-select-dropdown .el-select-dropdown__item {
+    white-space: normal;
+  }
 }

+ 8 - 1
src/views/recycle/orderSetting/components/not-supported-area.vue

@@ -31,6 +31,7 @@
 <script lang="ts" setup>
   import { reactive } from 'vue';
   import EleInput from '@/components/CommonPage/EleInput.vue';
+  import { ElMessage } from 'element-plus';
   import request from '@/utils/request';
 
   const form = reactive({
@@ -46,6 +47,12 @@
   getProviceList();
 
   const onSubmit = () => {
-    console.log('submit!');
+    request
+      .post(`/recycle/manage/unsupported/refund/update`, {
+        provinceIds: form.area
+      })
+      .then((res) => {
+        ElMessage.success('保存成功');
+      });
   };
 </script>

+ 7 - 1
src/views/recycle/orderSetting/components/not-supported-returned.vue

@@ -46,6 +46,12 @@
   getProviceList();
 
   const onSubmit = () => {
-    console.log('submit!');
+    request
+      .post(`/recycle/manage/unsupported/order/update`, {
+        provinceIds: form.area
+      })
+      .then((res) => {
+        ElMessage.success('保存成功');
+      });
   };
 </script>

+ 12 - 0
src/views/recycle/orderSetting/index.vue

@@ -39,6 +39,7 @@
 </template>
 
 <script setup>
+  import { getCurrentInstance } from 'vue';
   import restoreOrderSettings from '@/views/recycle/orderSetting/components/restore-order-settings.vue';
   import autoCancelOrder from '@/views/recycle/orderSetting/components/auto-cancel-order.vue';
   import recycleOrderSettings from '@/views/recycle/orderSetting/components/recycle-order-settings.vue';
@@ -46,4 +47,15 @@
   import notSupportedArea from '@/views/recycle/orderSetting/components/not-supported-area.vue';
   import notSupportedReturned from '@/views/recycle/orderSetting/components/not-supported-returned.vue';
   import autoAuditSettings from '@/views/recycle/orderSetting/components/auto-audit-settings.vue';
+  let { proxy } = getCurrentInstance();
+
+  defineOptions({ name: 'recycleOrderSettings' });
+
+  //获取当前设置
+  function getSettings() {
+    proxy.$http.get('/recycle/manage/get').then((res) => {
+      console.log(res);
+    });
+  }
+  getSettings()
 </script>

+ 39 - 194
src/views/recycleOrder/auditNotSubmit/index.vue

@@ -1,211 +1,56 @@
 <template>
-  <order-page ref="pageRef" :pageConfig="pageConfig">
-    <template #toolbar>
-      <el-button
-        type="warning"
-        plain
-        v-permission="'recycleOrder:auditNotSubmit:batchAudit'"
-        @click="handleBatchAudit"
-      >
-        批量初审
-      </el-button>
-      <el-button
-        type="success"
-        plain
-        v-permission="'recycleOrder:auditNotSubmit:batchAuditComplete'"
-        @click="handleBatchAuditComplete"
-      >
-        批量审核完成
-      </el-button>
-      <el-button
-        type="primary"
-        plain
-        :icon="DownloadOutlined"
-        v-permission="'recycleOrder:auditNotSubmit:export'"
-        @click="exportData"
-      >
-        导出订单明细
-      </el-button>
-    </template>
-
-    <template #action="{ row }">
-      <div>
-        <el-button
-          type="success"
-          link
-          v-permission="'recycleOrder:auditNotSubmit:detail'"
-          @click="toOrderDetail(row)"
-        >
-          [订单详情]
-        </el-button>
-        <el-button
-          type="warning"
-          link
-          v-permission="'recycleOrder:auditNotSubmit:log'"
-          @click="openOrderLog(row)"
-        >
-          [订单日志]
-        </el-button>
-        <el-button
-          type="primary"
-          link
-          v-permission="'recycleOrder:auditNotSubmit:fallback'"
-          @click="fallbackOrder(row)"
-        >
-          [回退状态]
-        </el-button>
-        <el-button
-          type="success"
-          link
-          v-permission="'recycleOrder:auditNotSubmit:arrivalAudit'"
-          @click="handleArrivalAudit(row)"
-        >
-          [到货审核]
-        </el-button>
-        <el-button
-          type="danger"
-          link
-          v-permission="'recycleOrder:auditNotSubmit:auditScreenshot'"
-          @click="handleAuditScreenshot(row)"
-        >
-          [审核截图]
-        </el-button>
-        <el-button
-          type="warning"
-          link
-          v-permission="'recycleOrder:auditNotSubmit:userTag'"
-          @click="openEditUserTag(row)"
-        >
-          [用户标签]
-        </el-button>
-        <el-button
-          type="success"
-          link
-          v-permission="'recycleOrder:auditNotSubmit:sendSMS'"
-          @click="handleSendSMS(row)"
-        >
-          [推送短信]
-        </el-button>
-        <el-button
-          type="info"
-          link
-          plain
-          v-permission="'recycleOrder:auditNotSubmit:smsLog'"
-          @click="handleSmsLog(row)"
-        >
-          [短信记录]
-        </el-button>
-      </div>
-    </template>
-
-    <order-log ref="orderLogRef" />
-    <userBindTag ref="userTagRef" />
-    <audit-screenshot ref="auditScreenshotRef"></audit-screenshot>
-    <sendSMS ref="smsRef"></sendSMS>
-    <orderSmsLog ref="smsLogRef"></orderSmsLog>
-  </order-page>
+    <order-page ref="pageRef" :pageConfig="pageConfig" permissionKey="auditNotSubmit">
+        <template #toolbar>
+            <el-button type="warning" plain v-permission="'recycleOrder:auditNotSubmit:batchAudit'"
+                @click="handleBatchAudit">
+                批量初审
+            </el-button>
+            <el-button type="success" plain v-permission="'recycleOrder:auditNotSubmit:batchAuditComplete'"
+                @click="handleBatchAuditComplete">
+                批量审核完成
+            </el-button>
+            <el-button type="primary" plain :icon="DownloadOutlined" v-permission="'recycleOrder:auditNotSubmit:export'"
+                @click="exportData">
+                导出订单明细
+            </el-button>
+        </template>
+    </order-page>
 </template>
 
 <script setup>
-  import { ref, reactive } from 'vue';
-  import { ElMessageBox } from 'element-plus/es';
-  import { EleMessage } from 'ele-admin-plus/es';
-  import { DownloadOutlined } from '@/components/icons';
-  import OrderPage from '@/views/recycleOrder/components/order-page.vue';
-  import { useDictData } from '@/utils/use-dict-data';
-  import { useRouter } from 'vue-router';
+import { ref, reactive } from 'vue';
+import { DownloadOutlined } from '@/components/icons';
+import OrderPage from '@/views/recycleOrder/components/order-page-all.vue';
 
-  //订单日志
-  import orderLog from '@/views/recycleOrder/components/order-log.vue';
-  //用户标签
-  import userBindTag from '@/views/recycleOrder/components/user-bind-tag.vue';
-  //审核截图
-  import auditScreenshot from '@/views/recycleOrder/components/audit-screenshot.vue';
-  //推送短信
-  import sendSMS from '@/views/recycleOrder/components/send-SMS.vue';
-  //短信记录
-  import orderSmsLog from '@/views/recycleOrder/components/order-sms-log.vue'
+defineOptions({ name: 'recycleOrderAuditNotSubmit' });
 
-  defineOptions({ name: 'recycleOrderAuditNotSubmit' });
+/** 页面组件实例 */
+const pageRef = ref(null);
 
-  let router = useRouter();
-  /** 页面组件实例 */
-  const pageRef = ref(null);
-
-  const pageConfig = reactive({
-    pageUrl: '',
-    exportUrl: '',
+const pageConfig = reactive({
+    pageUrl: '/order/orderInfo/auditing/pageList',
+    exportUrl: '/order/orderInfo/auditing/export',
     fileName: '审核未提交',
     cacheKey: 'auditNotSubmitTable'
-  });
+});
 
-  //批量初审
-  function handleBatchAudit() {
+//批量初审
+function handleBatchAudit() {
     pageRef.value?.operatBatch({
-      title: '确认批量审核?',
-      url: '/recycleOrder/batchAudit'
+        title: '确认批量审核?',
+        url: '/recycleOrder/batchAudit'
     });
-  }
-  //批量审核完成
-  function handleBatchAuditComplete() {
+}
+//批量审核完成
+function handleBatchAuditComplete() {
     pageRef.value?.operatBatch({
-      title: '确认批量审核完成?',
-      url: '/recycleOrder/batchAuditComplete'
+        title: '确认批量审核完成?',
+        url: '/recycleOrder/batchAuditComplete'
     });
-  }
+}
 
-  //导出数据
-  function exportData() {
+//导出数据
+function exportData() {
     pageRef.value?.exportData('审核未提交');
-  }
-  //订单详情
-  function toOrderDetail(row) {
-    router.push({ path: '/recycleOrder/detail', query: { id: row.postId } });
-  }
-
-  //订单日志
-  const orderLogRef = ref(null);
-  function openOrderLog(row) {
-    orderLogRef.value?.handleOpen(row);
-  }
-
-  //用户绑定标签
-  const userTagRef = ref(null);
-  function openEditUserTag(row) {
-    userTagRef.value?.handleOpen(row);
-  }
-
-  function messageBoxConfirm({ message, url, row }) {
-    ElMessageBox.confirm(message, '提示', {
-      confirmButtonText: '确定',
-      cancelButtonText: '关闭',
-      type: 'warning'
-    }).then(() => {
-      console.log(row, 'row');
-    });
-  }
-
-  //到货审核
-  function handleArrivalAudit(row) {
-    messageBoxConfirm({ message: '确认到货审核?', url: '', row });
-  }
-  //回退状态
-  function fallbackOrder(row) {
-    messageBoxConfirm({ message: '确认回退状态?', url: '', row });
-  }
-  //审核截图
-  const auditScreenshotRef = ref(null);
-  function handleAuditScreenshot(row) {
-    auditScreenshotRef.value?.handleOpen(row);
-  }
-  //推送短信
-  const smsRef = ref(null);
-  function handleSendSMS(row) {
-    smsRef.value?.handleOpen(row);
-  }
-  //短信记录
-  const smsLogRef = ref(null);
-  function handleSmsLog(row) {
-    smsLogRef.value?.handleOpen(row);
-  }
+}
 </script>

+ 32 - 180
src/views/recycleOrder/awaitAudit/index.vue

@@ -1,196 +1,48 @@
 <template>
-  <order-page ref="pageRef" :pageConfig="pageConfig">
-    <template #toolbar>
-      <el-button
-        type="warning"
-        plain
-        class="ele-btn-icon"
-        v-permission="'recycleOrder:awaitAudit:batchAudit'"
-        @click="handleBatchAudit"
-      >
-        批量初审
-      </el-button>
-      <el-button
-        type="success"
-        plain
-        class="ele-btn-icon"
-        :icon="DownloadOutlined"
-        v-permission="'recycleOrder:awaitAudit:batchAuditComplete'"
-        @click="handleBatchAuditComplete"
-      >
-        批量审核完成
-      </el-button>
-    </template>
-
-    <template #action="{ row }">
-      <div>
-        <el-button
-          type="success"
-          link
-          v-permission="'recycleOrder:awaitAudit:detail'"
-          @click="toOrderDetail(row)"
-        >
-          [订单详情]
-        </el-button>
-        <el-button
-          type="warning"
-          link
-          v-permission="'recycleOrder:awaitAudit:log'"
-          @click="openOrderLog(row)"
-        >
-          [订单日志]
-        </el-button>
-        <el-button
-          type="danger"
-          link
-          v-permission="'recycleOrder:awaitAudit:cancel'"
-          @click="cancelOrder(row)"
-        >
-          [取消订单]
-        </el-button>
-        <el-button
-          type="primary"
-          link
-          v-permission="'recycleOrder:awaitAudit:fallback'"
-          @click="fallbackOrder(row)"
-        >
-          [回退状态]
-        </el-button>
-        <el-button
-          type="success"
-          link
-          v-permission="'recycleOrder:awaitAudit:confirmReceipt'"
-          @click="handleConfirmReceipt(row)"
-        >
-          [确认收货]
-        </el-button>
-        <el-button
-          type="warning"
-          link
-          v-permission="'recycleOrder:awaitAudit:userTag'"
-          @click="openEditUserTag(row)"
-        >
-          [用户标签]
-        </el-button>
-        <el-button
-          type="success"
-          link
-          v-permission="'recycleOrder:awaitAudit:sendSMS'"
-          @click="handleSendSMS(row)"
-        >
-          [推送短信]
-        </el-button>
-        <el-button
-          type="info"
-          link
-          v-permission="'recycleOrder:awaitAudit:smsLog'"
-          @click="handleSmsLog(row)"
-        >
-          [短信记录]
-        </el-button>
-      </div>
-    </template>
-
-    <order-log ref="orderLogRef" />
-    <userBindTag ref="userTagRef" />
-    <sendSMS ref="smsRef"></sendSMS>
-    <orderSmsLog ref="smsLogRef"></orderSmsLog>
-  </order-page>
+    <order-page ref="pageRef" :pageConfig="pageConfig" permissionKey="awaitAudit">
+        <template #toolbar>
+            <el-button type="warning" plain class="ele-btn-icon" v-permission="'recycleOrder:awaitAudit:batchAudit'"
+                @click="handleBatchAudit">
+                批量初审
+            </el-button>
+            <el-button type="success" plain class="ele-btn-icon" :icon="DownloadOutlined"
+                v-permission="'recycleOrder:awaitAudit:batchAuditComplete'" @click="handleBatchAuditComplete">
+                批量审核完成
+            </el-button>
+        </template>
+    </order-page>
 </template>
 
 <script setup>
-  import { ref, reactive } from 'vue';
-  import { ElMessageBox } from 'element-plus/es';
-  import { EleMessage } from 'ele-admin-plus/es';
-  import { DownloadOutlined } from '@/components/icons';
-  import OrderPage from '@/views/recycleOrder/components/order-page.vue';
-  import { useDictData } from '@/utils/use-dict-data';
-  import { useRouter } from 'vue-router';
+import { ref, reactive } from 'vue';
+import { DownloadOutlined } from '@/components/icons';
+import OrderPage from '@/views/recycleOrder/components/order-page-all.vue';
 
-  //订单日志
-  import orderLog from '@/views/recycleOrder/components/order-log.vue';
-  //用户标签
-  import userBindTag from '@/views/recycleOrder/components/user-bind-tag.vue';
-  //推送短信
-  import sendSMS from '@/views/recycleOrder/components/send-SMS.vue';
-  //短信记录
-  import orderSmsLog from '@/views/recycleOrder/components/order-sms-log.vue'
+defineOptions({ name: 'recycleOrderAwaitAudit' });
 
-  defineOptions({ name: 'recycleOrderAwaitAudit' });
+/** 页面组件实例 */
+const pageRef = ref(null);
 
-  let router = useRouter();
-  /** 页面组件实例 */
-  const pageRef = ref(null);
-
-  const pageConfig = reactive({
-    pageUrl: '',
-    exportUrl: '',
+const pageConfig = reactive({
+    pageUrl: '/order/orderInfo/audit/pageList',
+    exportUrl: '/order/orderInfo/audit/export',
     fileName: '待审核订单',
     cacheKey: 'awaitAuditTable'
-  });
+});
 
-  //批量初审
-  function handleBatchAudit() {
+//批量初审
+function handleBatchAudit() {
     pageRef.value?.operatBatch({
-      title: '确认批量初审?',
-      url: '/recycleOrder/batchAudit'
+        title: '确认批量初审?',
+        url: '/recycleOrder/batchAudit'
     });
-  }
+}
 
-  //批量审核完成
-  function handleBatchAuditComplete() {
+//批量审核完成
+function handleBatchAuditComplete() {
     pageRef.value?.operatBatch({
-      title: '确认批量审核完成?',
-      url: '/recycleOrder/batchAudit'
-    });
-  }
-  //订单详情
-  function toOrderDetail(row) {
-    router.push({ path: '/recycleOrder/detail', query: { id: row.postId } });
-  }
-
-  //订单日志
-  const orderLogRef = ref(null);
-  function openOrderLog(row) {
-    orderLogRef.value?.handleOpen(row);
-  }
-
-  //用户绑定标签
-  const userTagRef = ref(null);
-  function openEditUserTag(row) {
-    userTagRef.value?.handleOpen(row);
-  }
-
-  function messageBoxConfirm({ message, url, row }) {
-    ElMessageBox.confirm(message, '提示', {
-      confirmButtonText: '确定',
-      cancelButtonText: '关闭',
-      type: 'warning'
-    }).then(() => {
-      console.log(row, 'row');
+        title: '确认批量审核完成?',
+        url: '/recycleOrder/batchAudit'
     });
-  }
-
-  //取消订单
-  function cancelOrder(row) {
-    messageBoxConfirm({ message: '确认取消?', url: '', row });
-  }
-  //回退状态
-  function fallbackOrder(row) {
-    messageBoxConfirm({ message: '确认回退状态?', url: '', row });
-  }
-  //确认收货
-  function handleConfirmReceipt(row) {
-    messageBoxConfirm({ message: '确认收货?', url: '', row });
-  }
-  //短信记录
-  const smsLogRef = ref(null);
-  function handleSmsLog(row) {
-    smsLogRef.value?.handleOpen(row);
-  }
-  //推送短信
-  const smsRef = ref(null);
-  function handleSendSMS(row) {
-    smsRef.value?.handleOpen(row);
-  }
+}
 </script>

+ 32 - 161
src/views/recycleOrder/awaitDelivery/index.vue

@@ -1,177 +1,48 @@
 <template>
-  <order-page ref="pageRef" :pageConfig="pageConfig">
-    <template #toolbar>
-      <el-button
-        type="warning"
-        plain
-        v-permission="'recycleOrder:awaitDelivery:batchAudit'"
-        @click="handleBatchAudit"
-      >
-        批量初审
-      </el-button>
-      <el-button
-        type="success"
-        plain
-        v-permission="'recycleOrder:awaitDelivery:batchReceive'"
-        @click="handleBatchReceive()"
-      >
-        批量确认收货
-      </el-button>
-    </template>
-
-    <template #action="{ row }">
-      <div>
-        <el-button
-          type="success"
-          link
-          v-permission="'recycleOrder:awaitDelivery:detail'"
-          @click="toOrderDetail(row)"
-        >
-          [订单详情]
-        </el-button>
-        <el-button
-          type="warning"
-          link
-          v-permission="'recycleOrder:awaitDelivery:log'"
-          @click="openOrderLog(row)"
-        >
-          [订单日志]
-        </el-button>
-        <el-button
-          type="danger"
-          link
-          v-permission="'recycleOrder:awaitDelivery:cancel'"
-          @click="cancelOrder(row)"
-        >
-          [取消订单]
-        </el-button>
-        <el-button
-          type="primary"
-          link
-          v-permission="'recycleOrder:awaitDelivery:fallback'"
-          @click="fallbackOrder(row)"
-        >
-          [回退状态]
-        </el-button>
-        <el-button
-          type="warning"
-          link
-          v-permission="'recycleOrder:awaitDelivery:userTag'"
-          @click="openEditUserTag(row)"
-        >
-          [用户标签]
-        </el-button>
-        <el-button
-          type="success"
-          link
-          v-permission="'recycleOrder:awaitDelivery:receive'"
-          @click="handleBatchReceive(row)"
-        >
-          [确认收货]
-        </el-button>
-        <el-button
-          type="danger"
-          link
-          v-permission="'recycleOrder:awaitDelivery:interception'"
-          @click="applyForInterception(row)"
-        >
-          [申请拦截退回]
-        </el-button>
-      </div>
-    </template>
-
-    <order-log ref="orderLogRef" />
-    <userBindTag ref="userTagRef" />
-  </order-page>
+    <order-page ref="pageRef" :pageConfig="pageConfig" permissionKey="awaitDelivery">
+        <template #toolbar>
+            <el-button type="warning" plain v-permission="'recycleOrder:awaitDelivery:batchAudit'"
+                @click="handleBatchAudit">
+                批量初审
+            </el-button>
+            <el-button type="success" plain v-permission="'recycleOrder:awaitDelivery:batchReceive'"
+                @click="handleBatchReceive()">
+                批量确认收货
+            </el-button>
+        </template>
+    </order-page>
 </template>
 
 <script setup>
-  import { ref, reactive } from 'vue';
-  import { ElMessageBox } from 'element-plus/es';
-  import { EleMessage } from 'ele-admin-plus/es';
-  import { DownloadOutlined } from '@/components/icons';
-  import OrderPage from '@/views/recycleOrder/components/order-page.vue';
-  import { useDictData } from '@/utils/use-dict-data';
-  import { useRouter } from 'vue-router';
-
-  //订单日志
-  import orderLog from '@/views/recycleOrder/components/order-log.vue';
-  //用户标签
-  import userBindTag from '@/views/recycleOrder/components/user-bind-tag.vue';
+import { ref, reactive } from 'vue';
+import OrderPage from '@/views/recycleOrder/components/order-page-all.vue';
 
-  defineOptions({ name: 'recycleOrderawaitDelivery' });
+defineOptions({ name: 'recycleOrderawaitDelivery' });
 
-  let router = useRouter();
-  /** 页面组件实例 */
-  const pageRef = ref(null);
+/** 页面组件实例 */
+const pageRef = ref(null);
 
-  const pageConfig = reactive({
-    pageUrl: '',
-    exportUrl: '',
+const pageConfig = reactive({
+    pageUrl: '/order/orderInfo/received/pageList',
+    exportUrl: '/order/orderInfo/received/export',
     fileName: '待签收订单',
     cacheKey: 'awaitDeliveryTable'
-  });
+});
 
-  //批量初审
-  function handleBatchAudit() {
+//批量初审
+function handleBatchAudit() {
     pageRef.value?.operatBatch({
-      title: '确认批量审核?',
-      url: '/recycleOrder/batchAudit'
+        title: '确认批量审核?',
+        url: '/recycleOrder/batchAudit'
     });
-  }
+}
 
-  //批量取消订单
-  function handleBatchReceive(row) {
+//批量取消订单
+function handleBatchReceive(row) {
     pageRef.value?.operatBatch({
-      title: '确认收货?',
-      row,
-      url: '/recycleOrder/batchAudit'
-    });
-  }
-
-  //订单详情
-  function toOrderDetail(row) {
-    router.push({ path: '/recycleOrder/detail', query: { id: row.postId } });
-  }
-
-  //订单日志
-  const orderLogRef = ref(null);
-  function openOrderLog(row) {
-    console.log(row, orderLogRef.value, 'row');
-
-    orderLogRef.value?.handleOpen(row);
-  }
-
-  //用户绑定标签
-  const userTagRef = ref(null);
-  function openEditUserTag(row) {
-    userTagRef.value?.handleOpen(row);
-  }
-
-  function messageBoxConfirm({ message, url, row }) {
-    ElMessageBox.confirm(message, '提示', {
-      confirmButtonText: '确定',
-      cancelButtonText: '关闭',
-      type: 'warning'
-    }).then(() => {
-      console.log(row, 'row');
+        title: '确认收货?',
+        row,
+        url: '/recycleOrder/batchAudit'
     });
-  }
-
-  //取消订单
-  function cancelOrder(row) {
-    messageBoxConfirm({ message: '确认取消?', url: '', row });
-  }
-  //回退状态
-  function fallbackOrder(row) {
-    messageBoxConfirm({ message: '确认回退状态?', url: '', row });
-  }
-  //确认收货
-  function materialPickup(row) {
-    messageBoxConfirm({ message: '确认收货?', url: '', row });
-  }
-  //申请拦截退回
-  function applyForInterception(row) {
-    messageBoxConfirm({ message: '确认申请拦截退回?', url: '', row });
-  }
+}
 </script>

+ 35 - 184
src/views/recycleOrder/awaitPay/index.vue

@@ -1,201 +1,52 @@
 <template>
-  <order-page ref="pageRef" :pageConfig="pageConfig">
-    <template #toolbar>
-      <el-button
-        type="warning"
-        plain
-        v-permission="'recycleOrder:awaitPay:batchAudit'"
-        @click="handleBatchAudit"
-      >
-        批量初审
-      </el-button>
-      <el-button
-        type="success"
-        plain
-        v-permission="'recycleOrder:awaitPay:batchPayment'"
-        @click="handleBatchPayment"
-      >
-        批量支付书款
-      </el-button>
-    </template>
-
-    <template #action="{ row }">
-      <div>
-        <el-button
-          type="success"
-          link
-          v-permission="'recycleOrder:awaitPay:detail'"
-          @click="toOrderDetail(row)"
-        >
-          [订单详情]
-        </el-button>
-        <el-button
-          type="warning"
-          link
-          v-permission="'recycleOrder:awaitPay:log'"
-          @click="openOrderLog(row)"
-        >
-          [订单日志]
-        </el-button>
-        <el-button
-          type="primary"
-          link
-          v-permission="'recycleOrder:awaitPay:fallback'"
-          @click="fallbackOrder(row)"
-        >
-          [回退状态]
-        </el-button>
-        <el-button
-          type="danger"
-          link
-          v-permission="'recycleOrder:awaitPay:auditScreenshot'"
-          @click="handleAuditScreenshot(row)"
-        >
-          [审核截图]
-        </el-button>
-        <el-button
-          type="danger"
-          link
-          v-permission="'recycleOrder:awaitPay:payment'"
-          @click="handleBatchPayment(row)"
-        >
-          [支付书款]
-        </el-button>
-        <el-button
-          type="warning"
-          link
-          v-permission="'recycleOrder:awaitPay:userTag'"
-          @click="openEditUserTag(row)"
-        >
-          [用户标签]
-        </el-button>
-        <el-button
-          type="success"
-          link
-          v-permission="'recycleOrder:awaitPay:sendSMS'"
-          @click="handleSendSMS(row)"
-        >
-          [推送短信]
-        </el-button>
-        <el-button
-          type="info"
-          link
-          plain
-          v-permission="'recycleOrder:awaitPay:smsLog'"
-          @click="handleSmsLog(row)"
-        >
-          [短信记录]
-        </el-button>
-      </div>
-    </template>
-
-    <order-log ref="orderLogRef" />
-    <userBindTag ref="userTagRef" />
-    <audit-screenshot ref="auditScreenshotRef"></audit-screenshot>
-    <sendSMS ref="smsRef"></sendSMS>
-    <orderSmsLog ref="smsLogRef"></orderSmsLog>
-  </order-page>
+    <order-page ref="pageRef" :pageConfig="pageConfig" permissionKey="awaitPay">
+        <template #toolbar>
+            <el-button type="warning" plain v-permission="'recycleOrder:awaitPay:batchAudit'" @click="handleBatchAudit">
+                批量初审
+            </el-button>
+            <el-button type="success" plain v-permission="'recycleOrder:awaitPay:batchPayment'"
+                @click="handleBatchPayment">
+                批量支付书款
+            </el-button>
+        </template>
+    </order-page>
 </template>
 
 <script setup>
-  import { ref, reactive } from 'vue';
-  import { ElMessageBox } from 'element-plus/es';
-  import { EleMessage } from 'ele-admin-plus/es';
-  import { DownloadOutlined } from '@/components/icons';
-  import OrderPage from '@/views/recycleOrder/components/order-page.vue';
-  import { useDictData } from '@/utils/use-dict-data';
-  import { useRouter } from 'vue-router';
-
-  //订单日志
-  import orderLog from '@/views/recycleOrder/components/order-log.vue';
-  //用户标签
-  import userBindTag from '@/views/recycleOrder/components/user-bind-tag.vue';
-  //审核截图
-  import auditScreenshot from '@/views/recycleOrder/components/audit-screenshot.vue';
-  //推送短信
-  import sendSMS from '@/views/recycleOrder/components/send-SMS.vue';
-  //短信记录
-  import orderSmsLog from '@/views/recycleOrder/components/order-sms-log.vue';
+import { ref, reactive } from 'vue';
+import { ElMessageBox } from 'element-plus/es';
+import OrderPage from '@/views/recycleOrder/components/order-page-all.vue';
 
-  defineOptions({ name: 'recycleOrderAwaitPay' });
+defineOptions({ name: 'recycleOrderAwaitPay' });
 
-  let router = useRouter();
-  /** 页面组件实例 */
-  const pageRef = ref(null);
+/** 页面组件实例 */
+const pageRef = ref(null);
 
-  const pageConfig = reactive({
-    pageUrl: '',
-    exportUrl: '',
+const pageConfig = reactive({
+    pageUrl: '/order/orderInfo/pay/pageList',
+    exportUrl: '/order/orderInfo/pay/export',
     fileName: '待付款订单',
     cacheKey: 'awaitPayTable'
-  });
+});
 
-  //批量初审
-  function handleBatchAudit() {
+//批量初审
+function handleBatchAudit() {
     pageRef.value?.operatBatch({
-      title: '确认批量审核?',
-      url: '/recycleOrder/batchAudit'
+        title: '确认批量审核?',
+        url: '/recycleOrder/batchAudit'
     });
-  }
-  //批量支付书款
-  function handleBatchPayment(row) {
+}
+//批量支付书款
+function handleBatchPayment(row) {
     pageRef.value?.operatBatch({
-      title: '确认支付书款?',
-      row,
-      url: '/recycleOrder/batchAuditComplete'
+        title: '确认支付书款?',
+        row,
+        url: '/recycleOrder/batchAuditComplete'
     });
-  }
+}
 
-  //导出数据
-  function exportData() {
+//导出数据
+function exportData() {
     pageRef.value?.exportData('待付款订单');
-  }
-  //订单详情
-  function toOrderDetail(row) {
-    router.push({ path: '/recycleOrder/detail', query: { id: row.postId } });
-  }
-
-  //订单日志
-  const orderLogRef = ref(null);
-  function openOrderLog(row) {
-    console.log(row, orderLogRef.value, 'row');
-
-    orderLogRef.value?.handleOpen(row);
-  }
-
-  //用户绑定标签
-  const userTagRef = ref(null);
-  function openEditUserTag(row) {
-    userTagRef.value?.handleOpen(row);
-  }
-
-  function messageBoxConfirm({ message, url, row }) {
-    ElMessageBox.confirm(message, '提示', {
-      confirmButtonText: '确定',
-      cancelButtonText: '关闭',
-      type: 'warning'
-    }).then(() => {
-      console.log(row, 'row');
-    });
-  }
-
-  //回退状态
-  function fallbackOrder(row) {
-    messageBoxConfirm({ message: '确认回退状态?', url: '', row });
-  }
-  //审核截图
-  const auditScreenshotRef = ref(null);
-  function handleAuditScreenshot(row) {
-    auditScreenshotRef.value?.handleOpen(row);
-  }
-  //推送短信
-  const smsRef = ref(null);
-  function handleSendSMS(row) {
-    smsRef.value?.handleOpen(row);
-  }
-  //短信记录
-  const smsLogRef = ref(null);
-  function handleSmsLog(row) {
-    smsLogRef.value?.handleOpen(row);
-  }
+}
 </script>

+ 34 - 147
src/views/recycleOrder/awaitPickup/index.vue

@@ -1,164 +1,51 @@
 <template>
-  <order-page ref="pageRef" :pageConfig="pageConfig">
-    <template #toolbar>
-      <el-button
-        type="warning"
-        plain
-        v-permission="'recycleOrder:awaitPickup:batchAudit'"
-        @click="handleBatchAudit"
-      >
-        批量初审
-      </el-button>
-      <el-button
-        type="danger"
-        plain
-        v-permission="'recycleOrder:awaitPickup:batchCancel'"
-        @click="handleBatchCancel"
-      >
-        批量取消订单
-      </el-button>
-    </template>
-
-    <template #action="{ row }">
-      <div>
-        <el-button
-          type="success"
-          link
-          v-permission="'recycleOrder:awaitPickup:detail'"
-          @click="toOrderDetail(row)"
-        >
-          [订单详情]
-        </el-button>
-        <el-button
-          type="warning"
-          link
-          v-permission="'recycleOrder:awaitPickup:log'"
-          @click="openOrderLog(row)"
-        >
-          [订单日志]
-        </el-button>
-        <el-button
-          type="danger"
-          link
-          v-permission="'recycleOrder:awaitPickup:cancel'"
-          @click="cancelOrder(row)"
-        >
-          [取消订单]
-        </el-button>
-        <el-button
-          type="primary"
-          link
-          v-permission="'recycleOrder:awaitPickup:fallback'"
-          @click="fallbackOrder(row)"
-        >
-          [回退状态]
-        </el-button>
-        <el-button
-          type="success"
-          link
-          v-permission="'recycleOrder:awaitPickup:materialPickup'"
-          @click="materialPickup(row)"
-        >
-          [物流揽件]
-        </el-button>
-        <el-button
-          type="warning"
-          link
-          v-permission="'recycleOrder:awaitPickup:userTag'"
-          @click="openEditUserTag(row)"
-        >
-          [用户标签]
-        </el-button>
-      </div>
-    </template>
-
-    <order-log ref="orderLogRef" />
-    <userBindTag ref="userTagRef" />
-  </order-page>
+    <order-page ref="pageRef" :pageConfig="pageConfig" permissionKey="awaitPickup">
+        <template #toolbar>
+            <el-button type="warning" plain v-permission="'recycleOrder:awaitPickup:batchAudit'"
+                @click="handleBatchAudit">
+                批量初审
+            </el-button>
+            <el-button type="danger" plain v-permission="'recycleOrder:awaitPickup:batchCancel'"
+                @click="handleBatchCancel">
+                批量取消订单
+            </el-button>
+        </template>
+    </order-page>
 </template>
 
 <script setup>
-  import { ref, reactive } from 'vue';
-  import { ElMessageBox } from 'element-plus/es';
-  import { EleMessage } from 'ele-admin-plus/es';
-  import { DownloadOutlined } from '@/components/icons';
-  import OrderPage from '@/views/recycleOrder/components/order-page.vue';
-  import { useDictData } from '@/utils/use-dict-data';
-  import { useRouter } from 'vue-router';
-
-  //订单日志
-  import orderLog from '@/views/recycleOrder/components/order-log.vue';
-  //用户标签
-  import userBindTag from '@/views/recycleOrder/components/user-bind-tag.vue';
+import { ref, reactive } from 'vue';
+import { ElMessageBox } from 'element-plus/es';
+import OrderPage from '@/views/recycleOrder/components/order-page-all.vue';
+import { useRouter } from 'vue-router';
 
-  defineOptions({ name: 'recycleOrderawaitPickup' });
+defineOptions({ name: 'recycleOrderawaitPickup' });
 
-  let router = useRouter();
-  /** 页面组件实例 */
-  const pageRef = ref(null);
+let router = useRouter();
+/** 页面组件实例 */
+const pageRef = ref(null);
 
-  const pageConfig = reactive({
-    pageUrl: '',
-    exportUrl: '',
+const pageConfig = reactive({
+    pageUrl: '/order/orderInfo/pickUp/pageList',
+    exportUrl: '/order/orderInfo/pickUp/export',
     fileName: '待取件订单',
     cacheKey: 'awaitPickupTable'
-  });
+});
 
-  //批量初审
-  function handleBatchAudit() {
+//批量初审
+function handleBatchAudit() {
     pageRef.value?.operatBatch({
-      title: '确认批量审核?',
-      url: '/recycleOrder/batchAudit'
+        title: '确认批量审核?',
+        url: '/recycleOrder/batchAudit'
     });
-  }
+}
 
-  //批量取消订单
-  function handleBatchCancel() {
+//批量取消订单
+function handleBatchCancel() {
     pageRef.value?.operatBatch({
-      title: '确认批量取消订单?',
-      url: '/recycleOrder/batchAudit'
-    });
-  }
-
-  //订单详情
-  function toOrderDetail(row) {
-    router.push({ path: '/recycleOrder/detail', query: { id: row.postId } });
-  }
-
-  //订单日志
-  const orderLogRef = ref(null);
-  function openOrderLog(row) {
-    console.log(row, orderLogRef.value, 'row');
-
-    orderLogRef.value?.handleOpen(row);
-  }
-
-  //用户绑定标签
-  const userTagRef = ref(null);
-  function openEditUserTag(row) {
-    userTagRef.value?.handleOpen(row);
-  }
-
-  function messageBoxConfirm({ message, url, row }) {
-    ElMessageBox.confirm(message, '提示', {
-      confirmButtonText: '确定',
-      cancelButtonText: '关闭',
-      type: 'warning'
-    }).then(() => {
-      console.log(row, 'row');
+        title: '确认批量取消订单?',
+        url: '/recycleOrder/batchAudit'
     });
-  }
+}
 
-  //取消订单
-  function cancelOrder(row) {
-    messageBoxConfirm({ message: '确认取消?', url: '', row });
-  }
-  //回退状态
-  function fallbackOrder(row) {
-    messageBoxConfirm({ message: '确认回退状态?', url: '', row });
-  }
-  //物流揽件
-  function materialPickup(row) {
-    messageBoxConfirm({ message: '确认物流揽件?', url: '', row });
-  }
 </script>

+ 25 - 86
src/views/recycleOrder/awaitReview/index.vue

@@ -1,5 +1,9 @@
 <template>
-  <order-page ref="pageRef" :pageConfig="pageConfig">
+  <order-page
+    ref="pageRef"
+    :pageConfig="pageConfig"
+    permissionKey="awaitReview"
+  >
     <template #toolbar>
       <el-button
         type="warning"
@@ -21,82 +25,47 @@
         导出订单明细
       </el-button>
 
-      <el-radio-group v-model="status" style="position: relative; top: -3px;margin-left:20px">
-        <el-radio-button label="全部" value="1" />
-        <el-radio-button label="普通上门取件" value="2" />
+      <el-radio-group
+        v-model="status"
+        @change="handleExpressTypeChange"
+        style="position: relative; top: -3px; margin-left: 20px"
+      >
+        <el-radio-button label="全部" value="" />
+        <el-radio-button label="普通上门取件" value="1" />
       </el-radio-group>
     </template>
-
-    <template #action="{ row }">
-      <div>
-        <el-button
-          type="success"
-          link
-          v-permission="'recycleOrder:awaitReview:detail'"
-          @click="toOrderDetail(row)"
-        >
-          [订单详情]
-        </el-button>
-        <el-button
-          type="warning"
-          link
-          v-permission="'recycleOrder:awaitReview:log'"
-          @click="openOrderLog(row)"
-        >
-          [订单日志]
-        </el-button>
-        <el-button
-          type="danger"
-          link
-          v-permission="'recycleOrder:awaitReview:audit'"
-          @click="handleBatchAudit(row)"
-        >
-          [初步审核]
-        </el-button>
-        <el-button
-          type="warning"
-          link
-          v-permission="'recycleOrder:awaitReview:userTag'"
-          @click="openEditUserTag(row)"
-        >
-          [用户标签]
-        </el-button>
-      </div>
-    </template>
-
-    <order-log ref="orderLogRef" />
-    <userBindTag ref="userTagRef" />
   </order-page>
 </template>
 
 <script setup>
   import { ref, reactive } from 'vue';
   import { ElMessageBox } from 'element-plus/es';
-  import { EleMessage } from 'ele-admin-plus/es';
   import { DownloadOutlined } from '@/components/icons';
-  import OrderPage from '@/views/recycleOrder/components/order-page.vue';
-  import { useDictData } from '@/utils/use-dict-data';
+  import OrderPage from '@/views/recycleOrder/components/order-page-all.vue';
   import { useRouter } from 'vue-router';
 
-  //订单日志
-  import orderLog from '@/views/recycleOrder/components/order-log.vue';
-  //用户标签
-  import userBindTag from '@/views/recycleOrder/components/user-bind-tag.vue';
-
   defineOptions({ name: 'recycleOrderAwaitReview' });
 
   let router = useRouter();
   /** 页面组件实例 */
   const pageRef = ref(null);
-  const status = ref('1');
+  const status = ref('');
 
   const pageConfig = reactive({
-    pageUrl: '',
-    exportUrl: '',
+    pageUrl: '/order/orderInfo/firstCheck/pageList',
+    exportUrl: '/order/orderInfo/firstCheck/export',
     fileName: '待初审订单',
-    cacheKey: 'awaitReviewTable'
+    cacheKey: 'awaitReviewTable',
+    where: {
+      expressType: "",
+    }
   });
 
+  function handleExpressTypeChange(val) {
+    pageConfig.where.expressType = val;
+    pageRef.value?.reload({ expressType: val });
+  }
+
   //批量初审
   function handleBatchAudit(row) {
     pageRef.value?.operatBatch({
@@ -114,34 +83,4 @@
   function toOrderDetail(row) {
     router.push({ path: '/recycleOrder/detail', query: { id: row.postId } });
   }
-
-  //订单日志
-  const orderLogRef = ref(null);
-  function openOrderLog(row) {
-    console.log(row, orderLogRef.value, 'row');
-
-    orderLogRef.value?.handleOpen(row);
-  }
-
-  //用户绑定标签
-  const userTagRef = ref(null);
-  function openEditUserTag(row) {
-    userTagRef.value?.handleOpen(row);
-  }
-
-  function messageBoxConfirm({ message, url, row }) {
-    ElMessageBox.confirm(message, '提示', {
-      confirmButtonText: '确定',
-      cancelButtonText: '关闭',
-      type: 'warning'
-    }).then(() => {
-      console.log(row, 'row');
-    });
-  }
-
-  //申请订单理赔
-  const claimRef = ref(null);
-  function applyForOrderClaim(row) {
-    claimRef.value?.handleOpen(row);
-  }
 </script>

+ 31 - 161
src/views/recycleOrder/awaitSign/index.vue

@@ -1,177 +1,47 @@
 <template>
-  <order-page ref="pageRef" :pageConfig="pageConfig">
-    <template #toolbar>
-      <el-button
-        type="warning"
-        plain
-        v-permission="'recycleOrder:awaitSign:batchAudit'"
-        @click="handleBatchAudit"
-      >
-        批量初审
-      </el-button>
-      <el-button
-        type="danger"
-        plain
-        v-permission="'recycleOrder:awaitSign:batchCancel'"
-        @click="handleBatchCancel"
-      >
-        批量取消订单
-      </el-button>
-    </template>
-
-    <template #action="{ row }">
-      <div>
-        <el-button
-          type="success"
-          link
-          v-permission="'recycleOrder:awaitSign:detail'"
-          @click="toOrderDetail(row)"
-        >
-          [订单详情]
-        </el-button>
-        <el-button
-          type="warning"
-          link
-          v-permission="'recycleOrder:awaitSign:log'"
-          @click="openOrderLog(row)"
-        >
-          [订单日志]
-        </el-button>
-        <el-button
-          type="danger"
-          link
-          v-permission="'recycleOrder:awaitSign:cancel'"
-          @click="cancelOrder(row)"
-        >
-          [取消订单]
-        </el-button>
-        <el-button
-          type="primary"
-          link
-          v-permission="'recycleOrder:awaitSign:fallback'"
-          @click="fallbackOrder(row)"
-        >
-          [回退状态]
-        </el-button>
-        <el-button
-          type="success"
-          link
-          v-permission="'recycleOrder:awaitSign:materialPickup'"
-          @click="materialPickup(row)"
-        >
-          [物流签收]
-        </el-button>
-        <el-button
-          type="warning"
-          link
-          v-permission="'recycleOrder:awaitSign:userTag'"
-          @click="openEditUserTag(row)"
-        >
-          [用户标签]
-        </el-button>
-
-        <el-button
-          type="danger"
-          link
-          v-permission="'recycleOrder:awaitSign:interception'"
-          @click="applyForInterception(row)"
-        >
-          [申请拦截退回]
-        </el-button>
-      </div>
-    </template>
-
-    <order-log ref="orderLogRef" />
-    <userBindTag ref="userTagRef" />
-  </order-page>
+    <order-page ref="pageRef" :pageConfig="pageConfig" permissionKey="awaitSign">
+        <template #toolbar>
+            <el-button type="warning" plain v-permission="'recycleOrder:awaitSign:batchAudit'"
+                @click="handleBatchAudit">
+                批量初审
+            </el-button>
+            <el-button type="danger" plain v-permission="'recycleOrder:awaitSign:batchCancel'"
+                @click="handleBatchCancel">
+                批量取消订单
+            </el-button>
+        </template>
+    </order-page>
 </template>
 
 <script setup>
-  import { ref, reactive } from 'vue';
-  import { ElMessageBox } from 'element-plus/es';
-  import { EleMessage } from 'ele-admin-plus/es';
-  import { DownloadOutlined } from '@/components/icons';
-  import OrderPage from '@/views/recycleOrder/components/order-page.vue';
-  import { useDictData } from '@/utils/use-dict-data';
-  import { useRouter } from 'vue-router';
+import { ref, reactive } from 'vue';
+import OrderPage from '@/views/recycleOrder/components/order-page-all.vue';
 
-  //订单日志
-  import orderLog from '@/views/recycleOrder/components/order-log.vue';
-  //用户标签
-  import userBindTag from '@/views/recycleOrder/components/user-bind-tag.vue';
+defineOptions({ name: 'recycleOrderawaitSign' });
 
-  defineOptions({ name: 'recycleOrderawaitSign' });
+/** 页面组件实例 */
+const pageRef = ref(null);
 
-  let router = useRouter();
-  /** 页面组件实例 */
-  const pageRef = ref(null);
-
-  const pageConfig = reactive({
-    pageUrl: '',
-    exportUrl: '',
+const pageConfig = reactive({
+    pageUrl: '/order/orderInfo/sign/pageList',
+    exportUrl: '/order/orderInfo/sign/export',
     fileName: '待签收订单',
     cacheKey: 'awaitSignTable'
-  });
+});
 
-  //批量初审
-  function handleBatchAudit() {
+//批量初审
+function handleBatchAudit() {
     pageRef.value?.operatBatch({
-      title: '确认批量审核?',
-      url: '/recycleOrder/batchAudit'
+        title: '确认批量审核?',
+        url: '/recycleOrder/batchAudit'
     });
-  }
+}
 
-  //批量取消订单
-  function handleBatchCancel() {
+//批量取消订单
+function handleBatchCancel() {
     pageRef.value?.operatBatch({
-      title: '确认批量取消订单?',
-      url: '/recycleOrder/batchAudit'
+        title: '确认批量取消订单?',
+        url: '/recycleOrder/batchAudit'
     });
-  }
-
-  //订单详情
-  function toOrderDetail(row) {
-    router.push({ path: '/recycleOrder/detail', query: { id: row.postId } });
-  }
-
-  //订单日志
-  const orderLogRef = ref(null);
-  function openOrderLog(row) {
-    console.log(row, orderLogRef.value, 'row');
-
-    orderLogRef.value?.handleOpen(row);
-  }
-
-  //用户绑定标签
-  const userTagRef = ref(null);
-  function openEditUserTag(row) {
-    userTagRef.value?.handleOpen(row);
-  }
-
-  function messageBoxConfirm({ message, url, row }) {
-    ElMessageBox.confirm(message, '提示', {
-      confirmButtonText: '确定',
-      cancelButtonText: '关闭',
-      type: 'warning'
-    }).then(() => {
-      console.log(row, 'row');
-    });
-  }
-
-  //取消订单
-  function cancelOrder(row) {
-    messageBoxConfirm({ message: '确认取消?', url: '', row });
-  }
-  //回退状态
-  function fallbackOrder(row) {
-    messageBoxConfirm({ message: '确认回退状态?', url: '', row });
-  }
-  //物流签收
-  function materialPickup(row) {
-    messageBoxConfirm({ message: '确认物流签收?', url: '', row });
-  }
-  //申请拦截退回
-  function applyForInterception(row) {
-    messageBoxConfirm({ message: '确认申请拦截退回?', url: '', row });
-  }
+}
 </script>

+ 23 - 114
src/views/recycleOrder/cancelled/index.vue

@@ -1,128 +1,37 @@
 <template>
-  <order-page ref="pageRef" :pageConfig="pageConfig">
-    <template #toolbar>
-      <el-button
-        type="warning"
-        plain
-        class="ele-btn-icon"
-        v-permission="'recycleOrder:cancelled:batchAudit'"
-        @click="handleBatchAudit"
-      >
-        批量初审
-      </el-button>
-    </template>
-
-    <template #action="{ row }">
-      <div>
-        <el-button
-          color="#7728f5"
-          link
-          plain
-          v-permission="'recycleOrder:cancelled:applyForOrderRestore'"
-          @click="handleApplyForOrderRestore(row)"
-        >
-          [申请恢复订单]
-        </el-button>
-        <el-button
-          type="success"
-          link
-          v-permission="'recycleOrder:cancelled:detail'"
-          @click="toOrderDetail(row)"
-        >
-          [订单详情]
-        </el-button>
-        <el-button
-          type="warning"
-          link
-          v-permission="'recycleOrder:cancelled:log'"
-          @click="openOrderLog(row)"
-        >
-          [订单日志]
-        </el-button>
-        <el-button
-          type="warning"
-          link
-          v-permission="'recycleOrder:cancelled:userTag'"
-          @click="openEditUserTag(row)"
-        >
-          [用户标签]
-        </el-button>
-      </div>
-    </template>
-
-    <order-log ref="orderLogRef" />
-    <userBindTag ref="userTagRef" />
-  </order-page>
+    <order-page ref="pageRef" :pageConfig="pageConfig" permissionKey="cancelled">
+        <template #toolbar>
+            <el-button type="warning" plain class="ele-btn-icon" v-permission="'recycleOrder:cancelled:batchAudit'"
+                @click="handleBatchAudit">
+                批量初审
+            </el-button>
+        </template>
+    </order-page>
 </template>
 
 <script setup>
-  import { ref, reactive } from 'vue';
-  import { ElMessageBox } from 'element-plus/es';
-  import { EleMessage } from 'ele-admin-plus/es';
-  import { DownloadOutlined } from '@/components/icons';
-  import OrderPage from '@/views/recycleOrder/components/order-page.vue';
-  import { useDictData } from '@/utils/use-dict-data';
-  import { useRouter } from 'vue-router';
+import { ref, reactive } from 'vue';
+import { ElMessageBox } from 'element-plus/es';
+import OrderPage from '@/views/recycleOrder/components/order-page-all.vue';
 
-  //订单日志
-  import orderLog from '@/views/recycleOrder/components/order-log.vue';
-  //用户标签
-  import userBindTag from '@/views/recycleOrder/components/user-bind-tag.vue';
 
-  defineOptions({ name: 'recycleOrderCancelled' });
+defineOptions({ name: 'recycleOrderCancelled' });
 
-  let router = useRouter();
-  /** 页面组件实例 */
-  const pageRef = ref(null);
+/** 页面组件实例 */
+const pageRef = ref(null);
 
-  const pageConfig = reactive({
-    pageUrl: '',
-    exportUrl: '',
+const pageConfig = reactive({
+    pageUrl: '/order/orderInfo/canceled/pageList',
+    exportUrl: '/order/orderInfo/canceled/export',
     fileName: '已取消订单',
     cacheKey: 'recycleOrderCancelledTable'
-  });
+});
 
-  //批量初审
-  function handleBatchAudit() {
+//批量初审
+function handleBatchAudit() {
     pageRef.value?.operatBatch({
-      title: '确认审核?',
-      url: '/recycleOrder/batchAudit'
-    });
-  }
-
-  //订单详情
-  function toOrderDetail(row) {
-    router.push({ path: '/recycleOrder/detail', query: { id: row.postId } });
-  }
-
-  //订单日志
-  const orderLogRef = ref(null);
-  function openOrderLog(row) {
-    orderLogRef.value?.handleOpen(row);
-  }
-
-  //用户绑定标签
-  const userTagRef = ref(null);
-  function openEditUserTag(row) {
-    userTagRef.value?.handleOpen(row);
-  }
-
-  function messageBoxConfirm({ message, url, row }) {
-    ElMessageBox.confirm(message, '提示', {
-      confirmButtonText: '确定',
-      cancelButtonText: '关闭',
-      type: 'warning'
-    }).then(() => {
-      console.log(row, 'row');
-    });
-  }
-
-  //申请恢复订单
-  function handleApplyForOrderRestore(row) {
-    messageBoxConfirm({
-      message: '确认申请恢复订单?',
-      url: `/recycleOrder/applyForOrderRestore/${row.postId}`,
-      row
+        title: '确认审核?',
+        url: '/recycleOrder/batchAudit'
     });
-  }
+}
 </script>

+ 31 - 175
src/views/recycleOrder/completed/index.vue

@@ -1,190 +1,46 @@
 <template>
-  <order-page ref="pageRef" :pageConfig="pageConfig">
-    <template #toolbar>
-      <el-button
-        type="warning"
-        plain
-        class="ele-btn-icon"
-        v-permission="'recycleOrder:completed:batchAudit'"
-        @click="handleBatchAudit"
-      >
-        批量初审
-      </el-button>
-      <!-- <el-button
-        type="success"
-        plain
-        class="ele-btn-icon"
-        :icon="DownloadOutlined"
-        v-permission="'recycleOrder:completed:export'"
-        @click="exportData"
-      >
-        导出订单明细
-      </el-button> -->
-    </template>
-
-    <template #action="{ row }">
-      <div>
-        <el-button
-          type="success"
-          link
-          v-permission="'recycleOrder:completed:detail'"
-          @click="toOrderDetail(row)"
-        >
-          [订单详情]
-        </el-button>
-        <el-button
-          type="warning"
-          link
-          v-permission="'recycleOrder:completed:log'"
-          @click="openOrderLog(row)"
-        >
-          [订单日志]
-        </el-button>
-        <el-button
-          type="danger"
-          link
-          v-permission="'recycleOrder:completed:auditScreenshot'"
-          @click="handleAuditScreenshot(row)"
-        >
-          [审核截图]
-        </el-button>
-        <el-button
-          type="danger"
-          link
-          v-permission="'recycleOrder:completed:afterSalesPayment'"
-          @click="handleAfterSalesPayment(row)"
-        >
-          [售后补款]
-        </el-button>
-        <el-button
-          type="warning"
-          link
-          v-permission="'recycleOrder:completed:userTag'"
-          @click="openEditUserTag(row)"
-        >
-          [用户标签]
-        </el-button>
-        <el-button
-          type="success"
-          link
-          v-permission="'recycleOrder:completed:sendSMS'"
-          @click="handleSendSMS(row)"
-        >
-          [推送短信]
-        </el-button>
-        <el-button
-          color="#7728f5"
-          link
-          plain
-          v-permission="'recycleOrder:completed:applyForOrderClaim'"
-          @click="applyForOrderClaim(row)"
-        >
-          [申请订单理赔]
-        </el-button>
-      </div>
-    </template>
-
-    <order-log ref="orderLogRef" />
-    <userBindTag ref="userTagRef" />
-    <audit-screenshot ref="auditScreenshotRef"></audit-screenshot>
-    <afterSalesPayment ref="paymentRef" />
-    <applyforOrderClaim ref="claimRef"></applyforOrderClaim>
-    <sendSMS ref="smsRef"></sendSMS>
-  </order-page>
+    <order-page ref="pageRef" :pageConfig="pageConfig" permissionKey="completed">
+        <template #toolbar>
+            <el-button type="warning" plain class="ele-btn-icon" v-permission="'recycleOrder:completed:batchAudit'"
+                @click="handleBatchAudit">
+                批量初审
+            </el-button>
+            <el-button type="success" plain class="ele-btn-icon" :icon="DownloadOutlined"
+                v-permission="'recycleOrder:completed:export'" @click="exportData">
+                导出订单明细
+            </el-button>
+        </template>
+
+    </order-page>
 </template>
 
 <script setup>
-  import { ref, reactive } from 'vue';
-  import { ElMessageBox } from 'element-plus/es';
-  import { EleMessage } from 'ele-admin-plus/es';
-  import { DownloadOutlined } from '@/components/icons';
-  import OrderPage from '@/views/recycleOrder/components/order-page.vue';
-  import { useDictData } from '@/utils/use-dict-data';
-  import { useRouter } from 'vue-router';
+import { ref, reactive } from 'vue';
+import { DownloadOutlined } from '@/components/icons';
+import OrderPage from '@/views/recycleOrder/components/order-page-all.vue';
 
-  //订单日志
-  import orderLog from '@/views/recycleOrder/components/order-log.vue';
-  //用户标签
-  import userBindTag from '@/views/recycleOrder/components/user-bind-tag.vue';
-  //审核截图
-  import auditScreenshot from '@/views/recycleOrder/components/audit-screenshot.vue';
-  //售后补款
-  import afterSalesPayment from '@/views/recycleOrder/components/after-sales-payment.vue';
-  //申请订单理赔
-  import applyforOrderClaim from '@/views/recycleOrder/components/applyfor-order-claim.vue';
-  //推送短信
-  import sendSMS from '@/views/recycleOrder/components/send-SMS.vue';
+defineOptions({ name: 'recycleOrderCompleted' });
 
-  defineOptions({ name: 'recycleOrderCompleted' });
+/** 页面组件实例 */
+const pageRef = ref(null);
 
-  let router = useRouter();
-  /** 页面组件实例 */
-  const pageRef = ref(null);
-
-  const pageConfig = reactive({
-    pageUrl: '',
-    exportUrl: '',
+const pageConfig = reactive({
+    pageUrl: '/order/orderInfo/done/pageList',
+    exportUrl: '/order/orderInfo/done/export',
     fileName: '已完成订单',
     cacheKey: 'recycleOrderCompletedTable'
-  });
+});
 
-  //批量初审
-  function handleBatchAudit() {
+//批量初审
+function handleBatchAudit() {
     pageRef.value?.operatBatch({
-      title: '确认审核?',
-      url: '/recycleOrder/batchAudit'
+        title: '确认审核?',
+        url: '/recycleOrder/batchAudit'
     });
-  }
+}
 
-  //导出数据
-  function exportData() {
+//导出数据
+function exportData() {
     pageRef.value?.exportData('已完成订单');
-  }
-  //订单详情
-  function toOrderDetail(row) {
-    router.push({ path: '/recycleOrder/detail', query: { id: row.postId } });
-  }
-
-  //订单日志
-  const orderLogRef = ref(null);
-  function openOrderLog(row) {
-    orderLogRef.value?.handleOpen(row);
-  }
-
-  //用户绑定标签
-  const userTagRef = ref(null);
-  function openEditUserTag(row) {
-    userTagRef.value?.handleOpen(row);
-  }
-
-  function messageBoxConfirm({ message, url, row }) {
-    ElMessageBox.confirm(message, '提示', {
-      confirmButtonText: '确定',
-      cancelButtonText: '关闭',
-      type: 'warning'
-    }).then(() => {
-      console.log(row, 'row');
-    });
-  }
-
-  //审核截图
-  const auditScreenshotRef = ref(null);
-  function handleAuditScreenshot(row) {
-    auditScreenshotRef.value?.handleOpen(row);
-  }
-  //售后补款
-  const paymentRef = ref(null);
-  function handleAfterSalesPayment(row) {
-    paymentRef.value?.handleOpen(row);
-  }
-  //推送短信
-  const smsRef = ref(null);
-  function handleSendSMS(row) {
-    smsRef.value?.handleOpen(row);
-  }
-  //申请订单理赔
-  const claimRef = ref(null);
-  function applyForOrderClaim(row) {
-    claimRef.value?.handleOpen(row);
-  }
+}
 </script>

+ 76 - 0
src/views/recycleOrder/components/first-check-modal.vue

@@ -0,0 +1,76 @@
+<!-- 搜索表单 -->
+<template>
+    <simple-form-modal title="初审提示" :items="formItems" ref="editRef" :baseUrl="baseUrl"
+        @success="(data) => emit('success', data)"></simple-form-modal>
+</template>
+
+<script setup>
+import { reactive, ref, defineEmits, getCurrentInstance } from 'vue';
+import SimpleFormModal from '@/components/CommonPage/SimpleFormModal.vue';
+const { proxy } = getCurrentInstance();
+
+const emit = defineEmits(['success']);
+
+const formItems = computed(() => {
+    return [
+        {
+            type: 'dictSelect',
+            label: '快递',
+            prop: 'finalExpress',
+            props: { code: 'recycle_express_type' },
+            required: true
+        },
+        {
+            type: 'select',
+            label: '收货仓库',
+            prop: 'reason',
+            required: true,
+            options: godownList.value
+                .filter((v) => v.useStatus == 1)
+                .map((d) => {
+                    return { label: d.godownName, value: d.id };
+                })
+        },
+        {
+            type: 'dictRadio',
+            label: '审核结果',
+            prop: 'auditResult',
+            props: { code: 'recycle_audit_result' }
+        },
+        {
+            type: 'dictSelect',
+            label: '驳回原因',
+            prop: 'rejectReason',
+            props: { code: 'audit_reject_reason', class: 'custom-select' }
+        }
+    ];
+});
+
+const godownList = ref([]);
+async function getGodownList() {
+    return proxy.$http.post('/baseinfo/godown/searchGodown?name=');
+}
+
+//默认值
+const baseUrl = reactive({
+    add: '/user/mobileBlack/add',
+    update: '/user/mobileBlack/update'
+});
+const formData = ref({
+    auditResult: '1'
+});
+
+const editRef = ref(null);
+
+function handleOpen(data) {
+    editRef.value?.handleOpen(formData.value);
+
+    getGodownList().then((res) => {
+        if (res.data.code == 200) {
+            godownList.value = res.data.data;
+        }
+    });
+}
+
+defineExpose({ handleOpen });
+</script>

+ 128 - 0
src/views/recycleOrder/components/modify-address.vue

@@ -0,0 +1,128 @@
+<!-- 搜索表单 -->
+<template>
+  <simple-form-modal
+    title="修改地址"
+    :items="formItems"
+    ref="editRef"
+    :baseUrl="baseUrl"
+    @success="(data) => emit('success', data)"
+  >
+    <template #areaSelect>
+      <area-select v-model="formData.proCodes" />
+    </template>
+  </simple-form-modal>
+</template>
+
+<script setup>
+  import { reactive, ref, defineEmits, getCurrentInstance } from 'vue';
+  import SimpleFormModal from '@/components/CommonPage/SimpleFormModal.vue';
+  import AreaSelect from '@/components/CommonPage/AreaSelect.vue';
+  import request from '@/utils/request'
+  const { proxy } = getCurrentInstance();
+
+  const emit = defineEmits(['success']);
+
+  const formItems = computed(() => {
+    return [
+      {
+        type: 'input',
+        label: '发件人',
+        prop: 'sendName',
+        required: true
+      },
+      {
+        type: 'input',
+        label: '手机号',
+        prop: 'sendMobile',
+        itemProps: {
+          rules: [
+            { required: true, message: '请输入手机号', trigger: ['blur'] },
+            {
+              pattern: /^1[3-9]\d{9}$/,
+              message: '请输入正确的手机号',
+              trigger: ['change']
+            }
+          ]
+        }
+      },
+      {
+        type: 'regions',
+        label: '省市区',
+        prop: 'proCodes',
+        required: true,
+        props: {
+          cascaderProps: {
+            lazy: true,
+            lazyLoad: loadAreaData,
+            value: 'id',
+            label: 'district',
+            checkStrictly: false
+          }
+        }
+      },
+      {
+        type: 'textarea',
+        label: '详细地址',
+        prop: 'sendAddress',
+        required: true
+      }
+    ];
+  });
+
+  //默认值
+  const baseUrl = reactive({
+    add: '/user/mobileBlack/add',
+    update: '/user/mobileBlack/update'
+  });
+  const formData = ref({
+    proCodes: []
+  });
+
+  const editRef = ref(null);
+
+  function handleOpen(data) {
+    editRef.value?.handleOpen(formData.value);
+  }
+
+  // 加载区域数据
+  async function loadAreaData(node, resolve) {
+    const { level, value } = node;
+    try {
+      let data = [];
+      if (level === 0) {
+        // 加载省份数据
+        data = await getProvinceList();
+        console.log(data, 'data');
+      } else if (level === 1) {
+        // 加载城市数据
+        data = await getProvinceList(value);
+      } else if (level === 2) {
+        // 加载区县数据
+        data = await getProvinceList(value);
+        data.forEach((item) => {
+          item.leaf = true;
+        });
+      }
+      resolve(data);
+    } catch (error) {
+      console.error('加载地区数据失败:', error);
+      resolve([]);
+    }
+  }
+
+  function getProvinceList(id = 1) {
+    return new Promise((resolve, reject) => {
+      request
+        .get(`/baseinfo/districtInfo/findInfo/${id}`)
+        .then((res) => {
+          resolve(res.data.data);
+        })
+        .catch((err) => {
+          resolve([]);
+          reject(err);
+        });
+    });
+  }
+
+  defineExpose({ handleOpen });
+</script>

+ 35 - 22
src/views/recycleOrder/components/order-amount.vue

@@ -1,30 +1,43 @@
 <template>
-  <div class="recycle-order-number">
-    <div class="common-text">
-      <el-text>预估书款:</el-text>
-      <el-text type="danger">¥2.9</el-text>
+    <div class="recycle-order-number">
+        <div class="common-text">
+            <el-text>预估书款:</el-text>
+            <el-text type="danger">¥{{ row.expectMoney || 0 }}</el-text>
+        </div>
+        <div class="common-text">
+            <el-text>审核书款:</el-text>
+            <el-text v-if="!row.deliveryCode">待核算</el-text>
+            <el-text v-else>罗**(189****1233)</el-text>
+        </div>
+        <div class="common-text">
+            <el-text>订单类型:</el-text>
+            <el-text>{{ orderTypeText }}</el-text>
+        </div>
+        <div class="common-text">
+            <el-text>取件方式:</el-text>
+            <el-text>{{ expressTypeText }}</el-text>
+        </div>
     </div>
-    <div class="common-text">
-      <el-text>审核书款:</el-text>
-      <el-text v-if="!row.deliveryCode">待核算</el-text>
-      <el-text v-else>罗**(189****1233)</el-text>
-    </div>
-    <div class="common-text">
-      <el-text>订单类型:</el-text>
-      <el-text>普通订单</el-text>
-    </div>
-    <div class="common-text">
-      <el-text>取件方式:</el-text>
-      <el-text>上门取件</el-text>
-    </div>
-  </div>
 </template>
 
 <script setup>
-  const props = defineProps({
+import { useDictData } from '@/utils/use-dict-data';
+
+/** 字典数据 */
+const [orderTypeDicts, expressTypeDicts] = useDictData(['order_type', 'express_type']);
+
+const orderTypeText = computed(() => {
+    return orderTypeDicts.value.find(v => v.dictValue == props.row.orderType)?.dictLabel
+})
+
+const expressTypeText = computed(() => {
+    return expressTypeDicts.value.find(v => v.dictValue == props.row.expressType)?.dictLabel
+})
+
+const props = defineProps({
     row: {
-      type: Object,
-      default: () => {}
+        type: Object,
+        default: () => { }
     }
-  });
+});
 </script>

+ 13 - 7
src/views/recycleOrder/components/order-customer.vue

@@ -2,28 +2,34 @@
   <div class="recycle-order-number">
     <div class="common-text" v-if="!isReturn">
       <el-text>用户名:</el-text>
-      <el-text>77184923212132138219312323</el-text>
+      <el-text>{{ row.userNick }}</el-text>
     </div>
     <div class="common-text" v-if="isReturn">
       <el-text>昵称:</el-text>
-      <el-text>微信用户 <el-tag type="success" size="small">微信</el-tag> </el-text>
+      <el-text
+        >{{ row.userNick }}
+        <el-tag type="success" size="small">{{
+          row.orderFrom == 1 ? '微信' : '支付宝'
+        }}</el-tag>
+      </el-text>
     </div>
     <div class="common-text">
       <el-text>发件人:</el-text>
-      <el-text v-if="row.deliveryCode">暂无信息</el-text>
-      <el-text v-else>罗**(189****1233)</el-text>
+      <el-text v-if="!row.sendName">暂无信息</el-text>
+      <el-text v-else>{{ row.sendName }}({{ row.sendMobile }})</el-text>
     </div>
     <div class="common-text">
       <el-text>省市区:</el-text>
-      <el-text>广东省/广州市/白云区</el-text>
+      <el-text>{{ row.sendSsq || '-' }}</el-text>
     </div>
     <div class="common-text">
       <el-text>地址:</el-text>
-      <el-text>谭中街道文昌路2号科技大学文昌路校区宿舍B区</el-text>
+      <el-text>{{ row.sendAddress || '-' }}</el-text>
     </div>
     <div class="common-text" v-if="!isReturn">
       <el-text>标签:</el-text>
-      <el-text>暂无信息</el-text>
+      <el-text v-if="row.userTags">{{ row.userTags.join(',') }}</el-text>
+      <el-text v-else>暂无标签</el-text>
     </div>
   </div>
 </template>

+ 48 - 0
src/views/recycleOrder/components/order-detail.vue

@@ -0,0 +1,48 @@
+<!-- 编辑弹窗 -->
+<template>
+    <ele-modal form :width="1460" v-model="visible" title="用户详情" @open="handleOpen"
+        :body-style="{ maxHeight: '84vh', position: 'relative', overflow: 'auto', background: '#f8f8f8', padding: '0' }"
+        position="center">
+        <userDetail />
+
+        <template #footer>
+            <el-button @click="handleCancel" type="danger">关闭弹窗</el-button>
+        </template>
+    </ele-modal>
+</template>
+
+<script setup>
+import { ref, reactive, nextTick } from 'vue';
+import userDetail from '@/views/recycleOrder/detail/index.vue';
+import request from '@/utils/request';
+
+/** 弹窗是否打开 */
+const visible = defineModel({ type: Boolean });
+
+/** 关闭弹窗 */
+const handleCancel = () => {
+    visible.value = false;
+};
+
+/** 弹窗打开事件 */
+const handleOpen = (data) => {
+    visible.value = true;
+    nextTick(() => {
+        getOrderDetail(data.orderId);
+    });
+};
+
+//获取订单详情
+const orderDetail = ref(null);
+const getOrderDetail = (orderId) => {
+    request.get(`/order/orderInfo/getInfo/${orderId}`).then((res) => {
+        if (res.data.code === 200) {
+            orderDetail.value = res.data.data;
+        }
+    });
+};
+
+defineExpose({
+    handleOpen
+})
+</script>

+ 17 - 23
src/views/recycleOrder/components/order-modal.vue

@@ -1,37 +1,31 @@
 <!-- 编辑弹窗 -->
 <template>
-  <ele-modal
-    form
-    :width="460"
-    v-model="visible"
-    title="用户绑定标签"
-    @open="handleOpen"
-  >
-    <template #footer>
-      <el-button @click="handleCancel">关闭</el-button>
-      <el-button type="primary" @click="handleCancel">确定</el-button>
-    </template>
-  </ele-modal>
+    <ele-modal form :width="460" v-model="visible" title="用户绑定标签" @open="handleOpen">
+        <template #footer>
+            <el-button @click="handleCancel">关闭</el-button>
+            <el-button type="primary" @click="handleCancel">确定</el-button>
+        </template>
+    </ele-modal>
 </template>
 
 <script setup>
-  import { ref, reactive, nextTick } from 'vue';
+import { ref, reactive, nextTick } from 'vue';
 
-  /** 弹窗是否打开 */
-  const visible = defineModel({ type: Boolean });
+/** 弹窗是否打开 */
+const visible = defineModel({ type: Boolean });
 
-  /** 关闭弹窗 */
-  const handleCancel = () => {
+/** 关闭弹窗 */
+const handleCancel = () => {
     visible.value = false;
-  };
+};
 
-  /** 弹窗打开事件 */
-  const handleOpen = () => {
+/** 弹窗打开事件 */
+const handleOpen = () => {
     visible.value = true;
     nextTick(() => console.log('打开'));
-  };
+};
 
-  defineExpose({
+defineExpose({
     handleOpen
-  })
+})
 </script>

+ 55 - 38
src/views/recycleOrder/components/order-number.vue

@@ -1,49 +1,66 @@
 <template>
-  <div class="recycle-order-number">
-    <div class="common-text" v-if="!isReturn">
-      <el-text>订单号:</el-text>
-      <el-text type="danger">7718492</el-text>
-    </div>
-    <div class="common-text" v-if="isReturn">
-      <el-text>退回编号:</el-text>
-      <el-text type="danger">31231321321321</el-text>
-    </div>
-    <div class="common-text">
-      <el-text>快递单号:</el-text>
-      <el-text v-if="!row.deliveryCode">暂无信息</el-text>
-      <el-text v-else type="success">SF23930090911YHD</el-text>
-    </div>
-    <div class="common-text">
-      <el-text>快递公司:</el-text>
-      <el-text type="success">顺丰快递</el-text>
-    </div>
-    <template v-if="!isReturn">
-      <div class="common-text">
-        <el-text>订单来源:</el-text>
-        <el-text>微信小程序</el-text>
-      </div>
-      <div class="common-text">
-        <el-text>订单备注:</el-text>
-        <el-text>京东</el-text>
-      </div>
-    </template>
+    <div class="recycle-order-number">
+        <div class="common-text" v-if="!isReturn">
+            <el-text>订单号:</el-text>
+            <el-text type="danger">{{ row.orderId }}</el-text>
+        </div>
+        <div class="common-text" v-if="isReturn">
+            <el-text>退回编号:</el-text>
+            <el-text type="danger">31231321321321</el-text>
+        </div>
+        <div class="common-text">
+            <el-text>快递单号:</el-text>
+            <el-text v-if="!row.waybillCode">暂无信息</el-text>
+            <el-text v-else type="success">{{ row.waybillCode }}</el-text>
+        </div>
+        <div class="common-text">
+            <el-text>快递公司:</el-text>
+            <el-text :type="row.finalExpress != '0' ? 'success' : ''">{{ finalExpressText }}</el-text>
+        </div>
+        <template v-if="!isReturn">
+            <div class="common-text">
+                <el-text>订单来源:</el-text>
+                <el-text>{{ orderFormText }}</el-text>
+            </div>
+            <div class="common-text">
+                <el-text>订单备注:</el-text>
+                <el-text>{{ row.userExpress || '-' }}</el-text>
+            </div>
+        </template>
 
-    <div class="common-text" v-if="isReturn">
-      <el-text>回收订单:</el-text>
-      <el-text>2732781321</el-text>
+        <div class="common-text" v-if="isReturn">
+            <el-text>回收订单:</el-text>
+            <el-text>2732781321</el-text>
+        </div>
     </div>
-  </div>
 </template>
 
 <script setup>
-  const props = defineProps({
+import { useDictData } from '@/utils/use-dict-data';
+
+/** 字典数据 */
+const [expressDicts, orderFormDicts] = useDictData(['recycle_express_type', 'order_form']);
+
+
+const finalExpressText = computed(() => {
+    if (props.row.finalExpress == '0' || !props.row.finalExpress) {
+        return '暂无信息'
+    }
+    return expressDicts.value.find((d) => d.dictValue == props.row.finalExpress)?.dictLabel + '快递' || '暂无信息'
+})
+
+const orderFormText = computed(() => {
+    return orderFormDicts.value.find((d) => d.dictValue == props.row.orderFrom)?.dictLabel || '暂无信息'
+})
+
+const props = defineProps({
     row: {
-      type: Object,
-      default: () => {}
+        type: Object,
+        default: () => { }
     },
     isReturn: {
-      type: Boolean,
-      default: false
+        type: Boolean,
+        default: false
     }
-  });
+});
 </script>

+ 326 - 369
src/views/recycleOrder/components/order-page-all.vue

@@ -1,434 +1,391 @@
 <template>
-  <ele-page flex-table>
-    <!-- 搜索表单 -->
-    <order-search @search="reload" />
-    <ele-card :body-style="{ paddingTop: '8px' }" flex-table>
-      <!-- 表格 -->
-      <ele-pro-table
-        ref="tableRef"
-        row-key="postId"
-        :columns="columns"
-        :datasource="datasource"
-        :show-overflow-tooltip="true"
-        v-model:selections="selections"
-        highlight-current-row
-        :export-config="{ fileName: pageConfig.fileName }"
-        :cache-key="pageConfig.cacheKey"
-      >
-        <template #toolbar>
-          <slot name="toolbar"></slot>
-        </template>
+    <ele-page flex-table>
+        <!-- 搜索表单 -->
+        <order-search @search="reload" />
+        <ele-card :body-style="{ paddingTop: '8px' }" flex-table>
+            <!-- 表格 -->
+            <ele-pro-table ref="tableRef" row-key="postId" :columns="columns" :datasource="datasource"
+                :show-overflow-tooltip="true" v-model:selections="selections" highlight-current-row
+                :export-config="{ fileName: pageConfig.fileName }" :cache-key="pageConfig.cacheKey">
+                <template #toolbar>
+                    <slot name="toolbar"></slot>
+                </template>
 
-        <template #status="{ row }">
-          <dict-data
-            code="sys_normal_disable"
-            type="tag"
-            :model-value="row.status"
-          />
-        </template>
-        <template #orderNumber="{ row }">
-          <order-number :row="row"></order-number>
-        </template>
-        <template #customer="{ row }">
-          <order-customer :row="row"></order-customer>
-        </template>
-        <template #amount="{ row }">
-          <order-amount :row="row"></order-amount>
-        </template>
-        <template #time="{ row }">
-          <order-time :row="row"></order-time>
-        </template>
-        <template #remarks="{ row }">
-          <el-popover trigger="hover" width="240px">
-            <template #reference>
-              <el-button
-                :icon="Flag"
-                link
-                style="font-size: 20px"
-                @click="handleRemarks(row)"
-              >
-              </el-button>
-            </template>
-            <orderTimeline
-              :records="activities"
-              title="备注历史记录"
-            ></orderTimeline>
-          </el-popover>
-        </template>
+                <template #status="{ row }">
+                    <el-tag type="danger" v-if="row.cancelStatus == 1">已取消</el-tag>
+                    <dict-data v-else code="order_status" type="tag" :model-value="row.status" />
+                </template>
+                <template #orderNumber="{ row }">
+                    <order-number :row="row"></order-number>
+                </template>
+                <template #customer="{ row }">
+                    <order-customer :row="row"></order-customer>
+                </template>
+                <template #amount="{ row }">
+                    <order-amount :row="row"></order-amount>
+                </template>
+                <template #time="{ row }">
+                    <order-time :row="row"></order-time>
+                </template>
+                <template #remarks="{ row }">
+                    <el-popover trigger="hover" width="240px">
+                        <template #reference>
+                            <el-button :icon="Flag" link style="font-size: 20px" @click="handleRemarks(row)">
+                            </el-button>
+                        </template>
+                        <orderTimeline :records="activities" title="备注历史记录"></orderTimeline>
+                    </el-popover>
+                </template>
 
-        <template #action="{ row }">
-          <div>
-            <el-button
-              type="success"
-              link
-              v-permission="usePermission('detail')"
-              @click="toOrderDetail(row)"
-            >
-              [订单详情]
-            </el-button>
-            <el-button
-              type="warning"
-              link
-              v-permission="usePermission('log')"
-              @click="openOrderLog(row)"
-            >
-              [订单日志]
-            </el-button>
-            <el-button
-              type="danger"
-              link
-              v-if="row.status == 2"
-              v-permission="usePermission('audit')"
-              @click="cancelOrder(row)"
-            >
-              [初步审核]
-            </el-button>
-            <!-- 3 已初审-带上门取件 5已揽件-待签收 6已签收-待确认到货 -->
-            <el-button
-              type="danger"
-              link
-              v-if="[3, 5, 6].includes(row.status)"
-              v-permission="usePermission('cancel')"
-              @click="cancelOrder(row)"
-            >
-              [取消订单]
-            </el-button>
-            <!-- 3 已初审-带上门取件 5已揽件-待签收 6已签收-待确认到货 8待回收审核 9审核未提交 10待付款 -->
-            <el-button
-              type="primary"
-              link
-              v-if="[3, 5, 6, 8, 9, 10].includes(row.status)"
-              v-permission="usePermission('fallback')"
-              @click="fallbackOrder(row)"
-            >
-              [回退状态]
-            </el-button>
-            <el-button
-              type="success"
-              link
-              v-if="row.status == 3"
-              v-permission="usePermission('materialPickup')"
-              @click="materialPickup(row)"
-            >
-              [物流揽件]
-            </el-button>
-            <el-button
-              type="success"
-              link
-              v-if="row.status == 5"
-              v-permission="usePermission('receive')"
-              @click="materialPickup(row)"
-            >
-              [物流签收]
-            </el-button>
-            <el-button
-              type="success"
-              link
-              v-if="row.status == 6"
-              v-permission="usePermission('confirmReceipt')"
-              @click="materialPickup(row)"
-            >
-              [确认收货]
-            </el-button>
-            <el-button
-              type="success"
-              link
-              v-if="[8, 9].includes(row.status)"
-              v-permission="usePermission('arrivalAudit')"
-              @click="handleArrivalAudit(row)"
-            >
-              [到货审核]
-            </el-button>
-            <el-button
-              type="danger"
-              link
-              v-if="[8, 9, 10, 11].includes(row.status)"
-              v-permission="usePermission('auditScreenshot')"
-              @click="handleAuditScreenshot(row)"
-            >
-              [审核截图]
-            </el-button>
-            <el-button
-              type="danger"
-              link
-              v-if="row.status == 10"
-              v-permission="usePermission('payment')"
-              @click="handleBatchPayment(row)"
-            >
-              [支付书款]
-            </el-button>
-            <el-button
-              type="danger"
-              link
-              v-if="row.status == 11"
-              v-permission="usePermission('afterSalesPayment')"
-              @click="handleAfterSalesPayment(row)"
-            >
-              [售后补款]
-            </el-button>
-            <el-button
-              type="warning"
-              link
-              v-permission="usePermission('userTag')"
-              @click="openEditUserTag(row)"
-            >
-              [用户标签]
-            </el-button>
-            <el-button
-              type="success"
-              link
-              v-if="row.status == 2"
-              v-permission="usePermission('modifyAddress')"
-              @click="cancelOrder(row)"
-            >
-              [修改地址]
-            </el-button>
-            <el-button
-              type="success"
-              link
-              v-if="[8, 9, 10, 11].includes(row.status)"
-              v-permission="usePermission('sendSMS')"
-              @click="handleSendSMS(row)"
-            >
-              [推送短信]
-            </el-button>
-            <el-button
-              type="info"
-              link
-              v-if="[8, 9, 10].includes(row.status)"
-              v-permission="usePermission('smsLog')"
-              @click="handleSmsLog(row)"
-            >
-              [短信记录]
-            </el-button>
-            <el-button
-              color="#7728f5"
-              link
-              plain
-              v-if="row.status == 11"
-              v-permission="usePermission('applyForOrderClaim')"
-              @click="applyForOrderClaim(row)"
-            >
-              [申请订单理赔]
-            </el-button>
-            <el-button
-              color="#7728f5"
-              link
-              plain
-              v-if="[7].includes(row.status)"
-              v-permission="usePermission('applyForOrderRestore')"
-              @click="handleApplyForOrderRestore(row)"
-            >
-              [申请恢复订单]
-            </el-button>
-            <el-button
-              type="danger"
-              link
-              v-if="[5, 6].includes(row.status)"
-              v-permission="usePermission('interception')"
-              @click="applyForInterception(row)"
-            >
-              [申请拦截退回]
-            </el-button>
-          </div>
-        </template>
-      </ele-pro-table>
-    </ele-card>
+                <template #action="{ row }">
+                    <div>
+                        <el-button type="success" link v-permission="usePermission('detail')"
+                            @click="toOrderDetail(row)">
+                            [订单详情]
+                        </el-button>
+                        <el-button type="warning" link v-permission="usePermission('log')" @click="openOrderLog(row)">
+                            [订单日志]
+                        </el-button>
+                        <el-button type="danger" link v-if="row.status == 2" v-permission="usePermission('audit')"
+                            @click="handleFirstCheck(row)">
+                            [初步审核]
+                        </el-button>
+                        <!-- 3 已初审-带上门取件 5已揽件-待签收 6已签收-待确认到货 -->
+                        <el-button type="danger" link v-if="[3, 5, 6].includes(row.status)"
+                            v-permission="usePermission('cancel')" @click="cancelOrder(row)">
+                            [取消订单]
+                        </el-button>
+                        <!-- 3 已初审-带上门取件 5已揽件-待签收 6已签收-待确认到货 8待回收审核 9审核未提交 10待付款 -->
+                        <el-button type="primary" link v-if="[3, 5, 6, 8, 9, 10].includes(row.status)"
+                            v-permission="usePermission('fallback')" @click="fallbackOrder(row)">
+                            [回退状态]
+                        </el-button>
+                        <el-button type="success" link v-if="row.status == 3"
+                            v-permission="usePermission('materialPickup')" @click="materialPickup(row)">
+                            [物流揽件]
+                        </el-button>
+                        <el-button type="success" link v-if="row.status == 5" v-permission="usePermission('receive')"
+                            @click="materialPickup(row)">
+                            [物流签收]
+                        </el-button>
+                        <el-button type="success" link v-if="row.status == 6"
+                            v-permission="usePermission('confirmReceipt')" @click="materialPickup(row)">
+                            [确认收货]
+                        </el-button>
+                        <el-button type="success" link v-if="[8, 9].includes(row.status)"
+                            v-permission="usePermission('arrivalAudit')" @click="handleArrivalAudit(row)">
+                            [到货审核]
+                        </el-button>
+                        <el-button type="danger" link v-if="[8, 9, 10, 11].includes(row.status)"
+                            v-permission="usePermission('auditScreenshot')" @click="handleAuditScreenshot(row)">
+                            [审核截图]
+                        </el-button>
+                        <el-button type="danger" link v-if="row.status == 10" v-permission="usePermission('payment')"
+                            @click="handleBatchPayment(row)">
+                            [支付书款]
+                        </el-button>
+                        <el-button type="danger" link v-if="row.status == 11"
+                            v-permission="usePermission('afterSalesPayment')" @click="handleAfterSalesPayment(row)">
+                            [售后补款]
+                        </el-button>
+                        <el-button type="warning" link v-permission="usePermission('userTag')"
+                            @click="openEditUserTag(row)">
+                            [用户标签]
+                        </el-button>
+                        <el-button type="success" link v-if="row.status == 2"
+                            v-permission="usePermission('modifyAddress')" @click="handleModifyAddress(row)">
+                            [修改地址]
+                        </el-button>
+                        <el-button type="success" link v-if="[8, 9, 10, 11].includes(row.status)"
+                            v-permission="usePermission('sendSMS')" @click="handleSendSMS(row)">
+                            [推送短信]
+                        </el-button>
+                        <el-button type="info" link v-if="[8, 9, 10].includes(row.status)"
+                            v-permission="usePermission('smsLog')" @click="handleSmsLog(row)">
+                            [短信记录]
+                        </el-button>
+                        <el-button color="#7728f5" link plain v-if="row.status == 11"
+                            v-permission="usePermission('applyForOrderClaim')" @click="applyForOrderClaim(row)">
+                            [申请订单理赔]
+                        </el-button>
+                        <el-button color="#7728f5" link plain v-if="row.cancelStatus == 1"
+                            v-permission="usePermission('applyForOrderRestore')"
+                            @click="handleApplyForOrderRestore(row)">
+                            [申请恢复订单]
+                        </el-button>
+                        <el-button type="danger" link v-if="[5, 6].includes(row.status)"
+                            v-permission="usePermission('interception')" @click="applyForInterception(row)">
+                            [申请拦截退回]
+                        </el-button>
+                    </div>
+                </template>
+            </ele-pro-table>
+        </ele-card>
 
-    <slot></slot>
-    <orderRemarks ref="remarksRef" />
-  </ele-page>
+        <slot></slot>
+        <!-- 备注 -->
+        <orderRemarks ref="remarksRef" />
+        <!-- 初审 -->
+        <firstCheckModal ref="firstCheckRef" />
+        <!-- 修改地址 -->
+        <modifyAddress ref="modifyAddressRef" />
+        <!-- 订单日志 -->
+        <orderLog ref="orderLogRef" />
+        <!-- 用户标签 -->
+        <userBindTag ref="userTagRef" />
+        <!-- 用户详情 -->
+        <orderDetail ref="orderDetailRef" />
+    </ele-page>
 </template>
 
 <script setup>
-  import { ref, getCurrentInstance } from 'vue';
-  import { ElMessageBox } from 'element-plus/es';
-  import { EleMessage } from 'ele-admin-plus/es';
-  import { DownloadOutlined } from '@/components/icons';
-  import { Flag, ChatDotSquare } from '@element-plus/icons-vue';
-  import OrderSearch from '../components/order-search.vue';
-  import OrderNumber from '@/views/recycleOrder/components/order-number.vue';
-  import OrderCustomer from '@/views/recycleOrder/components/order-customer.vue';
-  import OrderAmount from '@/views/recycleOrder/components/order-amount.vue';
-  import OrderTime from '@/views/recycleOrder/components/order-time.vue';
-  import { useDictData } from '@/utils/use-dict-data';
-  import { download, toFormData, checkDownloadRes } from '@/utils/common';
-  import orderRemarks from '@/views/recycleOrder/components/order-remarks.vue';
-  import orderTimeline from '@/views/recycleOrder/components/order-timeline.vue';
+import { ref, getCurrentInstance } from 'vue';
+import { ElMessageBox } from 'element-plus/es';
+import { EleMessage } from 'ele-admin-plus/es';
+import { DownloadOutlined } from '@/components/icons';
+import { Flag, ChatDotSquare } from '@element-plus/icons-vue';
+import OrderSearch from '../components/order-search.vue';
+import OrderNumber from '@/views/recycleOrder/components/order-number.vue';
+import OrderCustomer from '@/views/recycleOrder/components/order-customer.vue';
+import OrderAmount from '@/views/recycleOrder/components/order-amount.vue';
+import OrderTime from '@/views/recycleOrder/components/order-time.vue';
+import { useDictData } from '@/utils/use-dict-data';
+import { download, toFormData, checkDownloadRes } from '@/utils/common';
+import orderRemarks from '@/views/recycleOrder/components/order-remarks.vue';
+import orderTimeline from '@/views/recycleOrder/components/order-timeline.vue';
+import firstCheckModal from '@/views/recycleOrder/components/first-check-modal.vue';
+import modifyAddress from '@/views/recycleOrder/components/modify-address.vue';
+//订单日志
+import orderLog from '@/views/recycleOrder/components/order-log.vue';
+//用户标签
+import userBindTag from '@/views/recycleOrder/components/user-bind-tag.vue';
+//用户详情
+import orderDetail from '@/views/recycleOrder/components/order-detail.vue';
 
-  let props = defineProps({
+
+let props = defineProps({
     pageConfig: {
-      type: Object,
-      default: () => ({
-        cacheKey: 'recycleOrderTable',
-        fileName: '回收订单查询'
-      })
+        type: Object,
+        default: () => ({
+            cacheKey: 'recycleOrderTable',
+            pageUrl: '/order/orderInfo/pageList',
+            fileName: '回收订单查询',
+            exportUrl: '/order/orderInfo/export',
+            where: {}
+        })
     },
-    pageUrl: { type: String, default: '/system/post/list' },
     exportUrl: { type: String, default: '/system/post/export' },
     permissionKey: { type: String, default: 'search' }
-  });
-  const usePermission = computed(() => (opts) => {
+});
+const usePermission = computed(() => (opts) => {
     return `recycleOrder:${props.permissionKey}:${opts}`;
-  });
+});
 
-  let { proxy } = getCurrentInstance();
-  /** 字典数据 */
-  const [statusDicts] = useDictData(['sys_normal_disable']);
+let { proxy } = getCurrentInstance();
+/** 字典数据 */
+const [statusDicts] = useDictData(['order_status']);
 
-  /** 表格实例 */
-  const tableRef = ref(null);
+/** 表格实例 */
+const tableRef = ref(null);
 
-  /** 表格列配置 */
-  const columns = ref([
+/** 表格列配置 */
+const columns = ref([
     {
-      type: 'selection',
-      columnKey: 'selection',
-      width: 50,
-      align: 'center',
-      fixed: 'left'
+        type: 'selection',
+        columnKey: 'selection',
+        width: 50,
+        align: 'center',
+        fixed: 'left'
     },
-    { label: '单号', prop: 'orderNumber', slot: 'orderNumber', minWidth: 180 },
+    { label: '单号', prop: 'orderNumber', slot: 'orderNumber', minWidth: 230 },
     { label: '客户', prop: 'customer', slot: 'customer', minWidth: 360 },
     { label: '金额', prop: 'amount', slot: 'amount', minWidth: 160 },
     {
-      label: '状态',
-      prop: 'status',
-      slot: 'status',
-      formatter: (row) =>
-        statusDicts.value.find((d) => d.dictValue == row.status)?.dictLabel
+        label: '状态',
+        prop: 'status',
+        slot: 'status',
+        width: '140'
     },
     { label: '时间', prop: 'time', slot: 'time', minWidth: 200 },
     { label: '备注', prop: 'remarks', slot: 'remarks' },
     {
-      columnKey: 'action',
-      label: '操作',
-      width: 180,
-      align: 'center',
-      slot: 'action',
-      hideInPrint: true,
-      hideInExport: true
+        columnKey: 'action',
+        label: '操作',
+        width: 180,
+        align: 'center',
+        slot: 'action',
+        hideInPrint: true,
+        hideInExport: true
     }
-  ]);
+]);
 
-  /** 表格选中数据 */
-  const selections = ref([]);
+/** 表格选中数据 */
+const selections = ref([]);
 
-  /** 当前编辑数据 */
-  const current = ref(null);
+/** 当前编辑数据 */
+const current = ref(null);
 
-  /** 是否显示编辑弹窗 */
-  const showEdit = ref(false);
+/** 是否显示编辑弹窗 */
+const showEdit = ref(false);
 
-  async function queryPage(params) {
-    const res = await proxy.$http.get(props.pageUrl, { params });
+async function queryPage(params) {
+    if (!props.pageConfig.pageUrl) return EleMessage.error('未配置页面请求URL');
+    const res = await proxy.$http.get(props.pageConfig.pageUrl, { params });
     if (res.data.code === 200) {
-      return res.data;
+        return res.data;
     }
     return Promise.reject(new Error(res.data.msg));
-  }
+}
 
-  /** 表格数据源 */
-  const datasource = ({ pages, where, orders }) => {
-    return queryPage({ ...where, ...orders, ...pages });
-  };
+/** 表格数据源 */
+const datasource = ({ pages, where, orders }) => {
+    let initParams = props.pageConfig?.where || {};
+    return queryPage({
+        ...where,
+        ...orders,
+        ...pages,
+        ...initParams
+    });
+};
 
-  /** 搜索 */
-  const reload = (where) => {
+/** 搜索 */
+const reload = (where) => {
     tableRef.value?.reload?.({ page: 1, where });
-  };
+};
 
-  /** 批量操作 */
-  const operatBatch = ({ row, url, title }) => {
+/** 批量操作 */
+const operatBatch = ({ row, url, title }) => {
     const rows = row == null ? selections.value : [row];
     if (!rows.length) {
-      EleMessage.error('请至少选择一条数据');
-      return;
+        EleMessage.error('请至少选择一条数据');
+        return;
     }
     title = title || '是否确认当前操作?';
     ElMessageBox.confirm(title, '提示', {
-      type: 'warning',
-      draggable: true
+        type: 'warning',
+        draggable: true
     })
-      .then(() => {
-        const loading = EleMessage.loading({
-          message: '请求中..',
-          plain: true
-        });
+        .then(() => {
+            const loading = EleMessage.loading({
+                message: '请求中..',
+                plain: true
+            });
 
-        proxy.$http
-          .delete(url)
-          .then(() => {
-            loading.close();
-            EleMessage.success('操作成功');
-            reload();
-          })
-          .catch((e) => {
-            loading.close();
-            EleMessage.error(e.message);
-          });
-      })
-      .catch(() => {});
-  };
+            proxy.$http
+                .delete(url)
+                .then(() => {
+                    loading.close();
+                    EleMessage.success('操作成功');
+                    reload();
+                })
+                .catch((e) => {
+                    loading.close();
+                    EleMessage.error(e.message);
+                });
+        })
+        .catch(() => { });
+};
 
-  /// 导出数据
-  async function exportPage(params, name) {
+/// 导出数据
+async function exportPage(params, name) {
+    if (!props.pageConfig.exportUrl)
+        return EleMessage.error('未配置导出的URL!');
     const res = await proxy.$http({
-      url: props.exportUrl,
-      method: 'POST',
-      data: toFormData(params),
-      responseType: 'blob'
+        url: props.pageConfig.exportUrl,
+        method: 'POST',
+        data: toFormData(params),
+        responseType: 'blob'
     });
     await checkDownloadRes(res);
     download(
-      res.data,
-      name ? `${name}_${Date.now()}.xlsx` : `post_${Date.now()}.xlsx`
+        res.data,
+        name ? `${name}_${Date.now()}.xlsx` : `post_${Date.now()}.xlsx`
     );
-  }
+}
 
-  /** 导出数据 */
-  const exportData = (name) => {
+//导出数据 进导出记录
+function exportRecord(params, name) {
+    if (!props.pageConfig.exportUrl)
+        return EleMessage.error('未配置导出的URL!');
+    return proxy.$http({
+        url: props.pageConfig.exportUrl,
+        method: 'POST',
+        data: params
+    }); // 导出记录
+}
+
+/** 导出数据 */
+const exportData = (name) => {
     const loading = EleMessage.loading({
-      message: '请求中..',
-      plain: true
+        message: '请求中..',
+        plain: true
     });
     tableRef.value?.fetch?.(({ where, orders }) => {
-      exportPage({ ...where, ...orders }, name)
-        .then(() => {
-          loading.close();
-        })
-        .catch((e) => {
-          loading.close();
-          EleMessage.error(e.message);
-        });
+        exportRecord({ ...where, ...orders }, name)
+            .then((res) => {
+                if (res.data.code === 200) {
+                    EleMessage.success('操作成功,请前往导出记录下载');
+                }
+                loading.close();
+            })
+            .catch((e) => {
+                loading.close();
+                EleMessage.error(e.message);
+            });
     });
-  };
+};
 
-  //修改备注
-  const remarksRef = ref(null);
-  function handleRemarks(row) {
+//修改备注
+const remarksRef = ref(null);
+function handleRemarks(row) {
     remarksRef.value?.handleOpen(row);
-  }
-  const activities = [
+}
+const activities = [
     {
-      content: 'Event start',
-      timestamp: '2018-04-15',
-      color: '#0bbd87',
-      icon: ChatDotSquare
+        content: 'Event start',
+        timestamp: '2018-04-15',
+        color: '#0bbd87',
+        icon: ChatDotSquare
     },
     {
-      content: 'Approved',
-      timestamp: '2018-04-13',
-      color: '#0bbd87',
-      icon: ChatDotSquare
+        content: 'Approved',
+        timestamp: '2018-04-13',
+        color: '#0bbd87',
+        icon: ChatDotSquare
     },
     {
-      content: 'Success',
-      timestamp: '2018-04-11',
-      color: '#0bbd87',
-      icon: ChatDotSquare
+        content: 'Success',
+        timestamp: '2018-04-11',
+        color: '#0bbd87',
+        icon: ChatDotSquare
     }
-  ];
+];
+
+//用户详情
+const orderDetailRef = ref(null);
+function toOrderDetail(row) {
+    orderDetailRef.value?.handleOpen(row);
+}
+//初审
+const firstCheckRef = ref(null);
+function handleFirstCheck(row) {
+    firstCheckRef.value?.handleOpen(row);
+}
+//修改地址
+const modifyAddressRef = ref(null);
+function handleModifyAddress(row) {
+    modifyAddressRef.value?.handleOpen(row);
+}
+//订单日志
+const orderLogRef = ref(null);
+function openOrderLog(row) {
+    orderLogRef.value?.handleOpen(row);
+}
+//用户标签
+const userTagRef = ref(null);
+function openEditUserTag(row) {
+    userTagRef.value?.handleOpen(row);
+}
 
-  defineExpose({ reload, exportData, operatBatch });
+defineExpose({ reload, exportData, operatBatch });
 </script>

+ 113 - 93
src/views/recycleOrder/components/order-search.vue

@@ -1,125 +1,145 @@
 <!-- 搜索表单 -->
 <template>
-  <ele-card :body-style="{ paddingBottom: '8px' }">
-    <ProSearch :columns="columns" v-model:form="form" ref="searchRef">
-      <el-col :span="6" style="min-width: 160px">
-        <el-button style="width: 80px" type="primary" plain @click="search"
-          >查询</el-button
-        >
-        <el-button style="width: 80px" type="info" @click="reset"
-          >重置</el-button
-        >
-      </el-col>
-    </ProSearch>
-  </ele-card>
+    <ele-card :body-style="{ paddingBottom: '8px' }">
+        <ProSearch :items="columns" ref="searchRef" :isShowLabel="false" @search="search">
+            <el-col :span="6" style="min-width: 160px">
+                <el-button style="width: 80px" type="primary" plain @click="search">查询</el-button>
+                <el-button style="width: 80px" type="info" @click="reset">重置</el-button>
+            </el-col>
+        </ProSearch>
+    </ele-card>
 </template>
 
 <script setup>
-  import { reactive, ref, defineEmits } from 'vue';
-  import { useFormData } from '@/utils/use-form-data';
-  import ProSearch from '@/components/CommonPage/ProSearch.vue';
+import { reactive, ref, defineEmits } from 'vue';
+import { useFormData } from '@/utils/use-form-data';
+import ProSearch from '@/components/CommonPage/ProSearch2.vue';
+import request from '@/utils/request';
 
-  const emit = defineEmits(['search']);
-  const columns = reactive([
-    { tag: 'el-input', label: '发件人名称', prop: 'senderName', span: 4 },
-    { tag: 'el-input', label: '发件人电话', prop: 'senderPhone', span: 4 },
+const emit = defineEmits(['search']);
+const columns = ref([
     {
-      tag: 'el-input',
-      label: '发件人地址(仅查询7天内数据)',
-      prop: 'senderAddress',
-      span: 5
+        type: 'input',
+        label: '发件人名称',
+        prop: 'sendNameLike'
     },
-    { tag: 'el-input', label: '用户名', prop: 'userName', span: 4 },
     {
-      tag: 'el-input',
-      label: '搜索备注关键字',
-      prop: 'searchRemarks',
-      span: 4
+        type: 'input',
+        label: '发件人电话',
+        prop: 'sendMobileLike'
     },
     {
-      tag: 'el-select',
-      label: '收货仓库',
-      prop: 'receivingWarehouse',
-      span: 3
+        type: 'input',
+        label: '发件人地址(仅查询7天内数据)',
+        prop: 'sendAddressLike',
+        colProps: { span: 5 }
     },
-    { tag: 'el-select', label: '全部订单', prop: 'allOrders', span: 3 },
     {
-      tag: 'el-select',
-      label: '物流公司',
-      prop: 'logisticsCompany',
-      span: 3
+        type: 'input',
+        label: '用户名',
+        prop: 'userName'
     },
-    { tag: 'el-select', label: '全部方式', prop: 'allMethods', span: 3 },
     {
-      tag: 'el-date-picker',
-      label: '建单时间(开始时间)',
-      prop: 'orderStartTime',
-      span: 3,
-      tagAttrs: {
-        valueFormat: 'YYYY-MM-DD',
-      }
+        type: 'input',
+        label: '搜索备注关键字',
+        prop: 'userRemarkLike'
     },
     {
-      tag: 'el-date-picker',
-      label: '建单时间(结束时间)',
-      prop: 'orderEndTime',
-      span: 4,
-      tagAttrs: {
-        valueFormat: 'YYYY-MM-DD',
-      }
+        type: 'select',
+        label: '收货仓库',
+        prop: 'godownId',
+        options: [],
+        colProps: { span: 3 },
     },
     {
-      tag: 'el-date-picker',
-      label: '建单时间(开始时间)',
-      prop: 'orderStartTime',
-      span: 4,
-      tagAttrs: {
-        valueFormat: 'YYYY-MM-DD',
-      }
+        type: 'dictSelect',
+        label: '订单类型',
+        prop: 'orderType',
+        props: { code: 'order_type' }
     },
     {
-      tag: 'el-date-picker',
-      label: '建单时间(结束时间)',
-      prop: 'orderEndTime',
-      span: 4,
-      tagAttrs: {
-        valueFormat: 'YYYY-MM-DD',
-      }
+        type: 'dictSelect',
+        label: '物流公司',
+        prop: 'userExpress',
+        props: { code: 'recycle_express_type' }
     },
     {
-      tag: 'el-input',
-      label: '订单编号(多个以中文逗号、空格或换行分割)',
-      prop: 'orderNumber',
-      span: 6
+        type: 'dictSelect',
+        label: '全部方式',
+        prop: 'expressType',
+        props: { code: 'express_type' }
     },
     {
-      tag: 'el-input',
-      label: '物流单号(多个以中文逗号、空格或换行分割)',
-      prop: 'logisticsNumber',
-      span: 6
+        type: 'datetime',
+        label: '建单时间(开始时间)',
+        prop: 'createTimeStart',
+        props: {
+            format: 'YYYY-MM-DD HH:mm:ss',
+            valueFormat: 'YYYY-MM-DD HH:mm:ss'
+        }
+    },
+    {
+        type: 'datetime',
+        label: '建单时间(结束时间)',
+        prop: 'createTimeEnd',
+        props: {
+            valueFormat: 'YYYY-MM-DD HH:mm:ss'
+        }
+    },
+    {
+        type: 'datetime',
+        label: '提交时间(开始时间)',
+        prop: 'orderTimeStart',
+        props: {
+            valueFormat: 'YYYY-MM-DD HH:mm:ss'
+        }
+    },
+    {
+        type: 'datetime',
+        label: '提交时间(结束时间)',
+        prop: 'orderTimeEnd',
+        props: {
+            type: 'datetime',
+            valueFormat: 'YYYY-MM-DD HH:mm:ss'
+        }
+    },
+    {
+        type: 'input',
+        label: '订单编号(多个以中文逗号、空格或换行分割)',
+        prop: 'orderIds',
+        colProps: { span: 7 }
+    },
+    {
+        type: 'input',
+        label: '物流单号(多个以中文逗号、空格或换行分割)',
+        prop: 'waybillCodes',
+        colProps: { span: 7 }
     }
-  ]);
-
-  const initKeys = {};
-  for (let i = 0; i < columns.length; i++) {
-    initKeys[columns[i].prop] = '';
-  }
+]);
 
-  /** 表单数据 */
-  const [form, resetFields] = useFormData({
-    ...initKeys
-  });
+//获取仓库数据
+function getGodownList() {
+    request.post('/baseinfo/godown/searchGodown?name=').then((res) => {
+        if (res.data.code === 200) {
+            let item = columns.value.find((item) => item.prop === 'godownId');
+            item.options = res.data.data.map((item) => ({
+                label: item.godownName,
+                value: item.id
+            }));
+        }
+    });
+}
+getGodownList()
 
-  const searchRef = ref(null);
-  /** 搜索 */
-  const search = () => {
-    console.log(form, '[form]');
-    emit('search', { ...form });
-  };
+const searchRef = ref(null);
+/** 搜索 */
+const search = (data) => {
+    emit('search', { ...data });
+};
 
-  /** 重置 */
-  const reset = () => {
+/** 重置 */
+const reset = () => {
     resetFields();
     search();
-  };
+};
 </script>

+ 22 - 17
src/views/recycleOrder/components/order-time.vue

@@ -1,25 +1,30 @@
 <template>
-  <div class="recycle-order-number">
-    <div class="common-text">
-      <el-text>建单:</el-text>
-      <el-text>2024-11-08 21:09:19</el-text>
+    <div class="recycle-order-number">
+        <div class="common-text">
+            <el-text>建单:</el-text>
+            <el-text>{{ row.createTime }}</el-text>
+        </div>
+        <div class="common-text">
+            <el-text>提交:</el-text>
+            <el-text>{{ row.orderTime || '-' }}</el-text>
+        </div>
+        <div class="common-text">
+            <el-text>预约:</el-text>
+            <el-text>{{ formatTime }}</el-text>
+        </div>
     </div>
-    <div class="common-text">
-      <el-text>提交:</el-text>
-      <el-text>2024-11-08 21:09:19</el-text>
-    </div>
-    <div class="common-text">
-      <el-text>预约:</el-text>
-      <el-text>2024-11-08 21:09:19</el-text>
-    </div>
-  </div>
 </template>
 
 <script setup>
-  const props = defineProps({
+const props = defineProps({
     row: {
-      type: Object,
-      default: () => {}
+        type: Object,
+        default: () => { }
     }
-  });
+});
+
+const formatTime = computed(() => {
+    if (!props.row.schedulePickupStartTime) return '-'
+    return props.row.schedulePickupStartTime + '-' + props.row.schedulePickupEndTime.split(' ')[1];
+});
 </script>

+ 26 - 34
src/views/recycleOrder/detail/index.vue

@@ -1,41 +1,33 @@
 <template>
-  <ele-page class="order-detail">
-    <ele-card class="order-status" header="订单状态">
-      <orderStatus />
-    </ele-card>
-    <ele-card
-      class="order-base"
-      header="订单基本信息"
-      :body-style="{ paddingTop: '0' }"
-    >
-      <orderBaseInfo />
-    </ele-card>
-    <ele-card
-      class="order-book-list"
-      header="图书清单"
-      :body-style="{ paddingTop: '0' }"
-    >
-      <orderBookList />
-    </ele-card>
+    <ele-page class="order-detail">
+        <ele-card class="order-status" header="订单状态">
+            <orderStatus />
+        </ele-card>
+        <ele-card class="order-base" header="订单基本信息" :body-style="{ paddingTop: '0' }">
+            <orderBaseInfo />
+        </ele-card>
+        <ele-card class="order-book-list" header="图书清单" :body-style="{ paddingTop: '0' }">
+            <orderBookList />
+        </ele-card>
 
-    <ele-card class="order-service" header="订单服务">
-      <el-tag size="large" style="margin-right: 20px">免费退回</el-tag>
-      <el-tag size="large" style="margin-right: 20px">24小时验</el-tag>
-      <el-tag size="large">急速打款</el-tag>
-    </ele-card>
+        <ele-card class="order-service" header="订单服务">
+            <el-tag size="large" style="margin-right: 20px">免费退回</el-tag>
+            <el-tag size="large" style="margin-right: 20px">24小时验</el-tag>
+            <el-tag size="large">急速打款</el-tag>
+        </ele-card>
 
-    <ele-card class="order-note" header="审核计价说明">
-      品相良好:按原始回收折扣计价;品相一般:按原始回收折扣*0.7计价;品相极差:不收。
-    </ele-card>
-    <ele-card class="order-freight" header="物流动态">
-      <orderFreightStatus />
-    </ele-card>
-  </ele-page>
+        <ele-card class="order-note" header="审核计价说明">
+            品相良好:按原始回收折扣计价;品相一般:按原始回收折扣*0.7计价;品相极差:不收。
+        </ele-card>
+        <ele-card class="order-freight" header="物流动态">
+            <orderFreightStatus />
+        </ele-card>
+    </ele-page>
 </template>
 
 <script setup>
-  import orderStatus from '@/views/recycleOrder/detail/order-status.vue';
-  import orderBaseInfo from '@/views/recycleOrder/detail/order-base-info.vue';
-  import orderFreightStatus from '@/views/recycleOrder/detail/order-freight-status.vue';
-  import orderBookList from '@/views/recycleOrder/detail/order-book-list.vue'
+import orderStatus from '@/views/recycleOrder/detail/order-status.vue';
+import orderBaseInfo from '@/views/recycleOrder/detail/order-base-info.vue';
+import orderFreightStatus from '@/views/recycleOrder/detail/order-freight-status.vue';
+import orderBookList from '@/views/recycleOrder/detail/order-book-list.vue'
 </script>

+ 22 - 86
src/views/recycleOrder/failedAudit/index.vue

@@ -1,99 +1,35 @@
 <template>
-  <order-page ref="pageRef" :pageConfig="pageConfig">
-    <template #toolbar>
-      <el-button
-        type="warning"
-        plain
-        class="ele-btn-icon"
-        v-permission="'recycleOrder:failedAudit:batchAudit'"
-        @click="handleBatchAudit"
-      >
-        批量初审
-      </el-button>
-    </template>
-
-    <template #action="{ row }">
-      <div>
-        <el-button
-          type="success"
-          link
-          v-permission="'recycleOrder:failedAudit:detail'"
-          @click="toOrderDetail(row)"
-        >
-          [订单详情]
-        </el-button>
-        <el-button
-          type="warning"
-          link
-          v-permission="'recycleOrder:failedAudit:log'"
-          @click="openOrderLog(row)"
-        >
-          [订单日志]
-        </el-button>
-        <el-button
-          type="warning"
-          link
-          v-permission="'recycleOrder:failedAudit:userTag'"
-          @click="openEditUserTag(row)"
-        >
-          [用户标签]
-        </el-button>
-      </div>
-    </template>
-
-    <order-log ref="orderLogRef" />
-    <userBindTag ref="userTagRef" />
-  </order-page>
+    <order-page ref="pageRef" :pageConfig="pageConfig" permissionKey="failedAudit">
+        <template #toolbar>
+            <el-button type="warning" plain class="ele-btn-icon" v-permission="'recycleOrder:failedAudit:batchAudit'"
+                @click="handleBatchAudit">
+                批量初审
+            </el-button>
+        </template>
+    </order-page>
 </template>
 
 <script setup>
-  import { ref, reactive } from 'vue';
-  import { ElMessageBox } from 'element-plus/es';
-  import { EleMessage } from 'ele-admin-plus/es';
-  import { DownloadOutlined } from '@/components/icons';
-  import OrderPage from '@/views/recycleOrder/components/order-page.vue';
-  import { useDictData } from '@/utils/use-dict-data';
-  import { useRouter } from 'vue-router';
-
-  //订单日志
-  import orderLog from '@/views/recycleOrder/components/order-log.vue';
-  //用户标签
-  import userBindTag from '@/views/recycleOrder/components/user-bind-tag.vue';
+import { ref, reactive } from 'vue';
+import OrderPage from '@/views/recycleOrder/components/order-page-all.vue';
 
-  defineOptions({ name: 'recycleOrderFailedAudit' });
+defineOptions({ name: 'recycleOrderFailedAudit' });
 
-  let router = useRouter();
-  /** 页面组件实例 */
-  const pageRef = ref(null);
+/** 页面组件实例 */
+const pageRef = ref(null);
 
-  const pageConfig = reactive({
-    pageUrl: '',
-    exportUrl: '',
+const pageConfig = reactive({
+    pageUrl: '/order/orderInfo/refused/pageList',
+    exportUrl: '/order/orderInfo/refused/export',
     fileName: '初审未通过',
     cacheKey: 'failedAuditTable'
-  });
+});
 
-  //批量初审
-  function handleBatchAudit() {
+//批量初审
+function handleBatchAudit() {
     pageRef.value?.operatBatch({
-      title: '确认审核?',
-      url: '/recycleOrder/batchAudit'
+        title: '确认审核?',
+        url: '/recycleOrder/batchAudit'
     });
-  }
-  //订单详情
-  function toOrderDetail(row) {
-    router.push({ path: '/recycleOrder/detail', query: { id: row.postId } });
-  }
-
-  //订单日志
-  const orderLogRef = ref(null);
-  function openOrderLog(row) {
-    orderLogRef.value?.handleOpen(row);
-  }
-
-  //用户绑定标签
-  const userTagRef = ref(null);
-  function openEditUserTag(row) {
-    userTagRef.value?.handleOpen(row);
-  }
+}
 </script>

+ 135 - 191
src/views/recycleOrder/search/index.vue

@@ -1,228 +1,172 @@
 <template>
-  <order-page ref="pageRef" :pageConfig="pageConfig">
-    <template #toolbar>
-      <el-button
-        type="warning"
-        plain
-        class="ele-btn-icon"
-        v-permission="'recycleOrder:search:batchAudit'"
-        @click="handleBatchAudit"
-      >
-        批量初审
-      </el-button>
-      <el-button
-        type="success"
-        plain
-        class="ele-btn-icon"
-        :icon="DownloadOutlined"
-        v-permission="'recycleOrder:search:export'"
-        @click="exportData"
-      >
-        导出订单明细
-      </el-button>
-    </template>
+    <order-page ref="pageRef" :pageConfig="pageConfig">
+        <template #toolbar>
+            <el-button type="warning" plain class="ele-btn-icon" v-permission="'recycleOrder:search:batchAudit'"
+                @click="handleBatchAudit">
+                批量初审
+            </el-button>
+            <el-button type="success" plain class="ele-btn-icon" :icon="DownloadOutlined"
+                v-permission="'recycleOrder:search:export'" @click="exportData">
+                导出订单明细
+            </el-button>
+        </template>
 
-    <template #action="{ row }">
-      <div>
-        <el-button
-          type="success"
-          link
-          v-permission="'recycleOrder:search:detail'"
-          @click="toOrderDetail(row)"
-        >
-          [订单详情]
-        </el-button>
-        <el-button
-          type="warning"
-          link
-          v-permission="'recycleOrder:search:log'"
-          @click="openOrderLog(row)"
-        >
-          [订单日志]
-        </el-button>
-        <el-button
-          type="danger"
-          link
-          v-permission="'recycleOrder:search:cancel'"
-          @click="cancelOrder(row)"
-        >
-          [取消订单]
-        </el-button>
-        <el-button
-          type="primary"
-          link
-          v-permission="'recycleOrder:search:fallback'"
-          @click="fallbackOrder(row)"
-        >
-          [回退状态]
-        </el-button>
-        <el-button
-          type="success"
-          link
-          v-permission="'recycleOrder:search:materialPickup'"
-          @click="materialPickup(row)"
-        >
-          [物流揽件]
-        </el-button>
-        <el-button
-          type="danger"
-          link
-          v-permission="'recycleOrder:search:auditScreenshot'"
-          @click="handleAuditScreenshot(row)"
-        >
-          [审核截图]
-        </el-button>
-        <el-button
-          type="danger"
-          link
-          v-permission="'recycleOrder:search:afterSalesPayment'"
-          @click="handleAfterSalesPayment(row)"
-        >
-          [售后补款]
-        </el-button>
-        <el-button
-          type="warning"
-          link
-          v-permission="'recycleOrder:search:userTag'"
-          @click="openEditUserTag(row)"
-        >
-          [用户标签]
-        </el-button>
-        <el-button
-          type="success"
-          link
-          v-permission="'recycleOrder:search:sendSMS'"
-          @click="handleSendSMS(row)"
-        >
-          [推送短信]
-        </el-button>
-        <el-button
-          color="#7728f5"
-          link
-          plain
-          v-permission="'recycleOrder:search:applyForOrderClaim'"
-          @click="applyForOrderClaim(row)"
-        >
-          [申请订单理赔]
-        </el-button>
-      </div>
-    </template>
+        <template #action="{ row }">
+            <div>
+                <el-button type="success" link v-permission="'recycleOrder:search:detail'" @click="toOrderDetail(row)">
+                    [订单详情]
+                </el-button>
+                <el-button type="warning" link v-permission="'recycleOrder:search:log'" @click="openOrderLog(row)">
+                    [订单日志]
+                </el-button>
+                <el-button type="danger" link v-permission="'recycleOrder:search:cancel'" @click="cancelOrder(row)">
+                    [取消订单]
+                </el-button>
+                <el-button type="primary" link v-permission="'recycleOrder:search:fallback'"
+                    @click="fallbackOrder(row)">
+                    [回退状态]
+                </el-button>
+                <el-button type="success" link v-permission="'recycleOrder:search:materialPickup'"
+                    @click="materialPickup(row)">
+                    [物流揽件]
+                </el-button>
+                <el-button type="danger" link v-permission="'recycleOrder:search:auditScreenshot'"
+                    @click="handleAuditScreenshot(row)">
+                    [审核截图]
+                </el-button>
+                <el-button type="danger" link v-permission="'recycleOrder:search:afterSalesPayment'"
+                    @click="handleAfterSalesPayment(row)">
+                    [售后补款]
+                </el-button>
+                <el-button type="warning" link v-permission="'recycleOrder:search:userTag'"
+                    @click="openEditUserTag(row)">
+                    [用户标签]
+                </el-button>
+                <el-button type="success" link v-permission="'recycleOrder:search:sendSMS'" @click="handleSendSMS(row)">
+                    [推送短信]
+                </el-button>
+                <el-button color="#7728f5" link plain v-permission="'recycleOrder:search:applyForOrderClaim'"
+                    @click="applyForOrderClaim(row)">
+                    [申请订单理赔]
+                </el-button>
+            </div>
+        </template>
 
-    <order-log ref="orderLogRef" />
-    <userBindTag ref="userTagRef" />
-    <audit-screenshot ref="auditScreenshotRef"></audit-screenshot>
-    <afterSalesPayment ref="paymentRef" />
-    <applyforOrderClaim ref="claimRef"></applyforOrderClaim>
-    <sendSMS ref="smsRef"></sendSMS>
-  </order-page>
+        <order-log ref="orderLogRef" />
+        <userBindTag ref="userTagRef" />
+        <audit-screenshot ref="auditScreenshotRef"></audit-screenshot>
+        <afterSalesPayment ref="paymentRef" />
+        <applyforOrderClaim ref="claimRef"></applyforOrderClaim>
+        <sendSMS ref="smsRef"></sendSMS>
+    </order-page>
 </template>
 
 <script setup>
-  import { ref, reactive } from 'vue';
-  import { ElMessageBox } from 'element-plus/es';
-  import { EleMessage } from 'ele-admin-plus/es';
-  import { DownloadOutlined } from '@/components/icons';
-  import OrderPage from '@/views/recycleOrder/components/order-page-all.vue';
-  import { useDictData } from '@/utils/use-dict-data';
-  import { useRouter } from 'vue-router';
+import { ref, reactive } from 'vue';
+import { ElMessageBox } from 'element-plus/es';
+import { EleMessage } from 'ele-admin-plus/es';
+import { DownloadOutlined } from '@/components/icons';
+import OrderPage from '@/views/recycleOrder/components/order-page-all.vue';
+import { useDictData } from '@/utils/use-dict-data';
+import { useRouter } from 'vue-router';
 
-  //订单日志
-  import orderLog from '@/views/recycleOrder/components/order-log.vue';
-  //用户标签
-  import userBindTag from '@/views/recycleOrder/components/user-bind-tag.vue';
-  //审核截图
-  import auditScreenshot from '@/views/recycleOrder/components/audit-screenshot.vue';
-  //售后补款
-  import afterSalesPayment from '@/views/recycleOrder/components/after-sales-payment.vue';
-  //申请订单理赔
-  import applyforOrderClaim from '@/views/recycleOrder/components/applyfor-order-claim.vue';
-  //推送短信
-  import sendSMS from '@/views/recycleOrder/components/send-SMS.vue';
+//订单日志
+import orderLog from '@/views/recycleOrder/components/order-log.vue';
+//用户标签
+import userBindTag from '@/views/recycleOrder/components/user-bind-tag.vue';
+//审核截图
+import auditScreenshot from '@/views/recycleOrder/components/audit-screenshot.vue';
+//售后补款
+import afterSalesPayment from '@/views/recycleOrder/components/after-sales-payment.vue';
+//申请订单理赔
+import applyforOrderClaim from '@/views/recycleOrder/components/applyfor-order-claim.vue';
+//推送短信
+import sendSMS from '@/views/recycleOrder/components/send-SMS.vue';
 
-  defineOptions({ name: 'recycleOrderSearch' });
+defineOptions({ name: 'recycleOrderSearch' });
 
-  let router = useRouter();
-  /** 页面组件实例 */
-  const pageRef = ref(null);
+let router = useRouter();
+/** 页面组件实例 */
+const pageRef = ref(null);
 
-  const pageConfig = reactive({
-    pageUrl: '',
-    exportUrl: '',
+const pageConfig = reactive({
+    pageUrl: '/order/orderInfo/pageList',
+    exportUrl: '/order/orderInfo/export',
     fileName: '回收订单查询',
     cacheKey: 'recycleOrderTable'
-  });
+});
 
-  //批量初审
-  function handleBatchAudit() {
+//批量初审
+function handleBatchAudit() {
     pageRef.value?.operatBatch({
-      title: '确认批量审核?',
-      url: '/recycleOrder/batchAudit'
+        title: '确认批量审核?',
+        url: '/recycleOrder/batchAudit'
     });
-  }
+}
 
-  //导出数据
-  function exportData() {
+//导出数据
+function exportData() {
     pageRef.value?.exportData('回收订单查询');
-  }
-  //订单详情
-  function toOrderDetail(row) {
+}
+//订单详情
+function toOrderDetail(row) {
     router.push({ path: '/recycleOrder/detail', query: { id: row.postId } });
-  }
+}
 
-  //订单日志
-  const orderLogRef = ref(null);
-  function openOrderLog(row) {
+//订单日志
+const orderLogRef = ref(null);
+function openOrderLog(row) {
     console.log(row, orderLogRef.value, 'row');
 
     orderLogRef.value?.handleOpen(row);
-  }
+}
 
-  //用户绑定标签
-  const userTagRef = ref(null);
-  function openEditUserTag(row) {
+//用户绑定标签
+const userTagRef = ref(null);
+function openEditUserTag(row) {
     userTagRef.value?.handleOpen(row);
-  }
+}
 
-  function messageBoxConfirm({ message, url, row }) {
+function messageBoxConfirm({ message, url, row }) {
     ElMessageBox.confirm(message, '提示', {
-      confirmButtonText: '确定',
-      cancelButtonText: '关闭',
-      type: 'warning'
+        confirmButtonText: '确定',
+        cancelButtonText: '关闭',
+        type: 'warning'
     }).then(() => {
-      console.log(row, 'row');
+        console.log(row, 'row');
     });
-  }
+}
 
-  //取消订单
-  function cancelOrder(row) {
+//取消订单
+function cancelOrder(row) {
     messageBoxConfirm({ message: '确认取消?', url: '', row });
-  }
-  //回退状态
-  function fallbackOrder(row) {
+}
+//回退状态
+function fallbackOrder(row) {
     messageBoxConfirm({ message: '确认回退状态?', url: '', row });
-  }
-  //物流揽件
-  function materialPickup(row) {
+}
+//物流揽件
+function materialPickup(row) {
     messageBoxConfirm({ message: '确认物流揽件?', url: '', row });
-  }
-  //审核截图
-  const auditScreenshotRef = ref(null);
-  function handleAuditScreenshot(row) {
+}
+//审核截图
+const auditScreenshotRef = ref(null);
+function handleAuditScreenshot(row) {
     auditScreenshotRef.value?.handleOpen(row);
-  }
-  //售后补款
-  const paymentRef = ref(null);
-  function handleAfterSalesPayment(row) {
+}
+//售后补款
+const paymentRef = ref(null);
+function handleAfterSalesPayment(row) {
     paymentRef.value?.handleOpen(row);
-  }
-  //推送短信
-  const smsRef = ref(null);
-  function handleSendSMS(row) {
+}
+//推送短信
+const smsRef = ref(null);
+function handleSendSMS(row) {
     smsRef.value?.handleOpen(row);
-  }
-  //申请订单理赔
-  const claimRef = ref(null);
-  function applyForOrderClaim(row) {
+}
+//申请订单理赔
+const claimRef = ref(null);
+function applyForOrderClaim(row) {
     claimRef.value?.handleOpen(row);
-  }
+}
 </script>