| | |
| | | trim: true |
| | | }) |
| | | } |
| | | |
| | | // è·åæ¹éå¬ç¼´æ°æ® |
| | | export function getNoticeCustomerData (data) { |
| | | return request.post('/visitsAdmin/cloudService/business/ywContractBill/getNoticeCustomerData', data, { |
| | | trim: true |
| | | }) |
| | | } |
| | | |
| | | // åéå¬ç¼´æ°æ® |
| | | export function sendNoticeCustomerData (data) { |
| | | return request.post('/visitsAdmin/cloudService/business/ywContractBill/sendNoticeCustomerData', data, { |
| | | trim: true |
| | | }) |
| | | } |
| | | |
| | | // ä¸è½½å¬è´¹æä»¶ |
| | | export function downloadCallFeeDoc (data) { |
| | | return request.post('/visitsAdmin/cloudService/business/ywContractBill/downloadCallFeeDoc', data, { |
| | | download: true, |
| | | trim: true |
| | | }) |
| | | } |
| | | |
| | | // åéçä¿¡ä¸é®ä»¶ |
| | | export function sendSmsEmail (data) { |
| | | return request.post('/visitsAdmin/cloudService/business/ywContractBill/sendSmsEmail', data, { |
| | | trim: true |
| | | }) |
| | | } |
| | | |
| | | // è·åå¾
å¤çè´¦å |
| | | export function getWaitDealList (contractId) { |
| | | return request.get(`/visitsAdmin/cloudService/business/ywContractBill/getWaitDealList?contractId=${contractId}`) |
| | | } |
| | |
| | | trim: true |
| | | }) |
| | | } |
| | | |
| | | // æ´æ°é
置模æ¿ä¿¡æ¯ |
| | | export function updTempConfig (data) { |
| | | return request.post('/visitsAdmin/cloudService/business/ywTempConfig/updTempConfig', data, { |
| | | trim: true |
| | | }) |
| | | } |
| | |
| | | <slot name="footer"> |
| | | <el-button v-if="showConfirm" @click="confirm" :loading="confirmWorking" type="primary">{{text}}</el-button> |
| | | <slot name="btns" /> |
| | | <el-button type="primary" v-if="isDownload" @click="downloadFile">ä¸è½½å¬ç¼´éç¥å</el-button> |
| | | <el-button @click="close">{{ backText }}</el-button> |
| | | </slot> |
| | | </div> |
| | |
| | | visible: { |
| | | type: Boolean, |
| | | required: true |
| | | }, |
| | | // æ¯å¦æ¾ç¤ºä¸è½½æé® |
| | | isDownload: { |
| | | type: Boolean, |
| | | required: false |
| | | } |
| | | }, |
| | | methods: { |
| | |
| | | close () { |
| | | this.$emit('close') |
| | | this.$emit('update:visible', false) |
| | | }, |
| | | downloadFile() { |
| | | this.$emit('downloadFile') |
| | | } |
| | | } |
| | | } |
| | |
| | | <el-tag type="info" v-if="info.status === 4">å·²éç§</el-tag> |
| | | </div> |
| | | <div> |
| | | <el-button type="primary" @click="$refs.pendingBills.open('å¾
å¤çè´¦å')">æ¥çå¾
å¤çè´¦å</el-button> |
| | | <el-button @click="$refs.terminationAgreement.open('éç§åè®®')">æ¥çéç§åè®®</el-button> |
| | | <el-button type="primary" @click="$refs.pendingBills.open('å¾
å¤çè´¦å', id)" v-if="info.status === 3">æ¥çå¾
å¤çè´¦å</el-button> |
| | | <el-button @click="$refs.terminationAgreement.open('éç§åè®®', id)" v-if="[3,4].includes(info.status)">æ¥çéç§åè®®</el-button> |
| | | <el-button plain type="danger" v-if="[0, 1, 2].includes(info.status)" @click="refund">éç§</el-button> |
| | | </div> |
| | | </div> |
| | |
| | | v-loading="loading" |
| | | style="width: 100%"> |
| | | <el-table-column |
| | | width="150" |
| | | label="è´¦åç¼å·"> |
| | | <template slot-scope="{row}"> |
| | | <el-button type="text" @click="openBill(row.id)">{{row.code}}</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="è´¹ç¨ç±»å"> |
| | | <template slot-scope="{row}"> |
| | | <span v-if="row.costType === 0">ç§èµè´¹</span> |
| | |
| | | <PendingBills ref="pendingBills" /> |
| | | <!-- éç§åè®® --> |
| | | <TerminationAgreement ref="terminationAgreement" /> |
| | | <!-- è´¦å详æ
--> |
| | | <BullDetail ref="bullDetail" /> |
| | | </GlobalWindow> |
| | | </template> |
| | | |
| | |
| | | import TerminateLease from './terminateLease' |
| | | import PendingBills from './pendingBills' |
| | | import TerminationAgreement from './terminationAgreement' |
| | | import BullDetail from '../../finance/components/bullDetail' |
| | | import { getById } from '@/api/contract' |
| | | import { fetchList } from '@/api/bill' |
| | | export default { |
| | |
| | | GlobalWindow, |
| | | TerminateLease, |
| | | PendingBills, |
| | | TerminationAgreement |
| | | TerminationAgreement, |
| | | BullDetail |
| | | }, |
| | | extends: BaseOpera, |
| | | data() { |
| | |
| | | xiazai (url) { |
| | | window.open(url) |
| | | }, |
| | | openBill(id) { |
| | | this.$refs.bullDetail.open('è´¦å详æ
', id) |
| | | }, |
| | | returnUnit (type) { |
| | | switch (type) { |
| | | case 0: |
| | |
| | | <div class="zd_list"> |
| | | <div class="zd_list_row"> |
| | | <span>å¾
æ¶æ¬¾è´¦åæ°</span> |
| | | <span>2</span> |
| | | <span>{{info.inAmount || 0}}</span> |
| | | </div> |
| | | <div class="zd_list_row"> |
| | | <span>å¾
æ¶æ¬¾éé¢</span> |
| | | <span>ï¿¥247.00</span> |
| | | <span>ï¿¥{{info.inFee || 0}}</span> |
| | | </div> |
| | | <div class="zd_list_row"> |
| | | <span>å¾
仿¬¾è´¦åæ°</span> |
| | | <span>3</span> |
| | | <span>{{info.payAmount || 0}}</span> |
| | | </div> |
| | | <div class="zd_list_row"> |
| | | <span>å¾
仿¬¾éé¢</span> |
| | | <span>ï¿¥247.00</span> |
| | | <span>ï¿¥{{info.payFee || 0}}</span> |
| | | </div> |
| | | </div> |
| | | <div class="zd_content"> |
| | |
| | | <span>è´¦å</span> |
| | | </div> |
| | | <el-table |
| | | :data="tableData" |
| | | :data="info.ywContractBillList" |
| | | border |
| | | style="width: 100%"> |
| | | <el-table-column |
| | |
| | | label="è´¦åç¼å·"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="name" |
| | | 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="address" |
| | | label="è®¡è´¹å¨æ"> |
| | | <template slot-scope="{row}"> |
| | | {{row.startDate}}~{{row.endDate}} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="address" |
| | | prop="receivableFee" |
| | | label="åºæ¶ä»éé¢/åå§åºæ¶ä»"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="address" |
| | | prop="actReceivableFee" |
| | | label="宿¶/ä»éé¢"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="address" |
| | | prop="needReceivableFee" |
| | | label="éæ¶/ä»éé¢"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="address" |
| | | prop="receivableFee" |
| | | label="åºæ¶/仿¥æ"> |
| | | </el-table-column> |
| | | </el-table> |
| | |
| | | <script> |
| | | import GlobalWindow from '@/components/common/GlobalWindow' |
| | | import BaseOpera from '@/components/base/BaseOpera' |
| | | import { getWaitDealList } from '@/api/ywContractBill' |
| | | export default { |
| | | name: 'pendingBills', |
| | | components: { |
| | |
| | | extends: BaseOpera, |
| | | data () { |
| | | return { |
| | | tableData: [] |
| | | info: [] |
| | | } |
| | | }, |
| | | methods: { |
| | | |
| | | open (title, contractId) { |
| | | this.title = title |
| | | getWaitDealList(contractId) |
| | | .then(res => { |
| | | this.info = res |
| | | this.visible = true |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | |
| | | @confirm="confirm"> |
| | | <div class="main"> |
| | | <div class="main_head"> |
| | | <span>ç§å®¢ï¼ä¹ä¹ç俱ä¹é¨</span> |
| | | <span>ååç¼å·ï¼ 2024-04-001-202405-0019</span> |
| | | </div> |
| | | <div class="title">éç§ä¿¡æ¯</div> |
| | | <div class="list"> |
| | | <div class="item"> |
| | | <div class="la">éç§ç±»å</div> |
| | | <div class="val">{{ info.code }}</div> |
| | | </div> |
| | | <div class="item"> |
| | | <div class="la">éç§æ¥æ</div> |
| | | <div class="val">{{ info.userName }}</div> |
| | | </div> |
| | | <div class="item"> |
| | | <div class="la">ç»å人</div> |
| | | <div class="val">{{ info.creatorName }}</div> |
| | | </div> |
| | | <div class="item"> |
| | | <div class="la">åè®®ç¾è®¢æ¥æ</div> |
| | | <div class="val">{{ info.totalArea }}ã¡</div> |
| | | </div> |
| | | <div class="item"> |
| | | <div class="la">éç§åå </div> |
| | | <div class="val">{{ info.companyName }}</div> |
| | | </div> |
| | | <span>ç§å®¢ï¼{{info.renterName}}</span> |
| | | <span>ååç¼å·ï¼ {{info.code}}</span> |
| | | </div> |
| | | <div class="title">æ¿æºä¿¡æ¯</div> |
| | | <div class="list"> |
| | | <el-table :data="roomList" stripe> |
| | | <el-table :data="info.roomList" stripe> |
| | | <el-table-column prop="projectName" label="项ç®åç§°" show-overflow-tooltip /> |
| | | <el-table-column prop="buildingName" label="楼å®åç§°" show-overflow-tooltip /> |
| | | <el-table-column prop="buildingName" label="楼å±/æ¿å·" show-overflow-tooltip></el-table-column> |
| | | <el-table-column prop="area" label="é¢ç§¯" show-overflow-tooltip></el-table-column> |
| | | </el-table> |
| | | </div> |
| | | <div class="title">éç§ä¿¡æ¯</div> |
| | | <div class="list"> |
| | | <div class="item"> |
| | | <div class="la">éç§ç±»å</div> |
| | | <div class="val" v-if="info.btType === 0">å°æéç§</div> |
| | | <div class="val" v-if="info.btType === 1">æ¢æ¿éç§</div> |
| | | <div class="val" v-if="info.btType === 2">è¿çº¦éç§</div> |
| | | <div class="val" v-if="info.btType === 3">ååéç§</div> |
| | | </div> |
| | | <div class="item"> |
| | | <div class="la">éç§æ¥æ</div> |
| | | <div class="val">{{ info.btDate }}</div> |
| | | </div> |
| | | <div class="item"> |
| | | <div class="la">ç»å人</div> |
| | | <div class="val">{{ info.userName }}</div> |
| | | </div> |
| | | <div class="item"> |
| | | <div class="la">åè®®ç¾è®¢æ¥æ</div> |
| | | <div class="val">{{ info.signDate }}ã¡</div> |
| | | </div> |
| | | <div class="item"> |
| | | <div class="la">éç§åå </div> |
| | | <div class="val">{{ info.btInfo }}</div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </GlobalWindow> |
| | |
| | | <script> |
| | | import GlobalWindow from '@/components/common/GlobalWindow' |
| | | import BaseOpera from '@/components/base/BaseOpera' |
| | | import { getById } from '@/api/contract' |
| | | export default { |
| | | name: "terminationAgreement", |
| | | components: { |
| | |
| | | extends: BaseOpera, |
| | | data() { |
| | | return { |
| | | roomList: [], |
| | | id: null, |
| | | info: {} |
| | | } |
| | | }, |
| | | methods: { |
| | | |
| | | open (title, id) { |
| | | this.title = title |
| | | this.id = id |
| | | this.getData() |
| | | }, |
| | | getData () { |
| | | getById(this.id) |
| | | .then(res => { |
| | | this.info = res |
| | | this.visible = true |
| | | }) |
| | | }, |
| | | } |
| | | } |
| | | </script> |
| | |
| | | <el-form ref="form" :model="form" label-width="120px"> |
| | | <el-form-item label="ç信模æ¿"> |
| | | <div style="display: flex; align-items: self-start;"> |
| | | <el-input type="textarea" rows="5" v-model="form.smsTemp"></el-input> |
| | | <el-input type="textarea" rows="5" v-model="form.smsTemp.title"></el-input> |
| | | <!-- <el-button type="primary" style="margin-left: 10px;">ä¿å</el-button>--> |
| | | </div> |
| | | </el-form-item> |
| | | <el-form-item label="é®ç®±æ¨¡æ¿"> |
| | | <div style="display: flex; align-items: self-start;"> |
| | | <el-input type="textarea" rows="5" v-model="form.emailTemp"></el-input> |
| | | <el-input type="textarea" rows="5" v-model="form.emailTemp.title"></el-input> |
| | | <!-- <el-button type="primary" style="margin-left: 10px;">ä¿å</el-button>--> |
| | | </div> |
| | | </el-form-item> |
| | |
| | | </el-upload> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button type="primary" @click="submit">ä¿å</el-button> |
| | | <el-button type="primary" @click="submit" :disabled="loading" :loading="loading">ä¿å</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | |
| | | |
| | | <script> |
| | | import templateKeywords from './components/templateKeywords' |
| | | import { getCallTemp } from '@/api/ywTempConfig' |
| | | import { getCallTemp, updTempConfig } from '@/api/ywTempConfig' |
| | | export default { |
| | | name: 'collectionSettings', |
| | | data() { |
| | |
| | | folder: 'TEMP_CONFIG' |
| | | }, |
| | | form: { |
| | | emailTemp: '', |
| | | smsTemp: '', |
| | | emailTemp: {}, |
| | | smsTemp: {}, |
| | | leaseTemp: [], |
| | | otherTemp: [] |
| | | } |
| | | }, |
| | | loading: false |
| | | } |
| | | }, |
| | | components: { templateKeywords }, |
| | |
| | | }, |
| | | methods: { |
| | | submit() { |
| | | |
| | | this.loading = true |
| | | updTempConfig({ |
| | | emailTemp: this.form.emailTemp, |
| | | smsTemp: this.form.smsTemp, |
| | | leaseTemp: this.form.leaseTemp[0], |
| | | otherTemp: this.form.otherTemp[0] |
| | | }).then(res => { |
| | | this.$message.success('æ´æ°æåï¼') |
| | | this.getCallTempVal() |
| | | }).finally(() => { |
| | | this.loading = false |
| | | }) |
| | | }, |
| | | handleRemove(e) { |
| | | this.form.leaseTemp = [] |
| | |
| | | getCallTempVal() { |
| | | getCallTemp({}) |
| | | .then(res => { |
| | | this.form.smsTemp = res.smsTemp.title |
| | | this.form.emailTemp = res.emailTemp.title |
| | | this.form.smsTemp = res.smsTemp |
| | | this.form.emailTemp = res.emailTemp |
| | | this.form.leaseTemp = [{ url: res.leaseTemp.url, name: res.leaseTemp.title }] |
| | | this.form.otherTemp = [{ url: res.otherTemp.url, name: res.otherTemp.title }] |
| | | }) |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <GlobalWindow |
| | | :title="title" |
| | | :visible.sync="visible" |
| | | :isDownload="true" |
| | | width="100%" |
| | | @downloadFile="downloadFile" |
| | | @confirm="confirm"> |
| | | <el-form :model="form" label-position="top" ref="paramRef"> |
| | | <el-form-item label="éç¥æ¹å¼"> |
| | | <el-checkbox-group v-model="form.type"> |
| | | <el-checkbox label="çä¿¡"></el-checkbox> |
| | | <el-checkbox label="é®ä»¶"></el-checkbox> |
| | | </el-checkbox-group> |
| | | </el-form-item> |
| | | <el-form-item label="éç¥æ¥æ¶äºº"> |
| | | <div style="display: flex; align-items: center; margin-bottom: 10px;" v-for="(item, index) in userList" :key="index"> |
| | | <span style="margin-right: 15px; font-size: 15px; color: #222222;">{{item.customerName}}</span> |
| | | <el-select v-model="item.userId" placeholder="è¯·éæ©"> |
| | | <el-option |
| | | v-for="(item, index) in item.memberList" |
| | | :key="index" |
| | | :label="item.name" |
| | | :value="item.id" /> |
| | | </el-select> |
| | | </div> |
| | | </el-form-item> |
| | | </el-form> |
| | | </GlobalWindow> |
| | | </template> |
| | | |
| | | <script> |
| | | import GlobalWindow from '@/components/common/GlobalWindow' |
| | | import BaseOpera from '@/components/base/BaseOpera' |
| | | import { getNoticeCustomerData, downloadCallFeeDoc, sendSmsEmail } from '@/api/ywContractBill' |
| | | export default { |
| | | name: "batchCall", |
| | | components: { GlobalWindow }, |
| | | extends: BaseOpera, |
| | | data() { |
| | | return { |
| | | ids: null, |
| | | form: { |
| | | type: [] |
| | | }, |
| | | userList: [] |
| | | } |
| | | }, |
| | | methods: { |
| | | open (title, ids) { |
| | | this.title = title |
| | | this.ids = ids |
| | | this.form.type = [] |
| | | this.userList = [] |
| | | this.visible = true |
| | | this.getUser() |
| | | }, |
| | | downloadFile() { |
| | | downloadCallFeeDoc(this.ids) |
| | | .then(response => { |
| | | this.download(response) |
| | | }) |
| | | .catch(e => { |
| | | this.$tip.apiFailed(e) |
| | | }) |
| | | }, |
| | | getUser() { |
| | | getNoticeCustomerData(this.ids) |
| | | .then(res => { |
| | | this.userList = res |
| | | }) |
| | | }, |
| | | confirm() { |
| | | if (this.form.type.length === 0) return this.$message.warning('éç¥æ¹å¼ä¸è½ä¸ºç©º') |
| | | let arr = this.userList.map(item => { |
| | | return { |
| | | billId: item.billId, |
| | | sendEmail: this.form.type.includes('é®ä»¶') ? 1 : 0, |
| | | sendSms: this.form.type.includes('çä¿¡') ? 1 : 0, |
| | | userId: item.userId |
| | | } |
| | | }) |
| | | sendSmsEmail(arr).then(res => { |
| | | this.$message.success('åéæåï¼') |
| | | this.visible = false |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | |
| | | <el-tag type="info" v-if="info.status === 1">å
³é</el-tag> |
| | | </div> |
| | | <div style="display: flex; align-items: center;"> |
| | | <el-button @click="$refs.call.open('åéå¬ç¼´éç¥', info)">åéç¼´è´¹éç¥</el-button> |
| | | <el-button @click="$refs.call.open('åéå¬ç¼´éç¥', [info.id])">åéç¼´è´¹éç¥</el-button> |
| | | <el-button plain type="primary" v-if="![1].includes(info.payStatus)" @click="$refs.flowingWater.open('åå»ºæ¶æ¯æµæ°´', { |
| | | billType: returnBillType(), |
| | | billId: info.id, |
| | |
| | | <template> |
| | | <GlobalWindow |
| | | :title="title" |
| | | :visible.sync="visible" |
| | | width="100%" |
| | | @confirm="confirm"> |
| | | <el-form :model="form" label-position="top" ref="paramRef" :rules="rules"> |
| | | <el-form-item label="éç¥æ¹å¼" prop="type"> |
| | | :title="title" |
| | | :visible.sync="visible" |
| | | :isDownload="true" |
| | | width="100%" |
| | | @downloadFile="downloadFile" |
| | | @confirm="confirm"> |
| | | <el-form :model="form" label-position="top" ref="paramRef"> |
| | | <el-form-item label="éç¥æ¹å¼"> |
| | | <el-checkbox-group v-model="form.type"> |
| | | <el-checkbox label="çä¿¡"></el-checkbox> |
| | | <el-checkbox label="é®ä»¶"></el-checkbox> |
| | | </el-checkbox-group> |
| | | </el-form-item> |
| | | <el-form-item label="éç¥æ¥æ¶äºº" prop="userId"> |
| | | <el-select v-model="form.userId" placeholder="è¯·éæ©"> |
| | | <el-option |
| | | v-for="(item, index) in userList" |
| | | :key="index" |
| | | :label="item.realname" |
| | | :value="item.id" /> |
| | | </el-select> |
| | | <el-form-item label="éç¥æ¥æ¶äºº"> |
| | | <div style="display: flex; align-items: center; margin-bottom: 10px;" v-for="(item, index) in userList" :key="index"> |
| | | <span style="margin-right: 15px; font-size: 15px; color: #222222;">{{item.customerName}}</span> |
| | | <el-select v-model="item.userId" placeholder="è¯·éæ©"> |
| | | <el-option |
| | | v-for="(item, index) in item.memberList" |
| | | :key="index" |
| | | :label="item.name" |
| | | :value="item.id" /> |
| | | </el-select> |
| | | </div> |
| | | </el-form-item> |
| | | </el-form> |
| | | </GlobalWindow> |
| | |
| | | <script> |
| | | import GlobalWindow from '@/components/common/GlobalWindow' |
| | | import BaseOpera from '@/components/base/BaseOpera' |
| | | import { getUserList } from '@/api/system/user' |
| | | import { getNoticeCustomerData, downloadCallFeeDoc, sendSmsEmail } from '@/api/ywContractBill' |
| | | export default { |
| | | name: "call", |
| | | components: { GlobalWindow }, |
| | | extends: BaseOpera, |
| | | data() { |
| | | return { |
| | | info: null, |
| | | ids: null, |
| | | form: { |
| | | type: [], |
| | | userId: '' |
| | | }, |
| | | rules: { |
| | | type: [{ required: true, message: 'è¯·éæ©', trigger: 'blur' }], |
| | | userId: [{ required: true, message: 'è¯·éæ©', trigger: 'blur' }] |
| | | type: [] |
| | | }, |
| | | userList: [] |
| | | } |
| | | }, |
| | | created () { |
| | | this.getUser() |
| | | }, |
| | | methods: { |
| | | open (title, target) { |
| | | open (title, ids) { |
| | | this.title = title |
| | | this.info = target |
| | | this.ids = ids |
| | | this.form.type = [] |
| | | this.userList = [] |
| | | this.visible = true |
| | | this.getUser() |
| | | }, |
| | | getUser() { |
| | | getUserList({}) |
| | | .then(res => { |
| | | this.userList = res |
| | | }) |
| | | }, |
| | | downloadFile() { |
| | | downloadCallFeeDoc(this.ids) |
| | | .then(response => { |
| | | this.download(response) |
| | | }) |
| | | .catch(e => { |
| | | this.$tip.apiFailed(e) |
| | | }) |
| | | }, |
| | | getUser() { |
| | | getNoticeCustomerData(this.ids) |
| | | .then(res => { |
| | | this.userList = res |
| | | }) |
| | | }, |
| | | confirm() { |
| | | this.$refs.paramRef.validate((valid) => { |
| | | if (!valid) { |
| | | return |
| | | if (this.form.type.length === 0) return this.$message.warning('éç¥æ¹å¼ä¸è½ä¸ºç©º') |
| | | let arr = this.userList.map(item => { |
| | | return { |
| | | billId: item.billId, |
| | | sendEmail: this.form.type.includes('é®ä»¶') ? 1 : 0, |
| | | sendSms: this.form.type.includes('çä¿¡') ? 1 : 0, |
| | | userId: item.userId |
| | | } |
| | | }) |
| | | sendSmsEmail(arr).then(res => { |
| | | this.$message.success('åéæåï¼') |
| | | this.visible = false |
| | | }) |
| | | } |
| | | } |
| | | } |
| | |
| | | <div class="tab" :class="{ active: billType === 1 }" @click="tabsClick(1)">龿仿¬¾è´¦å</div> |
| | | </div> |
| | | <div class="btns"> |
| | | <el-button @click="$refs.call.open('æ¹éå¬ç¼´')">æ¹éå¬ç¼´</el-button> |
| | | <el-button :disabled="ids.length === 0" @click="batchCall">æ¹éå¬ç¼´</el-button> |
| | | </div> |
| | | </div> |
| | | <el-table v-loading="loading" :data="list" stripe> |
| | | <el-table v-loading="loading" :data="list" @selection-change="handleSelectionChange" stripe> |
| | | <el-table-column |
| | | type="selection" |
| | | width="55"> |
| | | </el-table-column> |
| | | <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}"> |
| | |
| | | </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> |
| | | <span v-if="row.isSendSms === 0">å¦</span> |
| | | <span v-if="row.isSendSms === 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> |
| | | <span v-if="row.isSendEmail === 0">å¦</span> |
| | | <span v-if="row.isSendEmail === 1">æ¯</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="æä½" min-width="120" fixed="right"> |
| | |
| | | <Edit ref="EditRef" @success="getList" /> |
| | | <Detail ref="DetailRef" @success="getList" /> |
| | | <BullEditFu ref="BullEditFu" @success="getList" /> |
| | | <Call ref="call" @success="getList" /> |
| | | <BatchCall ref="batchCall" @success="getList" /> |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | import Edit from './components/bullEdit.vue' |
| | | import BullEditFu from './components/bullEditFu.vue' |
| | | import Detail from './components/bullDetail.vue' |
| | | import Call from './components/call.vue' |
| | | import BatchCall from './components/batchCall.vue' |
| | | import { fetchList } from '@/api/ywContractBill' |
| | | export default { |
| | | components: { |
| | |
| | | Edit, |
| | | Detail, |
| | | BullEditFu, |
| | | Call |
| | | BatchCall |
| | | }, |
| | | data () { |
| | | return { |
| | |
| | | page: 1, |
| | | total: 0 |
| | | }, |
| | | ids: [], |
| | | billType: 0, |
| | | filters: { |
| | | status: 0 |
| | |
| | | this.getList() |
| | | }, |
| | | methods: { |
| | | batchCall() { |
| | | if (!this.ids) return this.$message.warning('请å
éæ©è´¦å') |
| | | this.$refs.batchCall.open('æ¹éå¬ç¼´', this.ids) |
| | | }, |
| | | handleSelectionChange(e) { |
| | | this.ids = e.map(item => item.id) |
| | | }, |
| | | addOpen () { |
| | | if (this.billType === 0) { |
| | | this.$refs.EditRef.open('åå»ºæ¶æ¬¾è´¦å') |
| | |
| | | }).then(res => { |
| | | this.loading = false |
| | | this.list = res.records || [] |
| | | this.list.forEach(item => { |
| | | item.statusName = item.status === 1 ? 'æå' : item.status === 2 ? 'æ¥åº' : 'æ£å¸¸' |
| | | }) |
| | | this.pagination.total = res.total || 0 |
| | | }, () => { |
| | | this.loading = false |