Commit 27dcfde5732b936778708bce65731ee5d4042e24
1 parent
c104a84f
系统全面测试完成
Showing
36 changed files
with
749 additions
and
488 deletions
src/api/org/orgApi.js
| ... | ... | @@ -120,11 +120,8 @@ export function listStaffs(params) { |
| 120 | 120 | params |
| 121 | 121 | }).then(response => { |
| 122 | 122 | const res = response.data |
| 123 | - if (res.code == 0) { | |
| 124 | 123 | resolve(res) |
| 125 | - } else { | |
| 126 | - reject(new Error(res.msg || '获取员工列表失败')) | |
| 127 | - } | |
| 124 | + | |
| 128 | 125 | }).catch(error => { |
| 129 | 126 | reject(error) |
| 130 | 127 | }) | ... | ... |
src/api/org/scheduleClassesStaffManageApi.js
0 → 100644
| 1 | +import request from '@/utils/request' | |
| 2 | + | |
| 3 | +/** | |
| 4 | + * 获取班次员工列表 | |
| 5 | + * @param {Object} params 查询参数 | |
| 6 | + * @returns {Promise} | |
| 7 | + */ | |
| 8 | +export function listScheduleClassesStaff(params) { | |
| 9 | + return new Promise((resolve, reject) => { | |
| 10 | + request({ | |
| 11 | + url: '/scheduleClasses.listScheduleClassesStaff', | |
| 12 | + method: 'get', | |
| 13 | + params | |
| 14 | + }).then(response => { | |
| 15 | + const res = response.data | |
| 16 | + resolve(res) | |
| 17 | + }).catch(error => { | |
| 18 | + reject(error) | |
| 19 | + }) | |
| 20 | + }) | |
| 21 | +} | |
| 22 | + | |
| 23 | +/** | |
| 24 | + * 保存班次员工 | |
| 25 | + * @param {Object} data 保存数据 | |
| 26 | + * @returns {Promise} | |
| 27 | + */ | |
| 28 | +export function saveScheduleClassesStaff(data) { | |
| 29 | + return new Promise((resolve, reject) => { | |
| 30 | + request({ | |
| 31 | + url: '/scheduleClasses.saveScheduleClassesStaff', | |
| 32 | + method: 'post', | |
| 33 | + data | |
| 34 | + }).then(response => { | |
| 35 | + const res = response.data | |
| 36 | + resolve(res) | |
| 37 | + }).catch(error => { | |
| 38 | + reject(error) | |
| 39 | + }) | |
| 40 | + }) | |
| 41 | +} | |
| 42 | + | |
| 43 | +/** | |
| 44 | + * 删除班次员工 | |
| 45 | + * @param {Object} data 删除数据 | |
| 46 | + * @returns {Promise} | |
| 47 | + */ | |
| 48 | +export function deleteScheduleClassesStaff(data) { | |
| 49 | + return new Promise((resolve, reject) => { | |
| 50 | + request({ | |
| 51 | + url: '/scheduleClasses.deleteScheduleClassesStaff', | |
| 52 | + method: 'post', | |
| 53 | + data | |
| 54 | + }).then(response => { | |
| 55 | + const res = response.data | |
| 56 | + resolve(res) | |
| 57 | + }).catch(error => { | |
| 58 | + reject(error) | |
| 59 | + }) | |
| 60 | + }) | |
| 61 | +} | |
| 62 | + | |
| 63 | +/** | |
| 64 | + * 获取组织树 | |
| 65 | + * @returns {Promise} | |
| 66 | + */ | |
| 67 | +export function listOrgTree() { | |
| 68 | + return new Promise((resolve, reject) => { | |
| 69 | + request({ | |
| 70 | + url: '/org.listOrgTree', | |
| 71 | + method: 'get' | |
| 72 | + }).then(response => { | |
| 73 | + const res = response.data | |
| 74 | + resolve(res) | |
| 75 | + }).catch(error => { | |
| 76 | + reject(error) | |
| 77 | + }) | |
| 78 | + }) | |
| 79 | +} | |
| 80 | + | |
| 81 | +/** | |
| 82 | + * 根据组织ID获取员工列表 | |
| 83 | + * @param {Object} params 查询参数 | |
| 84 | + * @returns {Promise} | |
| 85 | + */ | |
| 86 | +export function listStaffByOrg(params) { | |
| 87 | + return new Promise((resolve, reject) => { | |
| 88 | + request({ | |
| 89 | + url: '/query.staff.infos', | |
| 90 | + method: 'get', | |
| 91 | + params | |
| 92 | + }).then(response => { | |
| 93 | + const res = response.data | |
| 94 | + resolve(res) | |
| 95 | + }).catch(error => { | |
| 96 | + reject(error) | |
| 97 | + }) | |
| 98 | + }) | |
| 99 | +} | |
| 0 | 100 | \ No newline at end of file | ... | ... |
src/components/car/importOwnerCar.vue
| ... | ... | @@ -80,7 +80,7 @@ export default { |
| 80 | 80 | this.$message.success(this.$t('listOwnerCar.importSuccess')) |
| 81 | 81 | this.$emit('success') |
| 82 | 82 | this.visible = false |
| 83 | - this.$router.push(`/pages/property/assetImportLogDetail?logId=${response.logId}&logType=importOwnerCar`) | |
| 83 | + this.$router.push(`/views/system/assetImportLogDetail?logId=${response.logId}&logType=importOwnerCar`) | |
| 84 | 84 | } catch (error) { |
| 85 | 85 | console.error('导入失败:', error) |
| 86 | 86 | this.$message.error(error.message || this.$t('listOwnerCar.importError')) | ... | ... |
src/components/fee/doImportCreateFee.vue
| ... | ... | @@ -78,7 +78,7 @@ export default { |
| 78 | 78 | if (res.code === 0) { |
| 79 | 79 | this.$message.success(this.$t('doImportCreateFee.successMessage')) |
| 80 | 80 | this.handleClose() |
| 81 | - this.$router.push(`/pages/property/assetImportLogDetail?logId=${res.data.logId}&logType=importCustomFee`) | |
| 81 | + this.$router.push(`/views/system/assetImportLogDetail?logId=${res.data.logId}&logType=importCustomFee`) | |
| 82 | 82 | } else { |
| 83 | 83 | this.$message.error(res.msg) |
| 84 | 84 | } | ... | ... |
src/components/org/addClasses.vue
| 1 | 1 | <template> |
| 2 | - <el-dialog :title="$t('classesManage.add.title')" :visible.sync="visible" width="60%" @close="handleClose"> | |
| 3 | - <el-form ref="form" :model="formData" label-width="120px"> | |
| 2 | + <el-dialog :title="$t('classesManage.add.title')" :visible.sync="visible" width="50%" @close="handleClose"> | |
| 3 | + <el-form ref="form" :model="formData" label-width="120px" class="text-left"> | |
| 4 | 4 | <el-form-item :label="$t('classesManage.add.name')" prop="name" :rules="[ |
| 5 | 5 | { required: true, message: $t('classesManage.validate.nameRequired'), trigger: 'blur' }, |
| 6 | 6 | { max: 100, message: $t('classesManage.validate.nameMaxLength'), trigger: 'blur' } | ... | ... |
src/components/org/addScheduleClassesStaff.vue
0 → 100644
| 1 | +<template> | |
| 2 | + <el-dialog :title="$t('scheduleClassesStaffManage.addTitle')" :visible.sync="visible" width="70%" | |
| 3 | + @close="handleClose"> | |
| 4 | + <el-row :gutter="20"> | |
| 5 | + <el-col :span="24"> | |
| 6 | + <select-staffs-div ref="selectStaffs" @selectStaffs="handleSelectStaffs" /> | |
| 7 | + </el-col> | |
| 8 | + </el-row> | |
| 9 | + <span slot="footer" class="dialog-footer"> | |
| 10 | + <el-button @click="visible = false">{{ $t('common.cancel') }}</el-button> | |
| 11 | + <el-button type="primary" @click="handleSave">{{ $t('common.save') }}</el-button> | |
| 12 | + </span> | |
| 13 | + </el-dialog> | |
| 14 | +</template> | |
| 15 | + | |
| 16 | +<script> | |
| 17 | +import { saveScheduleClassesStaff } from '@/api/org/scheduleClassesStaffManageApi' | |
| 18 | +import SelectStaffsDiv from '@/components/staff/selectStaffsDiv' | |
| 19 | + | |
| 20 | +export default { | |
| 21 | + name: 'AddScheduleClassesStaff', | |
| 22 | + components: { | |
| 23 | + SelectStaffsDiv | |
| 24 | + }, | |
| 25 | + data() { | |
| 26 | + return { | |
| 27 | + visible: false, | |
| 28 | + scheduleId: '', | |
| 29 | + staffs: [] | |
| 30 | + } | |
| 31 | + }, | |
| 32 | + methods: { | |
| 33 | + open(scheduleId) { | |
| 34 | + this.scheduleId = scheduleId | |
| 35 | + this.visible = true | |
| 36 | + }, | |
| 37 | + async handleSave() { | |
| 38 | + if (this.staffs.length === 0) { | |
| 39 | + this.$message.warning(this.$t('scheduleClassesStaffManage.selectStaffWarning')) | |
| 40 | + return | |
| 41 | + } | |
| 42 | + | |
| 43 | + try { | |
| 44 | + const params = { | |
| 45 | + scheduleId: this.scheduleId, | |
| 46 | + staffs: this.staffs | |
| 47 | + } | |
| 48 | + await saveScheduleClassesStaff(params) | |
| 49 | + this.$message.success(this.$t('common.saveSuccess')) | |
| 50 | + this.$emit('success') | |
| 51 | + this.visible = false | |
| 52 | + } catch (error) { | |
| 53 | + this.$message.error(this.$t('common.saveError')) | |
| 54 | + } | |
| 55 | + }, | |
| 56 | + handleClose() { | |
| 57 | + this.$refs.selectStaffs.reset() | |
| 58 | + }, | |
| 59 | + handleSelectStaffs(staffs) { | |
| 60 | + this.staffs = staffs | |
| 61 | + } | |
| 62 | + } | |
| 63 | +} | |
| 64 | +</script> | |
| 65 | + | |
| 66 | +<style scoped> | |
| 67 | +.el-row { | |
| 68 | + margin-bottom: 20px; | |
| 69 | +} | |
| 70 | +</style> | |
| 0 | 71 | \ No newline at end of file | ... | ... |
src/components/org/deleteScheduleClassesStaff.vue
0 → 100644
| 1 | +<template> | |
| 2 | + <el-dialog | |
| 3 | + :title="$t('common.confirmDelete')" | |
| 4 | + :visible.sync="visible" | |
| 5 | + width="30%" | |
| 6 | + center> | |
| 7 | + <div class="text-center"> | |
| 8 | + <p>{{ $t('scheduleClassesStaffManage.confirmDeleteStaff') }}</p> | |
| 9 | + </div> | |
| 10 | + <span slot="footer" class="dialog-footer"> | |
| 11 | + <el-button @click="visible = false">{{ $t('common.cancel') }}</el-button> | |
| 12 | + <el-button type="primary" @click="confirmDelete">{{ $t('common.confirm') }}</el-button> | |
| 13 | + </span> | |
| 14 | + </el-dialog> | |
| 15 | +</template> | |
| 16 | + | |
| 17 | +<script> | |
| 18 | +import { deleteScheduleClassesStaff } from '@/api/org/scheduleClassesStaffManageApi' | |
| 19 | + | |
| 20 | +export default { | |
| 21 | + name: 'DeleteScheduleClassesStaff', | |
| 22 | + data() { | |
| 23 | + return { | |
| 24 | + visible: false, | |
| 25 | + deleteData: null | |
| 26 | + } | |
| 27 | + }, | |
| 28 | + methods: { | |
| 29 | + open(data) { | |
| 30 | + this.deleteData = data | |
| 31 | + this.visible = true | |
| 32 | + }, | |
| 33 | + async confirmDelete() { | |
| 34 | + try { | |
| 35 | + await deleteScheduleClassesStaff(this.deleteData) | |
| 36 | + this.$message.success(this.$t('common.deleteSuccess')) | |
| 37 | + this.$emit('success') | |
| 38 | + this.visible = false | |
| 39 | + } catch (error) { | |
| 40 | + this.$message.error(this.$t('common.deleteError')) | |
| 41 | + } | |
| 42 | + } | |
| 43 | + } | |
| 44 | +} | |
| 45 | +</script> | |
| 46 | + | |
| 47 | +<style scoped> | |
| 48 | +.text-center { | |
| 49 | + text-align: center; | |
| 50 | + margin: 20px 0; | |
| 51 | +} | |
| 52 | +</style> | |
| 0 | 53 | \ No newline at end of file | ... | ... |
src/components/org/editClasses.vue
| 1 | 1 | <template> |
| 2 | - <el-dialog :title="$t('classesManage.edit.title')" :visible.sync="visible" width="60%" @close="handleClose"> | |
| 3 | - <el-form ref="form" :model="formData" label-width="120px"> | |
| 2 | + <el-dialog :title="$t('classesManage.edit.title')" :visible.sync="visible" width="40%" @close="handleClose"> | |
| 3 | + <el-form ref="form" :model="formData" label-width="120px" class="text-left"> | |
| 4 | 4 | <el-form-item :label="$t('classesManage.edit.name')" prop="name" :rules="[ |
| 5 | 5 | { required: true, message: $t('classesManage.validate.nameRequired'), trigger: 'blur' }, |
| 6 | 6 | { max: 100, message: $t('classesManage.validate.nameMaxLength'), trigger: 'blur' } | ... | ... |
src/components/owner/ownerDetailHis.vue
| ... | ... | @@ -56,8 +56,7 @@ |
| 56 | 56 | <script> |
| 57 | 57 | import { queryHisOwner } from '@/api/owner/ownerDetailHisApi' |
| 58 | 58 | import { getCommunityId } from '@/api/community/communityApi' |
| 59 | -import { getDict } from '@/api/community/communityApi' | |
| 60 | - | |
| 59 | +import {getAttrSpecList} from '@/api/dev/attrSpecApi' | |
| 61 | 60 | export default { |
| 62 | 61 | name: 'OwnerDetailHis', |
| 63 | 62 | data() { |
| ... | ... | @@ -148,7 +147,7 @@ export default { |
| 148 | 147 | }, |
| 149 | 148 | _getColumns(callback) { |
| 150 | 149 | this.ownerDetailHisInfo.listColumns = [] |
| 151 | - getDict('building_owner_attr').then(data => { | |
| 150 | + getAttrSpecList({specCd:'building_owner_attr',page:1,row:10}).then(data => { | |
| 152 | 151 | this.ownerDetailHisInfo.listColumns = [] |
| 153 | 152 | data.forEach(item => { |
| 154 | 153 | if (item.listShow === 'Y') { | ... | ... |
src/components/room/importOwnerRoom.vue
src/components/staff/selectStaffsDiv.vue
| ... | ... | @@ -42,7 +42,7 @@ import { listStaffsByOrgId } from '@/api/inspection/inspectionPlanApi' |
| 42 | 42 | import OrgTreeShow from '@/components/org/OrgTreeShow' |
| 43 | 43 | |
| 44 | 44 | export default { |
| 45 | - name: 'SelectStaffs', | |
| 45 | + name: 'SelectStaffsDiv', | |
| 46 | 46 | components: { |
| 47 | 47 | OrgTreeShow |
| 48 | 48 | }, | ... | ... |
src/components/system/addPaymentPool.vue
| 1 | 1 | <template> |
| 2 | 2 | <el-dialog :title="$t('paymentPool.add.title')" :visible.sync="visible" width="50%" @close="handleClose"> |
| 3 | - <el-form ref="form" :model="formData" :rules="rules" label-width="120px"> | |
| 3 | + <el-form ref="form" :model="formData" :rules="rules" label-width="120px" class="text-left"> | |
| 4 | 4 | <el-form-item :label="$t('paymentPool.add.paymentName')" prop="paymentName"> |
| 5 | 5 | <el-input v-model="formData.paymentName" :placeholder="$t('paymentPool.add.paymentNamePlaceholder')" /> |
| 6 | 6 | </el-form-item> |
| ... | ... | @@ -18,7 +18,7 @@ |
| 18 | 18 | </el-form-item> |
| 19 | 19 | |
| 20 | 20 | <el-form-item v-if="formData.paymentType === 'WECHAT'" :label="$t('paymentPool.add.certFile')"> |
| 21 | - <upload-file ref="uploadFile" :call-back-listener="'addPaymentPool'" :call-back-function="'notifyCert'" /> | |
| 21 | + <upload-file ref="uploadFile" @notify="handleNotifyCert" /> | |
| 22 | 22 | </el-form-item> |
| 23 | 23 | |
| 24 | 24 | <el-form-item :label="$t('paymentPool.add.payRange')" prop="payType"> |
| ... | ... | @@ -56,8 +56,8 @@ |
| 56 | 56 | </template> |
| 57 | 57 | |
| 58 | 58 | <script> |
| 59 | -import { savePaymentPool, listPaymentKey, listFeeConfigs,listPaymentAdapt } from '@/api/system/paymentPoolApi' | |
| 60 | -import UploadFile from '@/components/upload/FileUpload' | |
| 59 | +import { savePaymentPool, listPaymentKey, listFeeConfigs, listPaymentAdapt } from '@/api/system/paymentPoolApi' | |
| 60 | +import UploadFile from '@/components/upload/uploadFile' | |
| 61 | 61 | import { getCommunityId } from '@/api/community/communityApi' |
| 62 | 62 | |
| 63 | 63 | export default { |
| ... | ... | @@ -108,7 +108,6 @@ export default { |
| 108 | 108 | created() { |
| 109 | 109 | this.formData.communityId = getCommunityId() |
| 110 | 110 | this.getPaymentTypes() |
| 111 | - this.$on('notifyCert', this.handleNotifyCert) | |
| 112 | 111 | }, |
| 113 | 112 | methods: { |
| 114 | 113 | open() { |
| ... | ... | @@ -185,7 +184,7 @@ export default { |
| 185 | 184 | try { |
| 186 | 185 | const params = { |
| 187 | 186 | ...this.formData, |
| 188 | - values: this.paymentKeys.map(item => ({ | |
| 187 | + paymentKeys: this.paymentKeys.map(item => ({ | |
| 189 | 188 | columnKey: item.columnKey, |
| 190 | 189 | columnValue: item.columnValue |
| 191 | 190 | })) | ... | ... |
src/components/system/contractDetailChange.vue
| 1 | 1 | <template> |
| 2 | 2 | <div class="contract-detail-change"> |
| 3 | - <el-table | |
| 4 | - :data="contractDetailChangeInfo.contracts" | |
| 5 | - border | |
| 6 | - style="width: 100%" | |
| 7 | - v-loading="loading"> | |
| 8 | - <el-table-column | |
| 9 | - prop="contractName" | |
| 10 | - :label="$t('contractDetailChange.contractName')" | |
| 11 | - align="center"> | |
| 3 | + <el-table :data="contractDetailChangeInfo.contracts" border style="width: 100%" v-loading="loading"> | |
| 4 | + <el-table-column prop="contractName" :label="$t('contractDetailChange.contractName')" align="center"> | |
| 12 | 5 | </el-table-column> |
| 13 | - <el-table-column | |
| 14 | - prop="contractCode" | |
| 15 | - :label="$t('contractDetailChange.contractCode')" | |
| 16 | - align="center"> | |
| 6 | + <el-table-column prop="contractCode" :label="$t('contractDetailChange.contractCode')" align="center"> | |
| 17 | 7 | </el-table-column> |
| 18 | - <el-table-column | |
| 19 | - prop="contractTypeName" | |
| 20 | - :label="$t('contractDetailChange.contractTypeName')" | |
| 21 | - align="center"> | |
| 8 | + <el-table-column prop="contractTypeName" :label="$t('contractDetailChange.contractTypeName')" align="center"> | |
| 22 | 9 | </el-table-column> |
| 23 | - <el-table-column | |
| 24 | - prop="partyA" | |
| 25 | - :label="$t('contractDetailChange.partyA')" | |
| 26 | - align="center"> | |
| 10 | + <el-table-column prop="partyA" :label="$t('contractDetailChange.partyA')" align="center"> | |
| 27 | 11 | </el-table-column> |
| 28 | - <el-table-column | |
| 29 | - prop="partyB" | |
| 30 | - :label="$t('contractDetailChange.partyB')" | |
| 31 | - align="center"> | |
| 12 | + <el-table-column prop="partyB" :label="$t('contractDetailChange.partyB')" align="center"> | |
| 32 | 13 | </el-table-column> |
| 33 | - <el-table-column | |
| 34 | - prop="planTypeName" | |
| 35 | - :label="$t('contractDetailChange.planTypeName')" | |
| 36 | - align="center"> | |
| 14 | + <el-table-column prop="planTypeName" :label="$t('contractDetailChange.planTypeName')" align="center"> | |
| 37 | 15 | </el-table-column> |
| 38 | - <el-table-column | |
| 39 | - prop="changePersonName" | |
| 40 | - :label="$t('contractDetailChange.changePersonName')" | |
| 41 | - align="center"> | |
| 16 | + <el-table-column prop="changePersonName" :label="$t('contractDetailChange.changePersonName')" align="center"> | |
| 42 | 17 | </el-table-column> |
| 43 | - <el-table-column | |
| 44 | - prop="createTime" | |
| 45 | - :label="$t('contractDetailChange.createTime')" | |
| 46 | - align="center"> | |
| 18 | + <el-table-column prop="createTime" :label="$t('contractDetailChange.createTime')" align="center"> | |
| 47 | 19 | </el-table-column> |
| 48 | - <el-table-column | |
| 49 | - prop="remark" | |
| 50 | - :label="$t('contractDetailChange.remark')" | |
| 51 | - align="center"> | |
| 20 | + <el-table-column prop="remark" :label="$t('contractDetailChange.remark')" align="center"> | |
| 52 | 21 | </el-table-column> |
| 53 | - <el-table-column | |
| 54 | - prop="stateName" | |
| 55 | - :label="$t('contractDetailChange.stateName')" | |
| 56 | - align="center"> | |
| 22 | + <el-table-column prop="stateName" :label="$t('contractDetailChange.stateName')" align="center"> | |
| 57 | 23 | </el-table-column> |
| 58 | - <el-table-column | |
| 59 | - :label="$t('contractDetailChange.operation')" | |
| 60 | - align="center" | |
| 61 | - width="120"> | |
| 24 | + <el-table-column :label="$t('contractDetailChange.operation')" align="center" width="120"> | |
| 62 | 25 | <template slot-scope="scope"> |
| 63 | - <el-button | |
| 64 | - size="mini" | |
| 65 | - type="primary" | |
| 66 | - @click="_toContractDetails(scope.row)"> | |
| 26 | + <el-button size="mini" type="primary" @click="_toContractDetails(scope.row)"> | |
| 67 | 27 | {{ $t('contractDetailChange.detail') }} |
| 68 | 28 | </el-button> |
| 69 | 29 | </template> |
| 70 | 30 | </el-table-column> |
| 71 | 31 | </el-table> |
| 72 | 32 | |
| 73 | - <el-pagination | |
| 74 | - @size-change="handleSizeChange" | |
| 75 | - @current-change="handleCurrentChange" | |
| 76 | - :current-page="page.current" | |
| 77 | - :page-sizes="[10, 20, 30, 50]" | |
| 78 | - :page-size="page.size" | |
| 79 | - layout="total, sizes, prev, pager, next, jumper" | |
| 33 | + <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="page.current" | |
| 34 | + :page-sizes="[10, 20, 30, 50]" :page-size="page.size" layout="total, sizes, prev, pager, next, jumper" | |
| 80 | 35 | :total="page.total"> |
| 81 | 36 | </el-pagination> |
| 82 | 37 | </div> |
| ... | ... | @@ -127,7 +82,7 @@ export default { |
| 127 | 82 | contractCode: this.contractDetailChangeInfo.contractCode, |
| 128 | 83 | staffNameLike: this.contractDetailChangeInfo.staffNameLike |
| 129 | 84 | } |
| 130 | - | |
| 85 | + | |
| 131 | 86 | const { data, total } = await queryContractChangePlan(params) |
| 132 | 87 | this.contractDetailChangeInfo.contracts = data |
| 133 | 88 | this.page.total = total |
| ... | ... | @@ -139,7 +94,7 @@ export default { |
| 139 | 94 | }, |
| 140 | 95 | _toContractDetails(contract) { |
| 141 | 96 | this.$router.push({ |
| 142 | - path: '/admin/contractChangeDetails', | |
| 97 | + path: '/views/contract/contractChangeDetails', | |
| 143 | 98 | query: { planId: contract.planId } |
| 144 | 99 | }) |
| 145 | 100 | }, | ... | ... |
src/components/system/editPaymentPool.vue
| 1 | 1 | <template> |
| 2 | 2 | <el-dialog :title="$t('paymentPool.edit.title')" :visible.sync="visible" width="50%" @close="handleClose"> |
| 3 | - <el-form ref="form" :model="formData" :rules="rules" label-width="120px"> | |
| 3 | + <el-form ref="form" :model="formData" :rules="rules" label-width="120px" class="text-left"> | |
| 4 | 4 | <el-form-item :label="$t('paymentPool.edit.paymentName')" prop="paymentName"> |
| 5 | 5 | <el-input v-model="formData.paymentName" :placeholder="$t('paymentPool.edit.paymentNamePlaceholder')" /> |
| 6 | 6 | </el-form-item> |
| ... | ... | @@ -18,7 +18,7 @@ |
| 18 | 18 | </el-form-item> |
| 19 | 19 | |
| 20 | 20 | <el-form-item v-if="formData.paymentType === 'WECHAT'" :label="$t('paymentPool.edit.certFile')"> |
| 21 | - <upload-file ref="uploadFile" :call-back-listener="'editPaymentPool'" :call-back-function="'notifyCert'" /> | |
| 21 | + <upload-file ref="uploadFile" @notify="handleNotifyCert" /> | |
| 22 | 22 | <div v-if="formData.certPath" class="cert-tip"> |
| 23 | 23 | {{ $t('paymentPool.edit.currentCert') }}: {{ formData.certPath }} |
| 24 | 24 | </div> |
| ... | ... | @@ -66,8 +66,8 @@ |
| 66 | 66 | </template> |
| 67 | 67 | |
| 68 | 68 | <script> |
| 69 | -import { updatePaymentPool, listPaymentKey, listFeeConfigs, getPaymentPoolDetail,listPaymentAdapt } from '@/api/system/paymentPoolApi' | |
| 70 | -import UploadFile from '@/components/upload/FileUpload' | |
| 69 | +import { updatePaymentPool, listPaymentKey, listFeeConfigs, getPaymentPoolDetail, listPaymentAdapt } from '@/api/system/paymentPoolApi' | |
| 70 | +import UploadFile from '@/components/upload/uploadFile' | |
| 71 | 71 | import { getCommunityId } from '@/api/community/communityApi' |
| 72 | 72 | |
| 73 | 73 | export default { |
| ... | ... | @@ -109,7 +109,6 @@ export default { |
| 109 | 109 | created() { |
| 110 | 110 | this.formData.communityId = getCommunityId() |
| 111 | 111 | this.getPaymentTypes() |
| 112 | - this.$on('notifyCert', this.handleNotifyCert) | |
| 113 | 112 | }, |
| 114 | 113 | methods: { |
| 115 | 114 | open(row) { |
| ... | ... | @@ -232,7 +231,7 @@ export default { |
| 232 | 231 | try { |
| 233 | 232 | const params = { |
| 234 | 233 | ...this.formData, |
| 235 | - values: this.paymentKeys.map(item => ({ | |
| 234 | + paymentKeys: this.paymentKeys.map(item => ({ | |
| 236 | 235 | columnKey: item.columnKey, |
| 237 | 236 | columnValue: item.columnValue |
| 238 | 237 | })) | ... | ... |
src/components/system/feeConfigDetailHis.vue
| 1 | 1 | <template> |
| 2 | 2 | <div class="fee-config-detail-his"> |
| 3 | - <el-table | |
| 4 | - :data="feeConfigDetailHisInfo.feeDetails" | |
| 5 | - border | |
| 6 | - style="width: 100%" | |
| 7 | - v-loading="loading"> | |
| 8 | - <el-table-column | |
| 9 | - prop="feeTypeCdName" | |
| 10 | - :label="$t('feeConfigDetailHis.feeTypeCdName')" | |
| 11 | - align="center"> | |
| 12 | - </el-table-column> | |
| 13 | - <el-table-column | |
| 14 | - prop="feeName" | |
| 15 | - :label="$t('feeConfigDetailHis.feeName')" | |
| 16 | - align="center"> | |
| 17 | - </el-table-column> | |
| 18 | - <el-table-column | |
| 19 | - prop="feeFlagName" | |
| 20 | - :label="$t('feeConfigDetailHis.feeFlagName')" | |
| 21 | - align="center"> | |
| 22 | - </el-table-column> | |
| 23 | - <el-table-column | |
| 24 | - prop="billTypeName" | |
| 25 | - :label="$t('feeConfigDetailHis.billTypeName')" | |
| 26 | - align="center"> | |
| 27 | - </el-table-column> | |
| 28 | - <el-table-column | |
| 29 | - :label="$t('feeConfigDetailHis.paymentCd')" | |
| 30 | - align="center"> | |
| 3 | + <el-table :data="feeConfigDetailHisInfo.feeDetails" border style="width: 100%" v-loading="loading"> | |
| 4 | + <el-table-column prop="feeTypeCdName" :label="$t('feeConfigDetailHis.feeTypeCdName')" align="center"> | |
| 5 | + </el-table-column> | |
| 6 | + <el-table-column prop="feeName" :label="$t('feeConfigDetailHis.feeName')" align="center"> | |
| 7 | + </el-table-column> | |
| 8 | + <el-table-column prop="feeFlagName" :label="$t('feeConfigDetailHis.feeFlagName')" align="center"> | |
| 9 | + </el-table-column> | |
| 10 | + <el-table-column prop="billTypeName" :label="$t('feeConfigDetailHis.billTypeName')" align="center"> | |
| 11 | + </el-table-column> | |
| 12 | + <el-table-column :label="$t('feeConfigDetailHis.paymentCd')" align="center"> | |
| 31 | 13 | <template slot-scope="scope"> |
| 32 | - {{ scope.row.paymentCd === '1200' ? $t('feeConfigDetailHis.prePayment') : $t('feeConfigDetailHis.postPayment') }} | |
| 14 | + {{ scope.row.paymentCd === '1200' ? $t('feeConfigDetailHis.prePayment') : $t('feeConfigDetailHis.postPayment') | |
| 15 | + }} | |
| 33 | 16 | </template> |
| 34 | 17 | </el-table-column> |
| 35 | - <el-table-column | |
| 36 | - prop="paymentCycle" | |
| 37 | - :label="$t('feeConfigDetailHis.paymentCycle')" | |
| 38 | - align="center"> | |
| 18 | + <el-table-column prop="paymentCycle" :label="$t('feeConfigDetailHis.paymentCycle')" align="center"> | |
| 39 | 19 | </el-table-column> |
| 40 | - <el-table-column | |
| 41 | - :label="$t('feeConfigDetailHis.validityPeriod')" | |
| 42 | - align="center"> | |
| 20 | + <el-table-column :label="$t('feeConfigDetailHis.validityPeriod')" align="center"> | |
| 43 | 21 | <template slot-scope="scope"> |
| 44 | 22 | <div>{{ scope.row.startTime }}</div> |
| 45 | 23 | <div>{{ scope.row.endTime }}</div> |
| 46 | 24 | </template> |
| 47 | 25 | </el-table-column> |
| 48 | - <el-table-column | |
| 49 | - :label="$t('feeConfigDetailHis.squarePrice')" | |
| 50 | - align="center"> | |
| 26 | + <el-table-column :label="$t('feeConfigDetailHis.squarePrice')" align="center"> | |
| 51 | 27 | <template slot-scope="scope"> |
| 52 | 28 | {{ scope.row.computingFormula === '2002' ? '-' : scope.row.squarePrice }} |
| 53 | 29 | </template> |
| 54 | 30 | </el-table-column> |
| 55 | - <el-table-column | |
| 56 | - prop="additionalAmount" | |
| 57 | - :label="$t('feeConfigDetailHis.additionalAmount')" | |
| 58 | - align="center"> | |
| 31 | + <el-table-column prop="additionalAmount" :label="$t('feeConfigDetailHis.additionalAmount')" align="center"> | |
| 59 | 32 | </el-table-column> |
| 60 | - <el-table-column | |
| 61 | - :label="$t('feeConfigDetailHis.deductFrom')" | |
| 62 | - align="center"> | |
| 33 | + <el-table-column :label="$t('feeConfigDetailHis.deductFrom')" align="center"> | |
| 63 | 34 | <template slot-scope="scope"> |
| 64 | 35 | {{ scope.row.deductFrom === 'Y' ? $t('common.yes') : $t('common.no') }} |
| 65 | 36 | </template> |
| 66 | 37 | </el-table-column> |
| 67 | - <el-table-column | |
| 68 | - :label="$t('feeConfigDetailHis.payOnline')" | |
| 69 | - align="center"> | |
| 38 | + <el-table-column :label="$t('feeConfigDetailHis.payOnline')" align="center"> | |
| 70 | 39 | <template slot-scope="scope"> |
| 71 | 40 | {{ scope.row.payOnline === 'Y' ? $t('common.yes') : $t('common.no') }} |
| 72 | 41 | </template> |
| 73 | 42 | </el-table-column> |
| 74 | - <el-table-column | |
| 75 | - :label="$t('feeConfigDetailHis.scale')" | |
| 76 | - align="center"> | |
| 43 | + <el-table-column :label="$t('feeConfigDetailHis.scale')" align="center"> | |
| 77 | 44 | <template slot-scope="scope"> |
| 78 | 45 | <div v-if="scope.row.scale === '1'">{{ $t('feeConfigDetailHis.round') }}</div> |
| 79 | 46 | <div v-if="scope.row.scale === '3'">{{ $t('feeConfigDetailHis.roundUp') }}</div> |
| 80 | 47 | <div v-if="scope.row.scale === '4'">{{ $t('feeConfigDetailHis.roundDown') }}</div> |
| 81 | 48 | </template> |
| 82 | 49 | </el-table-column> |
| 83 | - <el-table-column | |
| 84 | - prop="decimalPlace" | |
| 85 | - :label="$t('feeConfigDetailHis.decimalPlace')" | |
| 86 | - align="center"> | |
| 50 | + <el-table-column prop="decimalPlace" :label="$t('feeConfigDetailHis.decimalPlace')" align="center"> | |
| 87 | 51 | </el-table-column> |
| 88 | - <el-table-column | |
| 89 | - :label="$t('feeConfigDetailHis.operate')" | |
| 90 | - align="center"> | |
| 52 | + <el-table-column :label="$t('feeConfigDetailHis.operate')" align="center"> | |
| 91 | 53 | <template slot-scope="scope"> |
| 92 | 54 | {{ _getHisConfigOperate(scope.row) }} |
| 93 | 55 | </template> |
| 94 | 56 | </el-table-column> |
| 95 | - <el-table-column | |
| 96 | - prop="userName" | |
| 97 | - :label="$t('feeConfigDetailHis.userName')" | |
| 98 | - align="center"> | |
| 57 | + <el-table-column prop="userName" :label="$t('feeConfigDetailHis.userName')" align="center"> | |
| 99 | 58 | <template slot-scope="scope"> |
| 100 | 59 | {{ scope.row.userName || '-' }} |
| 101 | 60 | </template> |
| 102 | 61 | </el-table-column> |
| 103 | - <el-table-column | |
| 104 | - prop="createTime" | |
| 105 | - :label="$t('feeConfigDetailHis.createTime')" | |
| 106 | - align="center"> | |
| 62 | + <el-table-column prop="createTime" :label="$t('feeConfigDetailHis.createTime')" align="center"> | |
| 107 | 63 | <template slot-scope="scope"> |
| 108 | 64 | {{ scope.row.createTime || '-' }} |
| 109 | 65 | </template> |
| 110 | 66 | </el-table-column> |
| 111 | 67 | </el-table> |
| 112 | 68 | |
| 113 | - <el-pagination | |
| 114 | - @size-change="handleSizeChange" | |
| 115 | - @current-change="handleCurrentChange" | |
| 116 | - :current-page="page.current" | |
| 117 | - :page-sizes="[10, 20, 30, 50]" | |
| 118 | - :page-size="page.size" | |
| 119 | - layout="total, sizes, prev, pager, next, jumper" | |
| 69 | + <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="page.current" | |
| 70 | + :page-sizes="[10, 20, 30, 50]" :page-size="page.size" layout="total, sizes, prev, pager, next, jumper" | |
| 120 | 71 | :total="page.total"> |
| 121 | 72 | </el-pagination> |
| 122 | 73 | </div> |
| ... | ... | @@ -124,6 +75,7 @@ |
| 124 | 75 | |
| 125 | 76 | <script> |
| 126 | 77 | import { queryHisFeeConfig } from '@/api/system/operateDataLogApi' |
| 78 | +import { getCommunityId } from '@/api/community/communityApi' | |
| 127 | 79 | |
| 128 | 80 | export default { |
| 129 | 81 | name: 'FeeConfigDetailHis', |
| ... | ... | @@ -163,9 +115,10 @@ export default { |
| 163 | 115 | staffNameLike: this.feeConfigDetailHisInfo.staffNameLike, |
| 164 | 116 | feeNameLike: this.feeConfigDetailHisInfo.feeNameLike, |
| 165 | 117 | logStartTime: this.feeConfigDetailHisInfo.logStartTime, |
| 166 | - logEndTime: this.feeConfigDetailHisInfo.logEndTime | |
| 118 | + logEndTime: this.feeConfigDetailHisInfo.logEndTime, | |
| 119 | + communityId: getCommunityId() | |
| 167 | 120 | } |
| 168 | - | |
| 121 | + | |
| 169 | 122 | const { data, total } = await queryHisFeeConfig(params) |
| 170 | 123 | this.feeConfigDetailHisInfo.feeDetails = data |
| 171 | 124 | this.page.total = total |
| ... | ... | @@ -177,13 +130,13 @@ export default { |
| 177 | 130 | }, |
| 178 | 131 | _getHisConfigOperate(fee) { |
| 179 | 132 | const feeCount = this.feeConfigDetailHisInfo.feeDetails.filter(item => item.bId === fee.bId).length |
| 180 | - | |
| 133 | + | |
| 181 | 134 | if (feeCount <= 1) { |
| 182 | 135 | if (fee.operate === 'ADD') return this.$t('feeConfigDetailHis.add') |
| 183 | 136 | if (fee.operate === 'DEL') return this.$t('feeConfigDetailHis.delete') |
| 184 | 137 | return '-' |
| 185 | 138 | } |
| 186 | - | |
| 139 | + | |
| 187 | 140 | if (fee.operate === 'ADD') return this.$t('feeConfigDetailHis.modifyNew') |
| 188 | 141 | if (fee.operate === 'DEL') return this.$t('feeConfigDetailHis.modifyOld') |
| 189 | 142 | return '-' | ... | ... |
src/components/system/feeDetailHis.vue
| 1 | 1 | <template> |
| 2 | 2 | <div class="fee-detail-his"> |
| 3 | - <el-table | |
| 4 | - :data="feeDetailHisInfo.fees" | |
| 5 | - border | |
| 6 | - style="width: 100%" | |
| 7 | - v-loading="loading"> | |
| 8 | - <el-table-column | |
| 9 | - :label="$t('feeDetailHis.feeName')" | |
| 10 | - align="center"> | |
| 3 | + <el-table :data="feeDetailHisInfo.fees" border style="width: 100%" v-loading="loading"> | |
| 4 | + <el-table-column :label="$t('feeDetailHis.feeName')" align="center"> | |
| 11 | 5 | <template slot-scope="scope"> |
| 12 | 6 | {{ scope.row.feeName }} |
| 13 | 7 | <span v-if="scope.row.payerObjName">({{ scope.row.payerObjName }})</span> |
| 14 | 8 | </template> |
| 15 | 9 | </el-table-column> |
| 16 | - <el-table-column | |
| 17 | - :label="$t('feeDetailHis.startTime')" | |
| 18 | - align="center"> | |
| 10 | + <el-table-column :label="$t('feeDetailHis.startTime')" align="center"> | |
| 19 | 11 | <template slot-scope="scope"> |
| 20 | 12 | {{ scope.row.startTime || '-' }} |
| 21 | 13 | </template> |
| 22 | 14 | </el-table-column> |
| 23 | - <el-table-column | |
| 24 | - :label="$t('feeDetailHis.endTime')" | |
| 25 | - align="center"> | |
| 15 | + <el-table-column :label="$t('feeDetailHis.endTime')" align="center"> | |
| 26 | 16 | <template slot-scope="scope"> |
| 27 | 17 | {{ scope.row.endTime || '-' }} |
| 28 | 18 | </template> |
| 29 | 19 | </el-table-column> |
| 30 | - <el-table-column | |
| 31 | - :label="$t('feeDetailHis.operate')" | |
| 32 | - align="center"> | |
| 20 | + <el-table-column :label="$t('feeDetailHis.operate')" align="center"> | |
| 33 | 21 | <template slot-scope="scope"> |
| 34 | 22 | {{ _getFeeHisOperate(scope.row) }} |
| 35 | 23 | </template> |
| 36 | 24 | </el-table-column> |
| 37 | - <el-table-column | |
| 38 | - :label="$t('feeDetailHis.userName')" | |
| 39 | - align="center"> | |
| 25 | + <el-table-column :label="$t('feeDetailHis.userName')" align="center"> | |
| 40 | 26 | <template slot-scope="scope"> |
| 41 | 27 | {{ scope.row.userName || '-' }} |
| 42 | 28 | </template> |
| 43 | 29 | </el-table-column> |
| 44 | - <el-table-column | |
| 45 | - :label="$t('feeDetailHis.createTime')" | |
| 46 | - align="center"> | |
| 30 | + <el-table-column :label="$t('feeDetailHis.createTime')" align="center"> | |
| 47 | 31 | <template slot-scope="scope"> |
| 48 | 32 | {{ scope.row.createTime }} |
| 49 | 33 | </template> |
| 50 | 34 | </el-table-column> |
| 51 | 35 | </el-table> |
| 52 | 36 | |
| 53 | - <el-pagination | |
| 54 | - @size-change="handleSizeChange" | |
| 55 | - @current-change="handleCurrentChange" | |
| 56 | - :current-page="page.current" | |
| 57 | - :page-sizes="[10, 20, 30, 50]" | |
| 58 | - :page-size="page.size" | |
| 59 | - layout="total, sizes, prev, pager, next, jumper" | |
| 37 | + <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="page.current" | |
| 38 | + :page-sizes="[10, 20, 30, 50]" :page-size="page.size" layout="total, sizes, prev, pager, next, jumper" | |
| 60 | 39 | :total="page.total"> |
| 61 | 40 | </el-pagination> |
| 62 | 41 | </div> |
| ... | ... | @@ -64,6 +43,7 @@ |
| 64 | 43 | |
| 65 | 44 | <script> |
| 66 | 45 | import { queryHisFee } from '@/api/system/operateDataLogApi' |
| 46 | +import { getCommunityId } from '@/api/community/communityApi' | |
| 67 | 47 | |
| 68 | 48 | export default { |
| 69 | 49 | name: 'FeeDetailHis', |
| ... | ... | @@ -105,9 +85,10 @@ export default { |
| 105 | 85 | feeNameLike: this.feeDetailHisInfo.feeNameLike, |
| 106 | 86 | payerObjName: this.feeDetailHisInfo.payerObjName, |
| 107 | 87 | logStartTime: this.feeDetailHisInfo.logStartTime, |
| 108 | - logEndTime: this.feeDetailHisInfo.logEndTime | |
| 88 | + logEndTime: this.feeDetailHisInfo.logEndTime, | |
| 89 | + communityId: getCommunityId() | |
| 109 | 90 | } |
| 110 | - | |
| 91 | + | |
| 111 | 92 | const { data, total } = await queryHisFee(params) |
| 112 | 93 | this.feeDetailHisInfo.fees = data |
| 113 | 94 | this.page.total = total |
| ... | ... | @@ -119,13 +100,13 @@ export default { |
| 119 | 100 | }, |
| 120 | 101 | _getFeeHisOperate(fee) { |
| 121 | 102 | const feeCount = this.feeDetailHisInfo.fees.filter(item => item.bId === fee.bId).length |
| 122 | - | |
| 103 | + | |
| 123 | 104 | if (feeCount <= 1) { |
| 124 | 105 | if (fee.operate === 'ADD') return this.$t('feeDetailHis.add') |
| 125 | 106 | if (fee.operate === 'DEL') return this.$t('feeDetailHis.delete') |
| 126 | 107 | return '-' |
| 127 | 108 | } |
| 128 | - | |
| 109 | + | |
| 129 | 110 | if (fee.operate === 'ADD') return this.$t('feeDetailHis.modifyNew') |
| 130 | 111 | if (fee.operate === 'DEL') return this.$t('feeDetailHis.modifyOld') |
| 131 | 112 | return '-' | ... | ... |
src/components/system/roomDetailHis.vue
| 1 | 1 | <template> |
| 2 | 2 | <div class="room-detail-his"> |
| 3 | - <el-table | |
| 4 | - :data="roomDetailHisInfo.rooms" | |
| 5 | - border | |
| 6 | - style="width: 100%" | |
| 7 | - v-loading="loading"> | |
| 8 | - <el-table-column | |
| 9 | - :label="$t('roomDetailHis.operate')" | |
| 10 | - align="center"> | |
| 3 | + <el-table :data="roomDetailHisInfo.rooms" border style="width: 100%" v-loading="loading"> | |
| 4 | + <el-table-column :label="$t('roomDetailHis.operate')" align="center"> | |
| 11 | 5 | <template slot-scope="scope"> |
| 12 | 6 | {{ _getRoomHisOperate(scope.row) }} |
| 13 | 7 | </template> |
| 14 | 8 | </el-table-column> |
| 15 | - <el-table-column | |
| 16 | - :label="$t('roomDetailHis.userName')" | |
| 17 | - align="center"> | |
| 9 | + <el-table-column :label="$t('roomDetailHis.userName')" align="center"> | |
| 18 | 10 | <template slot-scope="scope"> |
| 19 | 11 | {{ scope.row.userName || '-' }} |
| 20 | 12 | </template> |
| 21 | 13 | </el-table-column> |
| 22 | - <el-table-column | |
| 23 | - :label="$t('roomDetailHis.createTime')" | |
| 24 | - align="center"> | |
| 14 | + <el-table-column :label="$t('roomDetailHis.createTime')" align="center"> | |
| 25 | 15 | <template slot-scope="scope"> |
| 26 | 16 | {{ scope.row.createTime }} |
| 27 | 17 | </template> |
| 28 | 18 | </el-table-column> |
| 29 | - <el-table-column | |
| 30 | - :label="$t('roomDetailHis.roomNum')" | |
| 31 | - align="center"> | |
| 19 | + <el-table-column :label="$t('roomDetailHis.roomNum')" align="center"> | |
| 32 | 20 | <template slot-scope="scope"> |
| 33 | 21 | {{ scope.row.floorNum }}-{{ scope.row.unitNum }}-{{ scope.row.roomNum }} |
| 34 | 22 | </template> |
| 35 | 23 | </el-table-column> |
| 36 | - <el-table-column | |
| 37 | - :label="$t('roomDetailHis.layer')" | |
| 38 | - align="center"> | |
| 24 | + <el-table-column :label="$t('roomDetailHis.layer')" align="center"> | |
| 39 | 25 | <template slot-scope="scope"> |
| 40 | 26 | {{ scope.row.layer }} |
| 41 | 27 | </template> |
| 42 | 28 | </el-table-column> |
| 43 | - <el-table-column | |
| 44 | - :label="$t('roomDetailHis.roomSubTypeName')" | |
| 45 | - align="center"> | |
| 29 | + <el-table-column :label="$t('roomDetailHis.roomSubTypeName')" align="center"> | |
| 46 | 30 | <template slot-scope="scope"> |
| 47 | 31 | {{ scope.row.roomSubTypeName }} |
| 48 | 32 | </template> |
| 49 | 33 | </el-table-column> |
| 50 | - <el-table-column | |
| 51 | - :label="$t('roomDetailHis.area')" | |
| 52 | - align="center"> | |
| 34 | + <el-table-column :label="$t('roomDetailHis.area')" align="center"> | |
| 53 | 35 | <template slot-scope="scope"> |
| 54 | 36 | {{ scope.row.builtUpArea }}/{{ scope.row.roomArea }} |
| 55 | 37 | </template> |
| 56 | 38 | </el-table-column> |
| 57 | - <el-table-column | |
| 58 | - :label="$t('roomDetailHis.roomRent')" | |
| 59 | - align="center"> | |
| 39 | + <el-table-column :label="$t('roomDetailHis.roomRent')" align="center"> | |
| 60 | 40 | <template slot-scope="scope"> |
| 61 | 41 | {{ scope.row.roomRent }} |
| 62 | 42 | </template> |
| 63 | 43 | </el-table-column> |
| 64 | - <el-table-column | |
| 65 | - :label="$t('roomDetailHis.stateName')" | |
| 66 | - align="center"> | |
| 44 | + <el-table-column :label="$t('roomDetailHis.stateName')" align="center"> | |
| 67 | 45 | <template slot-scope="scope"> |
| 68 | 46 | {{ scope.row.stateName }} |
| 69 | 47 | </template> |
| 70 | 48 | </el-table-column> |
| 71 | 49 | </el-table> |
| 72 | 50 | |
| 73 | - <el-pagination | |
| 74 | - @size-change="handleSizeChange" | |
| 75 | - @current-change="handleCurrentChange" | |
| 76 | - :current-page="page.current" | |
| 77 | - :page-sizes="[10, 20, 30, 50]" | |
| 78 | - :page-size="page.size" | |
| 79 | - layout="total, sizes, prev, pager, next, jumper" | |
| 51 | + <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="page.current" | |
| 52 | + :page-sizes="[10, 20, 30, 50]" :page-size="page.size" layout="total, sizes, prev, pager, next, jumper" | |
| 80 | 53 | :total="page.total"> |
| 81 | 54 | </el-pagination> |
| 82 | 55 | </div> |
| ... | ... | @@ -84,6 +57,7 @@ |
| 84 | 57 | |
| 85 | 58 | <script> |
| 86 | 59 | import { queryHisRoom } from '@/api/system/operateDataLogApi' |
| 60 | +import { getCommunityId } from '@/api/community/communityApi' | |
| 87 | 61 | |
| 88 | 62 | export default { |
| 89 | 63 | name: 'RoomDetailHis', |
| ... | ... | @@ -125,9 +99,10 @@ export default { |
| 125 | 99 | logStartTime: this.roomDetailHisInfo.logStartTime, |
| 126 | 100 | logEndTime: this.roomDetailHisInfo.logEndTime, |
| 127 | 101 | staffNameLike: this.roomDetailHisInfo.staffNameLike, |
| 128 | - payerObjName: this.roomDetailHisInfo.payerObjName | |
| 102 | + payerObjName: this.roomDetailHisInfo.payerObjName, | |
| 103 | + communityId: getCommunityId() | |
| 129 | 104 | } |
| 130 | - | |
| 105 | + | |
| 131 | 106 | const { data, total } = await queryHisRoom(params) |
| 132 | 107 | this.roomDetailHisInfo.rooms = data |
| 133 | 108 | this.page.total = total |
| ... | ... | @@ -139,13 +114,13 @@ export default { |
| 139 | 114 | }, |
| 140 | 115 | _getRoomHisOperate(room) { |
| 141 | 116 | const roomCount = this.roomDetailHisInfo.rooms.filter(item => item.bId === room.bId).length |
| 142 | - | |
| 117 | + | |
| 143 | 118 | if (roomCount <= 1) { |
| 144 | 119 | if (room.operate === 'ADD') return this.$t('roomDetailHis.add') |
| 145 | 120 | if (room.operate === 'DEL') return this.$t('roomDetailHis.delete') |
| 146 | 121 | return '-' |
| 147 | 122 | } |
| 148 | - | |
| 123 | + | |
| 149 | 124 | if (room.operate === 'ADD') return this.$t('roomDetailHis.modifyNew') |
| 150 | 125 | if (room.operate === 'DEL') return this.$t('roomDetailHis.modifyOld') |
| 151 | 126 | return '-' | ... | ... |
src/components/upload/FileUpload.vue
| 1 | 1 | <!-- src/components/upload/FileUpload.vue --> |
| 2 | 2 | <template> |
| 3 | - <div> | |
| 4 | - <el-upload | |
| 5 | - :action="uploadUrl" | |
| 6 | - :headers="headers" | |
| 7 | - :on-success="handleSuccess" | |
| 8 | - :on-error="handleError" | |
| 9 | - :show-file-list="false" | |
| 10 | - :before-upload="beforeUpload" | |
| 11 | - name="uploadFile" | |
| 12 | - > | |
| 13 | - <el-button size="small" type="primary">{{ $t('common.upload') }}</el-button> | |
| 14 | - <span v-if="value" style="margin-left: 10px"> | |
| 15 | - {{ fileName }} | |
| 16 | - <el-button type="text" @click.stop="downloadFile"> | |
| 17 | - <i class="el-icon-download"></i> | |
| 18 | - </el-button> | |
| 19 | - <el-button type="text" @click.stop="removeFile"> | |
| 20 | - <i class="el-icon-delete"></i> | |
| 21 | - </el-button> | |
| 22 | - </span> | |
| 23 | - </el-upload> | |
| 24 | - </div> | |
| 25 | - </template> | |
| 26 | - | |
| 27 | - <script> | |
| 28 | - import {getHeader} from '@/utils/header' | |
| 29 | - export default { | |
| 30 | - name: 'FileUpload', | |
| 31 | - props: { | |
| 32 | - value: { | |
| 33 | - type: String, | |
| 34 | - default: '' | |
| 35 | - } | |
| 3 | + <div> | |
| 4 | + <el-upload :action="uploadUrl" :headers="headers" :on-success="handleSuccess" :on-error="handleError" | |
| 5 | + :show-file-list="false" :before-upload="beforeUpload" name="uploadFile"> | |
| 6 | + <el-button size="small" type="primary">{{ $t('common.upload') }}</el-button> | |
| 7 | + <span v-if="value" style="margin-left: 10px"> | |
| 8 | + {{ fileName }} | |
| 9 | + <el-button type="text" @click.stop="downloadFile"> | |
| 10 | + <i class="el-icon-download"></i> | |
| 11 | + </el-button> | |
| 12 | + <el-button type="text" @click.stop="removeFile"> | |
| 13 | + <i class="el-icon-delete"></i> | |
| 14 | + </el-button> | |
| 15 | + </span> | |
| 16 | + </el-upload> | |
| 17 | + </div> | |
| 18 | +</template> | |
| 19 | + | |
| 20 | +<script> | |
| 21 | +import { getHeader } from '@/utils/header' | |
| 22 | +export default { | |
| 23 | + name: 'FileUpload', | |
| 24 | + props: { | |
| 25 | + value: { | |
| 26 | + type: String, | |
| 27 | + default: '' | |
| 28 | + } | |
| 29 | + }, | |
| 30 | + data() { | |
| 31 | + return { | |
| 32 | + uploadUrl: '/upload/uploadFile' | |
| 33 | + } | |
| 34 | + }, | |
| 35 | + computed: { | |
| 36 | + fileName() { | |
| 37 | + return this.value ? this.value.split('/').pop() : '' | |
| 36 | 38 | }, |
| 37 | - data() { | |
| 38 | - return { | |
| 39 | - uploadUrl: '/upload/uploadFile' | |
| 39 | + headers() { | |
| 40 | + return getHeader() | |
| 41 | + } | |
| 42 | + }, | |
| 43 | + methods: { | |
| 44 | + handleSuccess(response, file) { | |
| 45 | + console.log('Upload file:', file) | |
| 46 | + if (response.code == 0) { | |
| 47 | + const fileUrl = response.url || response.path | |
| 48 | + this.$emit('input', fileUrl) | |
| 49 | + this.$emit('success', fileUrl) | |
| 50 | + this.$message.success(this.$t('upload.success')) | |
| 51 | + } else { | |
| 52 | + this.$message.error(response.msg || this.$t('upload.error')) | |
| 40 | 53 | } |
| 41 | 54 | }, |
| 42 | - computed: { | |
| 43 | - fileName() { | |
| 44 | - return this.value ? this.value.split('/').pop() : '' | |
| 45 | - }, | |
| 46 | - headers() { | |
| 47 | - return getHeader() | |
| 48 | - } | |
| 55 | + handleError(err) { | |
| 56 | + console.error('Upload error:', err) | |
| 57 | + this.$message.error(this.$t('upload.error')) | |
| 49 | 58 | }, |
| 50 | - methods: { | |
| 51 | - handleSuccess(response, file) { | |
| 52 | - console.log('Upload file:', file) | |
| 53 | - if (response.code == 0) { | |
| 54 | - const fileUrl = response.url || response.path | |
| 55 | - this.$emit('input', fileUrl) | |
| 56 | - this.$emit('success', fileUrl) | |
| 57 | - this.$message.success(this.$t('upload.success')) | |
| 58 | - } else { | |
| 59 | - this.$message.error(response.msg || this.$t('upload.error')) | |
| 60 | - } | |
| 61 | - }, | |
| 62 | - handleError(err) { | |
| 63 | - console.error('Upload error:', err) | |
| 64 | - this.$message.error(this.$t('upload.error')) | |
| 65 | - }, | |
| 66 | - beforeUpload(file) { | |
| 67 | - const isLt10M = file.size / 1024 / 1024 < 10 | |
| 68 | - if (!isLt10M) { | |
| 69 | - this.$message.error(this.$t('upload.sizeLimit')) | |
| 70 | - } | |
| 71 | - return isLt10M | |
| 72 | - }, | |
| 73 | - removeFile() { | |
| 74 | - this.$confirm(this.$t('common.confirmDelete'), this.$t('common.tip'), { | |
| 75 | - type: 'warning' | |
| 76 | - }).then(() => { | |
| 77 | - this.$emit('input', '') | |
| 78 | - this.$emit('remove') | |
| 79 | - }).catch(() => {}) | |
| 80 | - }, | |
| 81 | - downloadFile() { | |
| 82 | - window.open(this.value, '_blank') | |
| 59 | + beforeUpload(file) { | |
| 60 | + const isLt10M = file.size / 1024 / 1024 < 10 | |
| 61 | + if (!isLt10M) { | |
| 62 | + this.$message.error(this.$t('upload.sizeLimit')) | |
| 83 | 63 | } |
| 64 | + return isLt10M | |
| 65 | + }, | |
| 66 | + removeFile() { | |
| 67 | + this.$confirm(this.$t('common.confirmDelete'), this.$t('common.tip'), { | |
| 68 | + type: 'warning' | |
| 69 | + }).then(() => { | |
| 70 | + this.$emit('input', '') | |
| 71 | + this.$emit('remove') | |
| 72 | + }).catch(() => { }) | |
| 73 | + }, | |
| 74 | + downloadFile() { | |
| 75 | + window.open(this.value, '_blank') | |
| 84 | 76 | } |
| 85 | 77 | } |
| 86 | - </script> | |
| 87 | 78 | \ No newline at end of file |
| 79 | +} | |
| 80 | +</script> | |
| 88 | 81 | \ No newline at end of file | ... | ... |
src/i18n/userI18n.js
| ... | ... | @@ -10,6 +10,7 @@ import { messages as workflowManageMessages } from '../views/system/workflowMana |
| 10 | 10 | import { messages as workflowSettingManageMessages } from '../views/system/workflowSettingManageLang' |
| 11 | 11 | import { messages as ownerDetailMessages } from '../views/owner/ownerDetailLang' |
| 12 | 12 | import { messages as auditAuthOwnerUndoMessages } from '../views/owner/auditAuthOwnerUndoLang' |
| 13 | +import { messages as scheduleClassesStaffManageMessages } from '../views/org/scheduleClassesStaffManageLang' | |
| 13 | 14 | |
| 14 | 15 | export const messages = { |
| 15 | 16 | en: { |
| ... | ... | @@ -25,6 +26,7 @@ export const messages = { |
| 25 | 26 | ...workflowSettingManageMessages.en, |
| 26 | 27 | ...ownerDetailMessages.en, |
| 27 | 28 | ...auditAuthOwnerUndoMessages.en, |
| 29 | + ...scheduleClassesStaffManageMessages.en, | |
| 28 | 30 | }, |
| 29 | 31 | zh: { |
| 30 | 32 | ...staffCommunityMessages.zh, |
| ... | ... | @@ -39,5 +41,6 @@ export const messages = { |
| 39 | 41 | ...workflowSettingManageMessages.zh, |
| 40 | 42 | ...ownerDetailMessages.zh, |
| 41 | 43 | ...auditAuthOwnerUndoMessages.zh, |
| 44 | + ...scheduleClassesStaffManageMessages.zh, | |
| 42 | 45 | } |
| 43 | 46 | } |
| 44 | 47 | \ No newline at end of file | ... | ... |
src/router/userRouter.js
| ... | ... | @@ -45,8 +45,13 @@ export default [ |
| 45 | 45 | component: () => import('@/views/owner/ownerDetail.vue') |
| 46 | 46 | }, |
| 47 | 47 | { |
| 48 | - path:'/views/owner/auditAuthOwnerUndo', | |
| 49 | - name:'/views/owner/auditAuthOwnerUndo', | |
| 48 | + path: '/views/owner/auditAuthOwnerUndo', | |
| 49 | + name: '/views/owner/auditAuthOwnerUndo', | |
| 50 | 50 | component: () => import('@/views/owner/auditAuthOwnerUndoList.vue') |
| 51 | - }, | |
| 51 | + }, | |
| 52 | + { | |
| 53 | + path: '/views/org/scheduleClassesStaffManage', | |
| 54 | + name: '/views/org/scheduleClassesStaffManage', | |
| 55 | + component: () => import('@/views/org/scheduleClassesStaffManageList.vue') | |
| 56 | + }, | |
| 52 | 57 | ] |
| 53 | 58 | \ No newline at end of file | ... | ... |
src/views/org/classesManageList.vue
| 1 | 1 | <template> |
| 2 | - <div class="classes-manage-container"> | |
| 2 | + <div class="classes-manage-container padding"> | |
| 3 | 3 | <!-- 查询条件 --> |
| 4 | 4 | <el-card class="search-wrapper"> |
| 5 | 5 | <div slot="header" class="text-left"> |
| ... | ... | @@ -189,7 +189,7 @@ export default { |
| 189 | 189 | |
| 190 | 190 | <style lang="scss" scoped> |
| 191 | 191 | .classes-manage-container { |
| 192 | - padding: 0; | |
| 192 | + | |
| 193 | 193 | margin: 0; |
| 194 | 194 | |
| 195 | 195 | .search-wrapper { | ... | ... |
src/views/org/editScheduleClassesList.vue
| 1 | 1 | <template> |
| 2 | 2 | <div class="edit-schedule-classes-container"> |
| 3 | 3 | <el-card class="box-card"> |
| 4 | - <div slot="header" class="clearfix"> | |
| 5 | - <h5>{{ $t('editScheduleClasses.title') }}</h5> | |
| 4 | + <div slot="header" class="flex justify-between"> | |
| 5 | + <span>{{ $t('editScheduleClasses.title') }}</span> | |
| 6 | 6 | </div> |
| 7 | 7 | <el-row :gutter="20"> |
| 8 | 8 | <el-col :span="24"> | ... | ... |
src/views/org/orgList.vue
| ... | ... | @@ -95,8 +95,8 @@ export default { |
| 95 | 95 | orgId: this.orgId, |
| 96 | 96 | staffName: this.staffName.trim(), |
| 97 | 97 | }; |
| 98 | - const {data,total} = await listStaffs( params ); | |
| 99 | - this.staffs = data; | |
| 98 | + const {staffs,total} = await listStaffs( params ); | |
| 99 | + this.staffs = staffs; | |
| 100 | 100 | this.total = total; |
| 101 | 101 | } catch (error) { |
| 102 | 102 | console.error('Failed to fetch staffs:', error); | ... | ... |
src/views/org/scheduleClassesList.vue
| ... | ... | @@ -168,7 +168,7 @@ export default { |
| 168 | 168 | }) |
| 169 | 169 | }, |
| 170 | 170 | handleStaff(row) { |
| 171 | - this.$router.push(`/org/scheduleClassesStaffManage?scheduleId=${row.scheduleId}`) | |
| 171 | + this.$router.push(`/views/org/scheduleClassesStaffManage?scheduleId=${row.scheduleId}`) | |
| 172 | 172 | }, |
| 173 | 173 | handleSuccess() { |
| 174 | 174 | this.getList() | ... | ... |
src/views/org/scheduleClassesPageList.vue
| ... | ... | @@ -50,22 +50,38 @@ |
| 50 | 50 | <div slot="header" class="flex justify-between"> |
| 51 | 51 | <span>{{ $t('scheduleClassesPage.scheduleTable') }}</span> |
| 52 | 52 | </div> |
| 53 | - <div class="hc-table-div" :style="{ width: _computeTableDivWidth() }"> | |
| 54 | - <el-table :data="scheduleClassesPageInfo.staffs" border style="width: 100%"> | |
| 55 | - <el-table-column prop="staffName" :label="$t('scheduleClassesPage.staffName')" align="center" width="120" /> | |
| 56 | - <el-table-column v-for="index in scheduleClassesPageInfo.maxDay" :key="index" | |
| 57 | - :label="`${index}${$t('scheduleClassesPage.day')}`" align="center"> | |
| 58 | - <template slot-scope="scope"> | |
| 59 | - <div v-for="(day, dayIndex) in scope.row.days" :key="dayIndex" | |
| 60 | - class="text-center border padding-lg labeling-strip" style="border-radius: 5px;cursor:pointer"> | |
| 61 | - <div>{{ day.workdayName || $t('scheduleClassesPage.rest') }}</div> | |
| 62 | - <div v-for="(time, timeIndex) in day.times" :key="timeIndex"> | |
| 63 | - {{ time.startTime }}-{{ time.endTime }} | |
| 53 | + <div class="hc-table-div" > | |
| 54 | + <table class="custom-table"> | |
| 55 | + <thead> | |
| 56 | + <tr> | |
| 57 | + <th | |
| 58 | + style=" text-align: center; border: 1px solid #ebeef5; background-color: #fafafa;"> | |
| 59 | + {{ $t('scheduleClassesPage.staffName') }} | |
| 60 | + </th> | |
| 61 | + <th v-for="index in scheduleClassesPageInfo.maxDay" :key="index" | |
| 62 | + style="text-align: center; border: 1px solid #ebeef5; background-color: #fafafa;"> | |
| 63 | + {{ index }}{{ $t('scheduleClassesPage.day') }} | |
| 64 | + </th> | |
| 65 | + </tr> | |
| 66 | + </thead> | |
| 67 | + <tbody> | |
| 68 | + <tr v-for="(staff, staffIndex) in scheduleClassesPageInfo.staffs" :key="staffIndex"> | |
| 69 | + <td style="text-align: center; border: 1px solid #ebeef5;" class="padding-lg"> | |
| 70 | + {{ staff.staffName }} | |
| 71 | + </td> | |
| 72 | + <td v-for="(day, dayIndex) in staff.days" :key="dayIndex" | |
| 73 | + style="text-align: center; border: 1px solid #ebeef5; vertical-align: top;"> | |
| 74 | + <div class="text-center border padding-lg labeling-strip" | |
| 75 | + style="border-radius: 5px; cursor: pointer; margin: 2px 0;"> | |
| 76 | + <div>{{ day.workdayName || $t('scheduleClassesPage.rest') }}</div> | |
| 77 | + <div v-for="(time, timeIndex) in day.times" :key="timeIndex"> | |
| 78 | + {{ time.startTime }}-{{ time.endTime }} | |
| 79 | + </div> | |
| 64 | 80 | </div> |
| 65 | - </div> | |
| 66 | - </template> | |
| 67 | - </el-table-column> | |
| 68 | - </el-table> | |
| 81 | + </td> | |
| 82 | + </tr> | |
| 83 | + </tbody> | |
| 84 | + </table> | |
| 69 | 85 | </div> |
| 70 | 86 | |
| 71 | 87 | <!-- 分页 --> |
| ... | ... | @@ -196,11 +212,7 @@ export default { |
| 196 | 212 | this.scheduleClassesPageInfo.conditions.orgId = org.orgId |
| 197 | 213 | this.scheduleClassesPageInfo.conditions.orgName = org.allOrgName |
| 198 | 214 | }, |
| 199 | - _computeTableDivWidth() { | |
| 200 | - const mainWidth = document.getElementsByTagName('body')[0].clientWidth - | |
| 201 | - (document.getElementById('menu-nav').offsetWidth || 0) | |
| 202 | - return `${mainWidth - 55}px` | |
| 203 | - }, | |
| 215 | + | |
| 204 | 216 | handleSizeChange(val) { |
| 205 | 217 | this.page.size = val |
| 206 | 218 | this._listStaffScheduleClassess(this.page.current, val) |
| ... | ... | @@ -225,8 +237,34 @@ export default { |
| 225 | 237 | overflow-x: auto; |
| 226 | 238 | } |
| 227 | 239 | |
| 240 | + .custom-table { | |
| 241 | + width: 100%; | |
| 242 | + border-collapse: collapse; | |
| 243 | + border: 1px solid #ebeef5; | |
| 244 | + | |
| 245 | + th, | |
| 246 | + td { | |
| 247 | + border: 1px solid #ebeef5; | |
| 248 | + padding: 12px 8px; | |
| 249 | + text-align: center; | |
| 250 | + } | |
| 251 | + | |
| 252 | + th { | |
| 253 | + background-color: #fafafa; | |
| 254 | + font-weight: 500; | |
| 255 | + color: #606266; | |
| 256 | + } | |
| 257 | + | |
| 258 | + td { | |
| 259 | + background-color: #fff; | |
| 260 | + } | |
| 261 | + | |
| 262 | + tbody tr:hover { | |
| 263 | + background-color: #f5f7fa; | |
| 264 | + } | |
| 265 | + } | |
| 266 | + | |
| 228 | 267 | .labeling-strip { |
| 229 | - padding: 8px; | |
| 230 | 268 | margin: 2px; |
| 231 | 269 | border: 1px solid #ebeef5; |
| 232 | 270 | } | ... | ... |
src/views/org/scheduleClassesStaffManageLang.js
0 → 100644
| 1 | +export const messages = { | |
| 2 | + en: { | |
| 3 | + scheduleClassesStaffManage: { | |
| 4 | + title: 'Shift Staff Management', | |
| 5 | + staffId: 'Staff ID', | |
| 6 | + staffName: 'Staff Name', | |
| 7 | + createTime: 'Create Time', | |
| 8 | + addTitle: 'Add Shift Staff', | |
| 9 | + selectStaffWarning: 'Please select at least one staff', | |
| 10 | + confirmDeleteStaff: 'Are you sure to delete this shift staff?', | |
| 11 | + orgInfo: 'Organization Info', | |
| 12 | + staffInfo: 'Staff Info', | |
| 13 | + selectedStaff: 'Selected Staff', | |
| 14 | + staffExists: 'Staff already selected' | |
| 15 | + } | |
| 16 | + }, | |
| 17 | + zh: { | |
| 18 | + scheduleClassesStaffManage: { | |
| 19 | + title: '班次员工管理', | |
| 20 | + staffId: '员工ID', | |
| 21 | + staffName: '员工名称', | |
| 22 | + createTime: '创建时间', | |
| 23 | + addTitle: '添加班次员工', | |
| 24 | + selectStaffWarning: '请至少选择一名员工', | |
| 25 | + confirmDeleteStaff: '确定要删除该班次员工吗?', | |
| 26 | + orgInfo: '组织信息', | |
| 27 | + staffInfo: '员工信息', | |
| 28 | + selectedStaff: '已选员工', | |
| 29 | + staffExists: '员工已选择' | |
| 30 | + } | |
| 31 | + } | |
| 32 | +} | |
| 0 | 33 | \ No newline at end of file | ... | ... |
src/views/org/scheduleClassesStaffManageList.vue
0 → 100644
| 1 | +<template> | |
| 2 | + <div class="schedule-classes-staff-manage-container"> | |
| 3 | + <el-card class="box-card"> | |
| 4 | + <div slot="header" class="flex justify-between"> | |
| 5 | + <span>{{ $t('scheduleClassesStaffManage.title') }}</span> | |
| 6 | + <div class="header-tools"> | |
| 7 | + <el-button size="small" @click="goBack">{{ $t('common.back') }}</el-button> | |
| 8 | + <el-button type="primary" size="small" icon="el-icon-plus" @click="openAddModal"> | |
| 9 | + {{ $t('common.add') }} | |
| 10 | + </el-button> | |
| 11 | + </div> | |
| 12 | + </div> | |
| 13 | + | |
| 14 | + <el-table v-loading="loading" :data="tableData" border style="width: 100%"> | |
| 15 | + <el-table-column prop="staffId" :label="$t('scheduleClassesStaffManage.staffId')" align="center"> | |
| 16 | + </el-table-column> | |
| 17 | + <el-table-column prop="staffName" :label="$t('scheduleClassesStaffManage.staffName')" align="center"> | |
| 18 | + </el-table-column> | |
| 19 | + <el-table-column prop="createTime" :label="$t('scheduleClassesStaffManage.createTime')" align="center"> | |
| 20 | + </el-table-column> | |
| 21 | + <el-table-column :label="$t('common.operation')" align="center" width="150"> | |
| 22 | + <template slot-scope="scope"> | |
| 23 | + <el-button size="mini" type="danger" @click="openDeleteModal(scope.row)"> | |
| 24 | + {{ $t('common.delete') }} | |
| 25 | + </el-button> | |
| 26 | + </template> | |
| 27 | + </el-table-column> | |
| 28 | + </el-table> | |
| 29 | + | |
| 30 | + <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" | |
| 31 | + :current-page="pagination.current" :page-sizes="[10, 20, 30, 50]" :page-size="pagination.size" | |
| 32 | + layout="total, sizes, prev, pager, next, jumper" :total="pagination.total"> | |
| 33 | + </el-pagination> | |
| 34 | + </el-card> | |
| 35 | + | |
| 36 | + <add-schedule-classes-staff ref="addModal" @success="fetchData" /> | |
| 37 | + <delete-schedule-classes-staff ref="deleteModal" @success="fetchData" /> | |
| 38 | + </div> | |
| 39 | +</template> | |
| 40 | + | |
| 41 | +<script> | |
| 42 | +import { listScheduleClassesStaff } from '@/api/org/scheduleClassesStaffManageApi' | |
| 43 | +import AddScheduleClassesStaff from '@/components/org/addScheduleClassesStaff' | |
| 44 | +import DeleteScheduleClassesStaff from '@/components/org/deleteScheduleClassesStaff' | |
| 45 | + | |
| 46 | +export default { | |
| 47 | + name: 'ScheduleClassesStaffManageList', | |
| 48 | + components: { | |
| 49 | + AddScheduleClassesStaff, | |
| 50 | + DeleteScheduleClassesStaff | |
| 51 | + }, | |
| 52 | + data() { | |
| 53 | + return { | |
| 54 | + loading: false, | |
| 55 | + tableData: [], | |
| 56 | + pagination: { | |
| 57 | + current: 1, | |
| 58 | + size: 10, | |
| 59 | + total: 0 | |
| 60 | + }, | |
| 61 | + queryParams: { | |
| 62 | + scheduleId: '' | |
| 63 | + } | |
| 64 | + } | |
| 65 | + }, | |
| 66 | + created() { | |
| 67 | + this.queryParams.scheduleId = this.$route.query.scheduleId | |
| 68 | + this.fetchData() | |
| 69 | + }, | |
| 70 | + methods: { | |
| 71 | + async fetchData() { | |
| 72 | + try { | |
| 73 | + this.loading = true | |
| 74 | + const params = { | |
| 75 | + page: this.pagination.current, | |
| 76 | + row: this.pagination.size, | |
| 77 | + ...this.queryParams | |
| 78 | + } | |
| 79 | + const { data, total } = await listScheduleClassesStaff(params) | |
| 80 | + this.tableData = data | |
| 81 | + this.pagination.total = total | |
| 82 | + } catch (error) { | |
| 83 | + this.$message.error(this.$t('common.fetchError')) | |
| 84 | + } finally { | |
| 85 | + this.loading = false | |
| 86 | + } | |
| 87 | + }, | |
| 88 | + handleSizeChange(val) { | |
| 89 | + this.pagination.size = val | |
| 90 | + this.fetchData() | |
| 91 | + }, | |
| 92 | + handleCurrentChange(val) { | |
| 93 | + this.pagination.current = val | |
| 94 | + this.fetchData() | |
| 95 | + }, | |
| 96 | + goBack() { | |
| 97 | + this.$router.go(-1) | |
| 98 | + }, | |
| 99 | + openAddModal() { | |
| 100 | + this.$refs.addModal.open(this.queryParams.scheduleId) | |
| 101 | + }, | |
| 102 | + openDeleteModal(row) { | |
| 103 | + this.$refs.deleteModal.open(row) | |
| 104 | + } | |
| 105 | + } | |
| 106 | +} | |
| 107 | +</script> | |
| 108 | + | |
| 109 | +<style lang="scss" scoped> | |
| 110 | +.schedule-classes-staff-manage-container { | |
| 111 | + padding: 20px; | |
| 112 | + | |
| 113 | + .clearfix { | |
| 114 | + display: flex; | |
| 115 | + justify-content: space-between; | |
| 116 | + align-items: center; | |
| 117 | + } | |
| 118 | + | |
| 119 | + .header-tools { | |
| 120 | + display: flex; | |
| 121 | + gap: 10px; | |
| 122 | + } | |
| 123 | + | |
| 124 | + .el-pagination { | |
| 125 | + margin-top: 20px; | |
| 126 | + text-align: right; | |
| 127 | + } | |
| 128 | +} | |
| 129 | +</style> | |
| 0 | 130 | \ No newline at end of file | ... | ... |
src/views/scm/communityIntegralList.vue
| 1 | 1 | <template> |
| 2 | - <el-card class="community-integral-container"> | |
| 3 | - <div class="white-bg padding-lg padding-top border-radius"> | |
| 4 | - <div class="flex justify-between"> | |
| 5 | - <h3>{{ $t('communityIntegral.title') }}</h3> | |
| 6 | - </div> | |
| 7 | - | |
| 8 | - <!-- 业主信息 --> | |
| 9 | - <div class="margin-top"> | |
| 10 | - <el-row> | |
| 11 | - <el-col :span="8"> | |
| 12 | - <div class="form-group"> | |
| 13 | - <label class="col-form-label"> | |
| 14 | - {{ $t('communityIntegral.accountId') }} | |
| 15 | - </label> | |
| 16 | - <label>{{ communityIntegralInfo.integralId }}</label> | |
| 17 | - </div> | |
| 18 | - </el-col> | |
| 19 | - <el-col :span="8"> | |
| 20 | - <div class="form-group"> | |
| 21 | - <label class="col-form-label"> | |
| 22 | - {{ $t('communityIntegral.accountName') }} | |
| 23 | - </label> | |
| 24 | - <label>{{ communityIntegralInfo.integralName }}</label> | |
| 25 | - </div> | |
| 26 | - </el-col> | |
| 27 | - <el-col :span="8"> | |
| 28 | - <div class="form-group"> | |
| 29 | - <label class="col-form-label"> | |
| 30 | - {{ $t('communityIntegral.points') }} | |
| 31 | - </label> | |
| 32 | - <label> | |
| 33 | - {{ communityIntegralInfo.amount }} | |
| 34 | - <el-link type="primary" @click="openApplyWithholdIntegral">{{ $t('communityIntegral.withdraw') | |
| 2 | + <div class="community-integral-container "> | |
| 3 | + <el-card > | |
| 4 | + <div class="white-bg padding-lg padding-top border-radius"> | |
| 5 | + <div class="flex justify-between"> | |
| 6 | + <h3>{{ $t('communityIntegral.title') }}</h3> | |
| 7 | + </div> | |
| 8 | + | |
| 9 | + <!-- 业主信息 --> | |
| 10 | + <div class="margin-top"> | |
| 11 | + <el-row> | |
| 12 | + <el-col :span="8"> | |
| 13 | + <div class="form-group"> | |
| 14 | + <label class="col-form-label"> | |
| 15 | + {{ $t('communityIntegral.accountId') }} | |
| 16 | + </label> | |
| 17 | + <label>{{ communityIntegralInfo.integralId }}</label> | |
| 18 | + </div> | |
| 19 | + </el-col> | |
| 20 | + <el-col :span="8"> | |
| 21 | + <div class="form-group"> | |
| 22 | + <label class="col-form-label"> | |
| 23 | + {{ $t('communityIntegral.accountName') }} | |
| 24 | + </label> | |
| 25 | + <label>{{ communityIntegralInfo.integralName }}</label> | |
| 26 | + </div> | |
| 27 | + </el-col> | |
| 28 | + <el-col :span="8"> | |
| 29 | + <div class="form-group"> | |
| 30 | + <label class="col-form-label"> | |
| 31 | + {{ $t('communityIntegral.points') }} | |
| 32 | + </label> | |
| 33 | + <label> | |
| 34 | + {{ communityIntegralInfo.amount }} | |
| 35 | + <el-link type="primary" @click="openApplyWithholdIntegral">{{ $t('communityIntegral.withdraw') | |
| 35 | 36 | }}</el-link> |
| 36 | - </label> | |
| 37 | - </div> | |
| 38 | - </el-col> | |
| 39 | - </el-row> | |
| 37 | + </label> | |
| 38 | + </div> | |
| 39 | + </el-col> | |
| 40 | + </el-row> | |
| 41 | + </div> | |
| 42 | + | |
| 43 | + <divider></divider> | |
| 44 | + | |
| 45 | + <div class="margin-top-sm"> | |
| 46 | + <el-tabs v-model="communityIntegralInfo._currentTab" | |
| 47 | + @tab-click="changeTab(communityIntegralInfo._currentTab)"> | |
| 48 | + <el-tab-pane :label="$t('communityIntegral.transactionDetails')" name="communityIntegralDetail"> | |
| 49 | + <community-integral-detail v-if="communityIntegralInfo._currentTab === 'communityIntegralDetail'" | |
| 50 | + ref="communityIntegralDetail" /> | |
| 51 | + </el-tab-pane> | |
| 52 | + <el-tab-pane :label="$t('communityIntegral.pointsWithdrawal')" name="applyWithholdIntegral"> | |
| 53 | + <apply-withhold-integral v-if="communityIntegralInfo._currentTab === 'applyWithholdIntegral'" | |
| 54 | + ref="applyWithholdIntegral" /> | |
| 55 | + </el-tab-pane> | |
| 56 | + </el-tabs> | |
| 57 | + </div> | |
| 40 | 58 | </div> |
| 41 | 59 | |
| 42 | - <el-divider></el-divider> | |
| 43 | - | |
| 44 | - <div class="margin-top-sm"> | |
| 45 | - <el-tabs v-model="communityIntegralInfo._currentTab" @tab-click="changeTab(communityIntegralInfo._currentTab)"> | |
| 46 | - <el-tab-pane :label="$t('communityIntegral.transactionDetails')" name="communityIntegralDetail"> | |
| 47 | - <community-integral-detail v-if="communityIntegralInfo._currentTab === 'communityIntegralDetail'" | |
| 48 | - ref="communityIntegralDetail" /> | |
| 49 | - </el-tab-pane> | |
| 50 | - <el-tab-pane :label="$t('communityIntegral.pointsWithdrawal')" name="applyWithholdIntegral"> | |
| 51 | - <apply-withhold-integral v-if="communityIntegralInfo._currentTab === 'applyWithholdIntegral'" | |
| 52 | - ref="applyWithholdIntegral" /> | |
| 53 | - </el-tab-pane> | |
| 54 | - </el-tabs> | |
| 55 | - </div> | |
| 56 | - </div> | |
| 57 | - | |
| 58 | - <withhold-integral ref="withholdIntegral" @success="handleWithdrawSuccess" /> | |
| 59 | - </el-card> | |
| 60 | + <withhold-integral ref="withholdIntegral" @success="handleWithdrawSuccess" /> | |
| 61 | + </el-card> | |
| 62 | + </div> | |
| 60 | 63 | </template> |
| 61 | 64 | |
| 62 | 65 | <script> |
| ... | ... | @@ -65,13 +68,15 @@ import { queryCommunityIntegral } from '@/api/scm/communityIntegralApi' |
| 65 | 68 | import CommunityIntegralDetail from '@/components/scm/communityIntegralDetail' |
| 66 | 69 | import ApplyWithholdIntegral from '@/components/scm/applyWithholdIntegral' |
| 67 | 70 | import WithholdIntegral from '@/components/scm/withholdIntegral' |
| 71 | +import divider from '@/components/system/divider' | |
| 68 | 72 | |
| 69 | 73 | export default { |
| 70 | 74 | name: 'CommunityIntegralList', |
| 71 | 75 | components: { |
| 72 | 76 | CommunityIntegralDetail, |
| 73 | 77 | ApplyWithholdIntegral, |
| 74 | - WithholdIntegral | |
| 78 | + WithholdIntegral, | |
| 79 | + divider | |
| 75 | 80 | }, |
| 76 | 81 | data() { |
| 77 | 82 | return { |
| ... | ... | @@ -132,20 +137,18 @@ export default { |
| 132 | 137 | </script> |
| 133 | 138 | |
| 134 | 139 | <style scoped> |
| 135 | -.community-integral-container { | |
| 136 | - padding: 20px; | |
| 137 | -} | |
| 140 | +.community-integral-container {padding: 20px;} | |
| 138 | 141 | |
| 139 | 142 | .white-bg { |
| 140 | 143 | background-color: #fff; |
| 141 | 144 | } |
| 142 | 145 | |
| 143 | 146 | .padding-lg { |
| 144 | - padding: 20px; | |
| 147 | + | |
| 145 | 148 | } |
| 146 | 149 | |
| 147 | 150 | .padding-top { |
| 148 | - padding-top: 20px; | |
| 151 | + | |
| 149 | 152 | } |
| 150 | 153 | |
| 151 | 154 | .border-radius { | ... | ... |
src/views/scm/doDiningList.vue
| ... | ... | @@ -45,7 +45,7 @@ |
| 45 | 45 | <el-row class="margin-top"> |
| 46 | 46 | <el-col :span="24"> |
| 47 | 47 | <el-card> |
| 48 | - <div slot="header" class="clearfix"> | |
| 48 | + <div slot="header" class="flex justify-between"> | |
| 49 | 49 | <span>{{ $t('doDining.diningRecords') }}</span> |
| 50 | 50 | </div> |
| 51 | 51 | <el-row :gutter="20"> | ... | ... |
src/views/scm/goldList.vue
| ... | ... | @@ -57,16 +57,15 @@ |
| 57 | 57 | </el-row> |
| 58 | 58 | </div> |
| 59 | 59 | |
| 60 | - <el-divider></el-divider> | |
| 60 | + <divider></divider> | |
| 61 | 61 | |
| 62 | 62 | <div class="margin-top-sm"> |
| 63 | 63 | <el-tabs v-model="goldInfo.currentTab" @tab-click="changeTab(goldInfo.currentTab)"> |
| 64 | 64 | <el-tab-pane :label="$t('gold.transactionDetails')" name="goldDetail"> |
| 65 | - <gold-detail v-if="goldInfo.currentTab === 'goldDetail'" ref="goldDetail" /> | |
| 65 | + <gold-detail v-if="goldInfo.currentTab === 'goldDetail'" ref="goldDetail" /> | |
| 66 | 66 | </el-tab-pane> |
| 67 | 67 | <el-tab-pane :label="$t('gold.goldWithdrawal')" name="applyWithholdGold"> |
| 68 | - <apply-withhold-gold v-if="goldInfo.currentTab === 'applyWithholdGold'" ref="applyWithholdGold" | |
| 69 | - /> | |
| 68 | + <apply-withhold-gold v-if="goldInfo.currentTab === 'applyWithholdGold'" ref="applyWithholdGold" /> | |
| 70 | 69 | </el-tab-pane> |
| 71 | 70 | </el-tabs> |
| 72 | 71 | </div> |
| ... | ... | @@ -82,13 +81,15 @@ import { getPropertyGoldInfo } from '@/api/scm/goldApi' |
| 82 | 81 | import GoldDetail from '@/components/scm/goldDetail' |
| 83 | 82 | import ApplyWithholdGold from '@/components/scm/applyWithholdGold' |
| 84 | 83 | import WithholdGold from '@/components/scm/withholdGold' |
| 84 | +import divider from '@/components/system/divider' | |
| 85 | 85 | |
| 86 | 86 | export default { |
| 87 | 87 | name: 'GoldList', |
| 88 | 88 | components: { |
| 89 | 89 | GoldDetail, |
| 90 | 90 | ApplyWithholdGold, |
| 91 | - WithholdGold | |
| 91 | + WithholdGold, | |
| 92 | + divider | |
| 92 | 93 | }, |
| 93 | 94 | data() { |
| 94 | 95 | return { |
| ... | ... | @@ -167,10 +168,10 @@ export default { |
| 167 | 168 | } |
| 168 | 169 | |
| 169 | 170 | .form-group { |
| 171 | + text-align: left; | |
| 170 | 172 | margin-bottom: 0; |
| 171 | 173 | padding: 10px; |
| 172 | 174 | border-radius: 4px; |
| 173 | - background-color: #f5f7fa; | |
| 174 | 175 | |
| 175 | 176 | .el-form-item__label { |
| 176 | 177 | font-weight: bold; |
| ... | ... | @@ -178,7 +179,6 @@ export default { |
| 178 | 179 | } |
| 179 | 180 | |
| 180 | 181 | .el-form-item__content { |
| 181 | - margin-top: 5px; | |
| 182 | 182 | } |
| 183 | 183 | } |
| 184 | 184 | } | ... | ... |
src/views/staff/staffAppAuthManageList.vue
| 1 | 1 | <template> |
| 2 | 2 | <div class="staff-app-auth-manage-container"> |
| 3 | 3 | <el-card class="box-card"> |
| 4 | - <div slot="header" class="clearfix"> | |
| 4 | + <div slot="header" class="flex justify-between"> | |
| 5 | 5 | <span>{{ $t('staffAppAuthManage.title') }}</span> |
| 6 | 6 | <div class="card-header-actions"> |
| 7 | 7 | <el-button type="primary" size="small" @click="_refreshStaffAppAuth"> | ... | ... |
src/views/staff/staffDetailList.vue
| ... | ... | @@ -12,11 +12,8 @@ |
| 12 | 12 | <div class="staff-info"> |
| 13 | 13 | <el-row :gutter="20"> |
| 14 | 14 | <el-col :span="4"> |
| 15 | - <el-image | |
| 16 | - style="width: 120px; height: 140px; border-radius: 4px;" | |
| 17 | - :src="staffDetailInfo.photo" | |
| 18 | - fit="cover" | |
| 19 | - @error="errorLoadImg"> | |
| 15 | + <el-image style="width: 120px; height: 140px; border-radius: 4px;" :src="staffDetailInfo.photo" | |
| 16 | + fit="cover" @error="errorLoadImg"> | |
| 20 | 17 | </el-image> |
| 21 | 18 | </el-col> |
| 22 | 19 | <el-col :span="20"> |
| ... | ... | @@ -50,7 +47,8 @@ |
| 50 | 47 | <el-col :span="8"> |
| 51 | 48 | <div class="info-item"> |
| 52 | 49 | <label>{{ $t('staffDetailInfo.sex') }}</label> |
| 53 | - <div>{{ staffDetailInfo.sex == '0' ? $t('staffDetailInfo.male') : $t('staffDetailInfo.female') }}</div> | |
| 50 | + <div>{{ staffDetailInfo.sex == '0' ? $t('staffDetailInfo.male') : $t('staffDetailInfo.female') }} | |
| 51 | + </div> | |
| 54 | 52 | </div> |
| 55 | 53 | </el-col> |
| 56 | 54 | <el-col :span="8"> |
| ... | ... | @@ -69,7 +67,7 @@ |
| 69 | 67 | <div slot="header" class="clearfix "> |
| 70 | 68 | <span>{{ $t('staffDetailInfo.relatedOrg') }}</span> |
| 71 | 69 | </div> |
| 72 | - <div v-for="(item,index) in staffDetailInfo.orgs" :key="index"> | |
| 70 | + <div v-for="(item, index) in staffDetailInfo.orgs" :key="index"> | |
| 73 | 71 | <div class="org-item">{{ $t('staffDetailInfo.org') }}: {{ item.orgName }}</div> |
| 74 | 72 | </div> |
| 75 | 73 | </el-card> |
| ... | ... | @@ -78,12 +76,12 @@ |
| 78 | 76 | <div slot="header" class="clearfix"> |
| 79 | 77 | <span>{{ $t('staffDetailInfo.relatedRoleCommunity') }}</span> |
| 80 | 78 | </div> |
| 81 | - <div v-for="(item,index) in staffDetailInfo.roles" :key="index"> | |
| 82 | - <div v-if="item.roleCommunityDtoList.length>0"> | |
| 79 | + <div v-for="(item, index) in staffDetailInfo.roles" :key="index"> | |
| 80 | + <div v-if="item.roleCommunityDtoList.length > 0"> | |
| 83 | 81 | {{ item.roleName }} ( |
| 84 | - <span v-for="(item1,index1) in item.roleCommunityDtoList" :key="index1"> | |
| 82 | + <span v-for="(item1, index1) in item.roleCommunityDtoList" :key="index1"> | |
| 85 | 83 | {{ item1.communityName }} |
| 86 | - {{ index1 === item.roleCommunityDtoList.length-1 ? " ":" 、 " }} | |
| 84 | + {{ index1 === item.roleCommunityDtoList.length - 1 ? " " : " 、 " }} | |
| 87 | 85 | </span> ) |
| 88 | 86 | </div> |
| 89 | 87 | </div> |
| ... | ... | @@ -97,11 +95,7 @@ |
| 97 | 95 | <div slot="header" class="clearfix"> |
| 98 | 96 | <span>{{ $t('staffDetailInfo.staffPrivilege') }}</span> |
| 99 | 97 | </div> |
| 100 | - <el-tree | |
| 101 | - :data="privilegeTreeData" | |
| 102 | - node-key="id" | |
| 103 | - default-expand-all | |
| 104 | - :props="defaultProps"> | |
| 98 | + <el-tree :data="privilegeTreeData" node-key="id" default-expand-all :props="defaultProps"> | |
| 105 | 99 | </el-tree> |
| 106 | 100 | </el-card> |
| 107 | 101 | </el-col> |
| ... | ... | @@ -202,7 +196,7 @@ export default { |
| 202 | 196 | staffId: this.staffDetailInfo.staffId |
| 203 | 197 | } |
| 204 | 198 | const res = await getStaffPrivileges(params) |
| 205 | - if (res.data && res.data.length>0) { | |
| 199 | + if (res.data && res.data.length > 0) { | |
| 206 | 200 | this.privilegeTreeData = this.buildTreeData(res.data) |
| 207 | 201 | } |
| 208 | 202 | } catch (error) { |
| ... | ... | @@ -211,7 +205,7 @@ export default { |
| 211 | 205 | }, |
| 212 | 206 | buildTreeData(privileges) { |
| 213 | 207 | const groupMap = {} |
| 214 | - | |
| 208 | + | |
| 215 | 209 | privileges.forEach(item => { |
| 216 | 210 | if (!groupMap[item.gId]) { |
| 217 | 211 | groupMap[item.gId] = { |
| ... | ... | @@ -221,10 +215,10 @@ export default { |
| 221 | 215 | children: [] |
| 222 | 216 | } |
| 223 | 217 | } |
| 224 | - | |
| 218 | + | |
| 225 | 219 | const group = groupMap[item.gId] |
| 226 | 220 | const menuExists = group.children.some(menu => menu.mId === item.mId) |
| 227 | - | |
| 221 | + | |
| 228 | 222 | if (!menuExists) { |
| 229 | 223 | group.children.push({ |
| 230 | 224 | id: `m_${item.mId}`, |
| ... | ... | @@ -233,7 +227,7 @@ export default { |
| 233 | 227 | children: [] |
| 234 | 228 | }) |
| 235 | 229 | } |
| 236 | - | |
| 230 | + | |
| 237 | 231 | const menu = group.children.find(menu => menu.mId === item.mId) |
| 238 | 232 | menu.children.push({ |
| 239 | 233 | id: `p_${item.pId}`, |
| ... | ... | @@ -241,7 +235,7 @@ export default { |
| 241 | 235 | text: item.pName |
| 242 | 236 | }) |
| 243 | 237 | }) |
| 244 | - | |
| 238 | + | |
| 245 | 239 | return Object.values(groupMap) |
| 246 | 240 | } |
| 247 | 241 | } |
| ... | ... | @@ -251,22 +245,22 @@ export default { |
| 251 | 245 | <style lang="scss" scoped> |
| 252 | 246 | .staff-detail-container { |
| 253 | 247 | padding: 20px; |
| 254 | - | |
| 248 | + | |
| 255 | 249 | .margin-top { |
| 256 | 250 | margin-top: 20px; |
| 257 | 251 | } |
| 258 | - | |
| 252 | + | |
| 259 | 253 | .info-item { |
| 260 | 254 | margin-bottom: 15px; |
| 261 | 255 | |
| 262 | - | |
| 256 | + | |
| 263 | 257 | label { |
| 264 | 258 | display: block; |
| 265 | 259 | color: #909399; |
| 266 | 260 | margin-bottom: 5px; |
| 267 | 261 | } |
| 268 | 262 | } |
| 269 | - | |
| 263 | + | |
| 270 | 264 | .org-item { |
| 271 | 265 | padding: 5px 0; |
| 272 | 266 | } | ... | ... |
src/views/system/assetImportLogDetailList.vue
| ... | ... | @@ -16,7 +16,7 @@ |
| 16 | 16 | </el-col> |
| 17 | 17 | <el-col :span="20"> |
| 18 | 18 | <el-card> |
| 19 | - <div slot="header" class="clearfix"> | |
| 19 | + <div slot="header" class="flex justify-between"> | |
| 20 | 20 | <span>{{ $t('assetImportLogDetail.title') }}</span> |
| 21 | 21 | <div class="ibox-tools" style="float: right;"> |
| 22 | 22 | <el-button type="primary" size="small" @click="queryAssetImportLogDetail()"> | ... | ... |
src/views/system/historyFeeDetailImportList.vue
| 1 | 1 | <template> |
| 2 | 2 | <div class="history-fee-detail-import-container"> |
| 3 | 3 | <el-card class="box-card"> |
| 4 | - <div slot="header" class="clearfix"> | |
| 4 | + <div slot="header" class="flex justify-between"> | |
| 5 | 5 | <span>{{ $t('historyFeeDetailImport.assetInfo') }}</span> |
| 6 | 6 | <div class="card-header-right"> |
| 7 | 7 | <el-button type="primary" size="small" @click="_openDownloadHcExcelTemplate"> |
| ... | ... | @@ -15,42 +15,29 @@ |
| 15 | 15 | |
| 16 | 16 | <el-row :gutter="20"> |
| 17 | 17 | <el-col :span="24"> |
| 18 | - <el-form label-position="left" label-width="120px"> | |
| 18 | + <el-form label-position="left" label-width="120px" class="text-left"> | |
| 19 | 19 | <el-form-item :label="$t('historyFeeDetailImport.feeObject')"> |
| 20 | - <el-select | |
| 21 | - v-model="historyFeeDetailImportInfo.objType" | |
| 22 | - style="width:100%" | |
| 20 | + <el-select v-model="historyFeeDetailImportInfo.objType" style="width:100%" | |
| 23 | 21 | :placeholder="$t('historyFeeDetailImport.selectFeeObject')"> |
| 24 | - <el-option | |
| 25 | - disabled | |
| 26 | - value="" | |
| 27 | - :label="$t('historyFeeDetailImport.requiredSelect')"> | |
| 22 | + <el-option disabled value="" :label="$t('historyFeeDetailImport.requiredSelect')"> | |
| 28 | 23 | </el-option> |
| 29 | - <el-option | |
| 30 | - value="3333" | |
| 31 | - :label="$t('historyFeeDetailImport.house')"> | |
| 24 | + <el-option value="3333" :label="$t('historyFeeDetailImport.house')"> | |
| 32 | 25 | </el-option> |
| 33 | - <el-option | |
| 34 | - value="6666" | |
| 35 | - :label="$t('historyFeeDetailImport.car')"> | |
| 26 | + <el-option value="6666" :label="$t('historyFeeDetailImport.car')"> | |
| 36 | 27 | </el-option> |
| 37 | 28 | </el-select> |
| 38 | 29 | </el-form-item> |
| 39 | 30 | |
| 40 | 31 | <el-form-item :label="$t('historyFeeDetailImport.selectFile')"> |
| 41 | - <el-upload | |
| 42 | - class="upload-demo" | |
| 43 | - action="" | |
| 44 | - :auto-upload="false" | |
| 45 | - :on-change="getExcelTemplate" | |
| 32 | + <el-upload class="upload-demo" action="" :auto-upload="false" :on-change="getExcelTemplate" | |
| 46 | 33 | :show-file-list="false"> |
| 47 | 34 | <el-button size="small" type="primary"> |
| 48 | 35 | {{ $t('historyFeeDetailImport.clickUpload') }} |
| 49 | 36 | </el-button> |
| 50 | 37 | <div slot="tip" class="el-upload__tip"> |
| 51 | - {{ historyFeeDetailImportInfo.excelTemplate ? | |
| 52 | - historyFeeDetailImportInfo.excelTemplate.name : | |
| 53 | - $t('historyFeeDetailImport.requiredFile') }} | |
| 38 | + {{ historyFeeDetailImportInfo.excelTemplate ? | |
| 39 | + historyFeeDetailImportInfo.excelTemplate.name : | |
| 40 | + $t('historyFeeDetailImport.requiredFile') }} | |
| 54 | 41 | </div> |
| 55 | 42 | </el-upload> |
| 56 | 43 | </el-form-item> |
| ... | ... | @@ -66,9 +53,7 @@ |
| 66 | 53 | |
| 67 | 54 | <el-row> |
| 68 | 55 | <el-col :span="24" class="text-right"> |
| 69 | - <el-button | |
| 70 | - type="primary" | |
| 71 | - @click="_importData" | |
| 56 | + <el-button type="primary" @click="_importData" | |
| 72 | 57 | :disabled="!historyFeeDetailImportInfo.excelTemplate || !historyFeeDetailImportInfo.objType"> |
| 73 | 58 | {{ $t('historyFeeDetailImport.import') }} |
| 74 | 59 | </el-button> |
| ... | ... | @@ -115,8 +100,8 @@ export default { |
| 115 | 100 | param.append('uploadFile', this.historyFeeDetailImportInfo.excelTemplate) |
| 116 | 101 | param.append('communityId', this.historyFeeDetailImportInfo.communityId) |
| 117 | 102 | param.append('objType', this.historyFeeDetailImportInfo.objType) |
| 118 | - | |
| 119 | - const _importAdapt = this.historyFeeDetailImportInfo.objType === '6666' ? | |
| 103 | + | |
| 104 | + const _importAdapt = this.historyFeeDetailImportInfo.objType === '6666' ? | |
| 120 | 105 | 'importCarHistoryFeeDetail' : 'importRoomHistoryFeeDetail' |
| 121 | 106 | param.append('importAdapt', _importAdapt) |
| 122 | 107 | |
| ... | ... | @@ -126,7 +111,7 @@ export default { |
| 126 | 111 | this.$message.success(this.$t('historyFeeDetailImport.importSuccess')) |
| 127 | 112 | this.historyFeeDetailImportInfo.excelTemplate = null |
| 128 | 113 | this.$router.push({ |
| 129 | - path: '/pages/property/assetImportLogDetail', | |
| 114 | + path: '/views/system/assetImportLogDetail', | |
| 130 | 115 | query: { |
| 131 | 116 | logId: res.data.logId, |
| 132 | 117 | logType: _importAdapt | ... | ... |
src/views/system/operateDataLogList.vue
| 1 | 1 | <template> |
| 2 | 2 | <div class="operate-data-log-container"> |
| 3 | 3 | <el-card class="search-card"> |
| 4 | - <div slot="header" class="clearfix"> | |
| 4 | + <div slot="header" class="flex justify-between"> | |
| 5 | 5 | <span>{{ $t('operateDataLog.search.title') }}</span> |
| 6 | 6 | <el-button type="text" style="float: right; padding: 3px 0" @click="_moreCondition"> |
| 7 | 7 | {{ operateDataLogInfo.moreCondition ? $t('common.hide') : $t('common.more') }} |
| ... | ... | @@ -82,7 +82,7 @@ |
| 82 | 82 | </el-card> |
| 83 | 83 | |
| 84 | 84 | <el-card class="table-card"> |
| 85 | - <el-tabs v-model="operateDataLogInfo._currentTab" @tab-click="changeTab"> | |
| 85 | + <el-tabs v-model="operateDataLogInfo._currentTab" @tab-click="changeTab(operateDataLogInfo._currentTab)"> | |
| 86 | 86 | <el-tab-pane label="费用项" name="feeConfigDetailHis"></el-tab-pane> |
| 87 | 87 | <el-tab-pane label="费用" name="feeDetailHis"></el-tab-pane> |
| 88 | 88 | <el-tab-pane label="业主" name="ownerDetailHis"></el-tab-pane> |
| ... | ... | @@ -91,7 +91,7 @@ |
| 91 | 91 | <el-tab-pane label="合同" name="contractDetailChange"></el-tab-pane> |
| 92 | 92 | </el-tabs> |
| 93 | 93 | |
| 94 | - <component :is="currentComponent" ref="childComponent"></component> | |
| 94 | + <component :is="currentComponent" :ref="currentComponent"></component> | |
| 95 | 95 | </el-card> |
| 96 | 96 | </div> |
| 97 | 97 | </template> |
| ... | ... | @@ -152,13 +152,13 @@ export default { |
| 152 | 152 | this.communityId = getCommunityId() |
| 153 | 153 | }, |
| 154 | 154 | methods: { |
| 155 | - changeTab(tab) { | |
| 156 | - this.operateDataLogInfo._currentTab = tab.name || tab | |
| 157 | - this.$nextTick(() => { | |
| 158 | - if (this.$refs.childComponent) { | |
| 159 | - this.$refs.childComponent.open(this.operateDataLogInfo.conditions) | |
| 155 | + changeTab(tab) { | |
| 156 | + this.operateDataLogInfo._currentTab = tab | |
| 157 | + setTimeout(() => { | |
| 158 | + if (this.$refs[tab]) { | |
| 159 | + this.$refs[tab].open(this.operateDataLogInfo.conditions) | |
| 160 | 160 | } |
| 161 | - }) | |
| 161 | + }, 100) | |
| 162 | 162 | }, |
| 163 | 163 | _queryDataMethod() { |
| 164 | 164 | this.changeTab(this.operateDataLogInfo._currentTab) | ... | ... |
src/views/system/smallWeChatManageList.vue
| 1 | 1 | <template> |
| 2 | 2 | <div class="small-wechat-manage-container"> |
| 3 | 3 | <el-card class="box-card"> |
| 4 | - <div slot="header" class="clearfix"> | |
| 4 | + <div slot="header" class="flex justify-between"> | |
| 5 | 5 | <span>{{ $t('smallWeChatManage.title') }}</span> |
| 6 | 6 | <el-button v-if="smallWeChatManageInfo.smallWeChats.length === 0" type="primary" size="small" |
| 7 | 7 | class="float-right" @click="_openAddSmallWeChatModal(1000)"> | ... | ... |