فهرست منبع

fix 回收订单其他页面

haveyou 1 سال پیش
والد
کامیت
c6369995cd

+ 223 - 4
src/views/recycleOrder/auditNotSubmit/index.vue

@@ -1,5 +1,224 @@
 <template>
-    <div>
-        
-    </div>
-</template>
+  <order-page ref="pageRef" :pageConfig="pageConfig">
+    <template #toolbar>
+      <el-button
+        type="warning"
+        plain
+        v-permission="'recycleOrder:search:batchAudit'"
+        @click="handleBatchAudit"
+      >
+        批量初审
+      </el-button>
+      <el-button
+        type="success"
+        plain
+        v-permission="'recycleOrder:search:batchAuditComplete'"
+        @click="handleBatchAuditComplete"
+      >
+        批量审核完成
+      </el-button>
+      <el-button
+        type="primary"
+        plain
+        :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="primary"
+          link
+          v-permission="'recycleOrder:search:fallback'"
+          @click="fallbackOrder(row)"
+        >
+          [回退状态]
+        </el-button>
+        <el-button
+          type="success"
+          link
+          v-permission="'recycleOrder:search:arrivalAudit'"
+          @click="handleArrivalAudit(row)"
+        >
+          [到货审核]
+        </el-button>
+        <el-button
+          type="danger"
+          link
+          v-permission="'recycleOrder:search:auditScreenshot'"
+          @click="handleAuditScreenshot(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
+          type="info"
+          link
+          plain
+          v-permission="'recycleOrder:search:smsLog'"
+          @click="handleSmsLog(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>
+    <orderSmsLog ref="smsLogRef"></orderSmsLog>
+  </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 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 orderSmsLog from '@/views/recycleOrder/components/order-sms-log.vue'
+
+  defineOptions({ name: 'recycleOrderSearch' });
+
+  let router = useRouter();
+  /** 页面组件实例 */
+  const pageRef = ref(null);
+
+  const pageConfig = reactive({
+    pageUrl: '',
+    exportUrl: '',
+    fileName: '回收订单查询',
+    cacheKey: 'recycleOrderTable'
+  });
+
+  //批量初审
+  function handleBatchAudit() {
+    pageRef.value?.operatBatch({
+      title: '确认批量审核?',
+      url: '/recycleOrder/batchAudit'
+    });
+  }
+  //批量审核完成
+  function handleBatchAuditComplete() {
+    pageRef.value?.operatBatch({
+      title: '确认批量审核完成?',
+      url: '/recycleOrder/batchAuditComplete'
+    });
+  }
+
+  //导出数据
+  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 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 paymentRef = ref(null);
+  function handleAfterSalesPayment(row) {
+    paymentRef.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>

+ 200 - 4
src/views/recycleOrder/awaitAudit/index.vue

@@ -1,5 +1,201 @@
 <template>
-    <div>
-        
-    </div>
-</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:batchAuditComplete'"
+        @click="handleBatchAuditComplete"
+      >
+        批量审核完成
+      </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="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
+          type="info"
+          link
+          v-permission="'recycleOrder:search:smsLog'"
+          @click="handleSmsLog(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>
+    <orderSmsLog ref="smsLogRef"></orderSmsLog>
+  </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 sendSMS from '@/views/recycleOrder/components/send-SMS.vue';
+  //短信记录
+  import orderSmsLog from '@/views/recycleOrder/components/order-sms-log.vue'
+
+  defineOptions({ name: 'recycleOrderAwaitAudit' });
+
+  let router = useRouter();
+  /** 页面组件实例 */
+  const pageRef = ref(null);
+
+  const pageConfig = reactive({
+    pageUrl: '',
+    exportUrl: '',
+    fileName: '待审核订单',
+    cacheKey: 'awaitAuditTable'
+  });
+
+  //批量初审
+  function handleBatchAudit() {
+    pageRef.value?.operatBatch({
+      title: '确认批量初审?',
+      url: '/recycleOrder/batchAudit'
+    });
+  }
+
+  //批量审核完成
+  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) {
+    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 });
+  }
+  //短信记录
+  const smsLogRef = ref(null);
+  function handleSmsLog(row) {
+    smsLogRef.value?.handleOpen(row);
+  }
+  //推送短信
+  const smsRef = ref(null);
+  function handleSendSMS(row) {
+    smsRef.value?.handleOpen(row);
+  }
+</script>

