From 7470ad6bfa2f7d7be9c7d1e2d9c991094a3ad367 Mon Sep 17 00:00:00 2001
From: MrShi <1878285526@qq.com>
Date: 星期四, 28 十一月 2024 18:43:24 +0800
Subject: [PATCH] 提交

---
 admin/src/views/finance/components/bullEdit.vue |  331 +++++++++++++++++++++++-------------------------------
 1 files changed, 142 insertions(+), 189 deletions(-)

diff --git a/admin/src/views/finance/components/bullEdit.vue b/admin/src/views/finance/components/bullEdit.vue
index 5e69da3..0d77432 100644
--- a/admin/src/views/finance/components/bullEdit.vue
+++ b/admin/src/views/finance/components/bullEdit.vue
@@ -3,7 +3,7 @@
     @confirm="confirm">
     <div class="main">
       <div class="main_content">
-        <el-form :model="param" label-position="top" ref="form" :rules="rules">
+        <el-form :model="form" label-position="top" ref="form" :rules="rules">
           <div class="head">
             <div class="m_title">鍩虹淇℃伅</div>
             <div class="tabs">
@@ -13,18 +13,20 @@
           </div>
           <div class="list">
             <el-form-item label="鍏宠仈鍚堝悓" prop="contractId">
-              <el-select v-model="form.contractId" placeholder="璇烽�夋嫨" clearable>
-                <el-option v-for="(item, index) in contract" :key="index" :value="item.value" :label="item.name"></el-option>
+              <el-select v-model="form.contractId" @change="changeContract" placeholder="璇烽�夋嫨">
+                <el-option v-for="(item, index) in contract" :key="index" :value="item.id" :label="item.code"></el-option>
               </el-select>
             </el-form-item>
-            <el-form-item label="浠樻鏂�" prop="customerName">
-              <el-select v-model="form.customerName" filterable placeholder="璇烽�夋嫨">
+            <el-form-item label="浠樻鏂�" prop="renterName">
+                <el-input v-model="form.renterName" disabled placeholder="璇疯緭鍏ュ簲鏀堕噾棰�" v-trim />
+            </el-form-item>
+            <el-form-item label="鎴挎簮" prop="ywContractRoomList">
+              <el-select v-model="form.ywContractRoomList" multiple placeholder="璇烽�夋嫨">
                 <el-option
-                  v-for="(item, index) in payerList"
+                  v-for="(item, index) in houseList"
                   :key="index"
-                  :label="item.label"
-                  :value="item.value">
-                </el-option>
+                  :value="item.id"
+                  :label="item.projectName + item.buildingName + item.floorName + item.roomName" />
               </el-select>
             </el-form-item>
             <el-form-item label="璐圭敤绫诲瀷" prop="costType">
@@ -38,25 +40,25 @@
                 <el-option :value="6" label="鍏朵粬"></el-option>
               </el-select>
             </el-form-item>
-            <el-form-item label="璁¤垂鍛ㄦ湡" prop="startDate" v-if="form.feeType !== 1">
+            <el-form-item label="璁¤垂鍛ㄦ湡" prop="date" v-if="form.feeType !== 1">
               <el-date-picker
                 type="daterange"
                 range-separator="鑷�"
-                v-model="date"
+                v-model="form.date"
                 @change="changeDate"
                 start-placeholder="寮�濮嬫棩鏈�"
                 end-placeholder="缁撴潫鏃ユ湡"
                 value-format="yyyy-MM-dd"
                 placeholder="璇烽�夋嫨" />
             </el-form-item>
-            <el-form-item label="搴旀敹閲戦" prop="receivableFee">
-              <el-input v-model="form.receivableFee" placeholder="璇疯緭鍏ュ簲鏀堕噾棰�" v-trim />
+            <el-form-item label="搴旀敹閲戦" prop="totleFee">
+              <el-input v-model="form.totleFee" placeholder="璇疯緭鍏ュ簲鏀堕噾棰�" v-trim />
             </el-form-item>
             <el-form-item label="搴旀敹鏃ユ湡" prop="planPayDate">
               <el-date-picker type="date" v-model="form.planPayDate" value-format="yyyy-MM-dd" placeholder="璇烽�夋嫨" />
             </el-form-item>
             <el-form-item label="鎵�灞炲叕鍙�" prop="companyId">
