company/src/api/business/taxes.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
company/src/components/enterprise/commissionDetails.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
company/src/components/enterprise/directInvoicingApplication.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
company/src/components/enterprise/entrustedInvoicingApplication.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
company/src/components/enterprise/entrustmentHistory.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
company/src/views/enterprise/entrustedInvoicing.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
company/src/api/business/taxes.js
@@ -39,3 +39,10 @@ trim: true }) } // æäº¤å§æææ¥å¼ç¥¨ export function entrustInvoicing(data) { return request.post('/business/taxes/entrustInvoicing', data, { trim: true }) } company/src/components/enterprise/commissionDetails.vue
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,325 @@ <template> <GlobalWindow :title="title" width="100%" :visible.sync="visible" :confirm-working="isWorking" @confirm="confirm" > <div class="info"> <div class="info_list"> <div class="info_list_item"> <div class="info_list_item_label">å¼ç¥¨åç§°ï¼</div> <div class="info_list_item_val">{{userInfo.company.name}}</div> </div> <div class="info_list_item"> <div class="info_list_item_label">纳ç¨äººè¯å«å·ï¼</div> <div class="info_list_item_val">{{userInfo.company.code}}</div> </div> <div class="info_list_item"> <div class="info_list_item_label">弿·è¡ï¼</div> <div class="info_list_item_val">{{userInfo.company.taxBank}}</div> </div> <div class="info_list_item"> <div class="info_list_item_label">è´¦å·ï¼</div> <div class="info_list_item_val"> {{userInfo.company.taxAccount}} </div> </div> <div class="info_list_item" style="width: 100%;"> <div class="info_list_item_label">å°åãçµè¯ï¼</div> <div class="info_list_item_val">{{userInfo.company.invoiceAddr}} {{userInfo.company.phone}}</div> </div> <div class="info_list_item" style="width: 100%;"> <div class="info_list_item_label">å¼ç¥¨éé¢ï¼</div> <div class="info_list_item_val" style="color:rgba(249, 86, 1, 0.996078431372549);">{{totalPrice}}</div> </div> <div class="list" style="width: 100%;" v-if="form.type === 0"> <div class="list_label"> æ¥æ¶æ¹å¼ï¼çµåå票 </div> <div class="list_val"> <div class="list_val_label">æ¥æ¶å°åï¼</div> <div class="list_val_info">{{form.addr}}</div> </div> </div> <div class="list" style="width: 100%;" v-else> <div class="list_label"> æ¥æ¶æ¹å¼ï¼çº¸è´¨å票 </div> <div class="list_val"> <div class="list_val_label">æ¥æ¶å°åï¼</div> <div class="list_val_info">{{form.addr}}</div> </div> </div> </div> <!-- å åä¿ --> <el-table :data="list1" border show-summary :summary-method="getSummaries1" style="width: 100%; margin-bottom: 20px;"> <el-table-column label="åºå·" align="center" width="80"> <template slot-scope="scope"> <span>{{scope.$index + 1}}</span> </template> </el-table-column> <el-table-column align="center" prop="solutionName" label="ä¿é©æ¹æ¡"> </el-table-column> <el-table-column align="center" prop="applyCode" label="ä¿åå·"> </el-table-column> <el-table-column align="center" label="éé¢"> <template slot-scope="{row}"> <span style="color:rgba(249, 86, 1, 0.996078431372549);">{{row.totalFee}}</span> </template> </el-table-column> </el-table> </div> <template v-slot:footer> <el-button @click="close">è¿å</el-button> </template> </GlobalWindow> </template> <script> import BaseOpera from '@/components/base/BaseOpera' import GlobalWindow from '@/components/common/GlobalWindow' import { getDetail } from '@/api/business/taxes' import { mapState } from 'vuex' export default { name: 'commissionDetails', extends: BaseOpera, components: { GlobalWindow }, data () { return { list1: [], list2: [], totalPrice: 0, form: { id: null, type: '', addr: '' } } }, created () { this.config({ api: '/business/taxes', 'field.id': 'id' }) }, computed: { ...mapState(['userInfo']) }, methods: { open (title, target) { this.title = title this.visible = true this.list1 = [] this.list2 = [] this.$nextTick(() => { for (const key in this.form) { this.form[key] = target[key] } this.getData() }) }, close () { this.visible = false }, getData() { getDetail(this.form.id) .then(res => { let price = 0 this.list1 = res.applyList this.list2 = res.delTaxList if (this.list1 && this.list1.length > 0) { this.list1.forEach(item => { price += item.totalFee }) } if (this.list2 && this.list2.length > 0) { this.list2.forEach(row => { price += row.totalFee }) } this.totalPrice = price }) }, getSummaries1 (param) { const { columns, data } = param const sums = [] columns.forEach((column, index) => { if (index === 0) { sums[index] = 'å计' } else if (index == 3) { let price = 0 data.forEach(item => { price += item.totalFee }) sums[index] = price } }) return sums; }, getSummaries2 (param) { const { columns, data } = param const sums = [] columns.forEach((column, index) => { if (index === 0) { sums[index] = 'å计' } else if (index == 5) { let price = 0 data.forEach(item => { price += item.totalFee }) sums[index] = price } }) return sums; } } } </script> <style lang="scss" scoped> ::v-deep .el-table__footer-wrapper tbody td { cursor: pointer; text-align: center; &:nth-child(5) { color:rgba(249, 86, 1, 0.996078431372549); } } .red { color: red; } .info { width: 100%; .info_label { width: 100%; display: flex; align-items: center; justify-content: space-between; margin-bottom: 20px; span { font-size: 14px; font-weight: 500; color: #000000; } } .info_list { width: 100%; display: flex; align-items: left; flex-wrap: wrap; .list::v-deep { width: 100%; display: flex; align-items: center; justify-content: space-between; margin-bottom: 15px; .el-radio__label { color: black; font-size: 14px; } .list_label { color: black; font-size: 14px; margin-right: 20px; } .list_val { flex: 1; display: flex; align-items: center; .list_val_label { font-size: 14px; color: black; flex-shrink: 0; margin-right: 15px; } .list_val_info { flex: 1; font-size: 14px; color: black; } } } .info_list_item { width: 50%; display: flex; align-items: start; font-size: 14px; margin-bottom: 20px; .info_list_item_label { width: 150px; flex-shrink: 0; } .info_list_item_val { flex: 1; display: flex; align-items: center; .image { width: 100px; height: 100px; display: flex; align-items: center; justify-content: center; overflow: hidden; img { width: 100%; } } } } } } .form { width: 100%; display: flex; flex-direction: column; .form_item { width: 100%; display: flex; align-items: center; margin-bottom: 20px; &:last-child { margin-bottom: 0 !important; } .form_item_label { width: 100px; flex-shrink: 0; font-size: 14px; color: black; } .form_item_val { flex: 1; min-height: 35px; display: flex; align-items: center; input { width: 100%; height: 100%; font-size: 14px; color: black; padding: 5px 10px; outline: none; box-sizing: border-box; border: 1px solid #ececec; } } } } </style> company/src/components/enterprise/directInvoicingApplication.vue
@@ -188,6 +188,9 @@ open (title, target) { this.title = title this.visible = true this.type = '0' this.val = '' this.val1 = '' this.list1 = [] this.list2 = [] this.$nextTick(() => { company/src/components/enterprise/entrustedInvoicingApplication.vue
@@ -34,10 +34,19 @@ <div class="info_list_item_label">å¼ç¥¨éé¢ï¼</div> <div class="info_list_item_val" style="color:rgba(249, 86, 1, 0.996078431372549);">{{total}}</div> </div> <div class="info_list_item" style="width: 100%;"> <div class="info_list_item_label">æ¥æ¶æ¹å¼ï¼</div> <div class="info_list_item_val">çµåå票</div> <!-- <div v-if="model.type === 1" class="info_list_item_val">纸质å票</div>--> <div class="list" style="width: 100%;"> <el-radio v-model="type" label="0">çµåå票</el-radio> <div class="list_val"> <div class="list_val_label">æ¥æ¶å°åï¼</div> <el-input v-model="val" :disabled="type === '1'" placeholder="111222333@qq.com"></el-input> </div> </div> <div class="list" style="width: 100%;"> <el-radio v-model="type" label="1">纸质å票</el-radio> <div class="list_val"> <div class="list_val_label">æ¥æ¶å°åï¼</div> <el-input v-model="val1" :disabled="type === '0'" placeholder="å®å¾½çåè¥å¸ç»æµææ¯å¼ååºè²è±è·¯ä»¥ä¸ãç³é¨è·¯ä»¥åè²è±è·¯1ï¼ 0551-63450845"></el-input> </div> </div> </div> <el-table @@ -79,6 +88,7 @@ <script> import BaseOpera from '@/components/base/BaseOpera' import GlobalWindow from '@/components/common/GlobalWindow' import { entrustInvoicing } from '@/api/business/taxes' import { mapState } from 'vuex' export default { name: 'entrustedInvoicingApplication', @@ -91,6 +101,9 @@ backInfo:'', list: [] }, val: '', val1: '', type: '0', rules: { backInfo: [ { required: true, message: '请è¾å ¥éå说æ' } @@ -99,11 +112,18 @@ } }, created () { console.log(this.userInfo) this.config({ api: '/business/taxes', 'field.id': 'id' }) }, watch: { type: { handler(news) { this.val = '' this.val1 = '' } } }, computed: { ...mapState(['userInfo']), @@ -118,11 +138,41 @@ methods: { open (title, target) { this.title = title this.type = '0' this.val = '' this.val1 = '' this.visible = true this.$nextTick(() => { for (const key in this.form) { this.form[key] = target[key] } }) }, confirm () { if (!this.val && !this.val1) { this.$message.warning('请è¾å ¥æ¥æ¶å°å') return } this.isWorking = true entrustInvoicing({ address: this.val || this.val1, invoicingMoney: this.total, taxDetialList: this.form.list.map(item => { return { insuranceApplyId: item.id, fee: item.totalPrice, applyCode: item.code } }), type: this.type }).then(res => { this.visible = false this.$tip.apiSuccess('æä½æå') this.$emit('success') }).catch(e => { this.$tip.apiFailed(e) }).finally(() => { this.isWorking = false }) }, getSummaries (param) { @@ -131,7 +181,8 @@ columns.forEach((column, index) => { if (index === 0) { sums[index] = 'å计' } else if (index == 4) { return } else if (index == 3) { let price = 0 data.forEach(item => { price += item.totalPrice @@ -139,6 +190,7 @@ sums[index] = price } }) return sums; } } } @@ -184,6 +236,28 @@ display: flex; align-items: left; flex-wrap: wrap; .list::v-deep { width: 100%; display: flex; align-items: center; justify-content: space-between; margin-bottom: 15px; .el-radio__label { color: black; font-size: 14px; } .list_val { flex: 1; display: flex; align-items: center; .list_val_label { font-size: 14px; color: black; flex-shrink: 0; margin-right: 15px; } } } .info_list_item { width: 50%; display: flex; company/src/components/enterprise/entrustmentHistory.vue
@@ -64,6 +64,7 @@ <el-button @click="close">è¿å</el-button> </template> <directInsuranceDetails ref="directInsuranceDetails" /> <commissionDetails ref="commissionDetails" /> </GlobalWindow> </template> @@ -72,16 +73,18 @@ import GlobalWindow from '@/components/common/GlobalWindow' import { list } from '@/api/business/taxes' import directInsuranceDetails from '@/components/enterprise/directInsuranceDetails' import commissionDetails from '@/components/enterprise/commissionDetails' export default { name: 'entrustmentHistory', extends: BaseOpera, components: { GlobalWindow, directInsuranceDetails }, components: { GlobalWindow, directInsuranceDetails, commissionDetails }, data () { return { form: { id: null, solutionsName: '', code: '' code: '', determine: '' }, list: [] } @@ -116,10 +119,14 @@ } else { info = 'å¾ å¤ç' } if (this.form.determine === 1) { this.$refs.commissionDetails.open(`å¼ç¥¨è¯¦æ ï¼${info}ï¼`, row) } else { this.$refs.directInsuranceDetails.open(`å¼ç¥¨è¯¦æ ï¼${info}ï¼`, row) } }, getList() { list({ insuranceApplyId: this.form.id }) list({ applyId: this.form.id }) .then(res => { this.list = res }) company/src/views/enterprise/entrustedInvoicing.vue
@@ -41,7 +41,7 @@ <el-table-column prop="endTime" label="æä¿å¤±ææ¥æ"></el-table-column> <el-table-column label="æä½" min-width="180px"> <template slot-scope="{row}"> <el-button type="text" @click="$refs.entrustmentHistory.open('å¼ç¥¨åå²', row)">å¼ç¥¨åå²</el-button> <el-button type="text" @click="$refs.entrustmentHistory.open('å¼ç¥¨åå²', {...row, determine: 1})">å¼ç¥¨åå²</el-button> </template> </el-table-column> </el-table>