From 16217be9c85f95cb236e639da6e546bb38cdc53d Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期四, 05 十二月 2024 14:45:07 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
admin/src/views/finance/components/bullEdit.vue | 337 ++++++++++++++++++++++++-------------------------------
1 files changed, 148 insertions(+), 189 deletions(-)
diff --git a/admin/src/views/finance/components/bullEdit.vue b/admin/src/views/finance/components/bullEdit.vue
index 5e69da3..de28758 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" @click="clickHouse" 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.roomId"
+ :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,165 @@
<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.feeType = 0
+ 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]
+ }
+ })
+ },
+ clickHouse () {
+ if (!this.form.contractId) {
+ return this.$message.warning('璇峰厛閫夋嫨鍚堝悓')
+ }
+ },
+ 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 +248,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 +256,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 +320,7 @@
.tabs {
display: flex;
margin-bottom: 20px;
- display: flex;
+ align-items: center;
justify-content: center;
.tab {
--
Gitblit v1.9.3