| | |
| | | VUE_APP_API_PREFIX = '/gateway_interface' |
| | | |
| | | # 项ç®åç§° |
| | | VUE_APP_TITLE = 'é宿ä½ä¸å¿' |
| | | VUE_APP_TITLE = 'ç§èµå¹³å°' |
| | |
| | | # ç产ç¯å¢é
ç½® |
| | | NODE_ENV = 'production' |
| | | |
| | | # VUE_APP_API_URL = 'http://10.50.250.178:8088/gateway_interface' |
| | | # VUE_APP_API_URL = 'http://192.168.0.173/gateway_interface' |
| | |
| | | |
| | | VUE_APP_API_URL = 'http://192.168.0.162:10010/' |
| | | |
| | | # VUE_APP_API_URL = 'http://192.168.0.136:10010/' |
| | | # VUE_APP_API_URL = 'http://192.168.0.108:10030/' |
| | |
| | | export function getYwContractBillById (id) { |
| | | return request.get(`/visitsAdmin/cloudService/business/ywContractBill/${id}`) |
| | | } |
| | | |
| | | // å¯é款账å |
| | | export function getCanBackBill (data) { |
| | | return request.post('/visitsAdmin/cloudService/business/ywContractBill/getCanBackBill', data) |
| | | } |
| | | |
| | |
| | | export function close (id) { |
| | | return request.get(`/visitsAdmin/cloudService/business/ywContractRevenue/close?id=${id}`) |
| | | } |
| | | |
| | | // æ ¹æ®IDæ¥è¯¢ |
| | | export function getById (id) { |
| | | return request.get(`/visitsAdmin/cloudService/business/ywContractRevenue/${id}`) |
| | | } |
| | |
| | | <div class="main_content"> |
| | | <el-form :model="form" label-position="top" ref="form" :rules="rules"> |
| | | <div class="head"> |
| | | <div class="m_title">åºç¡ä¿¡æ¯</div> |
| | | <div class="m_title">åºç¡ä¿¡æ¯-{{time.startDate}}~{{time.endDate}}</div> |
| | | <div class="tabs"> |
| | | <div class="tab" :class="{ active: form.feeType === 0 }" @click="timeTabClick(0)">å¨æè´¹ç¨</div> |
| | | <div class="tab" :class="{ active: form.feeType === 1 }" @click="timeTabClick(1)">䏿¬¡æ§è´¹ç¨</div> |
| | |
| | | type="daterange" |
| | | range-separator="è³" |
| | | v-model="form.date" |
| | | :min-date="new Date(time.startDate)" |
| | | :max-date="new Date(time.endDate)" |
| | | @change="changeDate" |
| | | start-placeholder="å¼å§æ¥æ" |
| | | end-placeholder="ç»ææ¥æ" |
| | |
| | | billTypeCopy: 0, |
| | | date: [] |
| | | }, |
| | | time: { |
| | | startDate: '', |
| | | endDate: '' |
| | | }, |
| | | rules: { |
| | | contractCode: [ |
| | | { required: true, message: '请è¾å
¥', trigger: 'blur' } |
| | |
| | | } |
| | | }, |
| | | methods: { |
| | | open (title, target) { |
| | | open (title, target, time) { |
| | | this.title = title |
| | | this.time.startDate = time.startDate |
| | | this.time.endDate = time.endDate |
| | | this.getCompany() |
| | | this.visible = true |
| | | // æ°å»º |
| | |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="éç§æ¥æ" prop="btDate" style="width: 33%;"> |
| | | <!-- @change="changeBtDate"--> |
| | | <el-date-picker |
| | | v-model="form.btDate" |
| | | type="date" |
| | |
| | | <div class="title"> |
| | | <span>éç§ä¿¡æ¯</span> |
| | | <div style="display: flex; align-items: center;"> |
| | | <el-button type="primary" @click="$refs.addCollectionBill.open('åå»ºæ¶æ¬¾è´¦å', { contractCode: info.code, contractId: info.id, renterName: info.renterName, renterId: info.renterId, billType: 0, billTypeCopy: 0, feeType: 0 })">æ·»å æ¶æ¬¾</el-button> |
| | | <el-button type="primary" @click="$refs.AddPaymentBill.open('åå»ºä»æ¬¾è´¦å', { contractCode: info.code, contractId: info.id, renterName: info.renterName, renterId: info.renterId, billType: 1, billTypeCopy: 1 })">æ·»å 仿¬¾</el-button> |
| | | <el-button type="primary" @click="addZD">æ·»å æ¶æ¬¾</el-button> |
| | | <el-button type="primary" @click="addFK">æ·»å 仿¬¾</el-button> |
| | | </div> |
| | | </div> |
| | | <el-table |
| | | :data="info.terminateList" |
| | | border |
| | | v-loading="loading" |
| | | style="width: 100%; margin-bottom: 15px;"> |
| | | <el-table-column |
| | | prop="code" |
| | |
| | | import AddCollectionBill from './addCollectionBill' |
| | | import AddPaymentBill from './addPaymentBill' |
| | | import { getUserList } from '@/api/system/user' |
| | | import { backRent } from '@/api/contract' |
| | | import { backRent, getCanBackBill } from '@/api/contract' |
| | | export default { |
| | | name: "terminateLease", |
| | | components: { |
| | |
| | | agentList: [], |
| | | |
| | | receivable: '', |
| | | meet: '' |
| | | meet: '', |
| | | |
| | | loading: false |
| | | } |
| | | }, |
| | | watch: { |
| | |
| | | this.title = title |
| | | this.info = info |
| | | this.form.id = info.id |
| | | this.info.billList.forEach(item => { |
| | | this.info.canBackRentBills.forEach(item => { |
| | | this.$set(item, 'receivableFeeCopy', item.receivableFee) |
| | | this.$set(item, 'receivableFee', item.needReceivableFee) |
| | | if ([2,3,7].includes(item.costType)) { |
| | | this.$set(item, 'billType', 1) |
| | | this.$set(item, 'price', item.actReceivableFee) |
| | | } else { |
| | | this.$set(item, 'price', item.receivableFee) |
| | | this.$set(item, 'price', item.needReceivableFee) |
| | | } |
| | | }) |
| | | this.info.terminateList = this.info.canBackRentBills.filter(item => { |
| | | if ([0,1,4,5,6].includes(item.costType)) { |
| | | item.billTypeCopy = item.billType |
| | | item.billTypeCopy = JSON.parse(JSON.stringify(item.billType)) |
| | | return item |
| | | } |
| | | }) |
| | | this.info.depositList = this.info.canBackRentBills.filter(item => { |
| | | if ([2,3,7].includes(item.costType)) { |
| | | item.billTypeCopy = item.billType |
| | | item.billTypeCopy = JSON.parse(JSON.stringify(item.billType)) |
| | | return item |
| | | } |
| | | }) |
| | | this.getUser() |
| | | this.visible = true |
| | | }, |
| | | addZD () { |
| | | if (!this.form.btDate) return this.$message.warning('è¯·éæ©éç§æ¥æ') |
| | | this.$refs.addCollectionBill.open('åå»ºæ¶æ¬¾è´¦å', { |
| | | contractCode: this.info.code, |
| | | contractId: this.info.id, |
| | | renterName: this.info.renterName, |
| | | renterId: this.info.renterId, |
| | | billType: 0, |
| | | billTypeCopy: 0, |
| | | feeType: 0 |
| | | }, { startDate: this.info.startDate, endDate: this.form.btDate }) |
| | | }, |
| | | addFK () { |
| | | if (!this.form.btDate) return this.$message.warning('è¯·éæ©éç§æ¥æ') |
| | | this.$refs.AddPaymentBill.open('åå»ºä»æ¬¾è´¦å', { |
| | | contractCode: this.info.code, |
| | | contractId: this.info.id, |
| | | renterName: this.info.renterName, |
| | | renterId: this.info.renterId, |
| | | billType: 1, |
| | | billTypeCopy: 1 |
| | | }, { startDate: this.info.startDate, endDate: this.form.btDate }) |
| | | }, |
| | | changeBtDate (planPayDateEnd) { |
| | | this.loading = true |
| | | getCanBackBill({ |
| | | contractId: this.info.id, |
| | | planPayDateEnd |
| | | }).then(res => { |
| | | res.forEach(item => { |
| | | this.$set(item, 'receivableFeeCopy', item.receivableFee) |
| | | this.$set(item, 'receivableFee', item.needReceivableFee) |
| | | this.$set(item, 'price', item.needReceivableFee) |
| | | }) |
| | | this.info.terminateList = res.filter(item => { |
| | | if ([0,1,4,5,6].includes(item.costType)) { |
| | | item.billTypeCopy = JSON.parse(JSON.stringify(item.billType)) |
| | | return item |
| | | } |
| | | }) |
| | | }).finally(() => { |
| | | this.loading = false |
| | | }) |
| | | }, |
| | | getObjS (obj) { |
| | | this.info.terminateList.push(obj) |
| | |
| | | row.price = 0 |
| | | this.$message.warning('ä¸è½å¤§äºåå§åºæ¶ä»éé¢') |
| | | } else { |
| | | if (num) { |
| | | row.price = Number(num) - row.actReceivableFee |
| | | // æ¶ |
| | | if (row.billTypeCopy === 0) { |
| | |
| | | row.billType = 1 |
| | | } |
| | | } |
| | | // if (row.price > 0) { |
| | | // row.billType = 0 |
| | | // } else if (row.price < 0) { |
| | | // row.billType = 1 |
| | | // } |
| | | row.price = String(row.price) |
| | | if (row.price.indexOf('-') > 0) { |
| | | row.price = row.price.substring(0, row.price.length) |
| | | } else { |
| | | row.price = 0 |
| | | row.billType = row.billTypeCopy |
| | | console.log('billTypeCopy', row.billTypeCopy) |
| | | } |
| | | row.price = Math.abs(row.price); |
| | | } |
| | | } |
| | | } |
| | |
| | | <el-table-column prop="needReceivableFee" 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.feeType === 0">å¨æè´¹ç¨</span> |
| | | <span v-if="row.feeType === 1">䏿¬¡æ§è´¹ç¨</span> |
| | | <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">æ¯</span> |
| | | <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="100" show-overflow-tooltip> |
| | | <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="åºæ¶æ¥æ" min-width="100" show-overflow-tooltip /> |
| | | <el-table-column prop="createTime" label="è´¦åæ¥æº" min-width="100" show-overflow-tooltip /> |
| | | <el-table-column prop="statusName" label="ååç¶æ" min-width="100" fixed="right" 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> |
| | |
| | | }, |
| | | 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: { |
| | |
| | | <div class="left"> |
| | | <span class="mr10">仿¬¾æ¹ï¼{{info.customerName}}</span> |
| | | <el-tag type="success" v-if="info.status === 0">å¼å¯</el-tag> |
| | | <el-tag type="success" v-if="info.status === 1">å
³é</el-tag> |
| | | <el-tag type="info" v-if="info.status === 1">å
³é</el-tag> |
| | | </div> |
| | | <el-button plain type="primary" @click="$refs.flowingWater.open(info.billType === 0 ? 'åå»ºæ¶æ¬¾è´¦å' : 'åå»ºä»æ¬¾è´¦å', { |
| | | <el-button plain type="primary" @click="$refs.flowingWater.open('åå»ºæ¶æ¯æµæ°´', { |
| | | billType: info.billType, |
| | | billId: info.id, |
| | | costType: info.costType, |
| | | receivableFee: info.needReceivableFee, |
| | | costTypeName: returnText(info.costType), |
| | | contractCode: info.contractCode, |
| | | contractId: info.contractId, |
| | |
| | | <div class="val" style="margin-top: 10px;" v-if="info.payStatus === 5">å·²å
³é</div> |
| | | </div> |
| | | <div class="item" style="flex: 1;"> |
| | | <div class="la">åºæ¶éé¢ï¼å
ï¼</div> |
| | | <div class="la">åº{{info.billType === 0 ? 'æ¶' : 'ä»'}}éé¢ï¼å
ï¼</div> |
| | | <div class="val" style="margin-top: 10px;">{{info.receivableFee}}</div> |
| | | </div> |
| | | <div class="item" style="flex: 1;"> |
| | | <div class="la">宿¶éé¢ï¼å
ï¼</div> |
| | | <div class="la">å®{{info.billType === 0 ? 'æ¶' : 'ä»'}}éé¢ï¼å
ï¼</div> |
| | | <div class="val" style="margin-top: 10px;">{{info.actReceivableFee}}</div> |
| | | </div> |
| | | <div class="item" style="flex: 1;"> |
| | | <div class="la">éä»éé¢ï¼å
ï¼</div> |
| | | <div class="la">é{{info.billType === 0 ? 'æ¶' : 'ä»'}}éé¢ï¼å
ï¼</div> |
| | | <div class="val" style="margin-top: 10px;">{{info.needReceivableFee}}</div> |
| | | </div> |
| | | <div class="item" style="flex: 1;"> |
| | | <div class="la">åºæ¶æ¥æ</div> |
| | | <div class="la">åº{{info.billType === 0 ? 'æ¶' : 'ä»'}}æ¥æ</div> |
| | | <div class="val" style="margin-top: 10px;">{{info.planPayDate}}</div> |
| | | </div> |
| | | </div> |
| | |
| | | <div class="title">åºç¡ä¿¡æ¯</div> |
| | | <div class="list" style="background: rgba(0,0,0,0); padding: 0;"> |
| | | <div class="item"> |
| | | <div class="la">è´¦åç±»å</div> |
| | | <div class="val" v-if="info.billType === 0">æ¶æ¬¾</div> |
| | | <div class="val" v-if="info.billType === 1">仿¬¾</div> |
| | | <div class="la">è´¹ç¨ç±»å</div> |
| | | <div class="val">{{returnText(info.costType)}}</div> |
| | | </div> |
| | | <div class="item"> |
| | | <div class="la">è®¡è´¹å¨æ</div> |
| | |
| | | </div> |
| | | <div class="item"> |
| | | <div class="la">ç»å人</div> |
| | | <div class="val">å¼ ä¸</div> |
| | | <div class="val">{{info.realname}}</div> |
| | | </div> |
| | | <div class="item"> |
| | | <div class="la">æå±å
¬å¸</div> |
| | |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="area" |
| | | label="é¢ç§¯"> |
| | | <template slot-scope="{row}"> |
| | | {{row.area}}ã¡ |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </div> |
| | | <!-- <div class="title">è´¦åæç»</div>--> |
| | | <!-- <div class="list" style="background: rgba(0,0,0,0); padding: 0;">--> |
| | | <!-- <el-table--> |
| | | <!-- :data="tableData"--> |
| | | <!-- border--> |
| | | <!-- style="width: 100%">--> |
| | | <!-- <el-table-column--> |
| | | <!-- prop="date"--> |
| | | <!-- label="è´¹ç¨ç±»å">--> |
| | | <!-- </el-table-column>--> |
| | | <!-- <el-table-column--> |
| | | <!-- prop="name"--> |
| | | <!-- label="åºæ¶/ä»éé¢">--> |
| | | <!-- </el-table-column>--> |
| | | <!-- <el-table-column--> |
| | | <!-- prop="address"--> |
| | | <!-- label="宿¶éé¢">--> |
| | | <!-- </el-table-column>--> |
| | | <!-- <el-table-column--> |
| | | <!-- prop="address"--> |
| | | <!-- label="éæ¶éé¢">--> |
| | | <!-- </el-table-column>--> |
| | | <!-- <el-table-column--> |
| | | <!-- prop="address"--> |
| | | <!-- label="è®¡è´¹å¨æ">--> |
| | | <!-- </el-table-column>--> |
| | | <!-- <el-table-column--> |
| | | <!-- prop="address"--> |
| | | <!-- label="åºæ¶/仿¥æ">--> |
| | | <!-- </el-table-column>--> |
| | | <!-- <el-table-column--> |
| | | <!-- prop="address"--> |
| | | <!-- label="夿³¨">--> |
| | | <!-- </el-table-column>--> |
| | | <!-- </el-table>--> |
| | | <!-- </div>--> |
| | | <div class="title">æ¶æ¯æµæ°´</div> |
| | | <div class="list" style="background: rgba(0,0,0,0); padding: 0;"> |
| | | <el-table |
| | |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="payDateEnd" |
| | | prop="actPayDate" |
| | | label="å
¥è´¦æ¥æ"> |
| | | </el-table-column> |
| | | <el-table-column |
| | |
| | | <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-select v-model="form.ywContractRoomList" @click="clickHouse" multiple placeholder="è¯·éæ©"> |
| | | <el-option |
| | | v-for="(item, index) in houseList" |
| | | :key="index" |
| | | :value="item.id" |
| | | :value="item.roomId" |
| | | :label="item.projectName + item.buildingName + item.floorName + item.roomName" /> |
| | | </el-select> |
| | | </el-form-item> |
| | |
| | | methods: { |
| | | open (title, target) { |
| | | this.title = title |
| | | this.form.feeType = 0 |
| | | this.form.multifileList = [] |
| | | this.getListAll() |
| | | this.getCompanyList() |
| | |
| | | } |
| | | }) |
| | | }, |
| | | clickHouse () { |
| | | if (!this.form.contractId) { |
| | | return this.$message.warning('请å
éæ©åå') |
| | | } |
| | | }, |
| | | changeContract (e) { |
| | | this.form.renterName = this.contract.filter(item => { |
| | | if (item.id === e) { |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <GlobalWindow :title="title" :visible.sync="visible" :confirm-working="isWorking" @close="close" |
| | | @confirm="confirm"> |
| | | <div class="home_title"> |
| | | <div class="left"> |
| | | <span class="mr10">对æ¹åä½åç§°ï¼{{info.customerName}}</span> |
| | | <el-tag type="success" v-if="info.status === 0">å¼å¯</el-tag> |
| | | <el-tag type="info" v-if="info.status === 1">å
³é</el-tag> |
| | | </div> |
| | | <el-button type="danger" v-if="info.status === 0" @click="closeDW()">å
³éæµæ°´</el-button> |
| | | </div> |
| | | <div class="line"></div> |
| | | <div class="main"> |
| | | <div class="list" style="background: rgba(0,0,0,0); padding: 0; margin-bottom: 0;"> |
| | | <div class="item" style="flex: 1;"> |
| | | <div class="la">ç»æ¸
ç¶æ</div> |
| | | <div class="val" style="margin-top: 10px;" v-if="info1.payStatus === 0">å¾
æ¶æ¬¾</div> |
| | | <div class="val" style="margin-top: 10px;" v-if="info1.payStatus === 1">å·²ç»æ¸
</div> |
| | | <div class="val" style="margin-top: 10px;" v-if="info1.payStatus === 2">é¨åç»æ¸
</div> |
| | | <div class="val" style="margin-top: 10px;" v-if="info1.payStatus === 3">å¾
仿¬¾</div> |
| | | <div class="val" style="margin-top: 10px;" v-if="info1.payStatus === 4">å¾
鿬¾</div> |
| | | <div class="val" style="margin-top: 10px;" v-if="info1.payStatus === 5">å·²å
³é</div> |
| | | </div> |
| | | <div class="item" style="flex: 1;"> |
| | | <div class="la">åº{{info.revenueType === 0 ? 'æ¶' : 'ä»'}}éé¢ï¼å
ï¼</div> |
| | | <div class="val" style="margin-top: 10px;">{{info1.receivableFee}}</div> |
| | | </div> |
| | | <div class="item" style="flex: 1;"> |
| | | <div class="la">å®{{info.revenueType === 0 ? 'æ¶' : 'ä»'}}éé¢ï¼å
ï¼</div> |
| | | <div class="val" style="margin-top: 10px;">{{info1.actReceivableFee}}</div> |
| | | </div> |
| | | <div class="item" style="flex: 1;"> |
| | | <div class="la">é{{info.revenueType === 0 ? 'æ¶' : 'ä»'}}éé¢ï¼å
ï¼</div> |
| | | <div class="val" style="margin-top: 10px;">{{info1.needReceivableFee}}</div> |
| | | </div> |
| | | <div class="item" style="flex: 1;"> |
| | | <div class="la">åº{{info.revenueType === 0 ? 'æ¶' : 'ä»'}}æ¥æ</div> |
| | | <div class="val" style="margin-top: 10px;">{{info1.planPayDate}}</div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <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> |
| | | <div class="main"> |
| | | <div class="title">æµæ°´ä¿¡æ¯</div> |
| | | <div class="list" style="background: rgba(0,0,0,0); padding: 0;"> |
| | | <div class="item"> |
| | | <div class="la">æ¶æ¯ç±»å</div> |
| | | <div class="val" v-if="info.revenueType === 0">æ¶å
¥</div> |
| | | <div class="val" v-if="info.revenueType === 1">æ¯åº</div> |
| | | </div> |
| | | <div class="item"> |
| | | <div class="la">å
¥è´¦æ¥æ</div> |
| | | <div class="val">{{info.actPayDate}}</div> |
| | | </div> |
| | | <div class="item"> |
| | | <div class="la">åçé¢ï¼å
ï¼</div> |
| | | <div class="val">{{info.actReceivableFee}}</div> |
| | | </div> |
| | | <div class="item"> |
| | | <div class="la">è´¦åç¼å·</div> |
| | | <div class="val">{{info.billCode}}</div> |
| | | </div> |
| | | <div class="item"> |
| | | <div class="la">ååç¼å·</div> |
| | | <div class="val">{{info.contractCode}}</div> |
| | | </div> |
| | | <div class="item"> |
| | | <div class="la">å建æ¶é´</div> |
| | | <div class="val">{{info.createDate}}</div> |
| | | </div> |
| | | <div class="item"> |
| | | <div class="la">对æ¹å
¬å¸</div> |
| | | <div class="val">{{info.customerName}}</div> |
| | | </div> |
| | | <div class="item"> |
| | | <div class="la">ç»å人</div> |
| | | <div class="val">{{info.realname}}</div> |
| | | </div> |
| | | <div class="item"> |
| | | <div class="la">æµæ°´è´¦æ·</div> |
| | | <div class="val">{{info.accountTitle}}</div> |
| | | </div> |
| | | <div class="item"> |
| | | <div class="la">夿³¨</div> |
| | | <div class="val">{{info.remark}}</div> |
| | | </div> |
| | | <div class="item"></div> |
| | | <div class="item"></div> |
| | | </div> |
| | | <div class="title">å
³èè´¦å</div> |
| | | <div class="list" style="background: rgba(0,0,0,0); padding: 0;"> |
| | | <el-table |
| | | :data="[info1]" |
| | | border |
| | | style="width: 100%"> |
| | | <el-table-column |
| | | label="è´¹ç¨ç±»å"> |
| | | <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 |
| | | prop="receivableFee" |
| | | label="åºæ¶/ä»éé¢"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="actReceivableFee" |
| | | label="宿¶éé¢"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="needReceivableFee" |
| | | label="éæ¶éé¢"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="è®¡è´¹å¨æ"> |
| | | <template slot-scope="{row}"> |
| | | {{row.startDate}} ~ {{row.endDate}} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="planPayDate" |
| | | label="åºæ¶/仿¥æ"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="remark" |
| | | label="夿³¨"> |
| | | </el-table-column> |
| | | </el-table> |
| | | </div> |
| | | <div class="title">æµæ°´éä»¶</div> |
| | | <div class="list" style="background: rgba(0,0,0,0); padding: 0;"> |
| | | <el-table |
| | | :data="info.multifileList" |
| | | border |
| | | style="width: 100%"> |
| | | <el-table-column |
| | | prop="name" |
| | | label="éä»¶åç§°"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="userName" |
| | | label="æä½äºº"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="createDate" |
| | | label="æä½æ¶é´"> |
| | | </el-table-column> |
| | | </el-table> |
| | | </div> |
| | | <div class="title">æä½è®°å½</div> |
| | | <div class="list" style="background: rgba(0,0,0,0); padding: 0;"> |
| | | <el-table |
| | | :data="info.editRecordDataVOList" |
| | | border |
| | | style="width: 100%"> |
| | | <el-table-column |
| | | width="200" |
| | | prop="editUserName" |
| | | label="æä½äºº"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | width="200" |
| | | prop="editTime" |
| | | label="æä½æ¶é´"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="editRemark" |
| | | label="æä½å
容"> |
| | | </el-table-column> |
| | | </el-table> |
| | | </div> |
| | | </div> |
| | | </GlobalWindow> |
| | | </template> |
| | | |
| | | <script> |
| | | import GlobalWindow from '@/components/common/GlobalWindow' |
| | | import BaseOpera from '@/components/base/BaseOpera' |
| | | import { close, getById } from '@/api/ywContractRevenue' |
| | | import { getYwContractBillById } from '@/api/contract' |
| | | export default { |
| | | name: 'details', |
| | | components: { |
| | | GlobalWindow |
| | | }, |
| | | extends: BaseOpera, |
| | | data() { |
| | | return { |
| | | id: '', |
| | | activeTabs: '', |
| | | info: {}, |
| | | info1: {} |
| | | } |
| | | }, |
| | | methods: { |
| | | open (title, id) { |
| | | this.title = title |
| | | this.id = id |
| | | this.getDetails() |
| | | }, |
| | | getDetails () { |
| | | getById(this.id) |
| | | .then(res => { |
| | | this.info = res |
| | | this.getDetails1() |
| | | }) |
| | | }, |
| | | getDetails1 () { |
| | | getYwContractBillById(this.info.billId) |
| | | .then(res => { |
| | | this.info1 = res |
| | | this.visible = true |
| | | }) |
| | | }, |
| | | tabsClick(val) { |
| | | this.activeTabs = val |
| | | }, |
| | | closeDW (id) { |
| | | this.$confirm('确认å
³éæ¤æµæ°´å?', 'æç¤º', { |
| | | confirmButtonText: 'ç¡®å®', |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | close(id) |
| | | .then(res => { |
| | | this.getDetails() |
| | | }) |
| | | }).catch(() => { |
| | | |
| | | }); |
| | | }, |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | @import '@/assets/style/variables.scss'; |
| | | .home_title { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | |
| | | .left { |
| | | font-weight: 500; |
| | | font-size: 16px; |
| | | margin-right: 10px; |
| | | display: flex; |
| | | align-items: center; |
| | | |
| | | .status { |
| | | padding: 0 6px; |
| | | height: 22px; |
| | | line-height: 22px; |
| | | border-radius: 2px; |
| | | border: 1px solid #00BA92; |
| | | color: #00BA92; |
| | | font-weight: 400; |
| | | font-size: 12px; |
| | | color: #00BA92; |
| | | } |
| | | } |
| | | } |
| | | |
| | | .remark { |
| | | background: #E8EBF7; |
| | | border-radius: 2px; |
| | | padding: 10px 20px; |
| | | font-size: 16px; |
| | | margin: 20px 0 |
| | | } |
| | | |
| | | .tabs { |
| | | border-bottom: 1px solid #DFE2E8; |
| | | display: flex; |
| | | margin-bottom: 20px; |
| | | .tab { |
| | | height: 58px; |
| | | line-height: 58px; |
| | | font-size: 16px; |
| | | color: #666666; |
| | | margin-right: 30px; |
| | | cursor: pointer; |
| | | } |
| | | |
| | | .active { |
| | | font-weight: 500; |
| | | color: $primary-color; |
| | | border-bottom: 2px solid $primary-color; |
| | | } |
| | | } |
| | | |
| | | .line { |
| | | width: 100%; |
| | | margin: 15px 0; |
| | | border-bottom: 1px dashed #eaeaea; |
| | | } |
| | | |
| | | .main { |
| | | .title { |
| | | font-weight: 500; |
| | | font-size: 18px; |
| | | color: $primary-color; |
| | | margin-bottom: 15px; |
| | | } |
| | | |
| | | .list { |
| | | display: flex; |
| | | flex-wrap: wrap; |
| | | /*background: #F7F7F7;*/ |
| | | border-radius: 2px; |
| | | padding: 0 20px; |
| | | margin-bottom: 20px; |
| | | |
| | | .item { |
| | | flex: 25%; |
| | | margin-bottom: 20px; |
| | | |
| | | .la { |
| | | color: #7f7f7f; |
| | | margin-bottom: 5px; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </style> |
| | |
| | | <el-form-item label="è®¡è´¹å¨æ" required> |
| | | <el-input v-model="form.date" disabled placeholder="请è¾å
¥" v-trim /> |
| | | </el-form-item> |
| | | <el-form-item label="åºæ¶éé¢" prop="receivableFee"> |
| | | <el-input v-model="form.receivableFee" placeholder="请è¾å
¥" v-trim /> |
| | | <el-form-item label="åºæ¶éé¢" required> |
| | | <el-input v-model="form.receivableFee" disabled placeholder="请è¾å
¥" v-trim /> |
| | | </el-form-item> |
| | | <el-form-item label="宿¶éé¢" prop="actReceivableFee"> |
| | | <el-input v-model="form.actReceivableFee" placeholder="请è¾å
¥" v-trim /> |
| | |
| | | contractId: '', |
| | | startDate: '', |
| | | endDate: '', |
| | | receivableFee: '', |
| | | date: '', |
| | | companyId: '', |
| | | actReceivableFee: '', |
| | |
| | | } |
| | | }) |
| | | const item = file.data[0] |
| | | console.log(item) |
| | | this.form.multifileList.push({ ...item, fileurl: item.imgaddr, name: item.originname, userName: this.userInfo.realname, createTime: this.getDay() }) |
| | | }, |
| | | close() { |
| | |
| | | this.title = title |
| | | this.visible = true |
| | | this.$nextTick(() => { |
| | | this.$refs.form.resetFields(); |
| | | for (const key in this.form) { |
| | | this.form[key] = target[key] |
| | | } |
| | | }) |
| | | console.log(this.form) |
| | | this.getDates(target.companyId) |
| | | } |
| | | } |
| | |
| | | <div class="main_app"> |
| | | <QueryForm v-model="filters" :query-form-config="queryFormConfig" @handleQuery="getList(1)" @clear="clear" /> |
| | | <div class="mt20"> |
| | | <el-button @click="handleEdit()" v-permissions="['business:ywpatrolline:create']">导åº</el-button> |
| | | <el-button v-permissions="['business:ywpatrolline:create']">导åº</el-button> |
| | | </div> |
| | | <el-table v-loading="loading" :data="list" stripe> |
| | | <el-table-column prop="customerName" label="客æ·åç§°" min-width="100" show-overflow-tooltip /> |
| | |
| | | <span v-if="row.payType === 6">å
¶ä»</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="payDateEnd" label="å
¥è´¦æ¥æ" show-overflow-tooltip /> |
| | | <el-table-column prop="actPayDate" label="å
¥è´¦æ¥æ" show-overflow-tooltip /> |
| | | <el-table-column prop="createDate" label="åå»ºæ¥æ" show-overflow-tooltip /> |
| | | <el-table-column prop="realname" label="å建人" show-overflow-tooltip /> |
| | | <el-table-column label="ç¶æ" min-width="100" fixed="right" show-overflow-tooltip> |
| | |
| | | </el-table-column> |
| | | <el-table-column label="æä½" min-width="190" fixed="right"> |
| | | <template slot-scope="{row}"> |
| | | <el-button type="text">æ¥ç详æ
</el-button> |
| | | <el-button type="text" @click="$refs.details.open('æ¶æ¯æµæ°´è¯¦æ
', row.id)">æ¥ç详æ
</el-button> |
| | | <el-button type="text" @click="closeDW(row.id)" v-if="row.status !== 1">å
³éæµæ°´</el-button> |
| | | </template> |
| | | </el-table-column> |
| | |
| | | <div class="mt20"> |
| | | <Pagination @size-change="handleSizeChange" @current-change="getList" :pagination="pagination" /> |
| | | </div> |
| | | <Edit v-if="showEdit" ref="EditRef" @success="getList" @close="showEdit = false" /> |
| | | <!-- 详æ
--> |
| | | <Details ref="details" /> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import Pagination from '@/components/common/Pagination' |
| | | import QueryForm from '@/components/common/QueryForm' |
| | | import Edit from './components/paymentsEdit.vue' |
| | | import Details from './components/details' |
| | | import { fetchList, close } from '@/api/ywContractRevenue' |
| | | export default { |
| | | components: { |
| | | Pagination, |
| | | QueryForm, |
| | | Edit |
| | | Details |
| | | }, |
| | | data() { |
| | | return { |
| | | loading: false, |
| | | showEdit: false, |
| | | pagination: { |
| | | pageSize: 10, |
| | | page: 1, |
| | |
| | | methods: { |
| | | getList(page) { |
| | | const { pagination, filters } = this |
| | | let form = JSON.parse(JSON.stringify(filters)) |
| | | if (form && form.payDate && form.payDate.length > 0) { |
| | | form.payDateStart = form.payDate[0] |
| | | form.payDateEnd = form.payDate[1] |
| | | } |
| | | this.loading = true |
| | | fetchList({ |
| | | model: { |
| | | ...filters |
| | | ...form |
| | | }, |
| | | capacity: pagination.pageSize, |
| | | page: page || pagination.page, |
| | |
| | | }).catch(() => { |
| | | |
| | | }); |
| | | }, |
| | | handleEdit(row) { |
| | | this.showEdit = true |
| | | this.$nextTick(() => { |
| | | this.$refs.EditRef.isShowModal = true |
| | | if (row && row.id) { |
| | | this.$refs.EditRef.getDetail(row.id) |
| | | } |
| | | }) |
| | | |
| | | }, |
| | | handleDel(row) { |
| | | let message = `确认å é¤è¯¥è®°å½å?` |
| | |
| | | <img src="@/assets/images/bg@2x.png" class="main_bg" alt=""> |
| | | <div class="login_wrap"> |
| | | <div class="login_img"> |
| | | <!-- <div class="h2">é宿ä½ä¸å¿</div> --> |
| | | <div class="h3">æºæ
§åºé¦è¿ç»´ç®¡çç³»ç»</div> |
| | | <div class="h3">é宿ä½ä¸å¿</div> |
| | | <!-- <div class="h3">æºæ
§åºé¦è¿ç»´ç®¡çç³»ç»</div>--> |
| | | </div> |
| | | <div class="form_wrap"> |
| | | <div class="tabs"> |