From a2299a6d4a6f99e9c11132138f5d3e9ec68f03ea Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期五, 06 六月 2025 19:19:34 +0800
Subject: [PATCH] 开发更新

---
 admin/src/views/finance/bull.vue |  200 +++++++++++++++++++++++++++++++------------------
 1 files changed, 126 insertions(+), 74 deletions(-)

diff --git a/admin/src/views/finance/bull.vue b/admin/src/views/finance/bull.vue
index fef662a..f2344d0 100644
--- a/admin/src/views/finance/bull.vue
+++ b/admin/src/views/finance/bull.vue
@@ -3,162 +3,216 @@
     <QueryForm v-model="filters" :query-form-config="queryFormConfig" @handleQuery="getList(1)" @clear="clear" />
     <div class="df_sb mt20">
       <div class="tabs">
-        <div class="tab" :class="{ active: activeTabs == 0 }" @click="tabsClick(0)">鏀舵璐﹀崟</div>
-        <div class="tab" :class="{ active: activeTabs == 1 }" @click="tabsClick(1)">浠樻璐﹀崟</div>
+        <div class="tab" :class="{ active: billType === 0 }" @click="tabsClick(0)">鏀舵璐﹀崟</div>
+        <div class="tab" :class="{ active: billType === 1 }" @click="tabsClick(1)">浠樻璐﹀崟</div>
       </div>
       <div class="btns">
-        <el-button type="primary" @click="handleEdit()" icon="el-icon-plus"
+        <el-button type="primary" @click="addOpen" icon="el-icon-plus"
           v-permissions="['business:ywpatrolline:create']">鏂板缓</el-button>
-        <el-button @click="handleEx" v-permissions="['business:ywpatrolline:create']">瀵煎嚭</el-button>
+<!--        <el-button @click="handleDetail" v-permissions="['business:ywpatrolline:create']">瀵煎嚭</el-button>-->
       </div>
     </div>
     <el-table v-loading="loading" :data="list" stripe>
-      <el-table-column prop="" label="杩愮淮浜�" min-width="100" show-overflow-tooltip />
-      <el-table-column prop="code" label="璁惧缂栧彿" min-width="100" show-overflow-tooltip />
-      <el-table-column prop="name" label="璁惧鍚嶇О" min-width="100" show-overflow-tooltip />
-      <el-table-column prop="stautsName" label="璁惧鐘舵��" min-width="100" show-overflow-tooltip />
-      <el-table-column prop="remark" label="杩愮淮澶囨敞" min-width="100" show-overflow-tooltip />
-      <el-table-column prop="createTime" label="鍒涘缓鏃堕棿" min-width="100" show-overflow-tooltip />
+      <el-table-column prop="customerName" label="瀹㈡埛鍚嶇О" min-width="100" show-overflow-tooltip />
+      <el-table-column label="鎴块棿" min-width="170" show-overflow-tooltip>
+        <template slot-scope="{row}">
+          <div style="display: flex; flex-direction: column;" v-if="row.roomPathName">
+            <span v-for="(item, index) in row.roomPathName.split(';')" :key="index">{{item}}</span>
+          </div>
+        </template>
+      </el-table-column>
+      <el-table-column prop="contractCode" label="鍚堝悓缂栧彿" min-width="100" show-overflow-tooltip />
+      <el-table-column label="缁撴竻鐘舵��" min-width="100" show-overflow-tooltip>
+        <template slot-scope="{row}">
+          <span v-if="row.payStatus === 0">寰呮敹娆�</span>
+          <span v-if="row.payStatus === 1">宸茬粨娓�</span>
+          <span v-if="row.payStatus === 2">閮ㄥ垎缁撴竻</span>
+          <span v-if="row.payStatus === 3">寰呬粯娆�</span>
+          <span v-if="row.payStatus === 4">寰呴��娆�</span>
+          <span v-if="row.payStatus === 5">宸插叧闂�</span>
+        </template>
+      </el-table-column>
+      <el-table-column prop="totleFee" label="璐﹀崟閲戦" min-width="100" show-overflow-tooltip />
+      <el-table-column prop="receivableFee" :label="`搴�${billType === 0 ? '鏀�' : '浠�'}閲戦`" min-width="100" show-overflow-tooltip />
+      <el-table-column prop="actReceivableFee" :label="`瀹�${billType === 0 ? '鏀�' : '浠�'}閲戦`" min-width="100" show-overflow-tooltip />
+      <el-table-column :label="`闇�鏀�/浠橀噾棰漙" min-width="100" show-overflow-tooltip>
+        <template slot-scope="{row}">
+          {{Math.abs(row.needReceivableFee)}}
+        </template>
+      </el-table-column>
+      <el-table-column label="璐圭敤绫诲瀷" min-width="100" show-overflow-tooltip>
+        <template slot-scope="{row}">
+          <span v-if="row.costType === 0">绉熻祦璐�</span>
+          <span v-if="row.costType === 1">鐗╀笟璐�</span>
+          <span v-if="row.costType === 2">绉熻祦鎶奸噾</span>
+          <span v-if="row.costType === 3">鐗╀笟鎶奸噾</span>
+          <span v-if="row.costType === 4">姘寸數璐�</span>
+          <span v-if="row.costType === 5">鏉傞」璐�</span>
+          <span v-if="row.costType === 6">鍏跺畠</span>
+          <span v-if="row.costType === 7">淇濊瘉閲�</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="鏄惁閫炬湡" min-width="100" show-overflow-tooltip>
+        <template slot-scope="{row}">
+          <span v-if="row.isOverdue === 0">鏈�炬湡</span>
+          <span v-if="row.isOverdue === 1" style="color: red;">宸查�炬湡</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="璁¤垂鍛ㄦ湡" min-width="200" show-overflow-tooltip>
+        <template slot-scope="{row}">
+          {{ row.startDate }} ~ {{ row.endDate }}
+        </template>
+      </el-table-column>
+      <el-table-column prop="planPayDate" :label="`搴�${billType === 0 ? '鏀�' : '浠�'}鏃ユ湡`" min-width="100" show-overflow-tooltip />
+      <el-table-column label="璐﹀崟鏉ユ簮" min-width="100" show-overflow-tooltip>
+        <template slot-scope="{row}">
+          <span v-if="row.type === 0">鍚堝悓璐﹀崟</span>
+          <span v-if="row.type === 1">鑷缓璐﹀崟</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="璐﹀崟鐘舵��" min-width="100" fixed="right" show-overflow-tooltip>
+        <template slot-scope="{row}">
+          <span v-if="row.status === 0">寮�鍚�</span>
+          <span v-if="row.status === 1" style="color: red;">鍏抽棴</span>
+        </template>
+      </el-table-column>
       <el-table-column label="鎿嶄綔" min-width="120" fixed="right">
         <template slot-scope="{row}">
