Commit 32722b0a47690cf5200b4af84259e7e4cea592eb
1 parent
27918d40
v1.9 优化办公和合同测试 部分页面优化
Showing
12 changed files
with
272 additions
and
151 deletions
src/api/system/workflowManageApi.js
| @@ -35,7 +35,7 @@ export function listWorkflowImage(params) { | @@ -35,7 +35,7 @@ export function listWorkflowImage(params) { | ||
| 35 | } | 35 | } |
| 36 | }).then(response => { | 36 | }).then(response => { |
| 37 | const res = response.data | 37 | const res = response.data |
| 38 | - if (res.code !== '0') { | 38 | + if (res.code != 0) { |
| 39 | reject(new Error(res.msg)) | 39 | reject(new Error(res.msg)) |
| 40 | return | 40 | return |
| 41 | } | 41 | } |
src/components/contract/ContractChangeMainBody.vue
| 1 | <template> | 1 | <template> |
| 2 | <el-card class="box-card"> | 2 | <el-card class="box-card"> |
| 3 | - <div slot="header" class="clearfix"> | 3 | + <div slot="header" class="flex justify-between"> |
| 4 | <span>{{ $t('contractChangeMainBody.title') }}</span> | 4 | <span>{{ $t('contractChangeMainBody.title') }}</span> |
| 5 | </div> | 5 | </div> |
| 6 | <el-form label-width="120px"> | 6 | <el-form label-width="120px"> |
src/i18n/contractI18n.js
| @@ -14,6 +14,7 @@ import { messages as contractApplyAuditOrdersMessages } from '../views/contract/ | @@ -14,6 +14,7 @@ import { messages as contractApplyAuditOrdersMessages } from '../views/contract/ | ||
| 14 | import { messages as contractChangeAuditOrdersMessages } from '../views/contract/contractChangeAuditOrdersLang.js' | 14 | import { messages as contractChangeAuditOrdersMessages } from '../views/contract/contractChangeAuditOrdersLang.js' |
| 15 | import { messages as contractApplyAuditHistoryOrdersMessages } from '../views/contract/contractApplyAuditHistoryOrdersLang' | 15 | import { messages as contractApplyAuditHistoryOrdersMessages } from '../views/contract/contractApplyAuditHistoryOrdersLang' |
| 16 | import { messages as contractChangeAuditHistoryOrdersMessages } from '../views/contract/contractChangeAuditHistoryOrdersLang' | 16 | import { messages as contractChangeAuditHistoryOrdersMessages } from '../views/contract/contractChangeAuditHistoryOrdersLang' |
| 17 | +import { messages as contractDetailChangeMessages } from '../views/contract/contractDetailChangeLang' | ||
| 17 | 18 | ||
| 18 | export const messages ={ | 19 | export const messages ={ |
| 19 | en:{ | 20 | en:{ |
| @@ -33,6 +34,7 @@ export const messages ={ | @@ -33,6 +34,7 @@ export const messages ={ | ||
| 33 | ...contractChangeAuditOrdersMessages.en, | 34 | ...contractChangeAuditOrdersMessages.en, |
| 34 | ...contractApplyAuditHistoryOrdersMessages.en, | 35 | ...contractApplyAuditHistoryOrdersMessages.en, |
| 35 | ...contractChangeAuditHistoryOrdersMessages.en, | 36 | ...contractChangeAuditHistoryOrdersMessages.en, |
| 37 | + ...contractDetailChangeMessages.en, | ||
| 36 | }, | 38 | }, |
| 37 | zh:{ | 39 | zh:{ |
| 38 | ...contractTypeManageMessages.zh, | 40 | ...contractTypeManageMessages.zh, |
| @@ -51,5 +53,6 @@ export const messages ={ | @@ -51,5 +53,6 @@ export const messages ={ | ||
| 51 | ...contractChangeAuditOrdersMessages.zh, | 53 | ...contractChangeAuditOrdersMessages.zh, |
| 52 | ...contractApplyAuditHistoryOrdersMessages.zh, | 54 | ...contractApplyAuditHistoryOrdersMessages.zh, |
| 53 | ...contractChangeAuditHistoryOrdersMessages.zh, | 55 | ...contractChangeAuditHistoryOrdersMessages.zh, |
| 56 | + ...contractDetailChangeMessages.zh, | ||
| 54 | } | 57 | } |
| 55 | } | 58 | } |
| 56 | \ No newline at end of file | 59 | \ No newline at end of file |
src/views/contract/contractDetail.vue
| @@ -243,7 +243,7 @@ export default { | @@ -243,7 +243,7 @@ export default { | ||
| 243 | }, | 243 | }, |
| 244 | _printContract() { | 244 | _printContract() { |
| 245 | const contract = this.contractDetailInfo | 245 | const contract = this.contractDetailInfo |
| 246 | - window.open(`/#/pages/admin/printContract?contractTypeId=${contract.contractType}&contractId=${contract.contractId}`) | 246 | + window.open(`/#/views/contract/printContract?contractTypeId=${contract.contractType}&contractId=${contract.contractId}`) |
| 247 | } | 247 | } |
| 248 | } | 248 | } |
| 249 | } | 249 | } |
src/views/contract/contractDetailChangeLang.js
| @@ -4,13 +4,19 @@ export const messages = { | @@ -4,13 +4,19 @@ export const messages = { | ||
| 4 | contractName: 'Contract Name', | 4 | contractName: 'Contract Name', |
| 5 | contractCode: 'Contract Code', | 5 | contractCode: 'Contract Code', |
| 6 | contractType: 'Contract Type', | 6 | contractType: 'Contract Type', |
| 7 | + contractTypeName: 'Contract Type', | ||
| 7 | partyA: 'Party A', | 8 | partyA: 'Party A', |
| 8 | partyB: 'Party B', | 9 | partyB: 'Party B', |
| 9 | changeType: 'Change Type', | 10 | changeType: 'Change Type', |
| 11 | + planTypeName: 'Change Type', | ||
| 10 | changePerson: 'Change Person', | 12 | changePerson: 'Change Person', |
| 13 | + changePersonName: 'Change Person', | ||
| 11 | applyTime: 'Apply Time', | 14 | applyTime: 'Apply Time', |
| 15 | + createTime: 'Create Time', | ||
| 12 | description: 'Description', | 16 | description: 'Description', |
| 17 | + remark: 'Description', | ||
| 13 | status: 'Status', | 18 | status: 'Status', |
| 19 | + stateName: 'Status', | ||
| 14 | operation: 'Operation', | 20 | operation: 'Operation', |
| 15 | detail: 'Detail' | 21 | detail: 'Detail' |
| 16 | } | 22 | } |
| @@ -20,13 +26,19 @@ export const messages = { | @@ -20,13 +26,19 @@ export const messages = { | ||
| 20 | contractName: '合同名称', | 26 | contractName: '合同名称', |
| 21 | contractCode: '合同编号', | 27 | contractCode: '合同编号', |
| 22 | contractType: '合同类型', | 28 | contractType: '合同类型', |
| 29 | + contractTypeName: '合同类型', | ||
| 23 | partyA: '甲方', | 30 | partyA: '甲方', |
| 24 | partyB: '乙方', | 31 | partyB: '乙方', |
| 25 | changeType: '变更类型', | 32 | changeType: '变更类型', |
| 33 | + planTypeName: '变更类型', | ||
| 26 | changePerson: '变更人', | 34 | changePerson: '变更人', |
| 35 | + changePersonName: '变更人', | ||
| 27 | applyTime: '申请时间', | 36 | applyTime: '申请时间', |
| 37 | + createTime: '申请时间', | ||
| 28 | description: '说明', | 38 | description: '说明', |
| 39 | + remark: '说明', | ||
| 29 | status: '状态', | 40 | status: '状态', |
| 41 | + stateName: '状态', | ||
| 30 | operation: '操作', | 42 | operation: '操作', |
| 31 | detail: '明细' | 43 | detail: '明细' |
| 32 | } | 44 | } |
src/views/contract/expirationContractManageList.vue
| @@ -156,7 +156,7 @@ export default { | @@ -156,7 +156,7 @@ export default { | ||
| 156 | }, | 156 | }, |
| 157 | handleRenew(row) { | 157 | handleRenew(row) { |
| 158 | this.$router.push({ | 158 | this.$router.push({ |
| 159 | - path: '/pages/admin/addContract', | 159 | + path: '/views/contract/addContract', |
| 160 | query: { | 160 | query: { |
| 161 | contractId: row.contractId, | 161 | contractId: row.contractId, |
| 162 | contractCode: row.contractCode, | 162 | contractCode: row.contractCode, |
src/views/oa/editExamineStaffList.vue
| @@ -171,10 +171,11 @@ export default { | @@ -171,10 +171,11 @@ export default { | ||
| 171 | this.editExamineStaffInfo.projectIds = data[0].projects.map(item => item.projectId) | 171 | this.editExamineStaffInfo.projectIds = data[0].projects.map(item => item.projectId) |
| 172 | 172 | ||
| 173 | if (this.editExamineStaffInfo.headerImg) { | 173 | if (this.editExamineStaffInfo.headerImg) { |
| 174 | - this.$refs.uploadImage.open([this.editExamineStaffInfo.headerImg]) | 174 | + this.$refs.uploadImage.setImages([this.editExamineStaffInfo.headerImg]) |
| 175 | } | 175 | } |
| 176 | } | 176 | } |
| 177 | } catch (error) { | 177 | } catch (error) { |
| 178 | + console.error('请求失败:', error) | ||
| 178 | this.$message.error(this.$t('editExamineStaff.fetchStaffError')) | 179 | this.$message.error(this.$t('editExamineStaff.fetchStaffError')) |
| 179 | } | 180 | } |
| 180 | }, | 181 | }, |
src/views/oa/printOwnerVotingList.vue
| 1 | <template> | 1 | <template> |
| 2 | <div class="print-owner-voting-container"> | 2 | <div class="print-owner-voting-container"> |
| 3 | - <el-row> | ||
| 4 | - <el-col :span="24"> | ||
| 5 | - <div class="text-center"> | ||
| 6 | - <h1>{{ printOwnerVotingInfo.qaName }}</h1> | ||
| 7 | - </div> | ||
| 8 | - </el-col> | ||
| 9 | - </el-row> | ||
| 10 | - | ||
| 11 | - <el-row> | ||
| 12 | - <el-col :span="24"> | ||
| 13 | - <div v-html="printOwnerVotingInfo.content"></div> | ||
| 14 | - </el-col> | ||
| 15 | - </el-row> | ||
| 16 | - | ||
| 17 | - <el-row> | ||
| 18 | - <el-col :span="24"> | ||
| 19 | - <table class="table vc-table-border margin-top" style="color:#000;font-size:14px"> | ||
| 20 | - <thead> | ||
| 21 | - <tr> | ||
| 22 | - <th class="text-center" width="200px"> | ||
| 23 | - <div style="max-width: 200px;"> | ||
| 24 | - {{ $t('printOwnerVoting.room') }} | ||
| 25 | - </div> | ||
| 26 | - </th> | ||
| 27 | - <th v-for="(item, index) in printOwnerVotingInfo.titleValues" :key="index" scope="col" | ||
| 28 | - class="text-center"> | ||
| 29 | - {{ item.qaValue }} | ||
| 30 | - </th> | ||
| 31 | - <th width="200px" class="text-center"> | ||
| 32 | - <div style="max-width: 200px;"> | ||
| 33 | - {{ $t('printOwnerVoting.room') }} | ||
| 34 | - </div> | ||
| 35 | - </th> | ||
| 36 | - <th v-for="(item, index) in printOwnerVotingInfo.titleValues" :key="index" scope="col" | ||
| 37 | - class="text-center"> | ||
| 38 | - {{ item.qaValue }} | ||
| 39 | - </th> | ||
| 40 | - </tr> | ||
| 41 | - </thead> | ||
| 42 | - <tbody> | ||
| 43 | - <template v-for="(vote, index) in printOwnerVotingInfo.userVotes"> | ||
| 44 | - <tr :key="index" class="vc-table-border" v-if="index % 2 == 0"> | ||
| 45 | - <td class="text-center"> | ||
| 46 | - <div style="max-width: 200px;">{{ vote.roomName }}</div> | ||
| 47 | - </td> | ||
| 48 | - <td v-for="(item, tIndex) in printOwnerVotingInfo.titleValues" :key="tIndex" class="text-center"> | ||
| 49 | - {{ vote[item.qaValue] }} | ||
| 50 | - </td> | ||
| 51 | - <td class="text-center"> | ||
| 52 | - <div style="max-width: 200px;" v-if="printOwnerVotingInfo.userVotes.length > index"> | ||
| 53 | - {{ printOwnerVotingInfo.userVotes[index + 1].roomName }} | ||
| 54 | - </div> | ||
| 55 | - </td> | ||
| 56 | - <td v-for="(item, tIndex) in printOwnerVotingInfo.titleValues" :key="tIndex" class="text-center"> | ||
| 57 | - <div v-if="printOwnerVotingInfo.userVotes.length > index"> | ||
| 58 | - {{ printOwnerVotingInfo.userVotes[index + 1][item.qaValue] }} | ||
| 59 | - </div> | ||
| 60 | - </td> | ||
| 61 | - </tr> | ||
| 62 | - </template> | ||
| 63 | - </tbody> | ||
| 64 | - </table> | ||
| 65 | - </el-col> | ||
| 66 | - </el-row> | ||
| 67 | - | ||
| 68 | - <el-row> | ||
| 69 | - <el-col :span="24"> | ||
| 70 | - <span>{{ $t('printOwnerVoting.totalVotes') }}:{{ printOwnerVotingInfo.voteCount }}</span>; | ||
| 71 | - <span>{{ $t('printOwnerVoting.votedCount') }}:{{ printOwnerVotingInfo.votedCount }}</span>; | ||
| 72 | - <span v-for="(item, tIndex) in printOwnerVotingInfo.titleValues" :key="tIndex"> | ||
| 73 | - {{ item.qaValue }}: {{ item.personCount }}{{ $t('printOwnerVoting.person') }}; | ||
| 74 | - </span> | ||
| 75 | - </el-col> | ||
| 76 | - </el-row> | ||
| 77 | - | ||
| 78 | - <el-row> | ||
| 79 | - <el-col :span="24" class="text-right margin-top margin-right"> | ||
| 80 | - {{ currentCommunity.name }} | ||
| 81 | - </el-col> | ||
| 82 | - </el-row> | ||
| 83 | - | ||
| 84 | - <el-row> | ||
| 85 | - <el-col :span="24" class="text-right margin-top-sm margin-right"> | ||
| 86 | - {{ formatDate(new Date()) }} | ||
| 87 | - </el-col> | ||
| 88 | - </el-row> | ||
| 89 | - | ||
| 90 | - <el-row id="print-btn"> | ||
| 91 | - <el-col :span="24" class="text-right"> | ||
| 92 | - <el-button type="primary" @click="_printPurchaseApplyDiv"> | ||
| 93 | - <i class="el-icon-printer"></i> {{ $t('common.print') }} | ||
| 94 | - </el-button> | ||
| 95 | - <el-button type="warning" style="margin-right:20px;" @click="_closePage"> | ||
| 96 | - {{ $t('common.cancel') }} | ||
| 97 | - </el-button> | ||
| 98 | - </el-col> | ||
| 99 | - </el-row> | 3 | + <div class="text-center"> |
| 4 | + <h1>{{ printOwnerVotingInfo.qaName }}</h1> | ||
| 5 | + </div> | ||
| 100 | 6 | ||
| 7 | + <div class="text-left"> | ||
| 8 | + <div v-html="printOwnerVotingInfo.content"></div> | ||
| 9 | + </div> | ||
| 10 | + | ||
| 11 | + <div> | ||
| 12 | + <table class="table vc-table-border margin-top" style="color:#000;font-size:14px;width: 100%;"> | ||
| 13 | + <thead> | ||
| 14 | + <tr> | ||
| 15 | + <th class="text-center" > | ||
| 16 | + <div class="text-left"> | ||
| 17 | + {{ $t('printOwnerVoting.room') }} | ||
| 18 | + </div> | ||
| 19 | + </th> | ||
| 20 | + <th | ||
| 21 | + v-for="(item, index) in printOwnerVotingInfo.titleValues" | ||
| 22 | + :key="'head-left-' + index" | ||
| 23 | + scope="col" | ||
| 24 | + class="text-center" | ||
| 25 | + > | ||
| 26 | + {{ item.qaValue }} | ||
| 27 | + </th> | ||
| 28 | + <th class="text-center "> | ||
| 29 | + <div class="text-left"> | ||
| 30 | + {{ $t('printOwnerVoting.room') }} | ||
| 31 | + </div> | ||
| 32 | + </th> | ||
| 33 | + <th | ||
| 34 | + v-for="(item, index) in printOwnerVotingInfo.titleValues" | ||
| 35 | + :key="'head-right-' + index" | ||
| 36 | + scope="col" | ||
| 37 | + class="text-center" | ||
| 38 | + > | ||
| 39 | + {{ item.qaValue }} | ||
| 40 | + </th> | ||
| 41 | + </tr> | ||
| 42 | + </thead> | ||
| 43 | + <tbody> | ||
| 44 | + <tr | ||
| 45 | + v-for="(pair, index) in pairedVotes" | ||
| 46 | + :key="'row-' + index" | ||
| 47 | + class="vc-table-border" | ||
| 48 | + > | ||
| 49 | + <td class="text-center"> | ||
| 50 | + <div style="max-width: 200px;">{{ pair.left ? pair.left.roomName : '' }}</div> | ||
| 51 | + </td> | ||
| 52 | + <td | ||
| 53 | + v-for="(item, tIndex) in printOwnerVotingInfo.titleValues" | ||
| 54 | + :key="'left-' + index + '-' + tIndex" | ||
| 55 | + class="text-center" | ||
| 56 | + > | ||
| 57 | + {{ pair.left ? pair.left[item.qaValue] : '' }} | ||
| 58 | + </td> | ||
| 59 | + <td class="text-center"> | ||
| 60 | + <div style="max-width: 200px;"> | ||
| 61 | + {{ pair.right ? pair.right.roomName : '' }} | ||
| 62 | + </div> | ||
| 63 | + </td> | ||
| 64 | + <td | ||
| 65 | + v-for="(item, tIndex) in printOwnerVotingInfo.titleValues" | ||
| 66 | + :key="'right-' + index + '-' + tIndex" | ||
| 67 | + class="text-center" | ||
| 68 | + > | ||
| 69 | + <div v-if="pair.right"> | ||
| 70 | + {{ pair.right[item.qaValue] }} | ||
| 71 | + </div> | ||
| 72 | + </td> | ||
| 73 | + </tr> | ||
| 74 | + </tbody> | ||
| 75 | + </table> | ||
| 76 | + </div> | ||
| 77 | + | ||
| 78 | + <div class="summary text-left"> | ||
| 79 | + <span>{{ $t('printOwnerVoting.totalVotes') }}:{{ printOwnerVotingInfo.voteCount }}</span>; | ||
| 80 | + <span>{{ $t('printOwnerVoting.votedCount') }}:{{ printOwnerVotingInfo.votedCount }}</span>; | ||
| 81 | + <span v-for="(item, tIndex) in printOwnerVotingInfo.titleValues" :key="'summary-' + tIndex"> | ||
| 82 | + {{ item.qaValue }}: {{ item.personCount }}{{ $t('printOwnerVoting.person') }}; | ||
| 83 | + </span> | ||
| 84 | + </div> | ||
| 85 | + | ||
| 86 | + <div class="text-right margin-top margin-right"> | ||
| 87 | + {{ currentCommunity.name }} | ||
| 88 | + </div> | ||
| 89 | + | ||
| 90 | + <div class="text-right margin-top-sm margin-right"> | ||
| 91 | + {{ formatDate(new Date()) }} | ||
| 92 | + </div> | ||
| 93 | + | ||
| 94 | + <div id="print-btn" class="actions text-right"> | ||
| 95 | + | ||
| 96 | + <button type="button" class="btn btn-warning float-right" style="margin-right:20px;" @click="_closePage"> | ||
| 97 | + {{ $t('common.cancel') }} | ||
| 98 | + </button> | ||
| 99 | + <button class="btn btn-primary float-right" type="button" @click="_printPurchaseApplyDiv"> | ||
| 100 | + <i class="fa fa-check"></i> {{ $t('common.print') }} | ||
| 101 | + </button> | ||
| 102 | + </div> | ||
| 101 | </div> | 103 | </div> |
| 102 | </template> | 104 | </template> |
| 103 | 105 | ||
| @@ -124,6 +126,19 @@ export default { | @@ -124,6 +126,19 @@ export default { | ||
| 124 | } | 126 | } |
| 125 | } | 127 | } |
| 126 | }, | 128 | }, |
| 129 | + computed: { | ||
| 130 | + pairedVotes() { | ||
| 131 | + const votes = this.printOwnerVotingInfo.userVotes || [] | ||
| 132 | + const result = [] | ||
| 133 | + for (let i = 0; i < votes.length; i += 2) { | ||
| 134 | + result.push({ | ||
| 135 | + left: votes[i] || null, | ||
| 136 | + right: votes[i + 1] || null | ||
| 137 | + }) | ||
| 138 | + } | ||
| 139 | + return result | ||
| 140 | + } | ||
| 141 | + }, | ||
| 127 | created() { | 142 | created() { |
| 128 | this.printOwnerVotingInfo.qaId = this.$route.query.qaId | 143 | this.printOwnerVotingInfo.qaId = this.$route.query.qaId |
| 129 | this.currentCommunity.communityId = getCommunityId() | 144 | this.currentCommunity.communityId = getCommunityId() |
| @@ -139,7 +154,8 @@ export default { | @@ -139,7 +154,8 @@ export default { | ||
| 139 | qaId: this.printOwnerVotingInfo.qaId | 154 | qaId: this.printOwnerVotingInfo.qaId |
| 140 | } | 155 | } |
| 141 | const { data } = await listOwnerVote(params) | 156 | const { data } = await listOwnerVote(params) |
| 142 | - this.printOwnerVotingInfo = data[0] | 157 | + //this.printOwnerVotingInfo = data[0] |
| 158 | + Object.assign(this.printOwnerVotingInfo, data[0]) | ||
| 143 | this._listValues() | 159 | this._listValues() |
| 144 | } catch (error) { | 160 | } catch (error) { |
| 145 | console.error('请求失败:', error) | 161 | console.error('请求失败:', error) |
| @@ -155,6 +171,7 @@ export default { | @@ -155,6 +171,7 @@ export default { | ||
| 155 | } | 171 | } |
| 156 | const { data } = await listUserQuestionAnswer(params) | 172 | const { data } = await listUserQuestionAnswer(params) |
| 157 | const _titleValues = this.printOwnerVotingInfo.titleValues | 173 | const _titleValues = this.printOwnerVotingInfo.titleValues |
| 174 | + console.log(data, '_titleValues', _titleValues) | ||
| 158 | data.forEach(_value => { | 175 | data.forEach(_value => { |
| 159 | _titleValues.forEach(_title => { | 176 | _titleValues.forEach(_title => { |
| 160 | _value[_title.qaValue] = '' | 177 | _value[_title.qaValue] = '' |
| @@ -196,6 +213,35 @@ export default { | @@ -196,6 +213,35 @@ export default { | ||
| 196 | .print-owner-voting-container { | 213 | .print-owner-voting-container { |
| 197 | padding: 20px; | 214 | padding: 20px; |
| 198 | 215 | ||
| 216 | + .btn { | ||
| 217 | + display: inline-flex; | ||
| 218 | + align-items: center; | ||
| 219 | + justify-content: center; | ||
| 220 | + padding: 6px 15px; | ||
| 221 | + border-radius: 4px; | ||
| 222 | + border: 1px solid transparent; | ||
| 223 | + cursor: pointer; | ||
| 224 | + font-size: 14px; | ||
| 225 | + line-height: 1.5; | ||
| 226 | + transition: all 0.2s; | ||
| 227 | + } | ||
| 228 | + | ||
| 229 | + .btn-primary { | ||
| 230 | + background-color: #409eff; | ||
| 231 | + border-color: #409eff; | ||
| 232 | + color: #fff; | ||
| 233 | + } | ||
| 234 | + | ||
| 235 | + .btn-warning { | ||
| 236 | + background-color: #e6a23c; | ||
| 237 | + border-color: #e6a23c; | ||
| 238 | + color: #fff; | ||
| 239 | + } | ||
| 240 | + | ||
| 241 | + .btn:hover { | ||
| 242 | + opacity: 0.85; | ||
| 243 | + } | ||
| 244 | + | ||
| 199 | .margin-top { | 245 | .margin-top { |
| 200 | margin-top: 20px; | 246 | margin-top: 20px; |
| 201 | } | 247 | } |
| @@ -217,12 +263,12 @@ export default { | @@ -217,12 +263,12 @@ export default { | ||
| 217 | } | 263 | } |
| 218 | 264 | ||
| 219 | .vc-table-border { | 265 | .vc-table-border { |
| 220 | - border: 1px solid #ebeef5; | 266 | + border: 1px solid #000000; |
| 221 | border-collapse: collapse; | 267 | border-collapse: collapse; |
| 222 | 268 | ||
| 223 | th, | 269 | th, |
| 224 | td { | 270 | td { |
| 225 | - border: 1px solid #ebeef5; | 271 | + border: 1px solid #000000; |
| 226 | padding: 8px; | 272 | padding: 8px; |
| 227 | } | 273 | } |
| 228 | } | 274 | } |
src/views/oa/visitManageList.vue
| @@ -242,7 +242,7 @@ export default { | @@ -242,7 +242,7 @@ export default { | ||
| 242 | row: 100, | 242 | row: 100, |
| 243 | communityId: this.communityId | 243 | communityId: this.communityId |
| 244 | }) | 244 | }) |
| 245 | - this.visitTypeList = [{ name: this.$t('visitManage.visitType'), typeId: '' }, ...data] | 245 | + this.visitTypeList = [{ name: this.$t('common.all'), typeId: '' }, ...data] |
| 246 | } catch (error) { | 246 | } catch (error) { |
| 247 | console.error('获取访客类型失败:', error) | 247 | console.error('获取访客类型失败:', error) |
| 248 | } | 248 | } |
| @@ -305,7 +305,6 @@ export default { | @@ -305,7 +305,6 @@ export default { | ||
| 305 | padding: 10px; | 305 | padding: 10px; |
| 306 | cursor: pointer; | 306 | cursor: pointer; |
| 307 | text-align: center; | 307 | text-align: center; |
| 308 | - border-bottom: 1px solid #eee; | ||
| 309 | transition: all 0.3s; | 308 | transition: all 0.3s; |
| 310 | 309 | ||
| 311 | &:hover { | 310 | &:hover { |
src/views/system/operateDataLogLang.js
| @@ -69,20 +69,7 @@ export const messages = { | @@ -69,20 +69,7 @@ export const messages = { | ||
| 69 | modifyOld: 'modify(old)' | 69 | modifyOld: 'modify(old)' |
| 70 | }, | 70 | }, |
| 71 | 71 | ||
| 72 | - contractDetailChange: { | ||
| 73 | - contractName: 'contract name', | ||
| 74 | - contractCode: 'contract code', | ||
| 75 | - contractTypeName: 'contract type', | ||
| 76 | - partyA: 'party A', | ||
| 77 | - partyB: 'party B', | ||
| 78 | - planTypeName: 'change type', | ||
| 79 | - changePersonName: 'change person', | ||
| 80 | - createTime: 'create time', | ||
| 81 | - remark: 'remark', | ||
| 82 | - stateName: 'state', | ||
| 83 | - operation: 'operation', | ||
| 84 | - detail: 'detail' | ||
| 85 | - } | 72 | + |
| 86 | }, | 73 | }, |
| 87 | zh: { | 74 | zh: { |
| 88 | operateDataLog: { | 75 | operateDataLog: { |
| @@ -154,19 +141,6 @@ export const messages = { | @@ -154,19 +141,6 @@ export const messages = { | ||
| 154 | modifyOld: '修改(旧)' | 141 | modifyOld: '修改(旧)' |
| 155 | }, | 142 | }, |
| 156 | 143 | ||
| 157 | - contractDetailChange: { | ||
| 158 | - contractName: '合同名称', | ||
| 159 | - contractCode: '合同编号', | ||
| 160 | - contractTypeName: '合同类型', | ||
| 161 | - partyA: '甲方', | ||
| 162 | - partyB: '乙方', | ||
| 163 | - planTypeName: '变更类型', | ||
| 164 | - changePersonName: '变更人', | ||
| 165 | - createTime: '申请时间', | ||
| 166 | - remark: '说明', | ||
| 167 | - stateName: '状态', | ||
| 168 | - operation: '操作', | ||
| 169 | - detail: '明细' | ||
| 170 | - } | 144 | + |
| 171 | }, | 145 | }, |
| 172 | } | 146 | } |
| 173 | \ No newline at end of file | 147 | \ No newline at end of file |
src/views/system/workflowManageList.vue
| @@ -162,6 +162,7 @@ export default { | @@ -162,6 +162,7 @@ export default { | ||
| 162 | url: 'data:image/png;base64,' + data | 162 | url: 'data:image/png;base64,' + data |
| 163 | }) | 163 | }) |
| 164 | } catch (error) { | 164 | } catch (error) { |
| 165 | + console.error('获取流程图片失败:', error) | ||
| 165 | this.$message.error(this.$t('workflowManage.imageError')) | 166 | this.$message.error(this.$t('workflowManage.imageError')) |
| 166 | } | 167 | } |
| 167 | }, | 168 | }, |
src/views/system/workflowSettingManageList.vue
| @@ -26,7 +26,7 @@ | @@ -26,7 +26,7 @@ | ||
| 26 | </el-form-item> | 26 | </el-form-item> |
| 27 | 27 | ||
| 28 | <el-form-item :label="$t('workflowSettingManage.flowSteps')"> | 28 | <el-form-item :label="$t('workflowSettingManage.flowSteps')"> |
| 29 | - <div class="step-actions"> | 29 | + <div class="step-actions margin-bottom"> |
| 30 | <el-button type="primary" @click="addWorkflowStep"> | 30 | <el-button type="primary" @click="addWorkflowStep"> |
| 31 | {{ $t('workflowSettingManage.addStep') }} | 31 | {{ $t('workflowSettingManage.addStep') }} |
| 32 | </el-button> | 32 | </el-button> |
| @@ -40,12 +40,28 @@ | @@ -40,12 +40,28 @@ | ||
| 40 | {{ item.staffId ? item.staffName : $t('workflowSettingManage.selectStaff') }} | 40 | {{ item.staffId ? item.staffName : $t('workflowSettingManage.selectStaff') }} |
| 41 | </el-button> | 41 | </el-button> |
| 42 | 42 | ||
| 43 | - <el-radio-group v-model="item.type" @change="chooseType(item)"> | ||
| 44 | - <el-radio :label="2">{{ $t('workflowSettingManage.normalFlow') }}</el-radio> | ||
| 45 | - <el-radio v-if="index !== 0" :label="1"> | ||
| 46 | - {{ $t('workflowSettingManage.countersign') }} | ||
| 47 | - </el-radio> | ||
| 48 | - </el-radio-group> | 43 | + <div class="radio-group"> |
| 44 | + <label class="radio-item"> | ||
| 45 | + <input | ||
| 46 | + type="radio" | ||
| 47 | + :name="`step-type-${index}`" | ||
| 48 | + value="2" | ||
| 49 | + v-model="item.type" | ||
| 50 | + @change="chooseType(item)" | ||
| 51 | + /> | ||
| 52 | + <span>{{ $t('workflowSettingManage.normalFlow') }}</span> | ||
| 53 | + </label> | ||
| 54 | + <label class="radio-item" v-if="index !== 0"> | ||
| 55 | + <input | ||
| 56 | + type="radio" | ||
| 57 | + :name="`step-type-${index}`" | ||
| 58 | + value="1" | ||
| 59 | + v-model="item.type" | ||
| 60 | + @change="chooseType(item)" | ||
| 61 | + /> | ||
| 62 | + <span>{{ $t('workflowSettingManage.countersign') }}</span> | ||
| 63 | + </label> | ||
| 64 | + </div> | ||
| 49 | 65 | ||
| 50 | <el-button type="text" @click="deleteStep(item)"> | 66 | <el-button type="text" @click="deleteStep(item)"> |
| 51 | {{ $t('workflowSettingManage.deleteStep') }} | 67 | {{ $t('workflowSettingManage.deleteStep') }} |
| @@ -98,7 +114,7 @@ | @@ -98,7 +114,7 @@ | ||
| 98 | </el-col> | 114 | </el-col> |
| 99 | </el-row> | 115 | </el-row> |
| 100 | 116 | ||
| 101 | - <select-staff ref="selectStaff" @selectStaffs="handleStaffSelected"/> | 117 | + <select-staff ref="selectStaff" @selectStaff="handleStaffSelected"/> |
| 102 | </div> | 118 | </div> |
| 103 | </template> | 119 | </template> |
| 104 | 120 | ||
| @@ -125,7 +141,8 @@ export default { | @@ -125,7 +141,8 @@ export default { | ||
| 125 | describle: '', | 141 | describle: '', |
| 126 | startNodeFinish: 'Y', | 142 | startNodeFinish: 'Y', |
| 127 | steps: [] | 143 | steps: [] |
| 128 | - } | 144 | + }, |
| 145 | + currentSelectTarget: null | ||
| 129 | } | 146 | } |
| 130 | }, | 147 | }, |
| 131 | created() { | 148 | created() { |
| @@ -133,6 +150,10 @@ export default { | @@ -133,6 +150,10 @@ export default { | ||
| 133 | this._initWorkflowSettingInfo() | 150 | this._initWorkflowSettingInfo() |
| 134 | }, | 151 | }, |
| 135 | methods: { | 152 | methods: { |
| 153 | + generateId() { | ||
| 154 | + return `id-${Date.now()}-${Math.random().toString(36).substr(2, 6)}` | ||
| 155 | + }, | ||
| 156 | + | ||
| 136 | async _initWorkflowSettingInfo() { | 157 | async _initWorkflowSettingInfo() { |
| 137 | const flowId = this.$route.query.flowId | 158 | const flowId = this.$route.query.flowId |
| 138 | 159 | ||
| @@ -159,8 +180,39 @@ export default { | @@ -159,8 +180,39 @@ export default { | ||
| 159 | }, | 180 | }, |
| 160 | 181 | ||
| 161 | _freshResStep(data) { | 182 | _freshResStep(data) { |
| 162 | - // 处理步骤数据的逻辑 | ||
| 163 | - console.log(data) | 183 | + if (!data) { |
| 184 | + this.workflowSettingInfo.steps = [] | ||
| 185 | + return | ||
| 186 | + } | ||
| 187 | + | ||
| 188 | + this.workflowSettingInfo.describle = data.describle || '' | ||
| 189 | + if (data.startNodeFinish) { | ||
| 190 | + this.workflowSettingInfo.startNodeFinish = data.startNodeFinish | ||
| 191 | + } | ||
| 192 | + | ||
| 193 | + const workflowSteps = Array.isArray(data.workflowSteps) ? data.workflowSteps : [] | ||
| 194 | + const steps = workflowSteps.map((step, index) => { | ||
| 195 | + const staffList = Array.isArray(step.workflowStepStaffs) ? step.workflowStepStaffs : [] | ||
| 196 | + const mainStaff = staffList[0] || {} | ||
| 197 | + | ||
| 198 | + const subStaff = staffList.slice(1).map(staff => ({ | ||
| 199 | + id: staff.id || this.generateId(), | ||
| 200 | + staffId: staff.staffId || staff.userId || '', | ||
| 201 | + staffName: staff.staffName || staff.userName || staff.name || '', | ||
| 202 | + staffRole: staff.staffRole || '' | ||
| 203 | + })) | ||
| 204 | + | ||
| 205 | + return { | ||
| 206 | + seq: index, | ||
| 207 | + staffId: mainStaff.staffId || mainStaff.userId || '', | ||
| 208 | + staffName: mainStaff.staffName || mainStaff.userName || mainStaff.name || '', | ||
| 209 | + staffRole: mainStaff.staffRole || '', | ||
| 210 | + type: String(step.type || '2'), | ||
| 211 | + subStaff | ||
| 212 | + } | ||
| 213 | + }) | ||
| 214 | + | ||
| 215 | + this.workflowSettingInfo.steps = steps | ||
| 164 | }, | 216 | }, |
| 165 | 217 | ||
| 166 | addWorkflowStep() { | 218 | addWorkflowStep() { |
| @@ -176,11 +228,19 @@ export default { | @@ -176,11 +228,19 @@ export default { | ||
| 176 | 228 | ||
| 177 | chooseStaff(item) { | 229 | chooseStaff(item) { |
| 178 | item.from = this._getStaffFromType() | 230 | item.from = this._getStaffFromType() |
| 179 | - this.$refs.selectStaff.open(item) | 231 | + this.currentSelectTarget = item |
| 232 | + this.$refs.selectStaff.open() | ||
| 180 | }, | 233 | }, |
| 181 | 234 | ||
| 182 | _getStaffFromType() { | 235 | _getStaffFromType() { |
| 183 | - // 根据flowType返回对应的from值 | 236 | + const type = this.workflowSettingInfo.flowType |
| 237 | + if (['30003', '40004', '70007', '80008'].includes(type)) { | ||
| 238 | + return 'purchase' | ||
| 239 | + } | ||
| 240 | + if (['50005', '60006'].includes(type)) { | ||
| 241 | + return 'contract' | ||
| 242 | + } | ||
| 243 | + return '' | ||
| 184 | }, | 244 | }, |
| 185 | 245 | ||
| 186 | _goBack() { | 246 | _goBack() { |
| @@ -195,7 +255,7 @@ export default { | @@ -195,7 +255,7 @@ export default { | ||
| 195 | 255 | ||
| 196 | addStaff(step) { | 256 | addStaff(step) { |
| 197 | step.subStaff.push({ | 257 | step.subStaff.push({ |
| 198 | - id: this.$uuid(), | 258 | + id: this.generateId(), |
| 199 | staffId: '', | 259 | staffId: '', |
| 200 | staffName: '', | 260 | staffName: '', |
| 201 | staffRole: '1001' | 261 | staffRole: '1001' |
| @@ -212,8 +272,17 @@ export default { | @@ -212,8 +272,17 @@ export default { | ||
| 212 | } | 272 | } |
| 213 | }, | 273 | }, |
| 214 | 274 | ||
| 215 | - handleStaffSelected(staffs) { | ||
| 216 | - console.log(staffs) | 275 | + handleStaffSelected(staff) { |
| 276 | + if (!this.currentSelectTarget) { | ||
| 277 | + return | ||
| 278 | + } | ||
| 279 | + const target = this.currentSelectTarget | ||
| 280 | + this.$set(target, 'staffId', staff.staffId || staff.userId || '') | ||
| 281 | + this.$set(target, 'staffName', staff.staffName || staff.userName || staff.name || '') | ||
| 282 | + if (staff.staffRole) { | ||
| 283 | + this.$set(target, 'staffRole', staff.staffRole) | ||
| 284 | + } | ||
| 285 | + this.currentSelectTarget = null | ||
| 217 | }, | 286 | }, |
| 218 | 287 | ||
| 219 | async saveWorkflowSettingInfo() { | 288 | async saveWorkflowSettingInfo() { |
| @@ -250,6 +319,22 @@ export default { | @@ -250,6 +319,22 @@ export default { | ||
| 250 | >* { | 319 | >* { |
| 251 | margin-right: 15px; | 320 | margin-right: 15px; |
| 252 | } | 321 | } |
| 322 | + | ||
| 323 | + .radio-group { | ||
| 324 | + display: inline-flex; | ||
| 325 | + align-items: center; | ||
| 326 | + margin-right: 15px; | ||
| 327 | + | ||
| 328 | + .radio-item { | ||
| 329 | + display: inline-flex; | ||
| 330 | + align-items: center; | ||
| 331 | + margin-right: 12px; | ||
| 332 | + | ||
| 333 | + input { | ||
| 334 | + margin-right: 4px; | ||
| 335 | + } | ||
| 336 | + } | ||
| 337 | + } | ||
| 253 | } | 338 | } |
| 254 | 339 | ||
| 255 | .sub-staff-item { | 340 | .sub-staff-item { |