n20-common-lib 1.3.67 → 1.3.68
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +2 -3
- package/src/assets/css/cl-approve-card.scss +0 -1
- package/src/components/ApprovalButtons/index.vue +37 -3
- package/src/components/ApprovalButtons/setCarboncopyProp.vue +117 -0
- package/src/components/ApprovalCard/index.vue +4 -2
- package/src/components/ApprovalRecord/approvalImgPro/index.vue +16 -11
- package/style/index.css +1 -1
- package/style/index.css.map +1 -1
- package/theme/blue.css +1 -1
- package/theme/green.css +1 -1
- package/theme/lightBlue.css +1 -1
- package/theme/orange.css +1 -1
- package/theme/purple.css +1 -1
- package/theme/red.css +1 -1
- package/theme/yellow.css +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "n20-common-lib",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.68",
|
|
4
4
|
"private": false,
|
|
5
5
|
"main": "src/index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -56,7 +56,6 @@
|
|
|
56
56
|
"@vue/cli-plugin-babel": "~4.5.0",
|
|
57
57
|
"@vue/cli-plugin-eslint": "~4.5.0",
|
|
58
58
|
"@vue/cli-service": "~4.5.0",
|
|
59
|
-
"@vue/compiler-sfc": "^3.2.38",
|
|
60
59
|
"babel-eslint": "^10.1.0",
|
|
61
60
|
"babel-plugin-component": "^1.1.1",
|
|
62
61
|
"clipboard": "^2.0.11",
|
|
@@ -76,7 +75,7 @@
|
|
|
76
75
|
"md2vue-loader": "git+https://gitee.com/bable2000/md2vue-loader.git",
|
|
77
76
|
"mockjs": "^1.1.0",
|
|
78
77
|
"node-sass": "6.0.0",
|
|
79
|
-
"nstc-get-i18n": "^0.0.
|
|
78
|
+
"nstc-get-i18n": "^0.0.3",
|
|
80
79
|
"qiankun": "^2.5.1",
|
|
81
80
|
"sass-loader": "^10.2.0",
|
|
82
81
|
"screenfull": "^5.1.0",
|
|
@@ -1,7 +1,24 @@
|
|
|
1
1
|
/* 审批按钮组 */
|
|
2
2
|
<template>
|
|
3
3
|
<div>
|
|
4
|
-
<el-form label-position="
|
|
4
|
+
<el-form label-position="right" label-width="5em">
|
|
5
|
+
<div class="flex-box">
|
|
6
|
+
<div v-if="authList.includes('isCarboncopy')" class="flex-1">
|
|
7
|
+
<el-form-item label="抄送">
|
|
8
|
+
<el-input
|
|
9
|
+
:value="carbonCopyList.map((c) => c.uname).join(', ')"
|
|
10
|
+
type="textarea"
|
|
11
|
+
:autosize="{ minRows: 1 }"
|
|
12
|
+
@focus="setCarboncopyV = true"
|
|
13
|
+
/>
|
|
14
|
+
</el-form-item>
|
|
15
|
+
</div>
|
|
16
|
+
<div v-if="authList.includes('加签')" class="flex-1">
|
|
17
|
+
<el-form-item label="加签">
|
|
18
|
+
<el-input type="textarea" :autosize="{ minRows: 1 }" />
|
|
19
|
+
</el-form-item>
|
|
20
|
+
</div>
|
|
21
|
+
</div>
|
|
5
22
|
<el-form-item label="审批意见" :error="errMsg">
|
|
6
23
|
<el-input
|
|
7
24
|
ref="msg-input"
|
|
@@ -22,6 +39,9 @@
|
|
|
22
39
|
<el-button v-if="authList.includes('discard')" type="danger" plain @click="discardFn">作 废</el-button>
|
|
23
40
|
<el-button plain @click="goFrom">返 回</el-button>
|
|
24
41
|
</div>
|
|
42
|
+
<cl-dialog v-drag :visible.sync="setCarboncopyV" title="设置抄送用户" width="900px" append-to-body top="7.5vh">
|
|
43
|
+
<carboncopy-prop :carbon-copy-list="carbonCopyList" @close="setCarboncopyV = false" @confirm="setCarboncopyOk" />
|
|
44
|
+
</cl-dialog>
|
|
25
45
|
</div>
|
|
26
46
|
</template>
|
|
27
47
|
|
|
@@ -29,9 +49,15 @@
|
|
|
29
49
|
import axios from '../../utils/axios'
|
|
30
50
|
import { linkGo } from '../../utils/urlToGo'
|
|
31
51
|
import { closeTagsForBackPage } from '../../plugins/CompatibleOld'
|
|
52
|
+
import ClDialog from '../Dialog'
|
|
53
|
+
import CarboncopyProp from './setCarboncopyProp.vue'
|
|
32
54
|
|
|
33
55
|
export default {
|
|
34
56
|
name: 'ApprovalButtons',
|
|
57
|
+
components: {
|
|
58
|
+
ClDialog,
|
|
59
|
+
CarboncopyProp
|
|
60
|
+
},
|
|
35
61
|
props: {
|
|
36
62
|
message: {
|
|
37
63
|
type: String,
|
|
@@ -59,7 +85,9 @@ export default {
|
|
|
59
85
|
errMsg: undefined,
|
|
60
86
|
taskId: '',
|
|
61
87
|
taskDefKey: '',
|
|
62
|
-
authList: []
|
|
88
|
+
authList: [],
|
|
89
|
+
setCarboncopyV: false,
|
|
90
|
+
carbonCopyList: []
|
|
63
91
|
}
|
|
64
92
|
},
|
|
65
93
|
computed: {
|
|
@@ -125,7 +153,8 @@ export default {
|
|
|
125
153
|
message: this.messageC,
|
|
126
154
|
formData: JSON.stringify(this.formData),
|
|
127
155
|
signText: this.signText,
|
|
128
|
-
isAgentcy: isAgentcy
|
|
156
|
+
isAgentcy: isAgentcy,
|
|
157
|
+
carbonCopyUserDtoList: this.carbonCopyList.map((c) => ({ userNo: c.uno, userName: c.uname }))
|
|
129
158
|
}
|
|
130
159
|
]
|
|
131
160
|
},
|
|
@@ -208,6 +237,11 @@ export default {
|
|
|
208
237
|
this.thenMsg(data, '作废')
|
|
209
238
|
})
|
|
210
239
|
})
|
|
240
|
+
},
|
|
241
|
+
setCarboncopyOk(list) {
|
|
242
|
+
this.carbonCopyList = list
|
|
243
|
+
|
|
244
|
+
this.setCarboncopyV = false
|
|
211
245
|
}
|
|
212
246
|
}
|
|
213
247
|
}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<cl-page style="height: 75vh">
|
|
3
|
+
<div slot="header" class="flex-box flex-v m-b">
|
|
4
|
+
<span class="m-r-ss">单位名称</span>
|
|
5
|
+
<span>
|
|
6
|
+
<el-input v-model="searchObj.cltName" size="mini" />
|
|
7
|
+
</span>
|
|
8
|
+
<span class="m-l m-r-ss">姓名</span>
|
|
9
|
+
<span>
|
|
10
|
+
<el-input v-model="searchObj.uname" size="mini" />
|
|
11
|
+
</span>
|
|
12
|
+
<span class="m-l m-r-ss">用户编号</span>
|
|
13
|
+
<span>
|
|
14
|
+
<el-input v-model="searchObj.uno" size="mini" />
|
|
15
|
+
</span>
|
|
16
|
+
<el-button class="m-l-auto" plain size="mini" @click="searchFn">查询</el-button>
|
|
17
|
+
</div>
|
|
18
|
+
|
|
19
|
+
<el-table
|
|
20
|
+
ref="elTable"
|
|
21
|
+
:key="elTableKey"
|
|
22
|
+
:data="nodeTable"
|
|
23
|
+
row-key="uno"
|
|
24
|
+
border
|
|
25
|
+
height="100%"
|
|
26
|
+
@select="sltChange"
|
|
27
|
+
@select-all="sltChange"
|
|
28
|
+
>
|
|
29
|
+
<el-table-column :reserve-selection="true" type="selection" width="46" header-align="center" align="center" />
|
|
30
|
+
<el-table-column prop="uno" label="编号" header-align="center" align="center" />
|
|
31
|
+
<el-table-column prop="uname" label="姓名" header-align="center" align="center" />
|
|
32
|
+
<el-table-column prop="cltName" label="单位" header-align="center" align="center" />
|
|
33
|
+
</el-table>
|
|
34
|
+
<template slot="footer">
|
|
35
|
+
<div class="flex-box flex-r m-t m-b">
|
|
36
|
+
<cl-pagination
|
|
37
|
+
:page-obj="pageObj"
|
|
38
|
+
:page-key="{ no: 'pageNum', size: 'pageSize', total: 'totalSize' }"
|
|
39
|
+
@change="getList"
|
|
40
|
+
/>
|
|
41
|
+
</div>
|
|
42
|
+
<div class="text-c">
|
|
43
|
+
<el-button type="primary" @click="confirmFn">确 定</el-button>
|
|
44
|
+
<el-button @click="$emit('close')">取 消</el-button>
|
|
45
|
+
</div>
|
|
46
|
+
</template>
|
|
47
|
+
</cl-page>
|
|
48
|
+
</template>
|
|
49
|
+
|
|
50
|
+
<script>
|
|
51
|
+
import ClPage from '../PageLayout/page.vue'
|
|
52
|
+
import ClPagination from '../Pagination/index.vue'
|
|
53
|
+
export default {
|
|
54
|
+
components: {
|
|
55
|
+
ClPage,
|
|
56
|
+
ClPagination
|
|
57
|
+
},
|
|
58
|
+
props: {
|
|
59
|
+
carbonCopyList: {
|
|
60
|
+
type: Array,
|
|
61
|
+
default: () => []
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
data() {
|
|
65
|
+
return {
|
|
66
|
+
nodeTable: [],
|
|
67
|
+
searchObj: {
|
|
68
|
+
uno: undefined,
|
|
69
|
+
uname: undefined,
|
|
70
|
+
cltName: undefined,
|
|
71
|
+
roleName: undefined
|
|
72
|
+
},
|
|
73
|
+
pageObj: {
|
|
74
|
+
pageNum: 1,
|
|
75
|
+
pageSize: 10,
|
|
76
|
+
totalSize: 0
|
|
77
|
+
},
|
|
78
|
+
selectArr: [],
|
|
79
|
+
elTableKey: 0
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
mounted() {
|
|
83
|
+
this.$refs.elTable.clearSelection()
|
|
84
|
+
this.carbonCopyList.forEach((item) => {
|
|
85
|
+
this.$refs.elTable.toggleRowSelection(item, true)
|
|
86
|
+
})
|
|
87
|
+
|
|
88
|
+
this.pageObj = { pageNum: 1, pageSize: 10, totalSize: 0 }
|
|
89
|
+
this.getList()
|
|
90
|
+
},
|
|
91
|
+
methods: {
|
|
92
|
+
getList() {
|
|
93
|
+
this.$axios
|
|
94
|
+
.post('/bems/activiti/online/chdUserInfo', {
|
|
95
|
+
data: this.searchObj,
|
|
96
|
+
...this.pageObj
|
|
97
|
+
})
|
|
98
|
+
.then(({ data }) => {
|
|
99
|
+
this.nodeTable = data.list
|
|
100
|
+
this.pageObj.totalSize = data.totalSize
|
|
101
|
+
})
|
|
102
|
+
},
|
|
103
|
+
searchFn() {
|
|
104
|
+
this.pageObj.pageNum = 1
|
|
105
|
+
this.getList()
|
|
106
|
+
},
|
|
107
|
+
sltChange(list) {
|
|
108
|
+
this.selectArr = list || []
|
|
109
|
+
},
|
|
110
|
+
confirmFn() {
|
|
111
|
+
this.$emit('confirm', this.selectArr)
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
</script>
|
|
116
|
+
|
|
117
|
+
<style></style>
|
|
@@ -27,9 +27,10 @@
|
|
|
27
27
|
>
|
|
28
28
|
</div>
|
|
29
29
|
</div>
|
|
30
|
-
<div v-if="item.suggestion" class="n20-description-c">
|
|
30
|
+
<div v-if="item.suggestion" class="n20-description-c m-t">
|
|
31
31
|
{{ item.suggestion }}
|
|
32
32
|
</div>
|
|
33
|
+
<div v-if="item.ccUserName" class="n20-description-c m-t">抄送人:{{ item.ccUserName }}</div>
|
|
33
34
|
</div>
|
|
34
35
|
</el-timeline-item>
|
|
35
36
|
</el-timeline>
|
|
@@ -102,7 +103,8 @@ export default {
|
|
|
102
103
|
let _item = {
|
|
103
104
|
endTime: item.endTime || '',
|
|
104
105
|
assignee: item.assignee,
|
|
105
|
-
suggestion: item.suggestion
|
|
106
|
+
suggestion: item.suggestion,
|
|
107
|
+
ccUserName: item.ccUserName // 抄送人
|
|
106
108
|
}
|
|
107
109
|
|
|
108
110
|
if (item.taskName === '开始') {
|
|
@@ -36,8 +36,8 @@
|
|
|
36
36
|
</div>
|
|
37
37
|
<span v-title></span>
|
|
38
38
|
<div ref="msgEl" class="activiti-msg">
|
|
39
|
-
<div v-if="assignee">{{ assignee }}</div>
|
|
40
|
-
<div v-
|
|
39
|
+
<div v-if="assignee" :class="{ 'm-b': assigneeEnd }">{{ assignee }}</div>
|
|
40
|
+
<div v-if="assigneeEnd">
|
|
41
41
|
<table cellspacing="0" class="m-t-ss m-b-ss" style="border-collapse: collapse; min-width: 460px">
|
|
42
42
|
<tr>
|
|
43
43
|
<td class="text-c">已审批人</td>
|
|
@@ -92,7 +92,7 @@ export default {
|
|
|
92
92
|
async mounted() {
|
|
93
93
|
this.svgW = this.$refs['activiti-svg-wrap']
|
|
94
94
|
|
|
95
|
-
let { flowString, seqRecords, taskDefIdMap,
|
|
95
|
+
let { flowString, seqRecords, taskDefIdMap = {}, currAssMap = {}, currentActivityIdList = [] } = this.dataPro
|
|
96
96
|
let flowSvg = flowString
|
|
97
97
|
if (flowString.includes('bpmn2:definitions')) {
|
|
98
98
|
let { default: bpmn2svg } = await importG('bpmn2svg', () =>
|
|
@@ -105,12 +105,17 @@ export default {
|
|
|
105
105
|
seqRecords.forEach((obj) => {
|
|
106
106
|
this.setTaskRecord(obj)
|
|
107
107
|
})
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
108
|
+
currentActivityIdList.forEach((currentActivityId) => {
|
|
109
|
+
let assignee = currAssMap[currentActivityId]
|
|
110
|
+
let assigneeEnd = taskDefIdMap[currentActivityId]
|
|
111
|
+
taskDefIdMap[currentActivityId] = undefined
|
|
112
|
+
|
|
113
|
+
this.addEvent(currentActivityId, { assignee, assigneeEnd }, 'pending')
|
|
114
|
+
|
|
113
115
|
this.svgW.querySelector(`[data-element-id="${currentActivityId}"]`).classList.add('activiti-node-at')
|
|
116
|
+
})
|
|
117
|
+
for (let k in taskDefIdMap) {
|
|
118
|
+
taskDefIdMap[k] && this.addEvent(k, taskDefIdMap[k])
|
|
114
119
|
}
|
|
115
120
|
} catch (error) {
|
|
116
121
|
console.log('setTaskErr:', error)
|
|
@@ -218,12 +223,12 @@ export default {
|
|
|
218
223
|
}
|
|
219
224
|
return rect
|
|
220
225
|
},
|
|
221
|
-
addEvent(id, list
|
|
226
|
+
addEvent(id, list, type) {
|
|
222
227
|
let task = this.svgW.querySelector(`[data-element-id="${id}"]`)
|
|
223
228
|
task.addEventListener('mouseenter', () => {
|
|
224
229
|
if (type === 'pending') {
|
|
225
|
-
this.assignee = list
|
|
226
|
-
this.assigneeEnd =
|
|
230
|
+
this.assignee = list.assignee
|
|
231
|
+
this.assigneeEnd = list.assigneeEnd
|
|
227
232
|
} else {
|
|
228
233
|
this.assignee = undefined
|
|
229
234
|
this.assigneeEnd = list
|