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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "n20-common-lib",
3
- "version": "1.3.67",
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.1",
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",
@@ -63,6 +63,5 @@
63
63
  font-weight: initial;
64
64
  font-size: $--font-size-base;
65
65
  color: $--color-text-regular;
66
- padding: 12px;
67
66
  }
68
67
  }
@@ -1,7 +1,24 @@
1
1
  /* 审批按钮组 */
2
2
  <template>
3
3
  <div>
4
- <el-form label-position="left" label-width="5em">
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-else-if="assigneeEnd">
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, currentActivityId, currentAssigneeName } = this.dataPro
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
- for (let k in taskDefIdMap) {
109
- this.addEvent(k, taskDefIdMap[k])
110
- }
111
- if (currentActivityId) {
112
- this.addEvent(currentActivityId, currentAssigneeName, 'pending')
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 = [], type) {
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 = undefined
230
+ this.assignee = list.assignee
231
+ this.assigneeEnd = list.assigneeEnd
227
232
  } else {
228
233
  this.assignee = undefined
229
234
  this.assigneeEnd = list