-          <el-button type="text" @click="handleDetail(row)" icon="el-icon-edit"
-            v-permissions="['business:category:update']">鏌ョ湅</el-button>
+          <el-button type="text" @click="handleDetail(row)" icon="el-icon-edit" v-permissions="['business:category:update']">鏌ョ湅璇︽儏</el-button>
         </template>
       </el-table-column>
     </el-table>
     <div class="mt20">
       <Pagination @size-change="handleSizeChange" @current-change="getList" :pagination="pagination" />
     </div>
-    <Edit v-if="showEdit" ref="EditRef" @success="getList" @close="showEdit = false" />
+    <Edit ref="EditRef" @success="getList" />
+    <Detail ref="DetailRef" @success="getList" />
+    <BullEditFu ref="BullEditFu" @success="getList" />
   </div>
 </template>
 
 <script>
 import Pagination from '@/components/common/Pagination'
 import QueryForm from '@/components/common/QueryForm'
-import Edit from './components/deviceEdit.vue'
-import { fetchList, deleteById } from '@/api/Inspection/device'
+import Edit from './components/bullEdit.vue'
+import BullEditFu from './components/bullEditFu.vue'
+import Detail from './components/bullDetail.vue'
+import { fetchList } from '@/api/bill'
 export default {
   components: {
     Pagination,
     QueryForm,
-    Edit
+    Edit,
+    Detail,
+    BullEditFu
   },
-  data() {
+  data () {
     return {
       loading: false,
-      showEdit: false,
       pagination: {
         pageSize: 10,
         page: 1,
         total: 0
       },
-      activeTabs: 0,
-      filters: {},
+      billType: 0,
+      filters: {
+        status: 0
+      },
       list: [],
       total: 0,
-      statusMap: [
-        { value: 0, label: '寰呮敹娆�' },
-        { value: 1, label: '宸茬粨绠�' },
-        { value: 2, label: '閮ㄥ垎缁撴竻' },
-        { value: 3, label: '寰呴��娆�' },
-        { value: 4, label: '寰呬粯娆�' },
-      ],
       queryFormConfig: {
         formItems: [
           {
-            filed: 'name',
+            filed: 'customerName',
             type: 'input',
-            label: '瀹㈡埛鍚嶇О',
+            label: '瀹㈡埛鍚嶇О'
+          },
+          {
+            filed: 'contractCode',
+            type: 'input',
+            label: '鍚堝悓缂栧彿'
           },
           {
             filed: 'status',
             type: 'select',
             label: '璐﹀崟鐘舵��',
             options: [
-              { value: '0', label: '寮�鍚�' },
-              { value: '1', label: '鍏抽棴' },
+              { value: 0, label: '寮�鍚�' },
+              { value: 1, label: '鍏抽棴' }
             ]
           },
           {
-            filed: 'status',
+            filed: 'payStatus',
             type: 'select',
             label: '缁撴竻鐘舵��',
-            options: this.statusMap
+            options: [
+              { value: 0, label: '寰呮敹娆�' },
+              { value: 1, label: '宸茬粨娓�' },
+              { value: 2, label: '閮ㄥ垎缁撴竻' },
+              { value: 3, label: '寰呬粯娆�' },
+              { value: 4, label: '寰呴��娆�' }
+            ]
           },
           {
             filed: 'selDate',
             type: 'daterange',
             label: '搴旀敹/浠樻棩鏈�'
-          },
-        ],
-        online: true
+          }
+        ]
       }
     }
   },