+ 176 - 4
src/views/recycleOrder/awaitDelivery/index.vue

@@ -1,5 +1,177 @@
 <template>
-    <div>
-        
-    </div>
-</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>
+</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';
+
+  defineOptions({ name: 'recycleOrderawaitDelivery' });
+
+  let router = useRouter();
+  /** 页面组件实例 */
+  const pageRef = ref(null);
+
+  const pageConfig = reactive({
+    pageUrl: '',
+    exportUrl: '',
+    fileName: '待签收订单',
+    cacheKey: 'awaitDeliveryTable'
+  });
+
+  //批量初审
+  function handleBatchAudit() {
+    pageRef.value?.operatBatch({
+      title: '确认批量审核?',
+      url: '/recycleOrder/batchAudit'
+    });
+  }
+
+  //批量取消订单
+  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');
+    });
+  }
+
+  //取消订单
+  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>

+ 215 - 4
src/views/recycleOrder/awaitPay/index.vue

@@ -1,5 +1,216 @@
 <template>
-    <div>
-        
-    </div>
-</template>
+  <order-page ref="pageRef" :pageConfig="pageConfig">
+    <template #toolbar>
+      <el-button
+        type="warning"
+        plain
+        v-permission="'recycleOrder:search:batchAudit'"
+        @click="handleBatchAudit"
+      >
+        批量初审
+      </el-button>
+      <el-button
+        type="success"
+        plain
+        v-permission="'recycleOrder:search:batchPayment'"
+        @click="handleBatchPayment"
+      >
+        批量支付书款
+      </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="primary"
+          link
+          v-permission="'recycleOrder:search:fallback'"
+          @click="fallbackOrder(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:payment'"
+          @click="handleBatchPayment(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
+          type="info"
+          link
+          plain
+          v-permission="'recycleOrder:search:smsLog'"
+          @click="handleSmsLog(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>
+    <orderSmsLog ref="smsLogRef"></orderSmsLog>
+  </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 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 orderSmsLog from '@/views/recycleOrder/components/order-sms-log.vue';
+
+  defineOptions({ name: 'recycleOrderSearch' });
+
+  let router = useRouter();
+  /** 页面组件实例 */
+  const pageRef = ref(null);
+
+  const pageConfig = reactive({
+    pageUrl: '',
+    exportUrl: '',
+    fileName: '回收订单查询',
+    cacheKey: 'recycleOrderTable'
+  });
+
+  //批量初审
+  function handleBatchAudit() {
+    pageRef.value?.operatBatch({
+      title: '确认批量审核?',
+      url: '/recycleOrder/batchAudit'
+    });
+  }
+  //批量支付书款
+  function handleBatchPayment(row) {
+    pageRef.value?.operatBatch({
+      title: '确认支付书款?',
+      row,
+      url: '/recycleOrder/batchAuditComplete'
+    });
+  }
+
+  //导出数据
+  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 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 paymentRef = ref(null);
+  function handleAfterSalesPayment(row) {
+    paymentRef.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>

+ 163 - 4
src/views/recycleOrder/awaitPickup/index.vue

@@ -1,5 +1,164 @@
 <template>
-    <div>
-        
-    </div>
-</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>
+</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';
+
+  defineOptions({ name: 'recycleOrderawaitPickup' });
+
+  let router = useRouter();
+  /** 页面组件实例 */
+  const pageRef = ref(null);
+
+  const pageConfig = reactive({
+    pageUrl: '',
+    exportUrl: '',
+    fileName: '待取件订单',
+    cacheKey: 'awaitPickupTable'
+  });
+
+  //批量初审
+  function handleBatchAudit() {
+    pageRef.value?.operatBatch({
+      title: '确认批量审核?',
+      url: '/recycleOrder/batchAudit'
+    });
+  }
+
+  //批量取消订单
+  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');
+    });
+  }
+
+  //取消订单
+  function cancelOrder(row) {
+    messageBoxConfirm({ message: '确认取消?', url: '', row });
+  }
+  //回退状态
+  function fallbackOrder(row) {
+    messageBoxConfirm({ message: '确认回退状态?', url: '', row });
+  }
+  //物流揽件
+  function materialPickup(row) {
+    messageBoxConfirm({ message: '确认物流揽件?', url: '', row });
+  }
+</script>

