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/flowingWater.vue | 260 ++++++++++++++++++++-------------------------------- 1 files changed, 100 insertions(+), 160 deletions(-) diff --git a/admin/src/views/finance/components/flowingWater.vue b/admin/src/views/finance/components/flowingWater.vue index 590e012..a2490c2 100644 --- a/admin/src/views/finance/components/flowingWater.vue +++ b/admin/src/views/finance/components/flowingWater.vue @@ -1,37 +1,33 @@ <template> - <GlobalWindow width="100%" :title="title" :visible.sync="isShowModal" :confirm-working="isWorking" @close="close" + <GlobalWindow width="100%" :title="title" :visible.sync="visible" :confirm-working="isWorking" @close="close" @confirm="confirm"> <div class="main"> <div class="main_content"> - <el-form :model="param" label-position="top" ref="paramRef" :rules="rules"> + <el-form :model="form" label-position="top" ref="paramRef" :rules="rules"> <div class="head"> <div class="m_title">娴佹按淇℃伅</div> </div> <div class="list"> - <el-form-item label="鍏宠仈鍚堝悓" prop="type"> - <el-select v-model="param.type" placeholder="璇烽�夋嫨" clearable> - <el-option v-for="item in types" :value="item.value" :label="item.name"></el-option> - </el-select> + <el-form-item label="鍏宠仈鍚堝悓" required> + <el-input v-model="form.contractCode" disabled placeholder="璇疯緭鍏�" v-trim /> </el-form-item> - <el-form-item label="璐圭敤绫诲瀷" prop="code"> - <el-input v-model="param.code" placeholder="璇疯緭鍏ュ悎鍚岀紪鍙�" v-trim /> + <el-form-item label="璐圭敤绫诲瀷" required> + <el-input v-model="form.costTypeName" disabled placeholder="璇疯緭鍏�" v-trim /> </el-form-item> - <el-form-item label="璐瑰崟鍛ㄦ湡" prop="aaa"> - <el-select v-model="param.code" placeholder="璇烽�夋嫨" clearable> - <el-option v-for="item in agentList" :value="item.id" :label="item.name"></el-option> - </el-select> + <el-form-item label="璁¤垂鍛ㄦ湡" required> + <el-input v-model="form.date" disabled placeholder="璇疯緭鍏�" v-trim /> </el-form-item> - <el-form-item label="搴旀敹閲戦" prop=""> - <el-input v-model="param.code" placeholder="璇疯緭鍏ュ疄鏀堕噾棰�" v-trim /> + <el-form-item label="搴旀敹閲戦" prop="receivableFee"> + <el-input v-model="form.receivableFee" placeholder="璇疯緭鍏�" v-trim /> </el-form-item> - <el-form-item label="瀹炴敹閲戦" prop=""> - <el-input v-model="param.code" placeholder="璇疯緭鍏ュ疄鏀堕噾棰�" v-trim /> + <el-form-item label="瀹炴敹閲戦" prop="actReceivableFee"> + <el-input v-model="form.actReceivableFee" placeholder="璇疯緭鍏�" v-trim /> </el-form-item> - <el-form-item label="鍏ヨ处鏃ユ湡" prop=""> - <el-date-picker type="date" v-model="param.getDate" value-format="yyyy-MM-dd" placeholder="璇烽�夋嫨" /> + <el-form-item label="鍏ヨ处鏃ユ湡" prop="actPayDate"> + <el-date-picker type="date" v-model="form.actPayDate" value-format="yyyy-MM-dd" placeholder="璇烽�夋嫨" /> </el-form-item> - <el-form-item label="鏀舵鏂瑰紡" prop=""> - <el-select v-model="param.content" placeholder="璇烽�夋嫨"> + <el-form-item label="鏀舵鏂瑰紡" prop="payType"> + <el-select v-model="form.payType" placeholder="璇烽�夋嫨"> <el-option label="鐜伴噾" :value="1"></el-option> <el-option label="缃戦摱杞处" :value="2"></el-option> <el-option label="POS鏈�" :value="3"></el-option> @@ -41,18 +37,16 @@ <el-option label="鍏跺畠鏂瑰紡" :value="7"></el-option> </el-select> </el-form-item> - <el-form-item label="鎵�灞炲叕鍙�" prop=""> - <el-select v-model="param.code" placeholder="璇烽�夋嫨" clearable> - <el-option v-for="item in agentList" :value="item.id" :label="item.name"></el-option> + <el-form-item label="鎵�灞炲叕鍙�" prop="companyName"> + <el-input disabled v-model="form.companyName" placeholder="璇疯緭鍏�" /> + </el-form-item> + <el-form-item label="鏀舵敮璐︽埛" prop="accountId"> + <el-select v-model="form.accountId" placeholder="璇烽�夋嫨" clearable> + <el-option v-for="item in agentList" :value="item.id" :label="item.title"></el-option> </el-select> </el-form-item> - <el-form-item label="鏀舵敮璐︽埛" prop=""> - <el-select v-model="param.code" placeholder="璇烽�夋嫨" clearable> - <el-option v-for="item in agentList" :value="item.id" :label="item.name"></el-option> - </el-select> - </el-form-item> - <el-form-item label="澶囨敞" prop="" style="width: 100%;"> - <el-input type="textarea" :rows="6" v-model="param.content" placeholder="璇疯緭鍏�" /> + <el-form-item label="澶囨敞" prop="remark" style="width: 100%;"> + <el-input type="textarea" :rows="6" v-model="form.remark" placeholder="璇疯緭鍏�" /> </el-form-item> </div> </el-form> @@ -62,17 +56,17 @@ <div class="head"> <div>璐﹀崟闄勪欢</div> <el-upload class="upload-demo" :show-file-list="false" :data="uploadData" :action="uploadImgUrl" - :on-success="uploadAvatarSuccess" :before-upload="beforeUpload" :on-error="uploadError"> + :on-success="uploadAvatarSuccess" :before-upload="beforeUpload" :on-error="uploadError"> <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="name" 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> @@ -84,122 +78,56 @@ import GlobalWindow from '@/components/common/GlobalWindow' import BaseOpera from '@/components/base/BaseOpera' import { rules } from './config' + import { ywAccountList } from '@/api/bill' + import { create } from '@/api/ywContractRevenue' import { Message, Loading } from 'element-ui' + import { mapState } from 'vuex' export default { name: "flowingWater", components: { GlobalWindow }, + computed: { + ...mapState(['userInfo']) + }, extends: BaseOpera, data() { return { - isShowModal: false, - title: '', - activeTabs: '0', - param: {}, + form: { + billId: '', + billType: '', + costType: '', + contractCode: '', + contractId: '', + startDate: '', + endDate: '', + date: '', + companyId: '', + actReceivableFee: '', + actPayDate: '', + payType: '', + companyName: '', + remark: '', + accountId: '', + multifileList: [], + costTypeName: '' + }, 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' }, - - types: [ - { name: '鐗╀笟+绉熻祦鍚堝悓', value: 0 }, - { name: '绉熻祦鍚堝悓', value: 1 }, - { name: '鐗╀笟鍚堝悓', value: 2 }, - ], - agentList: [], //缁忓姙浜� - 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 }, - ], + agentList: [] } }, - created() { - const { param } = this - this.title = param.id ? '缂栬緫鏀舵璐﹀崟' : '鍒涘缓鏀舵璐﹀崟' - }, methods: { - tabsClick(val) { - this.activeTabs = val - }, - timeTabClick(val) { - this.timeTab = val - }, - getDetail() { - + confirm () { + create(this.form) + .then(res => { + console.log(res) + }) }, handleRent() { this.$refs.MemberSearchRef.openModal() @@ -207,13 +135,24 @@ houseChange(e) { console.log(e) console.log(this.value) - + }, + getDates (companyId) { + ywAccountList({ + companyId, + isdeleted: 0, + status: 0 + }).then(res => { + this.agentList = res + }) + }, + dele (imgaddr) { + this.form.multifileList.forEach((item, index) => { + if (imgaddr === item.imgaddr) { + this.form.multifileList.splice(index, 1) + } + }) }, beforeUpload(file) { - // if (['video/mp4', 'video/ogg', 'video/flv', 'video/avi', 'video/wmv', 'video/rmvb', 'image/jpeg', 'image/jpg', 'image/png', 'image/gif'].indexOf(file.type) == -1) { - // this.$message.error('璇蜂笂浼犳纭殑瑙嗛/鍥剧墖鏍煎紡') - // return false - // } this.loadingInstance = Loading.service({ lock: true, text: 'Loading', @@ -228,38 +167,39 @@ } }) }, + 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(() => { // 浠ユ湇鍔$殑鏂瑰紡璋冪敤鐨� Loading 闇�瑕佸紓姝ュ叧闂� 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) + console.log(item) + this.form.multifileList.push({ ...item, fileurl: item.imgaddr, name: item.originname, userName: this.userInfo.realname, createTime: this.getDay() }) }, close() { - this.isShowModal = false this.$emit('close') }, open(title, target) { this.title = title - this.isShowModal = true + this.visible = true + this.$nextTick(() => { + for (const key in this.form) { + this.form[key] = target[key] + } + }) + console.log(this.form) + this.getDates(target.companyId) } } } -- Gitblit v1.9.3