Commit ac99dc052ea8b2eb9f28a98a5e6d9c7ff8deedcc

Authored by wuxw
1 parent 8e80e9f4

优化代码

src/api/fee/doImportCreateFeeApi.js
... ... @@ -3,7 +3,7 @@ import request from '@/utils/request'
3 3 export function importData(data) {
4 4 return new Promise((resolve, reject) => {
5 5 request({
6   - url: '/assetImport/importData',
  6 + url: '/callComponent/upload/assetImport/importData',
7 7 method: 'post',
8 8 data,
9 9 headers: {
... ...
src/api/fee/roomFeeImportApi.js
... ... @@ -37,7 +37,7 @@ export function queryImportFee(params) {
37 37 export function importRoomFeeData(formData) {
38 38 return new Promise((resolve, reject) => {
39 39 request({
40   - url: '/assetImport/importData',
  40 + url: '/callComponent/upload/assetImport/importData',
41 41 method: 'post',
42 42 data: formData,
43 43 headers: {
... ... @@ -73,7 +73,7 @@ export function downloadImportTemplate(params) {
73 73 }).then(response => {
74 74 const res = response.data
75 75 if (res.code === 0) {
76   - resolve(res.data)
  76 + resolve(res)
77 77 } else {
78 78 reject(new Error(res.msg))
79 79 }
... ...
src/api/system/historyFeeDetailImportApi.js
... ... @@ -8,7 +8,7 @@ import request from '@/utils/request'
8 8 export function importData(formData) {
9 9 return new Promise((resolve, reject) => {
10 10 request({
11   - url: '/assetImport/importData',
  11 + url: '/callComponent/upload/assetImport/importData',
12 12 method: 'post',
13 13 data: formData,
14 14 headers: {
... ...
src/components/fee/addFloorShare.vue
1 1 <template>
2   - <el-dialog :title="$t('floorShare.addTitle')" :visible.sync="dialogVisible" width="50%" @close="handleClose">
3   - <el-form ref="form" :model="form" :rules="rules" label-width="120px" label-position="right">
  2 + <el-dialog :title="$t('floorShare.addTitle')" :visible.sync="dialogVisible" width="40%" @close="handleClose">
  3 + <el-form ref="form" :model="form" :rules="rules" label-width="120px" class="text-left" label-position="right">
4 4 <el-form-item :label="$t('floorShare.floor')" prop="floorNum">
5 5 <el-input v-model="form.floorNum" disabled />
6 6 </el-form-item>
... ...
src/components/fee/audit.vue
1 1 <template>
2   - <el-dialog
3   - :title="$t('audit.title')"
4   - :visible.sync="visible"
5   - width="50%"
6   - @close="handleClose"
7   - >
8   - <el-form
9   - ref="form"
10   - :model="formData"
11   - label-width="120px"
12   - label-position="right"
13   - >
14   - <el-form-item
15   - :label="$t('audit.form.state')"
16   - prop="state"
17   - :rules="[
18   - { required: true, message: $t('audit.rules.stateRequired'), trigger: 'change' }
19   - ]"
20   - >
21   - <el-select
22   - v-model="formData.state"
23   - :placeholder="$t('audit.placeholder.state')"
24   - style="width:100%"
25   - @change="handleStateChange"
26   - >
27   - <el-option
28   - :label="$t('audit.state.agree')"
29   - value="1100"
30   - />
31   - <el-option
32   - :label="$t('audit.state.reject')"
33   - value="1200"
34   - />
  2 + <el-dialog :title="$t('audit.title')" :visible.sync="visible" width="50%" @close="handleClose">
  3 + <el-form ref="form" :model="formData" label-width="120px" label-position="right">
  4 + <el-form-item :label="$t('audit.form.state')" prop="state" :rules="[
  5 + { required: true, message: $t('audit.rules.stateRequired'), trigger: 'change' }
  6 + ]">
  7 + <el-select v-model="formData.state" :placeholder="$t('audit.placeholder.state')" style="width:100%"
  8 + @change="handleStateChange">
  9 + <el-option :label="$t('audit.state.agree')" value="1100" />
  10 + <el-option :label="$t('audit.state.reject')" value="1200" />
35 11 </el-select>
36 12 </el-form-item>
37   - <el-form-item
38   - :label="$t('audit.form.remark')"
39   - prop="remark"
40   - :rules="[
41   - { required: true, message: $t('audit.rules.remarkRequired'), trigger: 'blur' },
42   - { max: 200, message: $t('audit.rules.remarkMaxLength'), trigger: 'blur' }
43   - ]"
44   - >
45   - <el-input
46   - v-model="formData.remark"
47   - type="textarea"
48   - :rows="3"
49   - :placeholder="$t('audit.placeholder.remark')"
50   - />
  13 + <el-form-item :label="$t('audit.form.remark')" prop="remark" :rules="[
  14 + { required: true, message: $t('audit.rules.remarkRequired'), trigger: 'blur' },
  15 + { max: 200, message: $t('audit.rules.remarkMaxLength'), trigger: 'blur' }
  16 + ]">
  17 + <el-input v-model="formData.remark" type="textarea" :rows="3" :placeholder="$t('audit.placeholder.remark')" />
51 18 </el-form-item>
52 19 </el-form>
53 20 <div slot="footer" class="dialog-footer">
... ... @@ -100,7 +67,7 @@ export default {
100 67 if (this.formData.state === '1200') {
101 68 this.formData.remark = `${this.$t('audit.state.reject')}:${this.formData.remark}`
102 69 }
103   - this.$emit('success', this.formData)
  70 + this.$emit('notifyAuditInfo', this.formData)
104 71 this.visible = false
105 72 }
106 73 })
... ...
src/components/fee/importRoomFee.vue
1 1 <template>
2   - <el-dialog
3   - :title="$t('importRoomFee.title')"
4   - :visible.sync="visible"
5   - width="50%"
6   - @close="handleClose"
7   - >
8   - <el-form
9   - ref="form"
10   - :model="form"
11   - label-width="120px"
12   - label-position="right"
13   - >
14   - <el-form-item
15   - :label="$t('importRoomFee.form.feeTypeCd')"
16   - prop="feeTypeCd"
17   - :rules="[
18   - { required: true, message: $t('importRoomFee.rules.feeTypeCdRequired'), trigger: 'change' }
19   - ]"
20   - >
21   - <el-select
22   - v-model="form.feeTypeCd"
23   - :placeholder="$t('importRoomFee.placeholder.feeTypeCd')"
24   - style="width:100%"
25   - @change="handleFeeTypeChange"
26   - >
27   - <el-option
28   - v-for="item in feeTypeCds"
29   - :key="item.statusCd"
30   - :label="item.name"
31   - :value="item.statusCd"
32   - />
  2 + <el-dialog :title="$t('importRoomFee.title')" :visible.sync="visible" width="50%" @close="handleClose">
  3 + <el-form ref="form" :model="form" label-width="120px" class="text-left" label-position="right">
  4 + <el-form-item :label="$t('importRoomFee.form.feeTypeCd')" prop="feeTypeCd" :rules="[
  5 + { required: true, message: $t('importRoomFee.rules.feeTypeCdRequired'), trigger: 'change' }
  6 + ]">
  7 + <el-select v-model="form.feeTypeCd" :placeholder="$t('importRoomFee.placeholder.feeTypeCd')" style="width:100%"
  8 + @change="handleFeeTypeChange">
  9 + <el-option v-for="item in feeTypeCds" :key="item.statusCd" :label="item.name" :value="item.statusCd" />
33 10 </el-select>
34 11 </el-form-item>
35 12  
36   - <el-form-item
37   - :label="$t('importRoomFee.form.objType')"
38   - prop="objType"
39   - :rules="[
40   - { required: true, message: $t('importRoomFee.rules.objTypeRequired'), trigger: 'change' }
41   - ]"
42   - >
43   - <el-select
44   - v-model="form.objType"
45   - :placeholder="$t('importRoomFee.placeholder.objType')"
46   - style="width:100%"
47   - >
48   - <el-option
49   - :label="$t('importRoomFee.options.room')"
50   - value="3333"
51   - />
52   - <el-option
53   - :label="$t('importRoomFee.options.parking')"
54   - value="6666"
55   - />
  13 + <el-form-item :label="$t('importRoomFee.form.objType')" prop="objType" :rules="[
  14 + { required: true, message: $t('importRoomFee.rules.objTypeRequired'), trigger: 'change' }
  15 + ]">
  16 + <el-select v-model="form.objType" :placeholder="$t('importRoomFee.placeholder.objType')" style="width:100%">
  17 + <el-option :label="$t('importRoomFee.options.room')" value="3333" />
  18 + <el-option :label="$t('importRoomFee.options.parking')" value="6666" />
56 19 </el-select>
57 20 </el-form-item>
58 21  
59   - <el-form-item
60   - :label="$t('importRoomFee.form.file')"
61   - prop="file"
62   - :rules="[
63   - { required: true, message: $t('importRoomFee.rules.fileRequired'), trigger: 'change' }
64   - ]"
65   - >
66   - <el-upload
67   - ref="upload"
68   - :auto-upload="false"
69   - :limit="1"
70   - :on-change="handleFileChange"
71   - :on-remove="handleFileRemove"
72   - accept=".xls,.xlsx"
73   - >
  22 + <el-form-item :label="$t('importRoomFee.form.file')" prop="file" :rules="[
  23 + { required: true, message: $t('importRoomFee.rules.fileRequired'), trigger: 'change' }
  24 + ]">
  25 + <el-upload ref="upload" :auto-upload="false" :limit="1" action="" :on-change="handleFileChange"
  26 + :on-remove="handleFileRemove" accept=".xls,.xlsx">
74 27 <el-button size="small" type="primary">
75 28 {{ $t('importRoomFee.button.selectFile') }}
76 29 </el-button>
... ... @@ -95,11 +48,7 @@
95 48 <el-button @click="visible = false">
96 49 {{ $t('common.cancel') }}
97 50 </el-button>
98   - <el-button
99   - type="primary"
100   - :loading="loading"
101   - @click="handleSubmit"
102   - >
  51 + <el-button type="primary" :loading="loading" @click="handleSubmit">
103 52 {{ $t('common.confirm') }}
104 53 </el-button>
105 54 </div>
... ... @@ -164,14 +113,14 @@ export default {
164 113 formData.append('objType', this.form.objType)
165 114 formData.append('importAdapt', 'importRoomFee')
166 115  
167   - await importRoomFeeData(formData)
  116 + await importRoomFeeData(formData)
168 117 this.$message.success(this.$t('importRoomFee.message.importSuccess'))
169 118 this.$emit('success')
170 119 this.visible = false
171 120 })
172 121 } catch (error) {
173 122 console.error('导入失败:', error)
174   - this.$message.error(error.message || this.$t('importRoomFee.message.importFailed'))
  123 + this.$message.error(error.response.data)
175 124 } finally {
176 125 this.loading = false
177 126 }
... ... @@ -183,7 +132,11 @@ export default {
183 132 objType: this.form.objType,
184 133 pagePath: 'exportFeeImportTemplate'
185 134 }
186   - await downloadImportTemplate(params)
  135 + const res = await downloadImportTemplate(params)
  136 + if (res.code === 0) {
  137 + this.visible = false
  138 + this.$router.push('/pages/property/downloadTempFile?tab=下载中心')
  139 + }
187 140 this.$message.success(this.$t('importRoomFee.message.downloadSuccess'))
188 141 } catch (error) {
189 142 console.error('下载模板失败:', error)
... ...
src/components/fee/returnPayFee.vue
1 1 <template>
2   - <el-dialog
3   - :title="$t('returnPayFee.fillRefundReason')"
4   - :visible.sync="visible"
5   - width="50%"
6   - @close="handleClose"
7   - >
8   - <el-form
9   - ref="form"
10   - :model="formData"
11   - label-width="120px"
12   - label-position="left"
13   - >
  2 + <el-dialog :title="$t('returnPayFee.fillRefundReason')" :visible.sync="visible" width="50%" @close="handleClose">
  3 + <el-form ref="form" :model="formData" label-width="120px" label-position="left">
14 4 <el-form-item :label="$t('returnPayFee.payment') + 'ID'">
15 5 <el-input v-model="formData.detailId" readonly />
16 6 </el-form-item>
17   -
  7 +
18 8 <el-form-item :label="$t('returnPayFee.cycle') + $t('returnPayFee.monthUnit')">
19 9 <el-input v-model="formData.cycles" readonly />
20 10 </el-form-item>
21   -
  11 +
22 12 <el-form-item :label="$t('returnPayFee.receivableAmount')">
23 13 <el-input v-model="formData.receivableAmount" readonly />
24 14 </el-form-item>
25   -
  15 +
26 16 <el-form-item :label="$t('returnPayFee.receivedAmount')">
27 17 <el-input v-model="formData.receivedAmount" readonly />
28 18 </el-form-item>
29   -
  19 +
30 20 <el-form-item :label="$t('returnPayFee.paymentTime')">
31 21 <el-input v-model="formData.payTime" readonly />
32 22 </el-form-item>
33   -
34   - <el-form-item
35   - :label="$t('returnPayFee.refundReason')"
36   - prop="reason"
37   - :rules="[
38   - { required: true, message: $t('returnPayFee.reasonRequired'), trigger: 'blur' },
39   - { max: 200, message: $t('returnPayFee.reasonMaxLength'), trigger: 'blur' }
40   - ]"
41   - >
42   - <el-input
43   - v-model="formData.reason"
44   - type="textarea"
45   - :rows="3"
46   - :placeholder="$t('returnPayFee.reasonPlaceholder')"
47   - />
  23 +
  24 + <el-form-item :label="$t('returnPayFee.refundReason')" prop="reason" :rules="[
  25 + { required: true, message: $t('returnPayFee.reasonRequired'), trigger: 'blur' },
  26 + { max: 200, message: $t('returnPayFee.reasonMaxLength'), trigger: 'blur' }
  27 + ]">
  28 + <el-input v-model="formData.reason" type="textarea" :rows="3"
  29 + :placeholder="$t('returnPayFee.reasonPlaceholder')" />
48 30 </el-form-item>
49 31 </el-form>
50   -
  32 +
51 33 <span slot="footer" class="dialog-footer">
52 34 <el-button @click="visible = false">{{ $t('common.cancel') }}</el-button>
53   - <el-button
54   - type="primary"
55   - @click="submitReturnPayFee"
56   - :loading="loading"
57   - >
  35 + <el-button type="primary" @click="submitReturnPayFee" :loading="loading">
58 36 {{ $t('returnPayFee.submitRefund') }}
59 37 </el-button>
60 38 </span>
... ... @@ -88,6 +66,7 @@ export default {
88 66 open(data) {
89 67 this.resetForm()
90 68 Object.assign(this.formData, data)
  69 + this.formData.payTime = data.createTime
91 70 this.visible = true
92 71 },
93 72 resetForm() {
... ... @@ -115,7 +94,7 @@ export default {
115 94  
116 95 this.loading = true
117 96 await saveReturnPayFee(this.formData)
118   -
  97 +
119 98 this.$message.success(this.$t('common.operateSuccess'))
120 99 this.visible = false
121 100 this.$emit('success')
... ...
src/views/fee/floorShareList.vue
... ... @@ -6,7 +6,7 @@
6 6 </el-col>
7 7 <el-col :span="20">
8 8 <el-card class="box-card">
9   - <div slot="header" class="clearfix">
  9 + <div slot="header" class="flex justify-between">
10 10 <span>{{ $t('floorShare.title') }}</span>
11 11 <el-button v-if="floorShareInfo.conditions.floorId" type="primary" size="small" style="float: right;"
12 12 @click="openAddFloorShareModal">
... ...
src/views/fee/propertyFeeList.vue
... ... @@ -88,7 +88,7 @@
88 88 </el-card>
89 89  
90 90 <!-- 子组件 -->
91   - <return-pay-fee ref="returnPayFee" />
  91 + <return-pay-fee ref="returnPayFee" @success="queryFeeDetailMethod" />
92 92 <view-fee-detail-discount ref="viewFeeDetailDiscount" />
93 93  
94 94 </div>
... ...
src/views/fee/roomFeeImportList.vue
... ... @@ -7,24 +7,13 @@
7 7 </div>
8 8 <el-row :gutter="20">
9 9 <el-col :span="6">
10   - <el-input
11   - v-model="searchForm.importFeeId"
12   - :placeholder="$t('roomFeeImport.search.importFeeId')"
13   - clearable
14   - />
  10 + <el-input v-model="searchForm.importFeeId" :placeholder="$t('roomFeeImport.search.importFeeId')" clearable />
15 11 </el-col>
16 12 <el-col :span="6">
17   - <el-select
18   - v-model="searchForm.feeTypeCd"
19   - :placeholder="$t('roomFeeImport.search.feeTypeCd')"
20   - style="width:100%"
21   - >
22   - <el-option
23   - v-for="item in filteredFeeTypeCds"
24   - :key="item.statusCd"
25   - :label="item.name"
26   - :value="item.statusCd"
27   - />
  13 + <el-select v-model="searchForm.feeTypeCd" :placeholder="$t('roomFeeImport.search.feeTypeCd')"
  14 + style="width:100%">
  15 + <el-option v-for="item in filteredFeeTypeCds" :key="item.statusCd" :label="item.name"
  16 + :value="item.statusCd" />
28 17 </el-select>
29 18 </el-col>
30 19 <el-col :span="6">
... ... @@ -39,66 +28,28 @@
39 28 <el-card class="table-card">
40 29 <div slot="header" class="flex justify-between">
41 30 <span>{{ $t('roomFeeImport.table.title') }}</span>
42   - <el-button
43   - type="primary"
44   - style="float: right;"
45   - @click="handleImport"
46   - >
  31 + <el-button type="primary" style="float: right;" @click="handleImport">
47 32 {{ $t('roomFeeImport.button.import') }}
48 33 </el-button>
49 34 </div>
50 35  
51   - <el-table
52   - :data="tableData"
53   - border
54   - style="width: 100%"
55   - v-loading="loading"
56   - >
57   - <el-table-column
58   - prop="importFeeId"
59   - :label="$t('roomFeeImport.table.importFeeId')"
60   - align="center"
61   - />
62   - <el-table-column
63   - prop="feeTypeCdName"
64   - :label="$t('roomFeeImport.table.feeTypeCd')"
65   - align="center"
66   - />
67   - <el-table-column
68   - prop="createTime"
69   - :label="$t('roomFeeImport.table.createTime')"
70   - align="center"
71   - />
72   - <el-table-column
73   - prop="remark"
74   - :label="$t('roomFeeImport.table.remark')"
75   - align="center"
76   - />
77   - <el-table-column
78   - :label="$t('common.operation')"
79   - align="center"
80   - width="150"
81   - >
  36 + <el-table :data="tableData" border style="width: 100%" v-loading="loading">
  37 + <el-table-column prop="importFeeId" :label="$t('roomFeeImport.table.importFeeId')" align="center" />
  38 + <el-table-column prop="feeTypeCdName" :label="$t('roomFeeImport.table.feeTypeCd')" align="center" />
  39 + <el-table-column prop="createTime" :label="$t('roomFeeImport.table.createTime')" align="center" />
  40 + <el-table-column prop="remark" :label="$t('roomFeeImport.table.remark')" align="center" />
  41 + <el-table-column :label="$t('common.operation')" align="center" width="150">
82 42 <template slot-scope="scope">
83   - <el-button
84   - size="mini"
85   - @click="handleDetail(scope.row)"
86   - >
  43 + <el-button size="mini" @click="handleDetail(scope.row)">
87 44 {{ $t('common.detail') }}
88 45 </el-button>
89 46 </template>
90 47 </el-table-column>
91 48 </el-table>
92 49  
93   - <el-pagination
94   - :current-page="pagination.current"
95   - :page-sizes="[10, 20, 30, 50]"
96   - :page-size="pagination.size"
97   - :total="pagination.total"
98   - layout="total, sizes, prev, pager, next, jumper"
99   - @size-change="handleSizeChange"
100   - @current-change="handleCurrentChange"
101   - />
  50 + <el-pagination :current-page="pagination.current" :page-sizes="[10, 20, 30, 50]" :page-size="pagination.size"
  51 + :total="pagination.total" layout="total, sizes, prev, pager, next, jumper" @size-change="handleSizeChange"
  52 + @current-change="handleCurrentChange" />
102 53 </el-card>
103 54  
104 55 <!-- 导入组件 -->
... ...
src/views/fee/shareReadingFeeList.vue
... ... @@ -113,7 +113,7 @@ export default {
113 113 },
114 114 handleDetail(row) {
115 115 this.$router.push({
116   - path: '/fee/feeDetail',
  116 + path: '/views/fee/feeDetail',
117 117 query: { feeId: row.feeId }
118 118 })
119 119 },
... ...
src/views/fee/shareReadingList.vue
... ... @@ -13,7 +13,7 @@
13 13 </el-col>
14 14 <el-col :span="20">
15 15 <el-card>
16   - <div slot="header" class="clearfix">
  16 + <div slot="header" class="flex justify-between">
17 17 <span>{{ $t('shareReading.search.title') }}</span>
18 18 </div>
19 19 <div class="search-wrapper">
... ... @@ -43,7 +43,7 @@
43 43 </el-card>
44 44  
45 45 <el-card class="mt-20">
46   - <div slot="header" class="clearfix">
  46 + <div slot="header" class="flex justify-between">
47 47 <span>{{ $t('shareReading.list.title') }}</span>
48 48 <el-button type="primary" size="small" style="float:right" @click="_openAddShareReadingModal">
49 49 {{ $t('shareReading.list.addReading') }}
... ...