Commit 32722b0a47690cf5200b4af84259e7e4cea592eb
1 parent
27918d40
v1.9 优化办公和合同测试 部分页面优化
Showing
12 changed files
with
272 additions
and
151 deletions
src/api/system/workflowManageApi.js
src/components/contract/ContractChangeMainBody.vue
src/i18n/contractI18n.js
| ... | ... | @@ -14,6 +14,7 @@ import { messages as contractApplyAuditOrdersMessages } from '../views/contract/ |
| 14 | 14 | import { messages as contractChangeAuditOrdersMessages } from '../views/contract/contractChangeAuditOrdersLang.js' |
| 15 | 15 | import { messages as contractApplyAuditHistoryOrdersMessages } from '../views/contract/contractApplyAuditHistoryOrdersLang' |
| 16 | 16 | import { messages as contractChangeAuditHistoryOrdersMessages } from '../views/contract/contractChangeAuditHistoryOrdersLang' |
| 17 | +import { messages as contractDetailChangeMessages } from '../views/contract/contractDetailChangeLang' | |
| 17 | 18 | |
| 18 | 19 | export const messages ={ |
| 19 | 20 | en:{ |
| ... | ... | @@ -33,6 +34,7 @@ export const messages ={ |
| 33 | 34 | ...contractChangeAuditOrdersMessages.en, |
| 34 | 35 | ...contractApplyAuditHistoryOrdersMessages.en, |
| 35 | 36 | ...contractChangeAuditHistoryOrdersMessages.en, |
| 37 | + ...contractDetailChangeMessages.en, | |
| 36 | 38 | }, |
| 37 | 39 | zh:{ |
| 38 | 40 | ...contractTypeManageMessages.zh, |
| ... | ... | @@ -51,5 +53,6 @@ export const messages ={ |
| 51 | 53 | ...contractChangeAuditOrdersMessages.zh, |
| 52 | 54 | ...contractApplyAuditHistoryOrdersMessages.zh, |
| 53 | 55 | ...contractChangeAuditHistoryOrdersMessages.zh, |
| 56 | + ...contractDetailChangeMessages.zh, | |
| 54 | 57 | } |
| 55 | 58 | } |
| 56 | 59 | \ No newline at end of file | ... | ... |
src/views/contract/contractDetail.vue
| ... | ... | @@ -243,7 +243,7 @@ export default { |
| 243 | 243 | }, |
| 244 | 244 | _printContract() { |
| 245 | 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 | 4 | contractName: 'Contract Name', |
| 5 | 5 | contractCode: 'Contract Code', |
| 6 | 6 | contractType: 'Contract Type', |
| 7 | + contractTypeName: 'Contract Type', | |
| 7 | 8 | partyA: 'Party A', |
| 8 | 9 | partyB: 'Party B', |
| 9 | 10 | changeType: 'Change Type', |
| 11 | + planTypeName: 'Change Type', | |
| 10 | 12 | changePerson: 'Change Person', |
| 13 | + changePersonName: 'Change Person', | |
| 11 | 14 | applyTime: 'Apply Time', |
| 15 | + createTime: 'Create Time', | |
| 12 | 16 | description: 'Description', |
| 17 | + remark: 'Description', | |
| 13 | 18 | status: 'Status', |
| 19 | + stateName: 'Status', | |
| 14 | 20 | operation: 'Operation', |
| 15 | 21 | detail: 'Detail' |
| 16 | 22 | } |
| ... | ... | @@ -20,13 +26,19 @@ export const messages = { |
| 20 | 26 | contractName: '合同名称', |
| 21 | 27 | contractCode: '合同编号', |
| 22 | 28 | contractType: '合同类型', |
| 29 | + contractTypeName: '合同类型', | |
| 23 | 30 | partyA: '甲方', |
| 24 | 31 | partyB: '乙方', |
| 25 | 32 | changeType: '变更类型', |
| 33 | + planTypeName: '变更类型', | |
| 26 | 34 | changePerson: '变更人', |
| 35 | + changePersonName: '变更人', | |
| 27 | 36 | applyTime: '申请时间', |
| 37 | + createTime: '申请时间', | |
| 28 | 38 | description: '说明', |
| 39 | + remark: '说明', | |
| 29 | 40 | status: '状态', |
| 41 | + stateName: '状态', | |
| 30 | 42 | operation: '操作', |
| 31 | 43 | detail: '明细' |
| 32 | 44 | } | ... | ... |
src/views/contract/expirationContractManageList.vue
src/views/oa/editExamineStaffList.vue
| ... | ... | @@ -171,10 +171,11 @@ export default { |
| 171 | 171 | this.editExamineStaffInfo.projectIds = data[0].projects.map(item => item.projectId) |
| 172 | 172 | |
| 173 | 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 | 177 | } catch (error) { |
| 178 | + console.error('请求失败:', error) | |
| 178 | 179 | this.$message.error(this.$t('editExamineStaff.fetchStaffError')) |
| 179 | 180 | } |
| 180 | 181 | }, | ... | ... |
src/views/oa/printOwnerVotingList.vue
| 1 | 1 | <template> |
| 2 | 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 | 103 | </div> |
| 102 | 104 | </template> |
| 103 | 105 | |
| ... | ... | @@ -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 | 142 | created() { |
| 128 | 143 | this.printOwnerVotingInfo.qaId = this.$route.query.qaId |
| 129 | 144 | this.currentCommunity.communityId = getCommunityId() |
| ... | ... | @@ -139,7 +154,8 @@ export default { |
| 139 | 154 | qaId: this.printOwnerVotingInfo.qaId |
| 140 | 155 | } |
| 141 | 156 | const { data } = await listOwnerVote(params) |
| 142 | - this.printOwnerVotingInfo = data[0] | |
| 157 | + //this.printOwnerVotingInfo = data[0] | |
| 158 | + Object.assign(this.printOwnerVotingInfo, data[0]) | |
| 143 | 159 | this._listValues() |
| 144 | 160 | } catch (error) { |
| 145 | 161 | console.error('请求失败:', error) |
| ... | ... | @@ -155,6 +171,7 @@ export default { |
| 155 | 171 | } |
| 156 | 172 | const { data } = await listUserQuestionAnswer(params) |
| 157 | 173 | const _titleValues = this.printOwnerVotingInfo.titleValues |
| 174 | + console.log(data, '_titleValues', _titleValues) | |
| 158 | 175 | data.forEach(_value => { |
| 159 | 176 | _titleValues.forEach(_title => { |
| 160 | 177 | _value[_title.qaValue] = '' |
| ... | ... | @@ -196,6 +213,35 @@ export default { |
| 196 | 213 | .print-owner-voting-container { |
| 197 | 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 | 245 | .margin-top { |
| 200 | 246 | margin-top: 20px; |
| 201 | 247 | } |
| ... | ... | @@ -217,12 +263,12 @@ export default { |
| 217 | 263 | } |
| 218 | 264 | |
| 219 | 265 | .vc-table-border { |
| 220 | - border: 1px solid #ebeef5; | |
| 266 | + border: 1px solid #000000; | |
| 221 | 267 | border-collapse: collapse; |
| 222 | 268 | |
| 223 | 269 | th, |
| 224 | 270 | td { |
| 225 | - border: 1px solid #ebeef5; | |
| 271 | + border: 1px solid #000000; | |
| 226 | 272 | padding: 8px; |
| 227 | 273 | } |
| 228 | 274 | } | ... | ... |
src/views/oa/visitManageList.vue
| ... | ... | @@ -242,7 +242,7 @@ export default { |
| 242 | 242 | row: 100, |
| 243 | 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 | 246 | } catch (error) { |
| 247 | 247 | console.error('获取访客类型失败:', error) |
| 248 | 248 | } |
| ... | ... | @@ -305,7 +305,6 @@ export default { |
| 305 | 305 | padding: 10px; |
| 306 | 306 | cursor: pointer; |
| 307 | 307 | text-align: center; |
| 308 | - border-bottom: 1px solid #eee; | |
| 309 | 308 | transition: all 0.3s; |
| 310 | 309 | |
| 311 | 310 | &:hover { | ... | ... |
src/views/system/operateDataLogLang.js
| ... | ... | @@ -69,20 +69,7 @@ export const messages = { |
| 69 | 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 | 74 | zh: { |
| 88 | 75 | operateDataLog: { |
| ... | ... | @@ -154,19 +141,6 @@ export const messages = { |
| 154 | 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 | 147 | \ No newline at end of file | ... | ... |
src/views/system/workflowManageList.vue
src/views/system/workflowSettingManageList.vue
| ... | ... | @@ -26,7 +26,7 @@ |
| 26 | 26 | </el-form-item> |
| 27 | 27 | |
| 28 | 28 | <el-form-item :label="$t('workflowSettingManage.flowSteps')"> |
| 29 | - <div class="step-actions"> | |
| 29 | + <div class="step-actions margin-bottom"> | |
| 30 | 30 | <el-button type="primary" @click="addWorkflowStep"> |
| 31 | 31 | {{ $t('workflowSettingManage.addStep') }} |
| 32 | 32 | </el-button> |
| ... | ... | @@ -40,12 +40,28 @@ |
| 40 | 40 | {{ item.staffId ? item.staffName : $t('workflowSettingManage.selectStaff') }} |
| 41 | 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 | 66 | <el-button type="text" @click="deleteStep(item)"> |
| 51 | 67 | {{ $t('workflowSettingManage.deleteStep') }} |
| ... | ... | @@ -98,7 +114,7 @@ |
| 98 | 114 | </el-col> |
| 99 | 115 | </el-row> |
| 100 | 116 | |
| 101 | - <select-staff ref="selectStaff" @selectStaffs="handleStaffSelected"/> | |
| 117 | + <select-staff ref="selectStaff" @selectStaff="handleStaffSelected"/> | |
| 102 | 118 | </div> |
| 103 | 119 | </template> |
| 104 | 120 | |
| ... | ... | @@ -125,7 +141,8 @@ export default { |
| 125 | 141 | describle: '', |
| 126 | 142 | startNodeFinish: 'Y', |
| 127 | 143 | steps: [] |
| 128 | - } | |
| 144 | + }, | |
| 145 | + currentSelectTarget: null | |
| 129 | 146 | } |
| 130 | 147 | }, |
| 131 | 148 | created() { |
| ... | ... | @@ -133,6 +150,10 @@ export default { |
| 133 | 150 | this._initWorkflowSettingInfo() |
| 134 | 151 | }, |
| 135 | 152 | methods: { |
| 153 | + generateId() { | |
| 154 | + return `id-${Date.now()}-${Math.random().toString(36).substr(2, 6)}` | |
| 155 | + }, | |
| 156 | + | |
| 136 | 157 | async _initWorkflowSettingInfo() { |
| 137 | 158 | const flowId = this.$route.query.flowId |
| 138 | 159 | |
| ... | ... | @@ -159,8 +180,39 @@ export default { |
| 159 | 180 | }, |
| 160 | 181 | |
| 161 | 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 | 218 | addWorkflowStep() { |
| ... | ... | @@ -176,11 +228,19 @@ export default { |
| 176 | 228 | |
| 177 | 229 | chooseStaff(item) { |
| 178 | 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 | 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 | 246 | _goBack() { |
| ... | ... | @@ -195,7 +255,7 @@ export default { |
| 195 | 255 | |
| 196 | 256 | addStaff(step) { |
| 197 | 257 | step.subStaff.push({ |
| 198 | - id: this.$uuid(), | |
| 258 | + id: this.generateId(), | |
| 199 | 259 | staffId: '', |
| 200 | 260 | staffName: '', |
| 201 | 261 | staffRole: '1001' |
| ... | ... | @@ -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 | 288 | async saveWorkflowSettingInfo() { |
| ... | ... | @@ -250,6 +319,22 @@ export default { |
| 250 | 319 | >* { |
| 251 | 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 | 340 | .sub-staff-item { | ... | ... |