-              <el-select v-model="form.companyId" placeholder="璇烽�夋嫨" clearable>
+              <el-select v-model="form.companyId" placeholder="璇烽�夋嫨">
                 <el-option
                   v-for="(item, index) in comparyList"
                   :key="index"
@@ -65,21 +67,10 @@
               </el-select>
             </el-form-item>
             <el-form-item style="width: 100%;" label="璐﹀崟澶囨敞" prop="remark">
-              <el-input type="textarea" :rows="5" v-model="param.remark" placeholder="璇疯緭鍏�" />
+              <el-input type="textarea" :rows="5" v-model="form.remark" placeholder="璇疯緭鍏�" />
             </el-form-item>
           </div>
         </el-form>
-      </div>
-      <div class="main_house">
-        <div class="title">璇烽�夋嫨鎴挎簮</div>
-        <el-tree
-          :data="houseList"
-          show-checkbox
-          node-key="id"
-          :default-expanded-keys="[2, 3]"
-          :default-checked-keys="[5]"
-          :props="defaultProps">
-        </el-tree>
       </div>
     </div>
     <div class="file_wrap">
@@ -90,187 +81,159 @@
           <el-button icon="el-icon-plus" plain>娣诲姞闄勪欢</el-button>
         </el-upload>
       </div>
-      <el-table :data="param.list" stripe>
-        <el-table-column prop="" label="闄勪欢鍚嶇О" align="center" min-width="100" show-overflow-tooltip />
-        <el-table-column prop="" label="鎿嶄綔浜�" align="center" min-width="100" show-overflow-tooltip />
-        <el-table-column prop="" label="鎿嶄綔鏃堕棿" align="center" min-width="100" show-overflow-tooltip />
-        <el-table-column prop="" label="鎿嶄綔" align="center" min-width="100">
-          <template v-slot="{ scope }">
-            <span class="cu red">鍒犻櫎</span>
+      <el-table :data="form.multifileList" stripe>
+        <el-table-column prop="originname" label="闄勪欢鍚嶇О" align="center" min-width="100" show-overflow-tooltip />
+        <el-table-column prop="userName" label="鎿嶄綔浜�" align="center" min-width="100" show-overflow-tooltip />
+        <el-table-column prop="createTime" label="鎿嶄綔鏃堕棿" align="center" min-width="100" show-overflow-tooltip />
+        <el-table-column label="鎿嶄綔" align="center" min-width="100">
+          <template slot-scope="{row}">
+            <span class="cu red" @click="dele(row.imgaddr)">鍒犻櫎</span>
           </template>
         </el-table-column>
       </el-table>
     </div>
-    <!--  -->
-    <MemberSearch ref="MemberSearchRef" />
   </GlobalWindow>
 </template>
 
 <script>
 import GlobalWindow from '@/components/common/GlobalWindow'
 import BaseOpera from '@/components/base/BaseOpera'
-import MemberSearch from '@/components/common/MemberSearch'
 import { rules } from './config'
 import { create } from '@/api/bill'
+import { list as listAll } from '@/api/contract'
+import { companyList } from '@/api/company'
 import { Message, Loading } from 'element-ui'