-  created() {
+  created () {
     this.getList()
   },
   methods: {
-    getList(page) {
+    addOpen () {
+      if (this.billType === 0) {
+        this.$refs.EditRef.open('鍒涘缓鏀舵璐﹀崟')
+      } else {
+        this.$refs.BullEditFu.open('鍒涘缓浠樻璐﹀崟')
+      }
+    },
+    getList (page) {
       const { pagination, filters } = this
+      let form = JSON.parse(JSON.stringify(filters))
+      if (form && form.selDate && form.selDate.length > 0) {
+        form.planPayDateStart = form.payDate[0]
+        form.planPayDateEnd = form.payDate[1]
+      }
       this.loading = true
       fetchList({
         model: {
           ...filters,
+          billType: this.billType
         },
         capacity: pagination.pageSize,
-        page: page || pagination.page,
+        page: page || pagination.page
       }).then(res => {
         this.loading = false
         this.list = res.records || []
         this.list.forEach(item => {
-          item.stautsName = item.status == 0 ? '姝e父' : item.status == 1 ? '鎹熷潖' : '鎶ュ簾'
+          item.statusName = item.status === 1 ? '鎹熷潖' : item.status === 2 ? '鎶ュ簾' : '姝e父'
         })
         this.pagination.total = res.total || 0
       }, () => {
         this.loading = false
       })
     },
-    handleEx() {
-
+    tabsClick (val) {
+      this.billType = val
+      this.getList()
     },
-    tabsClick(val) {
-      this.activeTabs = val
+    handleDetail (row) {
+      this.$refs.DetailRef.open('璐﹀崟璇︽儏', row.id)
     },
-    handleEdit(row) {
-      this.showEdit = true
-      this.$nextTick(() => {
-        this.$refs.EditRef.isShowModal = true
-        if (row && row.id) {
-          this.$refs.EditRef.getDetail(row.id)
-        }
-      })
-
-    },
-    handleDetail() {
-
-    },
-    handleDel(row) {
-      let message = `纭鍒犻櫎璇ヨ褰曞悧?`
-      this.$dialog.deleteConfirm(message)
-        .then(() => {
-          this.isWorking.delete = true
-          deleteById(row.id)
-            .then(() => {
-              this.$tip.apiSuccess('鍒犻櫎鎴愬姛')
-              this.getList()
-            })
-        })
-        .catch(() => { })
-    },
-    clear() {
+    clear () {
       this.filters = {}
       this.pagination.pageSize = 10
       this.pagination.page = 1
       this.getList()
     },
-    handleSizeChange(capacity) {
+    handleSizeChange (capacity) {
       this.pagination.pageSize = capacity
       this.getList()
     }
@@ -170,10 +224,8 @@
 @import '@/assets/style/variables.scss';
 
 .tabs {
-  border-bottom: 1px solid #DFE2E8;
   display: flex;
   margin-bottom: 20px;
-  display: flex;
   justify-content: center;
 
   .tab {

--
Gitblit v1.9.3