From 9d901b4215323c97a00a068cd962f5c9c04dadfa Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期四, 04 九月 2025 10:15:09 +0800
Subject: [PATCH] 前端

---
 admin/src/views/business/orders.vue |  279 ++++++++++++++++++++++++++++++-------------------------
 1 files changed, 154 insertions(+), 125 deletions(-)

diff --git a/admin/src/views/business/orders.vue b/admin/src/views/business/orders.vue
index 7da2350..ed2d66e 100644
--- a/admin/src/views/business/orders.vue
+++ b/admin/src/views/business/orders.vue
@@ -2,99 +2,131 @@
   <TableLayout :permissions="['business:orders:query']">
     <!-- 鎼滅储琛ㄥ崟 -->
     <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
-      <el-form-item label="鍙戝崟鏂�" prop="releaseMemberId">
-        <el-input v-model="searchForm.releaseMemberId" placeholder="璇疯緭鍏ュ彂鍗曟柟" @keypress.enter.native="search"></el-input>
+      <el-form-item label="璁㈠崟鍙�" prop="releaseMemberId">
+        <el-input v-model="searchForm.code" style="width: 120px"  clearable placeholder="璇疯緭鍏ヨ鍗曞彿" @keypress.enter.native="search"></el-input>
       </el-form-item>
-      <el-form-item label="鐪佷唤" prop="province">
-        <el-input v-model="searchForm.province" placeholder="璇疯緭鍏ョ渷浠�" @keypress.enter.native="search"></el-input>
+      <el-form-item label="鎺ュ崟鏂�" prop="acceptName">
+        <el-input v-model="searchForm.acceptName" style="width: 120px"  clearable placeholder="璇疯緭鍏ュ悕绉�" @keypress.enter.native="search"></el-input>
       </el-form-item>
-      <el-form-item label="鍩庡競" prop="city">
-        <el-input v-model="searchForm.city" placeholder="璇疯緭鍏ュ煄甯�" @keypress.enter.native="search"></el-input>
+      <el-form-item label="鍙戝崟鏂�" prop="releaseName">
+        <el-input v-model="searchForm.releaseName" style="width: 120px"  clearable placeholder="璇疯緭鍏ュ悕绉�" @keypress.enter.native="search"></el-input>
       </el-form-item>
-      <el-form-item label="鍖哄幙" prop="area">
-        <el-input v-model="searchForm.area" placeholder="璇疯緭鍏ュ尯鍘�" @keypress.enter.native="search"></el-input>
+      <el-form-item label="璁㈠崟绫诲瀷" prop="type">
+        <el-select v-model="searchForm.type"  style="width: 120px"  @keypress.enter.native="search" clearable placeholder="璁㈠崟绫诲瀷">
+          <el-option label="鐢ㄥ伐鍗�" :value="0"></el-option>
+          <el-option label="璐ц繍鍗�" :value="1"></el-option>
+          <el-option label="璁㈤鍗�" :value="2"></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="璁㈠崟鐘舵��" prop="status">
+        <el-select v-model="searchForm.status" style="width: 100px"  @keypress.enter.native="search" clearable placeholder="鐘舵��">
+        <el-option label="寰呮敮浠�" :value="0"></el-option>
+        <el-option label="寰呮帴鍗�" :value="1"></el-option>
+        <el-option label="宸叉帴鍗�" :value="2"></el-option>
+        <el-option label="杩涜涓�" :value="3"></el-option>
+        <el-option label="宸插畬鎴�" :value="4"></el-option>
+        <el-option label="宸插彇娑�" :value="99"></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="鍙戝竷鏃堕棿"   prop="createTimeStart"  label-width="100px" >
+        <el-date-picker type="datetime"  style="width: 150px"  v-model="searchForm.createTimeStart" clearable value-format="yyyy-MM-dd HH:mm:ss"
+                        placeholder="寮�濮嬫椂闂�" /> -
+      </el-form-item>
+      <el-form-item label="" prop="createTimeEnd"   label-width="0px" >
+        <el-date-picker type="datetime"  style="width: 150px"  v-model="searchForm.createTimeEnd" clearable value-format="yyyy-MM-dd HH:mm:ss"
+                        placeholder="缁撴潫鏃堕棿" />
+      </el-form-item>
+      <el-form-item label="鎺ュ崟鏃堕棿" prop="acceptTimeStart"  label-width="100px" >
+        <el-date-picker type="datetime"  style="width: 150px"  v-model="searchForm.acceptTimeStart" clearable value-format="yyyy-MM-dd HH:mm:ss"
+                        placeholder="寮�濮嬫椂闂�" /> -
+      </el-form-item>
+      <el-form-item label="" prop="acceptTimeEnd"  label-width="0px" >
+        <el-date-picker type="datetime"  style="width: 150px"  v-model="searchForm.acceptTimeEnd" clearable value-format="yyyy-MM-dd HH:mm:ss"
+                        placeholder="缁撴潫鏃堕棿" />
+      </el-form-item>
+      <el-form-item label="瀹屾垚鏃堕棿"    prop="doneTimeStart"   label-width="100px" >
+        <el-date-picker type="datetime"  style="width: 150px"  v-model="searchForm.doneTimeStart" clearable value-format="yyyy-MM-dd HH:mm:ss"
+                        placeholder="寮�濮嬫椂闂�" /> -
+      </el-form-item>
+      <el-form-item label="" prop="doneTimeEnd"  label-width="0px" >
+        <el-date-picker type="datetime"  style="width: 150px"  v-model="searchForm.doneTimeEnd" clearable value-format="yyyy-MM-dd HH:mm:ss"
+                        placeholder="缁撴潫鏃堕棿" />
       </el-form-item>
       <section>
         <el-button type="primary" @click="search">鎼滅储</el-button>
         <el-button @click="reset">閲嶇疆</el-button>