+ 146 - 4
src/views/recycleOrder/awaitReview/index.vue

@@ -1,5 +1,147 @@
 <template>
-    <div>
-        
-    </div>
-</template>
+  <order-page ref="pageRef" :pageConfig="pageConfig">
+    <template #toolbar>
+      <el-button
+        type="warning"
+        plain
+        class="ele-btn-icon"
+        v-permission="'recycleOrder:awaitReview:batchAudit'"
+        @click="handleBatchAudit"
+      >
+        批量初审
+      </el-button>
+      <el-button
+        type="success"
+        plain
+        class="ele-btn-icon"
+        :icon="DownloadOutlined"
+        v-permission="'recycleOrder:awaitReview:export'"
+        @click="exportData"
+      >
+        导出订单明细
+      </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>
+    </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 { 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 pageConfig = reactive({
+    pageUrl: '',
+    exportUrl: '',
+    fileName: '待初审订单',
+    cacheKey: 'awaitReviewTable'
+  });
+
+  //批量初审
+  function handleBatchAudit(row) {
+    pageRef.value?.operatBatch({
+      title: '确认审核?',
+      row,
+      url: '/recycleOrder/batchAudit'
+    });
+  }
+
+  //导出数据
+  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');
+    });
+  }
+
+  //申请订单理赔
+  const claimRef = ref(null);
+  function applyForOrderClaim(row) {
+    claimRef.value?.handleOpen(row);
+  }
+</script>

+ 176 - 4
src/views/recycleOrder/awaitSign/index.vue

@@ -1,5 +1,177 @@
 <template>
-    <div>
-        
-    </div>
-</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>
+</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';
+
+  defineOptions({ name: 'recycleOrderawaitSign' });
+
+  let router = useRouter();
+  /** 页面组件实例 */
+  const pageRef = ref(null);
+
+  const pageConfig = reactive({
+    pageUrl: '',
+    exportUrl: '',
+    fileName: '待签收订单',
+    cacheKey: 'awaitSignTable'
+  });
+
+  //批量初审
+  function handleBatchAudit() {
+    pageRef.value?.operatBatch({
+      title: '确认批量审核?',
+      url: '/recycleOrder/batchAudit'
+    });
+  }
+
+  //批量取消订单
+  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');
+    });
+  }
+
+  //取消订单
+  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>

+ 141 - 4
src/views/recycleOrder/cancelled/index.vue

@@ -1,5 +1,142 @@
 <template>
-    <div>
-        
-    </div>
-</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
+          color="#7728f5"
+          link
+          plain
+          v-permission="'recycleOrder:search:applyForOrderRestore'"
+          @click="handleApplyForOrderRestore(row)"
+        >
+          [申请恢复订单]
+        </el-button>
+        <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="warning"
+          link
+          v-permission="'recycleOrder:search: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 { 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: 'recycleOrderCancel' });
+
+  let router = useRouter();
+  /** 页面组件实例 */
+  const pageRef = ref(null);
+
+  const pageConfig = reactive({
+    pageUrl: '',
+    exportUrl: '',
+    fileName: '已取消订单',
+    cacheKey: 'recycleOrderCancelTable'
+  });
+
+  //批量初审
+  function handleBatchAudit() {
+    pageRef.value?.operatBatch({
+      title: '确认审核?',
+      url: '/recycleOrder/batchAudit'
+    });
+  }
+
+  //导出数据
+  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 handleApplyForOrderRestore(row) {
+    messageBoxConfirm({
+      message: '确认申请恢复订单?',
+      url: `/recycleOrder/applyForOrderRestore/${row.postId}`,
+      row
+    });
+  }
+</script>

