Commit 27dcfde5732b936778708bce65731ee5d4042e24

Authored by wuxw
1 parent c104a84f

系统全面测试完成

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 &#39;@/api/inspection/inspectionPlanApi&#39; @@ -42,7 +42,7 @@ import { listStaffsByOrgId } from &#39;@/api/inspection/inspectionPlanApi&#39;
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 &#39;../views/system/workflowMana @@ -10,6 +10,7 @@ import { messages as workflowManageMessages } from &#39;../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 &#39;@/api/scm/communityIntegralApi&#39; @@ -65,13 +68,15 @@ import { queryCommunityIntegral } from &#39;@/api/scm/communityIntegralApi&#39;
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 &#39;@/api/scm/goldApi&#39; @@ -82,13 +81,15 @@ import { getPropertyGoldInfo } from &#39;@/api/scm/goldApi&#39;
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)">