+import { getContractRoom } from '@/api/house'
+import { mapState } from 'vuex'
 export default {
   components: {
-    GlobalWindow,
-    MemberSearch
+    GlobalWindow
+  },
+  computed: {
+    ...mapState(['userInfo'])
   },
   extends: BaseOpera,
-  data() {
+  data () {
     return {
       form: {
         contractId: '',
-        customerName: '',
+        renterName: '',
+        renterId: '',
         costType: '',
         type: '',
         companyId: '',
         remark: '',
         startDate: '',
         endDate: '',
-        receivableFee: '',
+        totleFee: '',
         feeType: 0,
-        planPayDate: ''
+        planPayDate: '',
+        multifileList: [],
+        ywContractRoomList: [],
+        date: [],
+        RoomName: ''
       },
-      date: [],
-      
-      param: {},
       rules,
-      timeTab: '0',
-
       loadingInstance: null,
       uploadImgUrl: process.env.VUE_APP_API_PREFIX + '/visitsAdmin/cloudService/public/uploadBatch',
       fileList: [],
       uploadData: {
-        folder: 'HIDDEN_DANGER_FILE'
+        folder: 'YW_CONTRACT_BILL'
       },
       contract: [],
       payerList: [],
-      
-      projectList: [],
-      comparyList: [], // 鍏徃
-      renterList: [], // 绉熷
-      contacts: [], // 鑱旂郴浜�
-      value: [],
-      options: [
-        {
-          value: 1,
-          label: '涓滃崡',
-          children: [{
-            value: 2,
-            label: '涓婃捣',
-            children: [
-              { value: 3, label: '鏅檧' },
-              { value: 4, label: '榛勫煍' },
-              { value: 5, label: '寰愭眹' }
-            ]
-          }, {
-            value: 7,
-            label: '姹熻嫃',
-            children: [
-              { value: 8, label: '鍗椾含' },
-              { value: 9, label: '鑻忓窞' },
-              { value: 10, label: '鏃犻敗' }
-            ]
-          }, {
-            value: 12,
-            label: '娴欐睙',
-            children: [
-              { value: 13, label: '鏉窞' },
-              { value: 14, label: '瀹佹尝' },
-              { value: 15, label: '鍢夊叴' }
-            ]
-          }]
-        },
-        {
-          value: 17,
-          label: '瑗垮寳',
-          children: [{
-            value: 18,
-            label: '闄曡タ',
-            children: [
-              { value: 19, label: '瑗垮畨' },
-              { value: 20, label: '寤跺畨' }
-            ]
-          }, {
-            value: 21,
-            label: '鏂扮枂缁村惥灏旀棌鑷不鍖�',
-            children: [
-              { value: 22, label: '涔岄瞾鏈ㄩ綈' },
-              { value: 23, label: '鍏嬫媺鐜涗緷' }
-            ]
-          }]
-        }
-      ],
-      cactiveTabs: 0,
-      paramCost: {},
-      payMethods: [
-        { name: '涓�娆℃�т粯娆�', value: 0 },
-        { name: '3涓湀涓�浠�', value: 1 },
-        { name: '6涓湀涓�浠�', value: 2 },
-        { name: '1骞翠竴浠�', value: 2 },
-      ],
-      unitOps: [
-        { name: '鍏�/m虏路澶�', value: 0 },
-        { name: '鍏�/m虏路鏈�', value: 1 },
-        { name: '鍏�/澶�', value: 2 },
-        { name: '鍏�/鏈�', value: 3 },
-        { name: '鍏�/骞�', value: 4 },
-        { name: '鍏�/m虏路骞�', value: 5 },
-        { name: '鍏�/鍦�', value: 6 },
-      ],
-      houseList: [{
-        id: 1,
-        label: '涓�绾� 1',
-        children: [{
-          id: 4,
-          label: '浜岀骇 1-1',
-          children: [{
-            id: 9,
-            label: '涓夌骇 1-1-1'
-          }, {
-            id: 10,
-            label: '涓夌骇 1-1-2'
-          }]
-        }]
-      }, {
-        id: 2,
-        label: '涓�绾� 2',
-        children: [{
-          id: 5,
-          label: '浜岀骇 2-1'
-        }, {
-          id: 6,
-          label: '浜岀骇 2-2'
-        }]
-      }, {
-        id: 3,
-        label: '涓�绾� 3',
-        children: [{
-          id: 7,
-          label: '浜岀骇 3-1'
-        }, {
-          id: 8,
-          label: '浜岀骇 3-2'
-        }]
-      }],
-      defaultProps: {
-        children: 'children',
-        label: 'label'
-      }
+      comparyList: [],
+      houseList: []
     }
   },
   methods: {
-    timeTabClick(val) {
+    open (title, target) {
+      this.title = title
+      this.form.multifileList = []
+      this.getListAll()
+      this.getCompanyList()
+      this.visible = true
+      // 鏂板缓
+      if (target == null) {
+        this.$nextTick(() => {
+          this.$refs.form.resetFields()
+          this.form[this.configData['field.id']] = null
+        })
+        return
+      }
+      // 缂栬緫
+      this.$nextTick(() => {
+        for (const key in this.form) {
+          this.form[key] = target[key]
+        }
+      })
+    },
+    changeContract (e) {
+      this.form.renterName = this.contract.filter(item => {
+        if (item.id === e) {
+          return item
+        }
+      })[0].renterName
+      this.getHouseDate()
+    },
+    getHouseDate () {
+      getContractRoom({ contractId: this.form.contractId, type: 0 })
+        .then(res => {
+          this.houseList = res
+        })
+    },
+    confirm () {
+      this.$refs.form.validate((valid) => {
+        if (!valid) return
+        this.isWorking = true
+        let obj = JSON.parse(JSON.stringify(this.form))
+        obj.ywContractRoomList = obj.ywContractRoomList.map(id => {
+          return { roomId: id }
+        })
+        obj.billType = 0
+        create(obj)
+          .then(() => {
+            this.visible = false
+            this.$tip.apiSuccess('鏂板缓鎴愬姛')
+            this.$emit('success')
+          })
+          .finally(() => {
+            this.isWorking = false
+          })
+      })
+    },
+    dele (imgaddr) {
+      this.form.multifileList.forEach((item, index) => {
+        if (imgaddr === item.imgaddr) {
+          this.form.multifileList.splice(index, 1)
+        }
+      })
+    },
+    openHouse () {
+      this.$refs.selectHouse.open('閫夋嫨鎴挎簮', { contractId: this.form.contractId, type: 0 })
+    },
+    getCompanyList () {
+      companyList({})
+        .then(res => {
+          this.comparyList = res
+        })
+    },
+    getListAll () {
+      listAll({})
+        .then(res => {
+          console.log(res)
+          this.contract = res
+        })
+    },
+    timeTabClick (val) {
       this.form.feeType = val
       if (val === 1) {
         this.form.startDate = ''
         this.form.endDate = ''
+        this.form.date = []
       }
     },
-    changeDate(e) {
+    changeDate (e) {
       if (!e || e.length === 0) {
         this.form.startDate = ''
         this.form.endDate = ''
@@ -279,10 +242,7 @@
         this.form.endDate = e[1]
       }
     },
-    handleRent() {
-      this.$refs.MemberSearchRef.openModal()
-    },
-    beforeUpload(file) {
+    beforeUpload (file) {
       this.loadingInstance = Loading.service({
         lock: true,
         text: 'Loading',
@@ -290,40 +250,33 @@
         background: 'rgba(0, 0, 0, 0.7)'
       })
     },
-    uploadError() {
+    uploadError () {
       this.$nextTick(() => { // 浠ユ湇鍔$殑鏂瑰紡璋冪敤鐨� Loading 闇�瑕佸紓姝ュ叧闂�
         if (this.loadingInstance) {
           this.loadingInstance.close()
         }
       })
     },
-    uploadAvatarSuccess(file) {
-      this.$nextTick(() => { // 浠ユ湇鍔$殑鏂瑰紡璋冪敤鐨� Loading 闇�瑕佸紓姝ュ叧闂�
+    getDay () {
+      const now = new Date();
+      const year = now.getFullYear();
+      const month = now.getMonth() + 1; // 鍔�1浣垮叾浠�1寮�濮�
+      const day = now.getDate();
+      const hours = now.getHours();
+      const minutes = now.getMinutes();
+      const seconds = now.getSeconds();
+      return `${year}-${month.toString().padStart(2, '0')}-${day.toString().padStart(2, '0')} ${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`;
+    },
+    uploadAvatarSuccess (file) {
+      this.$nextTick(() => {
         if (this.loadingInstance) {
           this.loadingInstance.close()
         }
       })
-      console.log('file', file)
       const item = file.data[0]
-      if (['.mp4', '.avi', '.flv', '.wmv'].some(char => item.imgaddr.includes(char))) {
-        this.fileList.push({
-          type: 1,
-          fileurl: item.imgaddr,
-          fileurlFull: item.url
-        })
-      } else {
-        this.fileList.push({
-          type: 0,
-          fileurl: item.imgaddr,
-          fileurlFull: item.url
-        })
-      }
-      console.log('file', this.fileList)
-      // this.$set(this.param, 'faceImg', file.imgurl)
-      // this.$set(this.param, 'faceImgUrl', file.imgurlfull)
+      this.form.multifileList.push({ ...item, fileurl: item.imgaddr, name: item.originname, userName: this.userInfo.realname, createTime: this.getDay() })
     },
-    close() {
-      this.isShowModal = false
+    close () {
       this.$emit('close')
     }
   }
@@ -361,7 +314,7 @@
       .tabs {
         display: flex;
         margin-bottom: 20px;
-        display: flex;
+        align-items: center;
         justify-content: center;
 
         .tab {

--
Gitblit v1.9.3