+ 191 - 4
src/views/recycleOrder/completed/index.vue

@@ -1,5 +1,192 @@
 <template>
-    <div>
-        
-    </div>
-</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: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>
+</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 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' });
+
+  let router = useRouter();
+  /** 页面组件实例 */
+  const pageRef = ref(null);
+
+  const pageConfig = reactive({
+    pageUrl: '',
+    exportUrl: '',
+    fileName: '已完成订单',
+    cacheKey: 'recycleOrderCompletedTable'
+  });
+
+  //批量初审
+  function handleBatchAudit() {
+    pageRef.value?.operatBatch({
+      title: '确认审核?',
+      url: '/recycleOrder/batchAudit'
+    });
+  }
+
+  //导出数据
+  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');
+    });
+  }
+
+  //审核截图
+  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>

+ 41 - 0
src/views/recycleOrder/components/order-sms-log.vue

@@ -0,0 +1,41 @@
+<!-- 编辑弹窗 -->
+<template>
+  <ele-modal form :width="800" v-model="visible" title="短信记录">
+    <SimpleTable style="width: 100%" :columns="columns"></SimpleTable>
+
+    <template #footer>
+      <el-button @click="handleCancel">关闭</el-button>
+    </template>
+  </ele-modal>
+</template>
+
+<script setup>
+  import { ref, reactive, nextTick } from 'vue';
+  import { Flag, ChatDotSquare } from '@element-plus/icons-vue';
+  import SimpleTable from '@/components/CommonPage/SimpleTable.vue';
+
+  /** 弹窗是否打开 */
+  const visible = defineModel({ type: Boolean });
+
+  /** 关闭弹窗 */
+  const handleCancel = () => {
+    visible.value = false;
+  };
+
+  /** 弹窗打开事件 */
+  const handleOpen = () => {
+    visible.value = true;
+    nextTick(() => console.log('打开'));
+  };
+
+  // 表格数据
+  const columns = reactive([
+    { label: '发送人', prop: 'createBy', width: 100 },
+    { label: '发送内容', prop: 'logDescription' },
+    { label: '发送时间', prop: 'createTime', width: 180 }
+  ]);
+
+  defineExpose({
+    handleOpen
+  });
+</script>

+ 115 - 4
src/views/recycleOrder/failedAudit/index.vue

@@ -1,5 +1,116 @@
 <template>
-    <div>
-        
-    </div>
-</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="warning"
+          link
+          v-permission="'recycleOrder:search: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 { 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: 'recycleOrderFailedAudit' });
+
+  let router = useRouter();
+  /** 页面组件实例 */
+  const pageRef = ref(null);
+
+  const pageConfig = reactive({
+    pageUrl: '',
+    exportUrl: '',
+    fileName: '初审未通过',
+    cacheKey: 'failedAuditTable'
+  });
+
+  //批量初审
+  function handleBatchAudit() {
+    pageRef.value?.operatBatch({
+      title: '确认审核?',
+      url: '/recycleOrder/batchAudit'
+    });
+  }
+
+  //导出数据
+  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);
+  }
+</script>

+ 14 - 6
src/views/recycleOrder/search/index.vue

@@ -6,7 +6,7 @@
         plain
         class="ele-btn-icon"
         v-permission="'recycleOrder:search:batchAudit'"
-        @click="removeBatch()"
+        @click="handleBatchAudit"
       >
         批量初审
       </el-button>
