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,11 +120,8 @@ export function listStaffs(params) { | ||
| 120 | params | 120 | params |
| 121 | }).then(response => { | 121 | }).then(response => { |
| 122 | const res = response.data | 122 | const res = response.data |
| 123 | - if (res.code == 0) { | ||
| 124 | resolve(res) | 123 | resolve(res) |
| 125 | - } else { | ||
| 126 | - reject(new Error(res.msg || '获取员工列表失败')) | ||
| 127 | - } | 124 | + |
| 128 | }).catch(error => { | 125 | }).catch(error => { |
| 129 | reject(error) | 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 | \ No newline at end of file | 100 | \ No newline at end of file |
src/components/car/importOwnerCar.vue
| @@ -80,7 +80,7 @@ export default { | @@ -80,7 +80,7 @@ export default { | ||
| 80 | this.$message.success(this.$t('listOwnerCar.importSuccess')) | 80 | this.$message.success(this.$t('listOwnerCar.importSuccess')) |
| 81 | this.$emit('success') | 81 | this.$emit('success') |
| 82 | this.visible = false | 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 | } catch (error) { | 84 | } catch (error) { |
| 85 | console.error('导入失败:', error) | 85 | console.error('导入失败:', error) |
| 86 | this.$message.error(error.message || this.$t('listOwnerCar.importError')) | 86 | this.$message.error(error.message || this.$t('listOwnerCar.importError')) |
src/components/fee/doImportCreateFee.vue
| @@ -78,7 +78,7 @@ export default { | @@ -78,7 +78,7 @@ export default { | ||
| 78 | if (res.code === 0) { | 78 | if (res.code === 0) { |
| 79 | this.$message.success(this.$t('doImportCreateFee.successMessage')) | 79 | this.$message.success(this.$t('doImportCreateFee.successMessage')) |
| 80 | this.handleClose() | 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 | } else { | 82 | } else { |
| 83 | this.$message.error(res.msg) | 83 | this.$message.error(res.msg) |
| 84 | } | 84 | } |
src/components/org/addClasses.vue
| 1 | <template> | 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 | <el-form-item :label="$t('classesManage.add.name')" prop="name" :rules="[ | 4 | <el-form-item :label="$t('classesManage.add.name')" prop="name" :rules="[ |
| 5 | { required: true, message: $t('classesManage.validate.nameRequired'), trigger: 'blur' }, | 5 | { required: true, message: $t('classesManage.validate.nameRequired'), trigger: 'blur' }, |
| 6 | { max: 100, message: $t('classesManage.validate.nameMaxLength'), trigger: 'blur' } | 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 | \ No newline at end of file | 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 | \ No newline at end of file | 53 | \ No newline at end of file |
src/components/org/editClasses.vue
| 1 | <template> | 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 | <el-form-item :label="$t('classesManage.edit.name')" prop="name" :rules="[ | 4 | <el-form-item :label="$t('classesManage.edit.name')" prop="name" :rules="[ |
| 5 | { required: true, message: $t('classesManage.validate.nameRequired'), trigger: 'blur' }, | 5 | { required: true, message: $t('classesManage.validate.nameRequired'), trigger: 'blur' }, |
| 6 | { max: 100, message: $t('classesManage.validate.nameMaxLength'), trigger: 'blur' } | 6 | { max: 100, message: $t('classesManage.validate.nameMaxLength'), trigger: 'blur' } |
src/components/owner/ownerDetailHis.vue
| @@ -56,8 +56,7 @@ | @@ -56,8 +56,7 @@ | ||
| 56 | <script> | 56 | <script> |
| 57 | import { queryHisOwner } from '@/api/owner/ownerDetailHisApi' | 57 | import { queryHisOwner } from '@/api/owner/ownerDetailHisApi' |
| 58 | import { getCommunityId } from '@/api/community/communityApi' | 58 | import { getCommunityId } from '@/api/community/communityApi' |
| 59 | -import { getDict } from '@/api/community/communityApi' | ||
| 60 | - | 59 | +import {getAttrSpecList} from '@/api/dev/attrSpecApi' |
| 61 | export default { | 60 | export default { |
| 62 | name: 'OwnerDetailHis', | 61 | name: 'OwnerDetailHis', |
| 63 | data() { | 62 | data() { |
| @@ -148,7 +147,7 @@ export default { | @@ -148,7 +147,7 @@ export default { | ||
| 148 | }, | 147 | }, |
| 149 | _getColumns(callback) { | 148 | _getColumns(callback) { |
| 150 | this.ownerDetailHisInfo.listColumns = [] | 149 | this.ownerDetailHisInfo.listColumns = [] |
| 151 | - getDict('building_owner_attr').then(data => { | 150 | + getAttrSpecList({specCd:'building_owner_attr',page:1,row:10}).then(data => { |
| 152 | this.ownerDetailHisInfo.listColumns = [] | 151 | this.ownerDetailHisInfo.listColumns = [] |
| 153 | data.forEach(item => { | 152 | data.forEach(item => { |
| 154 | if (item.listShow === 'Y') { | 153 | if (item.listShow === 'Y') { |
src/components/room/importOwnerRoom.vue
| @@ -95,7 +95,7 @@ export default { | @@ -95,7 +95,7 @@ export default { | ||
| 95 | 95 | ||
| 96 | this.handleClose() | 96 | this.handleClose() |
| 97 | this.$router.push({ | 97 | this.$router.push({ |
| 98 | - path: '/property/assetImportLogDetail', | 98 | + path: '/views/system/assetImportLogDetail', |
| 99 | query: { | 99 | query: { |
| 100 | logId: response.logId, | 100 | logId: response.logId, |
| 101 | logType: 'importRoomOwner' | 101 | logType: 'importRoomOwner' |
src/components/staff/selectStaffsDiv.vue
| @@ -42,7 +42,7 @@ import { listStaffsByOrgId } from '@/api/inspection/inspectionPlanApi' | @@ -42,7 +42,7 @@ import { listStaffsByOrgId } from '@/api/inspection/inspectionPlanApi' | ||
| 42 | import OrgTreeShow from '@/components/org/OrgTreeShow' | 42 | import OrgTreeShow from '@/components/org/OrgTreeShow' |
| 43 | 43 | ||
| 44 | export default { | 44 | export default { |
| 45 | - name: 'SelectStaffs', | 45 | + name: 'SelectStaffsDiv', |
| 46 | components: { | 46 | components: { |
| 47 | OrgTreeShow | 47 | OrgTreeShow |
| 48 | }, | 48 | }, |
src/components/system/addPaymentPool.vue
| 1 | <template> | 1 | <template> |
| 2 | <el-dialog :title="$t('paymentPool.add.title')" :visible.sync="visible" width="50%" @close="handleClose"> | 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 | <el-form-item :label="$t('paymentPool.add.paymentName')" prop="paymentName"> | 4 | <el-form-item :label="$t('paymentPool.add.paymentName')" prop="paymentName"> |
| 5 | <el-input v-model="formData.paymentName" :placeholder="$t('paymentPool.add.paymentNamePlaceholder')" /> | 5 | <el-input v-model="formData.paymentName" :placeholder="$t('paymentPool.add.paymentNamePlaceholder')" /> |
| 6 | </el-form-item> | 6 | </el-form-item> |
| @@ -18,7 +18,7 @@ | @@ -18,7 +18,7 @@ | ||
| 18 | </el-form-item> | 18 | </el-form-item> |
| 19 | 19 | ||
| 20 | <el-form-item v-if="formData.paymentType === 'WECHAT'" :label="$t('paymentPool.add.certFile')"> | 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 | </el-form-item> | 22 | </el-form-item> |
| 23 | 23 | ||
| 24 | <el-form-item :label="$t('paymentPool.add.payRange')" prop="payType"> | 24 | <el-form-item :label="$t('paymentPool.add.payRange')" prop="payType"> |
| @@ -56,8 +56,8 @@ | @@ -56,8 +56,8 @@ | ||
| 56 | </template> | 56 | </template> |
| 57 | 57 | ||
| 58 | <script> | 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 | import { getCommunityId } from '@/api/community/communityApi' | 61 | import { getCommunityId } from '@/api/community/communityApi' |
| 62 | 62 | ||
| 63 | export default { | 63 | export default { |
| @@ -108,7 +108,6 @@ export default { | @@ -108,7 +108,6 @@ export default { | ||
| 108 | created() { | 108 | created() { |
| 109 | this.formData.communityId = getCommunityId() | 109 | this.formData.communityId = getCommunityId() |
| 110 | this.getPaymentTypes() | 110 | this.getPaymentTypes() |
| 111 | - this.$on('notifyCert', this.handleNotifyCert) | ||
| 112 | }, | 111 | }, |
| 113 | methods: { | 112 | methods: { |
| 114 | open() { | 113 | open() { |
| @@ -185,7 +184,7 @@ export default { | @@ -185,7 +184,7 @@ export default { | ||
| 185 | try { | 184 | try { |
| 186 | const params = { | 185 | const params = { |
| 187 | ...this.formData, | 186 | ...this.formData, |
| 188 | - values: this.paymentKeys.map(item => ({ | 187 | + paymentKeys: this.paymentKeys.map(item => ({ |
| 189 | columnKey: item.columnKey, | 188 | columnKey: item.columnKey, |
| 190 | columnValue: item.columnValue | 189 | columnValue: item.columnValue |
| 191 | })) | 190 | })) |
src/components/system/contractDetailChange.vue
| 1 | <template> | 1 | <template> |
| 2 | <div class="contract-detail-change"> | 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 | </el-table-column> | 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 | </el-table-column> | 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 | </el-table-column> | 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 | </el-table-column> | 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 | </el-table-column> | 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 | </el-table-column> | 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 | </el-table-column> | 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 | </el-table-column> | 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 | </el-table-column> | 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 | </el-table-column> | 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 | <template slot-scope="scope"> | 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 | {{ $t('contractDetailChange.detail') }} | 27 | {{ $t('contractDetailChange.detail') }} |
| 68 | </el-button> | 28 | </el-button> |
| 69 | </template> | 29 | </template> |
| 70 | </el-table-column> | 30 | </el-table-column> |
| 71 | </el-table> | 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 | :total="page.total"> | 35 | :total="page.total"> |
| 81 | </el-pagination> | 36 | </el-pagination> |
| 82 | </div> | 37 | </div> |
| @@ -127,7 +82,7 @@ export default { | @@ -127,7 +82,7 @@ export default { | ||
| 127 | contractCode: this.contractDetailChangeInfo.contractCode, | 82 | contractCode: this.contractDetailChangeInfo.contractCode, |
| 128 | staffNameLike: this.contractDetailChangeInfo.staffNameLike | 83 | staffNameLike: this.contractDetailChangeInfo.staffNameLike |
| 129 | } | 84 | } |
| 130 | - | 85 | + |
| 131 | const { data, total } = await queryContractChangePlan(params) | 86 | const { data, total } = await queryContractChangePlan(params) |
| 132 | this.contractDetailChangeInfo.contracts = data | 87 | this.contractDetailChangeInfo.contracts = data |
| 133 | this.page.total = total | 88 | this.page.total = total |
| @@ -139,7 +94,7 @@ export default { | @@ -139,7 +94,7 @@ export default { | ||
| 139 | }, | 94 | }, |
| 140 | _toContractDetails(contract) { | 95 | _toContractDetails(contract) { |
| 141 | this.$router.push({ | 96 | this.$router.push({ |
| 142 | - path: '/admin/contractChangeDetails', | 97 | + path: '/views/contract/contractChangeDetails', |
| 143 | query: { planId: contract.planId } | 98 | query: { planId: contract.planId } |
| 144 | }) | 99 | }) |
| 145 | }, | 100 | }, |
src/components/system/editPaymentPool.vue
| 1 | <template> | 1 | <template> |
| 2 | <el-dialog :title="$t('paymentPool.edit.title')" :visible.sync="visible" width="50%" @close="handleClose"> | 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 | <el-form-item :label="$t('paymentPool.edit.paymentName')" prop="paymentName"> | 4 | <el-form-item :label="$t('paymentPool.edit.paymentName')" prop="paymentName"> |
| 5 | <el-input v-model="formData.paymentName" :placeholder="$t('paymentPool.edit.paymentNamePlaceholder')" /> | 5 | <el-input v-model="formData.paymentName" :placeholder="$t('paymentPool.edit.paymentNamePlaceholder')" /> |
| 6 | </el-form-item> | 6 | </el-form-item> |
| @@ -18,7 +18,7 @@ | @@ -18,7 +18,7 @@ | ||
| 18 | </el-form-item> | 18 | </el-form-item> |
| 19 | 19 | ||
| 20 | <el-form-item v-if="formData.paymentType === 'WECHAT'" :label="$t('paymentPool.edit.certFile')"> | 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 | <div v-if="formData.certPath" class="cert-tip"> | 22 | <div v-if="formData.certPath" class="cert-tip"> |
| 23 | {{ $t('paymentPool.edit.currentCert') }}: {{ formData.certPath }} | 23 | {{ $t('paymentPool.edit.currentCert') }}: {{ formData.certPath }} |
| 24 | </div> | 24 | </div> |
| @@ -66,8 +66,8 @@ | @@ -66,8 +66,8 @@ | ||
| 66 | </template> | 66 | </template> |
| 67 | 67 | ||
| 68 | <script> | 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 | import { getCommunityId } from '@/api/community/communityApi' | 71 | import { getCommunityId } from '@/api/community/communityApi' |
| 72 | 72 | ||
| 73 | export default { | 73 | export default { |
| @@ -109,7 +109,6 @@ export default { | @@ -109,7 +109,6 @@ export default { | ||
| 109 | created() { | 109 | created() { |
| 110 | this.formData.communityId = getCommunityId() | 110 | this.formData.communityId = getCommunityId() |
| 111 | this.getPaymentTypes() | 111 | this.getPaymentTypes() |
| 112 | - this.$on('notifyCert', this.handleNotifyCert) | ||
| 113 | }, | 112 | }, |
| 114 | methods: { | 113 | methods: { |
| 115 | open(row) { | 114 | open(row) { |
| @@ -232,7 +231,7 @@ export default { | @@ -232,7 +231,7 @@ export default { | ||
| 232 | try { | 231 | try { |
| 233 | const params = { | 232 | const params = { |
| 234 | ...this.formData, | 233 | ...this.formData, |
| 235 | - values: this.paymentKeys.map(item => ({ | 234 | + paymentKeys: this.paymentKeys.map(item => ({ |
| 236 | columnKey: item.columnKey, | 235 | columnKey: item.columnKey, |
| 237 | columnValue: item.columnValue | 236 | columnValue: item.columnValue |
| 238 | })) | 237 | })) |
src/components/system/feeConfigDetailHis.vue
| 1 | <template> | 1 | <template> |
| 2 | <div class="fee-config-detail-his"> | 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 | <template slot-scope="scope"> | 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 | </template> | 16 | </template> |
| 34 | </el-table-column> | 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 | </el-table-column> | 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 | <template slot-scope="scope"> | 21 | <template slot-scope="scope"> |
| 44 | <div>{{ scope.row.startTime }}</div> | 22 | <div>{{ scope.row.startTime }}</div> |
| 45 | <div>{{ scope.row.endTime }}</div> | 23 | <div>{{ scope.row.endTime }}</div> |
| 46 | </template> | 24 | </template> |
| 47 | </el-table-column> | 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 | <template slot-scope="scope"> | 27 | <template slot-scope="scope"> |
| 52 | {{ scope.row.computingFormula === '2002' ? '-' : scope.row.squarePrice }} | 28 | {{ scope.row.computingFormula === '2002' ? '-' : scope.row.squarePrice }} |
| 53 | </template> | 29 | </template> |
| 54 | </el-table-column> | 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 | </el-table-column> | 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 | <template slot-scope="scope"> | 34 | <template slot-scope="scope"> |
| 64 | {{ scope.row.deductFrom === 'Y' ? $t('common.yes') : $t('common.no') }} | 35 | {{ scope.row.deductFrom === 'Y' ? $t('common.yes') : $t('common.no') }} |
| 65 | </template> | 36 | </template> |
| 66 | </el-table-column> | 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 | <template slot-scope="scope"> | 39 | <template slot-scope="scope"> |
| 71 | {{ scope.row.payOnline === 'Y' ? $t('common.yes') : $t('common.no') }} | 40 | {{ scope.row.payOnline === 'Y' ? $t('common.yes') : $t('common.no') }} |
| 72 | </template> | 41 | </template> |
| 73 | </el-table-column> | 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 | <template slot-scope="scope"> | 44 | <template slot-scope="scope"> |
| 78 | <div v-if="scope.row.scale === '1'">{{ $t('feeConfigDetailHis.round') }}</div> | 45 | <div v-if="scope.row.scale === '1'">{{ $t('feeConfigDetailHis.round') }}</div> |
| 79 | <div v-if="scope.row.scale === '3'">{{ $t('feeConfigDetailHis.roundUp') }}</div> | 46 | <div v-if="scope.row.scale === '3'">{{ $t('feeConfigDetailHis.roundUp') }}</div> |
| 80 | <div v-if="scope.row.scale === '4'">{{ $t('feeConfigDetailHis.roundDown') }}</div> | 47 | <div v-if="scope.row.scale === '4'">{{ $t('feeConfigDetailHis.roundDown') }}</div> |
| 81 | </template> | 48 | </template> |
| 82 | </el-table-column> | 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 | </el-table-column> | 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 | <template slot-scope="scope"> | 53 | <template slot-scope="scope"> |
| 92 | {{ _getHisConfigOperate(scope.row) }} | 54 | {{ _getHisConfigOperate(scope.row) }} |
| 93 | </template> | 55 | </template> |
| 94 | </el-table-column> | 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 | <template slot-scope="scope"> | 58 | <template slot-scope="scope"> |
| 100 | {{ scope.row.userName || '-' }} | 59 | {{ scope.row.userName || '-' }} |
| 101 | </template> | 60 | </template> |
| 102 | </el-table-column> | 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 | <template slot-scope="scope"> | 63 | <template slot-scope="scope"> |
| 108 | {{ scope.row.createTime || '-' }} | 64 | {{ scope.row.createTime || '-' }} |
| 109 | </template> | 65 | </template> |
| 110 | </el-table-column> | 66 | </el-table-column> |
| 111 | </el-table> | 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 | :total="page.total"> | 71 | :total="page.total"> |
| 121 | </el-pagination> | 72 | </el-pagination> |
| 122 | </div> | 73 | </div> |
| @@ -124,6 +75,7 @@ | @@ -124,6 +75,7 @@ | ||
| 124 | 75 | ||
| 125 | <script> | 76 | <script> |
| 126 | import { queryHisFeeConfig } from '@/api/system/operateDataLogApi' | 77 | import { queryHisFeeConfig } from '@/api/system/operateDataLogApi' |
| 78 | +import { getCommunityId } from '@/api/community/communityApi' | ||
| 127 | 79 | ||
| 128 | export default { | 80 | export default { |
| 129 | name: 'FeeConfigDetailHis', | 81 | name: 'FeeConfigDetailHis', |
| @@ -163,9 +115,10 @@ export default { | @@ -163,9 +115,10 @@ export default { | ||
| 163 | staffNameLike: this.feeConfigDetailHisInfo.staffNameLike, | 115 | staffNameLike: this.feeConfigDetailHisInfo.staffNameLike, |
| 164 | feeNameLike: this.feeConfigDetailHisInfo.feeNameLike, | 116 | feeNameLike: this.feeConfigDetailHisInfo.feeNameLike, |
| 165 | logStartTime: this.feeConfigDetailHisInfo.logStartTime, | 117 | logStartTime: this.feeConfigDetailHisInfo.logStartTime, |
| 166 | - logEndTime: this.feeConfigDetailHisInfo.logEndTime | 118 | + logEndTime: this.feeConfigDetailHisInfo.logEndTime, |
| 119 | + communityId: getCommunityId() | ||
| 167 | } | 120 | } |
| 168 | - | 121 | + |
| 169 | const { data, total } = await queryHisFeeConfig(params) | 122 | const { data, total } = await queryHisFeeConfig(params) |
| 170 | this.feeConfigDetailHisInfo.feeDetails = data | 123 | this.feeConfigDetailHisInfo.feeDetails = data |
| 171 | this.page.total = total | 124 | this.page.total = total |
| @@ -177,13 +130,13 @@ export default { | @@ -177,13 +130,13 @@ export default { | ||
| 177 | }, | 130 | }, |
| 178 | _getHisConfigOperate(fee) { | 131 | _getHisConfigOperate(fee) { |
| 179 | const feeCount = this.feeConfigDetailHisInfo.feeDetails.filter(item => item.bId === fee.bId).length | 132 | const feeCount = this.feeConfigDetailHisInfo.feeDetails.filter(item => item.bId === fee.bId).length |
| 180 | - | 133 | + |
| 181 | if (feeCount <= 1) { | 134 | if (feeCount <= 1) { |
| 182 | if (fee.operate === 'ADD') return this.$t('feeConfigDetailHis.add') | 135 | if (fee.operate === 'ADD') return this.$t('feeConfigDetailHis.add') |
| 183 | if (fee.operate === 'DEL') return this.$t('feeConfigDetailHis.delete') | 136 | if (fee.operate === 'DEL') return this.$t('feeConfigDetailHis.delete') |
| 184 | return '-' | 137 | return '-' |
| 185 | } | 138 | } |
| 186 | - | 139 | + |
| 187 | if (fee.operate === 'ADD') return this.$t('feeConfigDetailHis.modifyNew') | 140 | if (fee.operate === 'ADD') return this.$t('feeConfigDetailHis.modifyNew') |
| 188 | if (fee.operate === 'DEL') return this.$t('feeConfigDetailHis.modifyOld') | 141 | if (fee.operate === 'DEL') return this.$t('feeConfigDetailHis.modifyOld') |
| 189 | return '-' | 142 | return '-' |
src/components/system/feeDetailHis.vue
| 1 | <template> | 1 | <template> |
| 2 | <div class="fee-detail-his"> | 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 | <template slot-scope="scope"> | 5 | <template slot-scope="scope"> |
| 12 | {{ scope.row.feeName }} | 6 | {{ scope.row.feeName }} |
| 13 | <span v-if="scope.row.payerObjName">({{ scope.row.payerObjName }})</span> | 7 | <span v-if="scope.row.payerObjName">({{ scope.row.payerObjName }})</span> |
| 14 | </template> | 8 | </template> |
| 15 | </el-table-column> | 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 | <template slot-scope="scope"> | 11 | <template slot-scope="scope"> |
| 20 | {{ scope.row.startTime || '-' }} | 12 | {{ scope.row.startTime || '-' }} |
| 21 | </template> | 13 | </template> |
| 22 | </el-table-column> | 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 | <template slot-scope="scope"> | 16 | <template slot-scope="scope"> |
| 27 | {{ scope.row.endTime || '-' }} | 17 | {{ scope.row.endTime || '-' }} |
| 28 | </template> | 18 | </template> |
| 29 | </el-table-column> | 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 | <template slot-scope="scope"> | 21 | <template slot-scope="scope"> |
| 34 | {{ _getFeeHisOperate(scope.row) }} | 22 | {{ _getFeeHisOperate(scope.row) }} |
| 35 | </template> | 23 | </template> |
| 36 | </el-table-column> | 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 | <template slot-scope="scope"> | 26 | <template slot-scope="scope"> |
| 41 | {{ scope.row.userName || '-' }} | 27 | {{ scope.row.userName || '-' }} |
| 42 | </template> | 28 | </template> |
| 43 | </el-table-column> | 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 | <template slot-scope="scope"> | 31 | <template slot-scope="scope"> |
| 48 | {{ scope.row.createTime }} | 32 | {{ scope.row.createTime }} |
| 49 | </template> | 33 | </template> |
| 50 | </el-table-column> | 34 | </el-table-column> |
| 51 | </el-table> | 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 | :total="page.total"> | 39 | :total="page.total"> |
| 61 | </el-pagination> | 40 | </el-pagination> |
| 62 | </div> | 41 | </div> |
| @@ -64,6 +43,7 @@ | @@ -64,6 +43,7 @@ | ||
| 64 | 43 | ||
| 65 | <script> | 44 | <script> |
| 66 | import { queryHisFee } from '@/api/system/operateDataLogApi' | 45 | import { queryHisFee } from '@/api/system/operateDataLogApi' |
| 46 | +import { getCommunityId } from '@/api/community/communityApi' | ||
| 67 | 47 | ||
| 68 | export default { | 48 | export default { |
| 69 | name: 'FeeDetailHis', | 49 | name: 'FeeDetailHis', |
| @@ -105,9 +85,10 @@ export default { | @@ -105,9 +85,10 @@ export default { | ||
| 105 | feeNameLike: this.feeDetailHisInfo.feeNameLike, | 85 | feeNameLike: this.feeDetailHisInfo.feeNameLike, |
| 106 | payerObjName: this.feeDetailHisInfo.payerObjName, | 86 | payerObjName: this.feeDetailHisInfo.payerObjName, |
| 107 | logStartTime: this.feeDetailHisInfo.logStartTime, | 87 | logStartTime: this.feeDetailHisInfo.logStartTime, |
| 108 | - logEndTime: this.feeDetailHisInfo.logEndTime | 88 | + logEndTime: this.feeDetailHisInfo.logEndTime, |
| 89 | + communityId: getCommunityId() | ||
| 109 | } | 90 | } |
| 110 | - | 91 | + |
| 111 | const { data, total } = await queryHisFee(params) | 92 | const { data, total } = await queryHisFee(params) |
| 112 | this.feeDetailHisInfo.fees = data | 93 | this.feeDetailHisInfo.fees = data |
| 113 | this.page.total = total | 94 | this.page.total = total |
| @@ -119,13 +100,13 @@ export default { | @@ -119,13 +100,13 @@ export default { | ||
| 119 | }, | 100 | }, |
| 120 | _getFeeHisOperate(fee) { | 101 | _getFeeHisOperate(fee) { |
| 121 | const feeCount = this.feeDetailHisInfo.fees.filter(item => item.bId === fee.bId).length | 102 | const feeCount = this.feeDetailHisInfo.fees.filter(item => item.bId === fee.bId).length |
| 122 | - | 103 | + |
| 123 | if (feeCount <= 1) { | 104 | if (feeCount <= 1) { |
| 124 | if (fee.operate === 'ADD') return this.$t('feeDetailHis.add') | 105 | if (fee.operate === 'ADD') return this.$t('feeDetailHis.add') |
| 125 | if (fee.operate === 'DEL') return this.$t('feeDetailHis.delete') | 106 | if (fee.operate === 'DEL') return this.$t('feeDetailHis.delete') |
| 126 | return '-' | 107 | return '-' |
| 127 | } | 108 | } |
| 128 | - | 109 | + |
| 129 | if (fee.operate === 'ADD') return this.$t('feeDetailHis.modifyNew') | 110 | if (fee.operate === 'ADD') return this.$t('feeDetailHis.modifyNew') |
| 130 | if (fee.operate === 'DEL') return this.$t('feeDetailHis.modifyOld') | 111 | if (fee.operate === 'DEL') return this.$t('feeDetailHis.modifyOld') |
| 131 | return '-' | 112 | return '-' |
src/components/system/roomDetailHis.vue
| 1 | <template> | 1 | <template> |
| 2 | <div class="room-detail-his"> | 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 | <template slot-scope="scope"> | 5 | <template slot-scope="scope"> |
| 12 | {{ _getRoomHisOperate(scope.row) }} | 6 | {{ _getRoomHisOperate(scope.row) }} |
| 13 | </template> | 7 | </template> |
| 14 | </el-table-column> | 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 | <template slot-scope="scope"> | 10 | <template slot-scope="scope"> |
| 19 | {{ scope.row.userName || '-' }} | 11 | {{ scope.row.userName || '-' }} |
| 20 | </template> | 12 | </template> |
| 21 | </el-table-column> | 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 | <template slot-scope="scope"> | 15 | <template slot-scope="scope"> |
| 26 | {{ scope.row.createTime }} | 16 | {{ scope.row.createTime }} |
| 27 | </template> | 17 | </template> |
| 28 | </el-table-column> | 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 | <template slot-scope="scope"> | 20 | <template slot-scope="scope"> |
| 33 | {{ scope.row.floorNum }}-{{ scope.row.unitNum }}-{{ scope.row.roomNum }} | 21 | {{ scope.row.floorNum }}-{{ scope.row.unitNum }}-{{ scope.row.roomNum }} |
| 34 | </template> | 22 | </template> |
| 35 | </el-table-column> | 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 | <template slot-scope="scope"> | 25 | <template slot-scope="scope"> |
| 40 | {{ scope.row.layer }} | 26 | {{ scope.row.layer }} |
| 41 | </template> | 27 | </template> |
| 42 | </el-table-column> | 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 | <template slot-scope="scope"> | 30 | <template slot-scope="scope"> |
| 47 | {{ scope.row.roomSubTypeName }} | 31 | {{ scope.row.roomSubTypeName }} |
| 48 | </template> | 32 | </template> |
| 49 | </el-table-column> | 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 | <template slot-scope="scope"> | 35 | <template slot-scope="scope"> |
| 54 | {{ scope.row.builtUpArea }}/{{ scope.row.roomArea }} | 36 | {{ scope.row.builtUpArea }}/{{ scope.row.roomArea }} |
| 55 | </template> | 37 | </template> |
| 56 | </el-table-column> | 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 | <template slot-scope="scope"> | 40 | <template slot-scope="scope"> |
| 61 | {{ scope.row.roomRent }} | 41 | {{ scope.row.roomRent }} |
| 62 | </template> | 42 | </template> |
| 63 | </el-table-column> | 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 | <template slot-scope="scope"> | 45 | <template slot-scope="scope"> |
| 68 | {{ scope.row.stateName }} | 46 | {{ scope.row.stateName }} |
| 69 | </template> | 47 | </template> |
| 70 | </el-table-column> | 48 | </el-table-column> |
| 71 | </el-table> | 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 | :total="page.total"> | 53 | :total="page.total"> |
| 81 | </el-pagination> | 54 | </el-pagination> |
| 82 | </div> | 55 | </div> |
| @@ -84,6 +57,7 @@ | @@ -84,6 +57,7 @@ | ||
| 84 | 57 | ||
| 85 | <script> | 58 | <script> |
| 86 | import { queryHisRoom } from '@/api/system/operateDataLogApi' | 59 | import { queryHisRoom } from '@/api/system/operateDataLogApi' |
| 60 | +import { getCommunityId } from '@/api/community/communityApi' | ||
| 87 | 61 | ||
| 88 | export default { | 62 | export default { |
| 89 | name: 'RoomDetailHis', | 63 | name: 'RoomDetailHis', |
| @@ -125,9 +99,10 @@ export default { | @@ -125,9 +99,10 @@ export default { | ||
| 125 | logStartTime: this.roomDetailHisInfo.logStartTime, | 99 | logStartTime: this.roomDetailHisInfo.logStartTime, |
| 126 | logEndTime: this.roomDetailHisInfo.logEndTime, | 100 | logEndTime: this.roomDetailHisInfo.logEndTime, |
| 127 | staffNameLike: this.roomDetailHisInfo.staffNameLike, | 101 | staffNameLike: this.roomDetailHisInfo.staffNameLike, |
| 128 | - payerObjName: this.roomDetailHisInfo.payerObjName | 102 | + payerObjName: this.roomDetailHisInfo.payerObjName, |
| 103 | + communityId: getCommunityId() | ||
| 129 | } | 104 | } |
| 130 | - | 105 | + |
| 131 | const { data, total } = await queryHisRoom(params) | 106 | const { data, total } = await queryHisRoom(params) |
| 132 | this.roomDetailHisInfo.rooms = data | 107 | this.roomDetailHisInfo.rooms = data |
| 133 | this.page.total = total | 108 | this.page.total = total |
| @@ -139,13 +114,13 @@ export default { | @@ -139,13 +114,13 @@ export default { | ||
| 139 | }, | 114 | }, |
| 140 | _getRoomHisOperate(room) { | 115 | _getRoomHisOperate(room) { |
| 141 | const roomCount = this.roomDetailHisInfo.rooms.filter(item => item.bId === room.bId).length | 116 | const roomCount = this.roomDetailHisInfo.rooms.filter(item => item.bId === room.bId).length |
| 142 | - | 117 | + |
| 143 | if (roomCount <= 1) { | 118 | if (roomCount <= 1) { |
| 144 | if (room.operate === 'ADD') return this.$t('roomDetailHis.add') | 119 | if (room.operate === 'ADD') return this.$t('roomDetailHis.add') |
| 145 | if (room.operate === 'DEL') return this.$t('roomDetailHis.delete') | 120 | if (room.operate === 'DEL') return this.$t('roomDetailHis.delete') |
| 146 | return '-' | 121 | return '-' |
| 147 | } | 122 | } |
| 148 | - | 123 | + |
| 149 | if (room.operate === 'ADD') return this.$t('roomDetailHis.modifyNew') | 124 | if (room.operate === 'ADD') return this.$t('roomDetailHis.modifyNew') |
| 150 | if (room.operate === 'DEL') return this.$t('roomDetailHis.modifyOld') | 125 | if (room.operate === 'DEL') return this.$t('roomDetailHis.modifyOld') |
| 151 | return '-' | 126 | return '-' |
src/components/upload/FileUpload.vue
| 1 | <!-- src/components/upload/FileUpload.vue --> | 1 | <!-- src/components/upload/FileUpload.vue --> |
| 2 | <template> | 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 | \ No newline at end of file | 78 | \ No newline at end of file |
| 79 | +} | ||
| 80 | +</script> | ||
| 88 | \ No newline at end of file | 81 | \ No newline at end of file |
src/i18n/userI18n.js
| @@ -10,6 +10,7 @@ import { messages as workflowManageMessages } from '../views/system/workflowMana | @@ -10,6 +10,7 @@ import { messages as workflowManageMessages } from '../views/system/workflowMana | ||
| 10 | import { messages as workflowSettingManageMessages } from '../views/system/workflowSettingManageLang' | 10 | import { messages as workflowSettingManageMessages } from '../views/system/workflowSettingManageLang' |
| 11 | import { messages as ownerDetailMessages } from '../views/owner/ownerDetailLang' | 11 | import { messages as ownerDetailMessages } from '../views/owner/ownerDetailLang' |
| 12 | import { messages as auditAuthOwnerUndoMessages } from '../views/owner/auditAuthOwnerUndoLang' | 12 | import { messages as auditAuthOwnerUndoMessages } from '../views/owner/auditAuthOwnerUndoLang' |
| 13 | +import { messages as scheduleClassesStaffManageMessages } from '../views/org/scheduleClassesStaffManageLang' | ||
| 13 | 14 | ||
| 14 | export const messages = { | 15 | export const messages = { |
| 15 | en: { | 16 | en: { |
| @@ -25,6 +26,7 @@ export const messages = { | @@ -25,6 +26,7 @@ export const messages = { | ||
| 25 | ...workflowSettingManageMessages.en, | 26 | ...workflowSettingManageMessages.en, |
| 26 | ...ownerDetailMessages.en, | 27 | ...ownerDetailMessages.en, |
| 27 | ...auditAuthOwnerUndoMessages.en, | 28 | ...auditAuthOwnerUndoMessages.en, |
| 29 | + ...scheduleClassesStaffManageMessages.en, | ||
| 28 | }, | 30 | }, |
| 29 | zh: { | 31 | zh: { |
| 30 | ...staffCommunityMessages.zh, | 32 | ...staffCommunityMessages.zh, |
| @@ -39,5 +41,6 @@ export const messages = { | @@ -39,5 +41,6 @@ export const messages = { | ||
| 39 | ...workflowSettingManageMessages.zh, | 41 | ...workflowSettingManageMessages.zh, |
| 40 | ...ownerDetailMessages.zh, | 42 | ...ownerDetailMessages.zh, |
| 41 | ...auditAuthOwnerUndoMessages.zh, | 43 | ...auditAuthOwnerUndoMessages.zh, |
| 44 | + ...scheduleClassesStaffManageMessages.zh, | ||
| 42 | } | 45 | } |
| 43 | } | 46 | } |
| 44 | \ No newline at end of file | 47 | \ No newline at end of file |
src/router/userRouter.js
| @@ -45,8 +45,13 @@ export default [ | @@ -45,8 +45,13 @@ export default [ | ||
| 45 | component: () => import('@/views/owner/ownerDetail.vue') | 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 | component: () => import('@/views/owner/auditAuthOwnerUndoList.vue') | 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 | \ No newline at end of file | 58 | \ No newline at end of file |
src/views/org/classesManageList.vue
| 1 | <template> | 1 | <template> |
| 2 | - <div class="classes-manage-container"> | 2 | + <div class="classes-manage-container padding"> |
| 3 | <!-- 查询条件 --> | 3 | <!-- 查询条件 --> |
| 4 | <el-card class="search-wrapper"> | 4 | <el-card class="search-wrapper"> |
| 5 | <div slot="header" class="text-left"> | 5 | <div slot="header" class="text-left"> |
| @@ -189,7 +189,7 @@ export default { | @@ -189,7 +189,7 @@ export default { | ||
| 189 | 189 | ||
| 190 | <style lang="scss" scoped> | 190 | <style lang="scss" scoped> |
| 191 | .classes-manage-container { | 191 | .classes-manage-container { |
| 192 | - padding: 0; | 192 | + |
| 193 | margin: 0; | 193 | margin: 0; |
| 194 | 194 | ||
| 195 | .search-wrapper { | 195 | .search-wrapper { |
src/views/org/editScheduleClassesList.vue
| 1 | <template> | 1 | <template> |
| 2 | <div class="edit-schedule-classes-container"> | 2 | <div class="edit-schedule-classes-container"> |
| 3 | <el-card class="box-card"> | 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 | </div> | 6 | </div> |
| 7 | <el-row :gutter="20"> | 7 | <el-row :gutter="20"> |
| 8 | <el-col :span="24"> | 8 | <el-col :span="24"> |
src/views/org/orgList.vue
| @@ -95,8 +95,8 @@ export default { | @@ -95,8 +95,8 @@ export default { | ||
| 95 | orgId: this.orgId, | 95 | orgId: this.orgId, |
| 96 | staffName: this.staffName.trim(), | 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 | this.total = total; | 100 | this.total = total; |
| 101 | } catch (error) { | 101 | } catch (error) { |
| 102 | console.error('Failed to fetch staffs:', error); | 102 | console.error('Failed to fetch staffs:', error); |
src/views/org/scheduleClassesList.vue
| @@ -168,7 +168,7 @@ export default { | @@ -168,7 +168,7 @@ export default { | ||
| 168 | }) | 168 | }) |
| 169 | }, | 169 | }, |
| 170 | handleStaff(row) { | 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 | handleSuccess() { | 173 | handleSuccess() { |
| 174 | this.getList() | 174 | this.getList() |
src/views/org/scheduleClassesPageList.vue
| @@ -50,22 +50,38 @@ | @@ -50,22 +50,38 @@ | ||
| 50 | <div slot="header" class="flex justify-between"> | 50 | <div slot="header" class="flex justify-between"> |
| 51 | <span>{{ $t('scheduleClassesPage.scheduleTable') }}</span> | 51 | <span>{{ $t('scheduleClassesPage.scheduleTable') }}</span> |
| 52 | </div> | 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 | </div> | 80 | </div> |
| 65 | - </div> | ||
| 66 | - </template> | ||
| 67 | - </el-table-column> | ||
| 68 | - </el-table> | 81 | + </td> |
| 82 | + </tr> | ||
| 83 | + </tbody> | ||
| 84 | + </table> | ||
| 69 | </div> | 85 | </div> |
| 70 | 86 | ||
| 71 | <!-- 分页 --> | 87 | <!-- 分页 --> |
| @@ -196,11 +212,7 @@ export default { | @@ -196,11 +212,7 @@ export default { | ||
| 196 | this.scheduleClassesPageInfo.conditions.orgId = org.orgId | 212 | this.scheduleClassesPageInfo.conditions.orgId = org.orgId |
| 197 | this.scheduleClassesPageInfo.conditions.orgName = org.allOrgName | 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 | handleSizeChange(val) { | 216 | handleSizeChange(val) { |
| 205 | this.page.size = val | 217 | this.page.size = val |
| 206 | this._listStaffScheduleClassess(this.page.current, val) | 218 | this._listStaffScheduleClassess(this.page.current, val) |
| @@ -225,8 +237,34 @@ export default { | @@ -225,8 +237,34 @@ export default { | ||
| 225 | overflow-x: auto; | 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 | .labeling-strip { | 267 | .labeling-strip { |
| 229 | - padding: 8px; | ||
| 230 | margin: 2px; | 268 | margin: 2px; |
| 231 | border: 1px solid #ebeef5; | 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 | \ No newline at end of file | 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 | \ No newline at end of file | 130 | \ No newline at end of file |
src/views/scm/communityIntegralList.vue
| 1 | <template> | 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 | }}</el-link> | 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 | </div> | 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 | </template> | 63 | </template> |
| 61 | 64 | ||
| 62 | <script> | 65 | <script> |
| @@ -65,13 +68,15 @@ import { queryCommunityIntegral } from '@/api/scm/communityIntegralApi' | @@ -65,13 +68,15 @@ import { queryCommunityIntegral } from '@/api/scm/communityIntegralApi' | ||
| 65 | import CommunityIntegralDetail from '@/components/scm/communityIntegralDetail' | 68 | import CommunityIntegralDetail from '@/components/scm/communityIntegralDetail' |
| 66 | import ApplyWithholdIntegral from '@/components/scm/applyWithholdIntegral' | 69 | import ApplyWithholdIntegral from '@/components/scm/applyWithholdIntegral' |
| 67 | import WithholdIntegral from '@/components/scm/withholdIntegral' | 70 | import WithholdIntegral from '@/components/scm/withholdIntegral' |
| 71 | +import divider from '@/components/system/divider' | ||
| 68 | 72 | ||
| 69 | export default { | 73 | export default { |
| 70 | name: 'CommunityIntegralList', | 74 | name: 'CommunityIntegralList', |
| 71 | components: { | 75 | components: { |
| 72 | CommunityIntegralDetail, | 76 | CommunityIntegralDetail, |
| 73 | ApplyWithholdIntegral, | 77 | ApplyWithholdIntegral, |
| 74 | - WithholdIntegral | 78 | + WithholdIntegral, |
| 79 | + divider | ||
| 75 | }, | 80 | }, |
| 76 | data() { | 81 | data() { |
| 77 | return { | 82 | return { |
| @@ -132,20 +137,18 @@ export default { | @@ -132,20 +137,18 @@ export default { | ||
| 132 | </script> | 137 | </script> |
| 133 | 138 | ||
| 134 | <style scoped> | 139 | <style scoped> |
| 135 | -.community-integral-container { | ||
| 136 | - padding: 20px; | ||
| 137 | -} | 140 | +.community-integral-container {padding: 20px;} |
| 138 | 141 | ||
| 139 | .white-bg { | 142 | .white-bg { |
| 140 | background-color: #fff; | 143 | background-color: #fff; |
| 141 | } | 144 | } |
| 142 | 145 | ||
| 143 | .padding-lg { | 146 | .padding-lg { |
| 144 | - padding: 20px; | 147 | + |
| 145 | } | 148 | } |
| 146 | 149 | ||
| 147 | .padding-top { | 150 | .padding-top { |
| 148 | - padding-top: 20px; | 151 | + |
| 149 | } | 152 | } |
| 150 | 153 | ||
| 151 | .border-radius { | 154 | .border-radius { |
src/views/scm/doDiningList.vue
| @@ -45,7 +45,7 @@ | @@ -45,7 +45,7 @@ | ||
| 45 | <el-row class="margin-top"> | 45 | <el-row class="margin-top"> |
| 46 | <el-col :span="24"> | 46 | <el-col :span="24"> |
| 47 | <el-card> | 47 | <el-card> |
| 48 | - <div slot="header" class="clearfix"> | 48 | + <div slot="header" class="flex justify-between"> |
| 49 | <span>{{ $t('doDining.diningRecords') }}</span> | 49 | <span>{{ $t('doDining.diningRecords') }}</span> |
| 50 | </div> | 50 | </div> |
| 51 | <el-row :gutter="20"> | 51 | <el-row :gutter="20"> |
src/views/scm/goldList.vue
| @@ -57,16 +57,15 @@ | @@ -57,16 +57,15 @@ | ||
| 57 | </el-row> | 57 | </el-row> |
| 58 | </div> | 58 | </div> |
| 59 | 59 | ||
| 60 | - <el-divider></el-divider> | 60 | + <divider></divider> |
| 61 | 61 | ||
| 62 | <div class="margin-top-sm"> | 62 | <div class="margin-top-sm"> |
| 63 | <el-tabs v-model="goldInfo.currentTab" @tab-click="changeTab(goldInfo.currentTab)"> | 63 | <el-tabs v-model="goldInfo.currentTab" @tab-click="changeTab(goldInfo.currentTab)"> |
| 64 | <el-tab-pane :label="$t('gold.transactionDetails')" name="goldDetail"> | 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 | </el-tab-pane> | 66 | </el-tab-pane> |
| 67 | <el-tab-pane :label="$t('gold.goldWithdrawal')" name="applyWithholdGold"> | 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 | </el-tab-pane> | 69 | </el-tab-pane> |
| 71 | </el-tabs> | 70 | </el-tabs> |
| 72 | </div> | 71 | </div> |
| @@ -82,13 +81,15 @@ import { getPropertyGoldInfo } from '@/api/scm/goldApi' | @@ -82,13 +81,15 @@ import { getPropertyGoldInfo } from '@/api/scm/goldApi' | ||
| 82 | import GoldDetail from '@/components/scm/goldDetail' | 81 | import GoldDetail from '@/components/scm/goldDetail' |
| 83 | import ApplyWithholdGold from '@/components/scm/applyWithholdGold' | 82 | import ApplyWithholdGold from '@/components/scm/applyWithholdGold' |
| 84 | import WithholdGold from '@/components/scm/withholdGold' | 83 | import WithholdGold from '@/components/scm/withholdGold' |
| 84 | +import divider from '@/components/system/divider' | ||
| 85 | 85 | ||
| 86 | export default { | 86 | export default { |
| 87 | name: 'GoldList', | 87 | name: 'GoldList', |
| 88 | components: { | 88 | components: { |
| 89 | GoldDetail, | 89 | GoldDetail, |
| 90 | ApplyWithholdGold, | 90 | ApplyWithholdGold, |
| 91 | - WithholdGold | 91 | + WithholdGold, |
| 92 | + divider | ||
| 92 | }, | 93 | }, |
| 93 | data() { | 94 | data() { |
| 94 | return { | 95 | return { |
| @@ -167,10 +168,10 @@ export default { | @@ -167,10 +168,10 @@ export default { | ||
| 167 | } | 168 | } |
| 168 | 169 | ||
| 169 | .form-group { | 170 | .form-group { |
| 171 | + text-align: left; | ||
| 170 | margin-bottom: 0; | 172 | margin-bottom: 0; |
| 171 | padding: 10px; | 173 | padding: 10px; |
| 172 | border-radius: 4px; | 174 | border-radius: 4px; |
| 173 | - background-color: #f5f7fa; | ||
| 174 | 175 | ||
| 175 | .el-form-item__label { | 176 | .el-form-item__label { |
| 176 | font-weight: bold; | 177 | font-weight: bold; |
| @@ -178,7 +179,6 @@ export default { | @@ -178,7 +179,6 @@ export default { | ||
| 178 | } | 179 | } |
| 179 | 180 | ||
| 180 | .el-form-item__content { | 181 | .el-form-item__content { |
| 181 | - margin-top: 5px; | ||
| 182 | } | 182 | } |
| 183 | } | 183 | } |
| 184 | } | 184 | } |
src/views/staff/staffAppAuthManageList.vue
| 1 | <template> | 1 | <template> |
| 2 | <div class="staff-app-auth-manage-container"> | 2 | <div class="staff-app-auth-manage-container"> |
| 3 | <el-card class="box-card"> | 3 | <el-card class="box-card"> |
| 4 | - <div slot="header" class="clearfix"> | 4 | + <div slot="header" class="flex justify-between"> |
| 5 | <span>{{ $t('staffAppAuthManage.title') }}</span> | 5 | <span>{{ $t('staffAppAuthManage.title') }}</span> |
| 6 | <div class="card-header-actions"> | 6 | <div class="card-header-actions"> |
| 7 | <el-button type="primary" size="small" @click="_refreshStaffAppAuth"> | 7 | <el-button type="primary" size="small" @click="_refreshStaffAppAuth"> |
src/views/staff/staffDetailList.vue
| @@ -12,11 +12,8 @@ | @@ -12,11 +12,8 @@ | ||
| 12 | <div class="staff-info"> | 12 | <div class="staff-info"> |
| 13 | <el-row :gutter="20"> | 13 | <el-row :gutter="20"> |
| 14 | <el-col :span="4"> | 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 | </el-image> | 17 | </el-image> |
| 21 | </el-col> | 18 | </el-col> |
| 22 | <el-col :span="20"> | 19 | <el-col :span="20"> |
| @@ -50,7 +47,8 @@ | @@ -50,7 +47,8 @@ | ||
| 50 | <el-col :span="8"> | 47 | <el-col :span="8"> |
| 51 | <div class="info-item"> | 48 | <div class="info-item"> |
| 52 | <label>{{ $t('staffDetailInfo.sex') }}</label> | 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 | </div> | 52 | </div> |
| 55 | </el-col> | 53 | </el-col> |
| 56 | <el-col :span="8"> | 54 | <el-col :span="8"> |
| @@ -69,7 +67,7 @@ | @@ -69,7 +67,7 @@ | ||
| 69 | <div slot="header" class="clearfix "> | 67 | <div slot="header" class="clearfix "> |
| 70 | <span>{{ $t('staffDetailInfo.relatedOrg') }}</span> | 68 | <span>{{ $t('staffDetailInfo.relatedOrg') }}</span> |
| 71 | </div> | 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 | <div class="org-item">{{ $t('staffDetailInfo.org') }}: {{ item.orgName }}</div> | 71 | <div class="org-item">{{ $t('staffDetailInfo.org') }}: {{ item.orgName }}</div> |
| 74 | </div> | 72 | </div> |
| 75 | </el-card> | 73 | </el-card> |
| @@ -78,12 +76,12 @@ | @@ -78,12 +76,12 @@ | ||
| 78 | <div slot="header" class="clearfix"> | 76 | <div slot="header" class="clearfix"> |
| 79 | <span>{{ $t('staffDetailInfo.relatedRoleCommunity') }}</span> | 77 | <span>{{ $t('staffDetailInfo.relatedRoleCommunity') }}</span> |
| 80 | </div> | 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 | {{ item.roleName }} ( | 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 | {{ item1.communityName }} | 83 | {{ item1.communityName }} |
| 86 | - {{ index1 === item.roleCommunityDtoList.length-1 ? " ":" 、 " }} | 84 | + {{ index1 === item.roleCommunityDtoList.length - 1 ? " " : " 、 " }} |
| 87 | </span> ) | 85 | </span> ) |
| 88 | </div> | 86 | </div> |
| 89 | </div> | 87 | </div> |
| @@ -97,11 +95,7 @@ | @@ -97,11 +95,7 @@ | ||
| 97 | <div slot="header" class="clearfix"> | 95 | <div slot="header" class="clearfix"> |
| 98 | <span>{{ $t('staffDetailInfo.staffPrivilege') }}</span> | 96 | <span>{{ $t('staffDetailInfo.staffPrivilege') }}</span> |
| 99 | </div> | 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 | </el-tree> | 99 | </el-tree> |
| 106 | </el-card> | 100 | </el-card> |
| 107 | </el-col> | 101 | </el-col> |
| @@ -202,7 +196,7 @@ export default { | @@ -202,7 +196,7 @@ export default { | ||
| 202 | staffId: this.staffDetailInfo.staffId | 196 | staffId: this.staffDetailInfo.staffId |
| 203 | } | 197 | } |
| 204 | const res = await getStaffPrivileges(params) | 198 | const res = await getStaffPrivileges(params) |
| 205 | - if (res.data && res.data.length>0) { | 199 | + if (res.data && res.data.length > 0) { |
| 206 | this.privilegeTreeData = this.buildTreeData(res.data) | 200 | this.privilegeTreeData = this.buildTreeData(res.data) |
| 207 | } | 201 | } |
| 208 | } catch (error) { | 202 | } catch (error) { |
| @@ -211,7 +205,7 @@ export default { | @@ -211,7 +205,7 @@ export default { | ||
| 211 | }, | 205 | }, |
| 212 | buildTreeData(privileges) { | 206 | buildTreeData(privileges) { |
| 213 | const groupMap = {} | 207 | const groupMap = {} |
| 214 | - | 208 | + |
| 215 | privileges.forEach(item => { | 209 | privileges.forEach(item => { |
| 216 | if (!groupMap[item.gId]) { | 210 | if (!groupMap[item.gId]) { |
| 217 | groupMap[item.gId] = { | 211 | groupMap[item.gId] = { |
| @@ -221,10 +215,10 @@ export default { | @@ -221,10 +215,10 @@ export default { | ||
| 221 | children: [] | 215 | children: [] |
| 222 | } | 216 | } |
| 223 | } | 217 | } |
| 224 | - | 218 | + |
| 225 | const group = groupMap[item.gId] | 219 | const group = groupMap[item.gId] |
| 226 | const menuExists = group.children.some(menu => menu.mId === item.mId) | 220 | const menuExists = group.children.some(menu => menu.mId === item.mId) |
| 227 | - | 221 | + |
| 228 | if (!menuExists) { | 222 | if (!menuExists) { |
| 229 | group.children.push({ | 223 | group.children.push({ |
| 230 | id: `m_${item.mId}`, | 224 | id: `m_${item.mId}`, |
| @@ -233,7 +227,7 @@ export default { | @@ -233,7 +227,7 @@ export default { | ||
| 233 | children: [] | 227 | children: [] |
| 234 | }) | 228 | }) |
| 235 | } | 229 | } |
| 236 | - | 230 | + |
| 237 | const menu = group.children.find(menu => menu.mId === item.mId) | 231 | const menu = group.children.find(menu => menu.mId === item.mId) |
| 238 | menu.children.push({ | 232 | menu.children.push({ |
| 239 | id: `p_${item.pId}`, | 233 | id: `p_${item.pId}`, |
| @@ -241,7 +235,7 @@ export default { | @@ -241,7 +235,7 @@ export default { | ||
| 241 | text: item.pName | 235 | text: item.pName |
| 242 | }) | 236 | }) |
| 243 | }) | 237 | }) |
| 244 | - | 238 | + |
| 245 | return Object.values(groupMap) | 239 | return Object.values(groupMap) |
| 246 | } | 240 | } |
| 247 | } | 241 | } |
| @@ -251,22 +245,22 @@ export default { | @@ -251,22 +245,22 @@ export default { | ||
| 251 | <style lang="scss" scoped> | 245 | <style lang="scss" scoped> |
| 252 | .staff-detail-container { | 246 | .staff-detail-container { |
| 253 | padding: 20px; | 247 | padding: 20px; |
| 254 | - | 248 | + |
| 255 | .margin-top { | 249 | .margin-top { |
| 256 | margin-top: 20px; | 250 | margin-top: 20px; |
| 257 | } | 251 | } |
| 258 | - | 252 | + |
| 259 | .info-item { | 253 | .info-item { |
| 260 | margin-bottom: 15px; | 254 | margin-bottom: 15px; |
| 261 | 255 | ||
| 262 | - | 256 | + |
| 263 | label { | 257 | label { |
| 264 | display: block; | 258 | display: block; |
| 265 | color: #909399; | 259 | color: #909399; |
| 266 | margin-bottom: 5px; | 260 | margin-bottom: 5px; |
| 267 | } | 261 | } |
| 268 | } | 262 | } |
| 269 | - | 263 | + |
| 270 | .org-item { | 264 | .org-item { |
| 271 | padding: 5px 0; | 265 | padding: 5px 0; |
| 272 | } | 266 | } |
src/views/system/assetImportLogDetailList.vue
| @@ -16,7 +16,7 @@ | @@ -16,7 +16,7 @@ | ||
| 16 | </el-col> | 16 | </el-col> |
| 17 | <el-col :span="20"> | 17 | <el-col :span="20"> |
| 18 | <el-card> | 18 | <el-card> |
| 19 | - <div slot="header" class="clearfix"> | 19 | + <div slot="header" class="flex justify-between"> |
| 20 | <span>{{ $t('assetImportLogDetail.title') }}</span> | 20 | <span>{{ $t('assetImportLogDetail.title') }}</span> |
| 21 | <div class="ibox-tools" style="float: right;"> | 21 | <div class="ibox-tools" style="float: right;"> |
| 22 | <el-button type="primary" size="small" @click="queryAssetImportLogDetail()"> | 22 | <el-button type="primary" size="small" @click="queryAssetImportLogDetail()"> |
src/views/system/historyFeeDetailImportList.vue
| 1 | <template> | 1 | <template> |
| 2 | <div class="history-fee-detail-import-container"> | 2 | <div class="history-fee-detail-import-container"> |
| 3 | <el-card class="box-card"> | 3 | <el-card class="box-card"> |
| 4 | - <div slot="header" class="clearfix"> | 4 | + <div slot="header" class="flex justify-between"> |
| 5 | <span>{{ $t('historyFeeDetailImport.assetInfo') }}</span> | 5 | <span>{{ $t('historyFeeDetailImport.assetInfo') }}</span> |
| 6 | <div class="card-header-right"> | 6 | <div class="card-header-right"> |
| 7 | <el-button type="primary" size="small" @click="_openDownloadHcExcelTemplate"> | 7 | <el-button type="primary" size="small" @click="_openDownloadHcExcelTemplate"> |
| @@ -15,42 +15,29 @@ | @@ -15,42 +15,29 @@ | ||
| 15 | 15 | ||
| 16 | <el-row :gutter="20"> | 16 | <el-row :gutter="20"> |
| 17 | <el-col :span="24"> | 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 | <el-form-item :label="$t('historyFeeDetailImport.feeObject')"> | 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 | :placeholder="$t('historyFeeDetailImport.selectFeeObject')"> | 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 | </el-option> | 23 | </el-option> |
| 29 | - <el-option | ||
| 30 | - value="3333" | ||
| 31 | - :label="$t('historyFeeDetailImport.house')"> | 24 | + <el-option value="3333" :label="$t('historyFeeDetailImport.house')"> |
| 32 | </el-option> | 25 | </el-option> |
| 33 | - <el-option | ||
| 34 | - value="6666" | ||
| 35 | - :label="$t('historyFeeDetailImport.car')"> | 26 | + <el-option value="6666" :label="$t('historyFeeDetailImport.car')"> |
| 36 | </el-option> | 27 | </el-option> |
| 37 | </el-select> | 28 | </el-select> |
| 38 | </el-form-item> | 29 | </el-form-item> |
| 39 | 30 | ||
| 40 | <el-form-item :label="$t('historyFeeDetailImport.selectFile')"> | 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 | :show-file-list="false"> | 33 | :show-file-list="false"> |
| 47 | <el-button size="small" type="primary"> | 34 | <el-button size="small" type="primary"> |
| 48 | {{ $t('historyFeeDetailImport.clickUpload') }} | 35 | {{ $t('historyFeeDetailImport.clickUpload') }} |
| 49 | </el-button> | 36 | </el-button> |
| 50 | <div slot="tip" class="el-upload__tip"> | 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 | </div> | 41 | </div> |
| 55 | </el-upload> | 42 | </el-upload> |
| 56 | </el-form-item> | 43 | </el-form-item> |
| @@ -66,9 +53,7 @@ | @@ -66,9 +53,7 @@ | ||
| 66 | 53 | ||
| 67 | <el-row> | 54 | <el-row> |
| 68 | <el-col :span="24" class="text-right"> | 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 | :disabled="!historyFeeDetailImportInfo.excelTemplate || !historyFeeDetailImportInfo.objType"> | 57 | :disabled="!historyFeeDetailImportInfo.excelTemplate || !historyFeeDetailImportInfo.objType"> |
| 73 | {{ $t('historyFeeDetailImport.import') }} | 58 | {{ $t('historyFeeDetailImport.import') }} |
| 74 | </el-button> | 59 | </el-button> |
| @@ -115,8 +100,8 @@ export default { | @@ -115,8 +100,8 @@ export default { | ||
| 115 | param.append('uploadFile', this.historyFeeDetailImportInfo.excelTemplate) | 100 | param.append('uploadFile', this.historyFeeDetailImportInfo.excelTemplate) |
| 116 | param.append('communityId', this.historyFeeDetailImportInfo.communityId) | 101 | param.append('communityId', this.historyFeeDetailImportInfo.communityId) |
| 117 | param.append('objType', this.historyFeeDetailImportInfo.objType) | 102 | param.append('objType', this.historyFeeDetailImportInfo.objType) |
| 118 | - | ||
| 119 | - const _importAdapt = this.historyFeeDetailImportInfo.objType === '6666' ? | 103 | + |
| 104 | + const _importAdapt = this.historyFeeDetailImportInfo.objType === '6666' ? | ||
| 120 | 'importCarHistoryFeeDetail' : 'importRoomHistoryFeeDetail' | 105 | 'importCarHistoryFeeDetail' : 'importRoomHistoryFeeDetail' |
| 121 | param.append('importAdapt', _importAdapt) | 106 | param.append('importAdapt', _importAdapt) |
| 122 | 107 | ||
| @@ -126,7 +111,7 @@ export default { | @@ -126,7 +111,7 @@ export default { | ||
| 126 | this.$message.success(this.$t('historyFeeDetailImport.importSuccess')) | 111 | this.$message.success(this.$t('historyFeeDetailImport.importSuccess')) |
| 127 | this.historyFeeDetailImportInfo.excelTemplate = null | 112 | this.historyFeeDetailImportInfo.excelTemplate = null |
| 128 | this.$router.push({ | 113 | this.$router.push({ |
| 129 | - path: '/pages/property/assetImportLogDetail', | 114 | + path: '/views/system/assetImportLogDetail', |
| 130 | query: { | 115 | query: { |
| 131 | logId: res.data.logId, | 116 | logId: res.data.logId, |
| 132 | logType: _importAdapt | 117 | logType: _importAdapt |
src/views/system/operateDataLogList.vue
| 1 | <template> | 1 | <template> |
| 2 | <div class="operate-data-log-container"> | 2 | <div class="operate-data-log-container"> |
| 3 | <el-card class="search-card"> | 3 | <el-card class="search-card"> |
| 4 | - <div slot="header" class="clearfix"> | 4 | + <div slot="header" class="flex justify-between"> |
| 5 | <span>{{ $t('operateDataLog.search.title') }}</span> | 5 | <span>{{ $t('operateDataLog.search.title') }}</span> |
| 6 | <el-button type="text" style="float: right; padding: 3px 0" @click="_moreCondition"> | 6 | <el-button type="text" style="float: right; padding: 3px 0" @click="_moreCondition"> |
| 7 | {{ operateDataLogInfo.moreCondition ? $t('common.hide') : $t('common.more') }} | 7 | {{ operateDataLogInfo.moreCondition ? $t('common.hide') : $t('common.more') }} |
| @@ -82,7 +82,7 @@ | @@ -82,7 +82,7 @@ | ||
| 82 | </el-card> | 82 | </el-card> |
| 83 | 83 | ||
| 84 | <el-card class="table-card"> | 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 | <el-tab-pane label="费用项" name="feeConfigDetailHis"></el-tab-pane> | 86 | <el-tab-pane label="费用项" name="feeConfigDetailHis"></el-tab-pane> |
| 87 | <el-tab-pane label="费用" name="feeDetailHis"></el-tab-pane> | 87 | <el-tab-pane label="费用" name="feeDetailHis"></el-tab-pane> |
| 88 | <el-tab-pane label="业主" name="ownerDetailHis"></el-tab-pane> | 88 | <el-tab-pane label="业主" name="ownerDetailHis"></el-tab-pane> |
| @@ -91,7 +91,7 @@ | @@ -91,7 +91,7 @@ | ||
| 91 | <el-tab-pane label="合同" name="contractDetailChange"></el-tab-pane> | 91 | <el-tab-pane label="合同" name="contractDetailChange"></el-tab-pane> |
| 92 | </el-tabs> | 92 | </el-tabs> |
| 93 | 93 | ||
| 94 | - <component :is="currentComponent" ref="childComponent"></component> | 94 | + <component :is="currentComponent" :ref="currentComponent"></component> |
| 95 | </el-card> | 95 | </el-card> |
| 96 | </div> | 96 | </div> |
| 97 | </template> | 97 | </template> |
| @@ -152,13 +152,13 @@ export default { | @@ -152,13 +152,13 @@ export default { | ||
| 152 | this.communityId = getCommunityId() | 152 | this.communityId = getCommunityId() |
| 153 | }, | 153 | }, |
| 154 | methods: { | 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 | _queryDataMethod() { | 163 | _queryDataMethod() { |
| 164 | this.changeTab(this.operateDataLogInfo._currentTab) | 164 | this.changeTab(this.operateDataLogInfo._currentTab) |
src/views/system/smallWeChatManageList.vue
| 1 | <template> | 1 | <template> |
| 2 | <div class="small-wechat-manage-container"> | 2 | <div class="small-wechat-manage-container"> |
| 3 | <el-card class="box-card"> | 3 | <el-card class="box-card"> |
| 4 | - <div slot="header" class="clearfix"> | 4 | + <div slot="header" class="flex justify-between"> |
| 5 | <span>{{ $t('smallWeChatManage.title') }}</span> | 5 | <span>{{ $t('smallWeChatManage.title') }}</span> |
| 6 | <el-button v-if="smallWeChatManageInfo.smallWeChats.length === 0" type="primary" size="small" | 6 | <el-button v-if="smallWeChatManageInfo.smallWeChats.length === 0" type="primary" size="small" |
| 7 | class="float-right" @click="_openAddSmallWeChatModal(1000)"> | 7 | class="float-right" @click="_openAddSmallWeChatModal(1000)"> |