+        <el-button type="primary" :loading="isWorking.export" @click="exportExcel">瀵煎嚭</el-button>
       </section>
     </el-form>
     <!-- 琛ㄦ牸鍜屽垎椤� -->
     <template v-slot:table-wrap>
-      <ul class="toolbar" v-permissions="['business:orders:create', 'business:orders:delete']">
+<!--      <ul class="toolbar" v-permissions="['business:orders:create', 'business:orders:delete']">
         <li><el-button type="primary" @click="$refs.operaOrdersWindow.open('鏂板缓璁㈠崟淇℃伅璁板綍')" icon="el-icon-plus" v-permissions="['business:orders:create']">鏂板缓</el-button></li>
         <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:orders:delete']">鍒犻櫎</el-button></li>
-      </ul>
+      </ul>-->
       <el-table
-          :height="tableHeightNew"
+         :height="tableHeightNew"
         v-loading="isWorking.search"
         :data="tableData.list"
         stripe
         @selection-change="handleSelectionChange"
       >
-        <el-table-column type="selection" width="55"></el-table-column>
-        <el-table-column prop="id" label="涓婚敭" min-width="100px"></el-table-column>
-        <el-table-column prop="deleted" label="鏄惁宸插垹闄� 0鏈垹闄� 1宸插垹闄�" min-width="100px"></el-table-column>
-        <el-table-column prop="createUser" label="鍒涘缓浜虹紪鐮�" min-width="100px"></el-table-column>
-        <el-table-column prop="createTime" label="鍒涘缓鏃堕棿" min-width="100px"></el-table-column>
-        <el-table-column prop="updateUser" label="鏇存柊浜虹紪鐮�" min-width="100px"></el-table-column>
-        <el-table-column prop="updateTime" label="鏇存柊鏃堕棿" min-width="100px"></el-table-column>
-        <el-table-column prop="remark" label="澶囨敞" min-width="100px"></el-table-column>
-        <el-table-column prop="releaseMemberId" label="鍙戝崟鏂�" min-width="100px"></el-table-column>
-        <el-table-column prop="type" label="绫诲瀷:0=鐢ㄥ伐锛�1=杩愯揣锛�2=璁㈤" min-width="100px"></el-table-column>
-        <el-table-column prop="startDate" label="寮�濮嬫椂闂� yyyy-MM-dd" min-width="100px"></el-table-column>
-        <el-table-column prop="endDate" label="缁撴潫鏃堕棿 yyyy-MM-dd" min-width="100px"></el-table-column>
-        <el-table-column prop="location" label="鍦扮偣淇℃伅/鐢ㄨ溅璧风偣/鐢ㄩ鍦扮偣" min-width="100px"></el-table-column>
-        <el-table-column prop="locationRemark" label="鍦扮偣鎻忚堪" min-width="100px"></el-table-column>
-        <el-table-column prop="lat" label="缁忓害" min-width="100px"></el-table-column>
-        <el-table-column prop="province" label="鐪佷唤" min-width="100px"></el-table-column>
-        <el-table-column prop="city" label="鍩庡競" min-width="100px"></el-table-column>
-        <el-table-column prop="area" label="鍖哄幙" min-width="100px"></el-table-column>
-        <el-table-column prop="lgt" label="绾害" min-width="100px"></el-table-column>
-        <el-table-column prop="categoryId" label="闇�姹傜被鍨嬶紙杩愯揣/鐢ㄥ伐)锛氬叧鑱� category" min-width="100px"></el-table-column>
-        <el-table-column prop="workType" label="鐢ㄥ伐绫诲瀷:0=閲囨憳宸ワ紱1=鍒嗘嫞宸ワ紱2=鍖呰宸ワ紱锛堢敤宸ヨ鍗曪級" min-width="100px"></el-table-column>
-        <el-table-column prop="priceNum1" label="璁′环鏁伴噺1(澶╂暟/鐢ㄨ溅娆℃暟)" min-width="100px"></el-table-column>
-        <el-table-column prop="priceNum2" label="璁′环鏁伴噺2(鐢ㄥ伐鏁伴噺/閲囨憳鏁伴噺/鐢ㄨ溅鏁伴噺/)" min-width="100px"></el-table-column>
-        <el-table-column prop="supplement" label="闇�姹傝ˉ鍏�" min-width="100px"></el-table-column>
-        <el-table-column prop="price" label="璐圭敤鏍囧噯" min-width="100px"></el-table-column>
-        <el-table-column prop="estimatedAccount" label="棰勪及璐圭敤" min-width="100px"></el-table-column>
-        <el-table-column prop="payAccount" label="瀹為檯鏀粯璐圭敤" min-width="100px"></el-table-column>
-        <el-table-column prop="reviceAccount" label="瀹炴敹璐圭敤" min-width="100px"></el-table-column>
-        <el-table-column prop="priceRemark" label="璐圭敤璇存槑" min-width="100px"></el-table-column>
-        <el-table-column prop="carType" label="鐢ㄨ溅绫诲瀷(杩愯揣浣跨敤):0=澶╋紱1=娆�" min-width="100px"></el-table-column>
-        <el-table-column prop="transportTypeId" label="杩愯緭鍝佺(杩愯揣浣跨敤) 鍏宠仈category琛�" min-width="100px"></el-table-column>
-        <el-table-column prop="transportNum" label="杩愯緭閲嶉噺/鏁伴噺" min-width="100px"></el-table-column>
-        <el-table-column prop="transportUnit" label="杩愯緭鍗曚綅(涓�/鏂�)" min-width="100px"></el-table-column>
-        <el-table-column prop="locationEnd" label="鐢ㄨ溅缁堢偣鍦板潃" min-width="100px"></el-table-column>
-        <el-table-column prop="latEnd" label="鐢ㄨ溅缁堢偣缁忓害" min-width="100px"></el-table-column>
-        <el-table-column prop="lgtEnd" label="鐢ㄨ溅缁堢偣绾害" min-width="100px"></el-table-column>
-        <el-table-column prop="wayInfo" label="閫旂粡鐐�/椁愭爣淇℃伅" min-width="100px"></el-table-column>
-        <el-table-column prop="code" label="璁㈠崟缂栧彿" min-width="100px"></el-table-column>
-        <el-table-column prop="status" label="璁㈠崟鐘舵��:0=寰呮帴鍗曪紱1=宸叉帴鍗曪紱2=杩涜涓紱3=宸插畬鎴愶紱99=宸插彇娑堬紱" min-width="100px"></el-table-column>
-        <el-table-column prop="acceptTime" label="鎺ュ崟鏃堕棿" min-width="100px"></el-table-column>
-        <el-table-column prop="acceptMemberId" label="鎺ュ崟浜�" min-width="100px"></el-table-column>
-        <el-table-column prop="acceptType" label="鎺ュ崟绫诲瀷:0=鎵嬪姩鎺ュ崟锛�1=绯荤粺娲惧崟锛�" min-width="100px"></el-table-column>
-        <el-table-column prop="workStartTime" label="寮�濮嬩綔涓氭椂闂�" min-width="100px"></el-table-column>
-        <el-table-column prop="finishTime" label="瀹屾垚鏃堕棿" min-width="100px"></el-table-column>
-        <el-table-column prop="platformRata" label="骞冲彴鎻愭垚姣斾緥" min-width="100px"></el-table-column>
-        <el-table-column prop="wxExternalNo" label="寰俊骞冲彴浜ゆ槗璁㈠崟鍙�" min-width="100px"></el-table-column>
-        <el-table-column prop="commentStatus" label="鏄惁璇勪环:0=鍚︼紱1=鏄�" min-width="100px"></el-table-column>
-        <el-table-column prop="commentInfo" label="璇勪环鍐呭" min-width="100px"></el-table-column>
-        <el-table-column prop="commentLevel" label="璇勪环鏄熺骇1-5" min-width="100px"></el-table-column>
-        <el-table-column prop="commentTime" label="璇勪环鏃堕棿" min-width="100px"></el-table-column>
-        <el-table-column prop="commentType" label="璇勪环绫诲瀷:0=鎵嬪姩璇勪环锛�1=绯荤粺鑷姩璇勪环锛�" min-width="100px"></el-table-column>
-        <el-table-column prop="cancelTime" label="鍙栨秷鏃堕棿" min-width="100px"></el-table-column>
-        <el-table-column prop="isUpdate" label="鏄惁宸蹭慨鏀�:0=鍚︼紱1=鏄紱" min-width="100px"></el-table-column>
-        <el-table-column prop="blackRecive" label="鎺ュ崟鏂归粦鍚嶅崟member:id 澶氫釜浠�,鍒嗗壊" min-width="100px"></el-table-column>
+        <el-table-column prop="code" label="璁㈠崟缂栧彿" width="180px" fixed="left">
+          <template slot-scope="{row}">
+            <span style="cursor: pointer;color: #2E68EC" @click="openDetail(row)">{{row.code}}</span>
+          </template>
+        </el-table-column>
+        <el-table-column prop="statusName" label="璁㈠崟鐘舵��" min-width="100px"  >
+          <template slot-scope="{row}">
+          <span :class="'orderstate'+row.status">{{row.statusName}}</span>
+          </template>
+        </el-table-column>
+        <el-table-column prop="type" label="璁㈠崟绫诲瀷" min-width="100px">
+          <template slot-scope="{row}">
+            <span v-if="row.type==0">鐢ㄥ伐鍗�</span>
+            <span v-if="row.type==1">璐ц繍鍗�</span>
+            <span v-if="row.type==2">璁㈤鍗�</span>
+          </template>
+        </el-table-column>
+        <el-table-column prop="orderContent" label="璁㈠崟鍐呭"  width="200px" :show-overflow-tooltip='true'></el-table-column>
+        <el-table-column prop="releaseName" label="鍙戝崟鏂�"  min-width="100px" :show-overflow-tooltip='true'>
+          <template slot-scope="{row}">
+           <span v-if="row.releaseName || row.releasePhone">{{(row.releaseName||'') +' - ' +(row.releasePhone||'')  }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column prop="acceptName" label="鎺ュ崟鏂�" min-width="100px" :show-overflow-tooltip='true'>
+          <template slot-scope="{row}">
+            <span v-if="row.acceptName || row.acceptPhone">{{(row.acceptName||'') +' - ' +(row.acceptPhone ||'')  }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column prop="createTime" label="鍙戝竷鏃堕棿" min-width="150px"></el-table-column>
+        <el-table-column prop="acceptTime" label="鎺ュ崟鏃堕棿" min-width="150px"></el-table-column>
+        <el-table-column prop="finishTime" label="瀹屾垚鏃堕棿" min-width="150px"></el-table-column>
+        <el-table-column prop="estimatedAccount" label="棰勪及閲戦锛堝厓锛�" min-width="150px">
+          <template slot-scope="{row}">
+            <span class="yellowstate">{{((row.estimatedAccount || 0)/100).toFixed(2)}}</span>
+          </template>
+        </el-table-column>
+        <el-table-column prop="payAccount" label="瀹炰粯閲戦锛堝厓锛�" min-width="150px">
+          <template slot-scope="{row}">
+            <span class="yellowstate">{{((row.payAccount || 0)/100).toFixed(2)}}</span>
+          </template>
+        </el-table-column>
+        <el-table-column prop="acceptType" label="鎺ュ崟绫诲瀷" min-width="100px">
+          <template slot-scope="{row}">
+            <span v-if="row.acceptType==0">鎵嬪姩鎺ュ崟</span>
+            <span v-if="row.acceptType==1">绯荤粺娲惧崟</span>
+          </template>
+        </el-table-column>
         <el-table-column
-          v-if="containPermissions(['business:orders:update', 'business:orders:delete'])"
           label="鎿嶄綔"
-          min-width="120"
+          align="center"
+          min-width="150"
           fixed="right"
         >
           <template slot-scope="{row}">
-            <el-button type="text" @click="$refs.operaOrdersWindow.open('缂栬緫璁㈠崟淇℃伅璁板綍', row)" icon="el-icon-edit" v-permissions="['business:orders:update']">缂栬緫</el-button>
-            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:orders:delete']">鍒犻櫎</el-button>
+            <el-button type="text" class="redstate" @click="cancelDo(row)" v-if="row.status>-1 && row.status<4" icon="el-icon-delete" v-permissions="['business:orders:update']">鍙栨秷</el-button>
+            <el-button type="text" @click="openDetail( row)" icon="el-icon-info"  >璇︽儏</el-button>
           </template>
         </el-table-column>
       </el-table>
@@ -106,7 +138,7 @@
       </pagination>
     </template>
     <!-- 鏂板缓/淇敼 -->
-    <OperaOrdersWindow ref="operaOrdersWindow" @success="handlePageChange"/>
+    <OperaOrderDetailWindow ref="OperaOrderDetailWindow" @success="handlePageChange"/>
   </TableLayout>
 </template>
 
@@ -114,68 +146,27 @@
 import BaseTable from '@/components/base/BaseTable'
 import TableLayout from '@/layouts/TableLayout'
 import Pagination from '@/components/common/Pagination'
-import OperaOrdersWindow from '@/components/business/OperaOrdersWindow'
+import OperaOrderDetailWindow from '@/components/business/OperaOrderDetailWindow'
+import { cancel } from '@/api/business/orders'
 export default {
   name: 'Orders',
   extends: BaseTable,
-  components: { TableLayout, Pagination, OperaOrdersWindow },
+  components: { TableLayout, Pagination, OperaOrderDetailWindow },
   data () {
     return {
       // 鎼滅储
       searchForm: {
-        id: '',
-        deleted: '',
-        createUser: '',
-        createTime: '',
-        updateUser: '',
-        updateTime: '',
-        remark: '',
-        releaseMemberId: '',
-        type: '',
-        startDate: '',
-        endDate: '',
-        location: '',
-        locationRemark: '',
-        lat: '',
-        province: '',
-        city: '',
-        area: '',
-        lgt: '',
-        categoryId: '',
-        workType: '',
-        priceNum1: '',
-        priceNum2: '',
-        supplement: '',
-        price: '',
-        estimatedAccount: '',
-        payAccount: '',
-        reviceAccount: '',
-        priceRemark: '',
-        carType: '',
-        transportTypeId: '',
-        transportNum: '',
-        transportUnit: '',
-        locationEnd: '',
-        latEnd: '',
-        lgtEnd: '',
-        wayInfo: '',
-        code: '',
-        status: '',
-        acceptTime: '',
-        acceptMemberId: '',
-        acceptType: '',
-        workStartTime: '',
-        finishTime: '',
-        platformRata: '',
-        wxExternalNo: '',
-        commentStatus: '',
-        commentInfo: '',
-        commentLevel: '',
-        commentTime: '',
-        commentType: '',
-        cancelTime: '',
-        isUpdate: '',
-        blackRecive: ''
+        acceptName: null,
+        releaseName: null,
+        type: null,
+        createTimeEnd: null,
+        createTimeStart: null,
+        acceptTimeStart: null,
+        acceptTimeEnd: null,
+        doneTimeStart: null,
+        doneTimeEnd: null,
+        status: null,
+        code: null
       }
     }
   },
@@ -187,6 +178,44 @@
       'field.main': 'id'
     })
     this.search()
+  },
+  reset () {
+    this.searchForm = {
+      acceptName: null,
+      releaseName: null,
+      type: null,
+      createTimeEnd: null,
+      createTimeStart: null,
+      acceptTimeStart: null,
+      acceptTimeEnd: null,
+      doneTimeStart: null,
+      doneTimeEnd: null,
+      status: null,
+      code: null
+    }
+    this.search()
+  },
+  methods: {
+    openDetail (row) {
+      this.$refs.OperaOrderDetailWindow.open('璁㈠崟璇︽儏', row )
+    },
+    cancelDo (row) {
+      this.$dialog.actionConfirm('鎮ㄧ‘璁ゃ�愬彇娑堛�戣璁㈠崟鍚楋紵', '鎿嶄綔纭')
+        .then(() => {
+          this.dealing = true
+          cancel(row.id)
+            .then(res => {
+              this.$tip.apiSuccess('鎿嶄綔鎴愬姛')
+              this.search()
+            })
+            .catch(e => {
+              this.$tip.apiFailed(e)
+            })
+            .finally(() => {
+              this.dealing = false
+            })
+        })
+    }
   }
 }
 </script>

--
Gitblit v1.9.3