@@ -62,7 +62,7 @@
           v-permission="'recycleOrder:search:materialPickup'"
           @click="materialPickup(row)"
         >
-          [物揽件]
+          [物揽件]
         </el-button>
         <el-button
           type="danger"
@@ -135,9 +135,9 @@
   //售后补款
   import afterSalesPayment from '@/views/recycleOrder/components/after-sales-payment.vue';
   //申请订单理赔
-  import applyforOrderClaim from '@/views/recycleOrder/components/applyfor-order-claim.vue'
+  import applyforOrderClaim from '@/views/recycleOrder/components/applyfor-order-claim.vue';
   //推送短信
-  import sendSMS from '@/views/recycleOrder/components/send-SMS.vue'
+  import sendSMS from '@/views/recycleOrder/components/send-SMS.vue';
 
   defineOptions({ name: 'recycleOrderSearch' });
 
@@ -152,6 +152,14 @@
     cacheKey: 'recycleOrderTable'
   });
 
+  //批量初审
+  function handleBatchAudit() {
+    pageRef.value?.operatBatch({
+      title: '确认批量审核?',
+      url: '/recycleOrder/batchAudit'
+    });
+  }
+
   //导出数据
   function exportData() {
     pageRef.value?.exportData('回收订单查询');
@@ -193,9 +201,9 @@
   function fallbackOrder(row) {
     messageBoxConfirm({ message: '确认回退状态?', url: '', row });
   }
-  //物揽件
+  //物揽件
   function materialPickup(row) {
-    messageBoxConfirm({ message: '确认物揽件?', url: '', row });
+    messageBoxConfirm({ message: '确认物揽件?', url: '', row });
   }
   //审核截图
   const auditScreenshotRef = ref(null);

+ 207 - 4
src/views/recycleOrder/urgentRecycleAudit/index.vue

@@ -1,5 +1,208 @@
 <template>
-    <div>
-        
-    </div>
-</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="primary"
+          link
+          v-permission="'recycleOrder:awaitDelivery:fallback'"
+          @click="fallbackOrder(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:search:auditScreenshot'"
+          @click="handleAuditScreenshot(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:search:sendSMS'"
+          @click="handleSendSMS(row)"
+        >
+          [推送短信]
+        </el-button>
+        <el-button
+          type="info"
+          link
+          v-permission="'recycleOrder:search: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>
+</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';
+
+  defineOptions({ name: 'recycleOrderawaitDelivery' });
+
+  let router = useRouter();
+  /** 页面组件实例 */
+  const pageRef = ref(null);
+
+  const pageConfig = reactive({
+    pageUrl: '',
+    exportUrl: '',
+    fileName: '待签收订单',
+    cacheKey: 'awaitDeliveryTable'
+  });
+
+  //批量初审
+  function handleBatchAudit() {
+    pageRef.value?.operatBatch({
+      title: '确认批量审核?',
+      url: '/recycleOrder/batchAudit'
+    });
+  }
+
+  //批量取消订单
+  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');
+    });
+  }
+
+  //审核截图
+  const auditScreenshotRef = ref(null);
+  function handleAuditScreenshot(row) {
+    auditScreenshotRef.value?.handleOpen(row);
+  }
+
+  //回退状态
+  function fallbackOrder(row) {
+    messageBoxConfirm({ message: '确认回退状态?', url: '', row });
+  }
+  //确认收货
+  function materialPickup(row) {
+    messageBoxConfirm({ message: '确认收货?', url: '', row });
+  }
+  //申请拦截退回
+  function applyForInterception(row) {
+    messageBoxConfirm({ message: '确认申请拦截退回?', url: '', row });
+  }
+
+  //推送短信
+  const smsRef = ref(null);
+  function handleSendSMS(row) {
+    smsRef.value?.handleOpen(row);
+  }
+
+  //短信记录
+  const smsLogRef = ref(null);
+  function handleSmsLog(row) {
+    smsLogRef.value?.handleOpen(row);
+  }
+</script>