ui-process-h5 2.0.7-beta → 2.1.0-beta

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.
Files changed (91) hide show
  1. package/README.md +11 -204
  2. package/build/configure/README.md +211 -0
  3. package/build/configure/package.json +32 -0
  4. package/debug.js +9 -0
  5. package/index.html +12 -0
  6. package/package.json +56 -25
  7. package/src/App.vue +233 -0
  8. package/src/assets/font-icon/iconfont.scss +57 -0
  9. package/src/assets/font-icon/iconfont.ttf +0 -0
  10. package/src/assets/img/add-file.png +0 -0
  11. package/src/assets/img/arrow-right.png +0 -0
  12. package/src/assets/img/arrow.png +0 -0
  13. package/src/assets/img/check.png +0 -0
  14. package/src/assets/img/del.png +0 -0
  15. package/src/assets/img/doc.png +0 -0
  16. package/src/assets/img/file.png +0 -0
  17. package/src/assets/img/image.png +0 -0
  18. package/src/assets/img/pdf.png +0 -0
  19. package/src/assets/img/process.png +0 -0
  20. package/src/assets/img/xls.png +0 -0
  21. package/src/assets/img/zip.png +0 -0
  22. package/src/assets/js/auth.js +65 -0
  23. package/src/assets/js/errorCode.js +6 -0
  24. package/src/assets/js/message.js +352 -0
  25. package/src/assets/js/request.js +99 -0
  26. package/src/assets/js/toast.js +239 -0
  27. package/src/assets/js/top.js +229 -0
  28. package/src/assets/js/utils.js +83 -0
  29. package/src/assets/js/vuePopper.js +123 -0
  30. package/src/assets/query.png +0 -0
  31. package/src/assets/status/check.png +0 -0
  32. package/src/assets/status/del.png +0 -0
  33. package/src/assets/status/error.png +0 -0
  34. package/src/assets/status/loading.png +0 -0
  35. package/src/assets/status/success.png +0 -0
  36. package/src/main.js +17 -0
  37. package/src/packages/attchUpload/index.js +375 -0
  38. package/src/packages/attchUpload/index.scss +143 -0
  39. package/src/packages/attchUpload/index.vue +173 -0
  40. package/src/packages/downSelect/index.js +119 -0
  41. package/src/packages/downSelect/index.scss +88 -0
  42. package/src/packages/downSelect/index.vue +62 -0
  43. package/src/packages/index.js +6 -0
  44. package/src/packages/popup/index.js +125 -0
  45. package/src/packages/popup/index.scss +178 -0
  46. package/src/packages/popup/index.vue +80 -0
  47. package/src/packages/preview/index.js +40 -0
  48. package/src/packages/preview/index.vue +15 -0
  49. package/src/packages/previewImage/index.js +286 -0
  50. package/src/packages/previewImage/index.scss +76 -0
  51. package/src/packages/previewImage/index.vue +53 -0
  52. package/src/packages/process/index.js +1016 -0
  53. package/src/packages/process/index.scss +188 -0
  54. package/src/packages/process/index.vue +291 -0
  55. package/src/packages/process/operation/backNode.vue +396 -0
  56. package/src/packages/process/operation/cancel.vue +425 -0
  57. package/src/packages/process/operation/ccTask.vue +256 -0
  58. package/src/packages/process/operation/complete.vue +1384 -0
  59. package/src/packages/process/operation/counterSign.vue +498 -0
  60. package/src/packages/process/operation/delegateTask.vue +493 -0
  61. package/src/packages/process/operation/index.js +8 -0
  62. package/src/packages/process/operation/index.scss +212 -0
  63. package/src/packages/process/operation/msgList.vue +174 -0
  64. package/src/packages/process/operation/treeNode.vue +901 -0
  65. package/src/packages/process/operation/treePerson.vue +304 -0
  66. package/src/packages/submitPopup/index.js +708 -0
  67. package/src/packages/submitPopup/index.scss +190 -0
  68. package/src/packages/submitPopup/index.vue +125 -0
  69. package/src/packages/tab/index.js +236 -0
  70. package/src/packages/tab/index.scss +177 -0
  71. package/src/packages/tab/index.vue +155 -0
  72. package/src/packages/tip/index.js +80 -0
  73. package/src/packages/tip/index.scss +121 -0
  74. package/src/packages/tip/index.vue +57 -0
  75. package/src/packages/viewAttchList/index.js +138 -0
  76. package/src/packages/viewAttchList/index.scss +76 -0
  77. package/src/packages/viewAttchList/index.vue +121 -0
  78. package/src/style.css +80 -0
  79. package/vite.config.ts +118 -0
  80. package/v2/style.css +0 -1
  81. package/v2/ui-process-h5.js +0 -9945
  82. package/v2/ui-process-h5.umd.cjs +0 -18
  83. package/v2.7/style.css +0 -1
  84. package/v2.7/ui-process-h5.js +0 -9322
  85. package/v2.7/ui-process-h5.umd.cjs +0 -18
  86. package/v3/style.css +0 -1
  87. package/v3/ui-process-h5.js +0 -6842
  88. package/v3/ui-process-h5.umd.cjs +0 -6
  89. /package/{scripts → build/scripts}/postinstall.mjs +0 -0
  90. /package/{scripts → build/scripts}/switch-cli.mjs +0 -0
  91. /package/{scripts → build/scripts}/utils.mjs +0 -0
@@ -0,0 +1,190 @@
1
+ .textnone {
2
+ text-align: center;
3
+ margin-top: 30px;
4
+ color: #999;
5
+ font-size: 14px;
6
+ }
7
+
8
+ .viewTrack {
9
+ width: 100%;
10
+ display: flex;
11
+ justify-content: center;
12
+ align-items: center;
13
+ font-size: 14px;
14
+ color: #1389ff;
15
+ }
16
+
17
+ .person-views .views-items {
18
+ width: 100%;
19
+ display: flex;
20
+ justify-content: center;
21
+ align-items: center;
22
+ font-size: 14px;
23
+ display: flex;
24
+ justify-content: space-between;
25
+ align-items: center;
26
+ padding: 22px 20px;
27
+ box-sizing: border-box;
28
+ position: relative;
29
+
30
+ &::after {
31
+ content: "";
32
+ position: absolute;
33
+ border-top-width: 0;
34
+ top: 0;
35
+ left: 0;
36
+ width: 100%;
37
+ height: 1px;
38
+ background-color: #eee;
39
+ }
40
+ }
41
+
42
+ .person-views .views-items-set {
43
+ width: 50%;
44
+ display: flex;
45
+ flex-direction: row-reverse;
46
+ align-items: center;
47
+ color: #1389ff;
48
+ }
49
+
50
+ .person-views .views-items-set-btn {
51
+ color: #1389ff;
52
+ margin-left: 10px;
53
+ min-width: 30px;
54
+ }
55
+
56
+ .person-views .views-items-name {
57
+ width: 50%;
58
+ color: #333;
59
+ }
60
+
61
+ .person-views .views-items-name--re {
62
+ color: #ee0000;
63
+ }
64
+
65
+ .person-views-white {
66
+ text-align: center;
67
+ }
68
+
69
+ .person-btn {
70
+ display: flex;
71
+ min-height: 60px;
72
+ padding-top: 5px;
73
+ background: #fff;
74
+ border-top: 1px solid #dddddf9e;
75
+ box-sizing: border-box;
76
+ justify-content: center;
77
+ align-items: center;
78
+ flex-direction: row-reverse;
79
+ position: fixed;
80
+ bottom: 0;
81
+ width: 100%;
82
+ }
83
+
84
+ .person-btn .top-button {
85
+ width: 100%;
86
+ border-radius: 20px;
87
+ height: 36px;
88
+ background-color: #3c9cff;
89
+ color: #fff;
90
+ font-size: 14px;
91
+ justify-content: center;
92
+ display: flex;
93
+ align-items: center;
94
+ margin: 0 5px;
95
+ }
96
+
97
+ ::v-deep .departPerson-main {
98
+ width: 100% !important;
99
+ height: 100% !important;
100
+ }
101
+
102
+ ::v-deep .top-popup {
103
+ padding: 0;
104
+ background-color: #f8f8f8;
105
+ }
106
+
107
+ ::v-deep .top-popup-header {
108
+ border-radius: 20px 20px 0 0;
109
+ padding: 10px 20px;
110
+ }
111
+
112
+ .sumbmitPopup-select {
113
+ padding: 0 20px;
114
+ background: #fff;
115
+ &-checked {
116
+ position: relative;
117
+ z-index: 80;
118
+ font-size: 14px;
119
+ display: flex;
120
+ align-items: center;
121
+ justify-content: space-between;
122
+ padding: 22px 0;
123
+
124
+ &-title {
125
+ color: #333;
126
+ }
127
+
128
+ &-node {
129
+ color: #565959;
130
+ position: relative;
131
+ padding-right: 18px;
132
+
133
+ &::after {
134
+ content: "";
135
+ height: 6px;
136
+ width: 6px;
137
+ border-color: #999999;
138
+ border-style: solid;
139
+ position: absolute;
140
+ border-width: 1px 1px 0 0;
141
+ transform: matrix(0.71, 0.71, -0.71, 0.71, 0, 0);
142
+ right: 0;
143
+ top: calc(50% - 3px);
144
+ }
145
+ }
146
+
147
+ &::after {
148
+ content: "";
149
+ position: absolute;
150
+ bottom: 0;
151
+ left: 0;
152
+ width: 100%;
153
+ height: 1px;
154
+ background-color: #eee;
155
+ }
156
+ }
157
+
158
+ &-viewTrack {
159
+ padding: 22px 0;
160
+
161
+ .viewTrack {
162
+ padding: 0;
163
+ height: auto;
164
+
165
+ img {
166
+ width: 16px;
167
+ height: 16px;
168
+ margin-right: 8px;
169
+ }
170
+ }
171
+ }
172
+ }
173
+
174
+ .person-views {
175
+ margin-top: 16px;
176
+ background-color: #fff;
177
+
178
+ &-title {
179
+ padding: 8px 20px;
180
+ font-size: 12px;
181
+ color: #333333;
182
+ position: relative;
183
+ }
184
+ }
185
+
186
+ .sumbmitPopup-select-checked-node--noafter {
187
+ &::after {
188
+ display: none;
189
+ }
190
+ }
@@ -0,0 +1,125 @@
1
+ <template>
2
+ <div class="sumbmitPopup-index-sumbit">
3
+ <div class="top-popup"></div>
4
+ <TopPopup v-bind:visible="show" v-on:update:visible="
5
+ (val) => ((show = val), $emit('update:visible', val))
6
+ " ref="TopPopup" titleText="送审" :isIndex="99" :className="`sumbmitPopup-index`" comfigText="送审" :comfig="handleSumbit">
7
+ <TopDownSelect isSlots :option="option" @change="handleChange" :defaultValue="selectDefaultValue" ref="TopDownSelect" :disibled="resubmit">
8
+ <template v-slot:header="data">
9
+ <!-- <div>123{{ data.data }}</div> -->
10
+ <div class="sumbmitPopup-select">
11
+ <div class="sumbmitPopup-select-checked" @click="handleSelect">
12
+ <div class="sumbmitPopup-select-checked-title">
13
+ 当前流程
14
+ </div>
15
+ <div class="sumbmitPopup-select-checked-node" :class="resubmit ? 'sumbmitPopup-select-checked-node--noafter' : ''">
16
+ {{
17
+ data.data.name
18
+ ? data.data.name
19
+ : data.data.placeholder
20
+ }}
21
+ </div>
22
+ </div>
23
+ <div class="sumbmitPopup-select-viewTrack">
24
+ <div class="viewTrack" v-if="checkedItem.id" @click="taskurlshow = true">
25
+ <img :src="ProcessImg" /> 查看流程图
26
+ </div>
27
+ </div>
28
+ </div>
29
+ </template>
30
+ </TopDownSelect>
31
+
32
+ <div class="person-views" v-if="firstPerson && firstPerson.length">
33
+ <div class="person-views-title">下一步处理节点</div>
34
+ <div class="views-items" v-for="(v, i) in firstPerson">
35
+ <div class="views-items-name">
36
+ {{ v.name }}
37
+ <span class="views-items-name--re">*</span>
38
+ </div>
39
+ <div class="views-items-set">
40
+ <div v-if="partNode[v.id] && partNode[v.id].length">
41
+ <span v-for="(name, index) in partNode[v.id]">
42
+ {{
43
+ index >= 3
44
+ ? ""
45
+ : index == 0
46
+ ? name
47
+ : `,${name}`
48
+ }}
49
+ </span>
50
+ <span v-if="partNode[v.id].length > 3">...等{{ partNode[v.id].length }}人</span>
51
+ </div>
52
+ <div v-else-if="v.routeTxt && v.routeTxt.userNames">
53
+ {{ v.routeTxt.userNames }}
54
+ </div>
55
+ <div v-if="
56
+ v.humanPerformerName == '固定账户' ||
57
+ v.humanPerformerName == '与流程申请人相关'
58
+ "></div>
59
+ <div class="views-items-set-btn" @click="handleOpenPerson(v)" v-else>
60
+ 设置
61
+ </div>
62
+ </div>
63
+ </div>
64
+ </div>
65
+
66
+ <div class="person-views" v-if="personList && personList.length">
67
+ <div class="person-views-title">其他处理节点</div>
68
+ <div class="views-items" v-for="(v, i) in personList">
69
+ <div class="views-items-name">
70
+ {{ v.name }}
71
+ </div>
72
+ <div class="views-items-set">
73
+ <div class="views-items-set-btn" @click="handleOpenPerson(v)">
74
+ 设置
75
+ </div>
76
+ <div v-if="partNode[v.id] && partNode[v.id].length">
77
+ <span v-for="(name, index) in partNode[v.id]">
78
+ {{
79
+ index >= 3
80
+ ? ""
81
+ : index == 0
82
+ ? name
83
+ : `,${name}`
84
+ }}
85
+ </span>
86
+ <span v-if="partNode[v.id].length > 3">...等{{ partNode[v.id].length }}人</span>
87
+ </div>
88
+ <div v-else></div>
89
+
90
+ </div>
91
+ </div>
92
+ </div>
93
+ <div class="person-views-white" v-if="
94
+ !firstPerson &&
95
+ !firstPerson.length &&
96
+ !personList &&
97
+ !personList.length
98
+ ">
99
+ 无需设置
100
+ </div>
101
+ <!-- <div class="person-btn">
102
+ <div
103
+ class="top-button"
104
+ style="background-color: #3c9cff; color: #fff;"
105
+ @click="handleSumbit"
106
+ >
107
+ 送审
108
+ </div>
109
+ </div> -->
110
+ </TopPopup>
111
+ <TopPopup v-bind:visible="visiblePerson" v-on:update:visible="(val) => (visiblePerson = val)" ref="TopPopup" titleText="选人" :isDrawer="true" :isIndex="199">
112
+ <div style="height: 100%;">
113
+ <departPerson :isTitle="false" v-if="visiblePerson" :visible.sync="visiblePerson" v-bind="entity" @callback="handleCallback" @cancel="handleCancel">
114
+ </departPerson>
115
+ </div>
116
+ </TopPopup>
117
+ <PreviewImage :images="trackUrl" v-bind:visible="taskurlshow" v-on:update:visible="(val) => (taskurlshow = val)" :indexd="0" :isOne="true" :isStyle="isStyle">
118
+ </PreviewImage>
119
+ <TopTips ref="topTips" :text="textTips" :statusTips="statusTips" :type="typeTips" />
120
+ </div>
121
+ </template>
122
+ <script src="./index.js"></script>
123
+ <style lang="scss" scoped>
124
+ @import './index.scss';
125
+ </style>
@@ -0,0 +1,236 @@
1
+ import { defineComponent } from "vue-demi";
2
+ import TopPopup from "../popup/index.vue";
3
+ import ViewAttchList from "../viewAttchList/index.vue";
4
+
5
+ export default defineComponent({
6
+ name: "TopTab",
7
+ components: {
8
+ TopPopup,
9
+ ViewAttchList,
10
+ },
11
+ props: {
12
+ /**
13
+ * 根据参数插入自定义tab
14
+ * label:选项卡title
15
+ * key:选项卡ID 请勿重复defaultTabList内已拥有的默认key
16
+ * type:插槽类型 "slot" "default"
17
+ * sort:排序参数,无参数默认插入末尾
18
+ * slot:插槽name
19
+ */
20
+ tapList: {
21
+ type: Array,
22
+ default: () => [],
23
+ },
24
+ // 自定义tab (传入后 默认tab,tapList,失效)
25
+ selfTapList: {
26
+ type: Array,
27
+ default: () => [],
28
+ },
29
+ // 流程图url
30
+ track: {
31
+ type: String,
32
+ default: "",
33
+ },
34
+ // 审批记录列表
35
+ taskComment: {
36
+ type: Array,
37
+ default: () => [],
38
+ },
39
+ // 流程信息列表
40
+ trackList: {
41
+ type: Array,
42
+ default: () => [],
43
+ },
44
+ },
45
+
46
+ data() {
47
+ return {
48
+ // 流程图
49
+ trackUrl: "",
50
+ // 审批信息
51
+ taskCommentList: [],
52
+ // 选中
53
+ active: "",
54
+
55
+ /* tab 渲染 */
56
+ // 默认弹窗列表
57
+ defaultTabList: [
58
+ {
59
+ label: "基本信息",
60
+ key: "a",
61
+ type: "default",
62
+ slot: "default",
63
+ },
64
+ {
65
+ label: "流程图",
66
+ key: "b",
67
+ type: "default",
68
+ slot: "b",
69
+ },
70
+ {
71
+ label: "审批记录",
72
+ key: "c",
73
+ type: "default",
74
+ slot: "c",
75
+ },
76
+ ],
77
+ // 弹窗操作
78
+ isTapList: [
79
+ {
80
+ label: "基本信息",
81
+ key: "a",
82
+ type: "default",
83
+ slot: "default",
84
+ },
85
+ {
86
+ label: "流程图",
87
+ key: "b",
88
+ type: "default",
89
+ slot: "b",
90
+ },
91
+ {
92
+ label: "审批记录",
93
+ key: "c",
94
+ type: "default",
95
+ slot: "c",
96
+ },
97
+ ],
98
+ // 绑定tab块
99
+ label: document.getElementsByClassName("tops-tab-header-items"),
100
+
101
+ // 侧边弹窗
102
+ visible: false,
103
+ inList: [],
104
+ visibleTack: false,
105
+ trackListss: [],
106
+ };
107
+ },
108
+ watch: {
109
+ // 接受外部数组,渲染tab
110
+ tapList: {
111
+ handler(val, preVal) {
112
+ if (!this.selfTapList.length) {
113
+ this.isTapList = [].concat(this.defaultTabList);
114
+ if (val.length > 0) {
115
+ /* return [] */
116
+ val.forEach((v, i) => {
117
+ if (v.sort && v.sort > 1) {
118
+ this.isTapList.splice(v.sort - 1, 0, v);
119
+ } else if (v.sort == 1) {
120
+ this.isTapList.unshift(v);
121
+ } else {
122
+ this.isTapList.push(v);
123
+ }
124
+ });
125
+ }
126
+ this.active = this.isTapList[0].key;
127
+ // console.log("isTapList", this.isTapList);
128
+ }
129
+ },
130
+ immediate: true,
131
+ deep: true,
132
+ },
133
+ // 自定义tab,覆盖默认项
134
+ selfTapList: {
135
+ handler(val, preVal) {
136
+ if (val.length) {
137
+ this.isTapList = [].concat(val);
138
+ this.active = this.isTapList[0].key;
139
+ }
140
+ },
141
+ immediate: true,
142
+ deep: true,
143
+ },
144
+ // 流程图链接
145
+ track: {
146
+ handler(val, preVal) {
147
+ if (val) {
148
+ // console.log("流程图:::", val);
149
+ this.trackUrl = val;
150
+ if (window.location.protocol == "https:") {
151
+ this.trackUrl = this.trackUrl.replace(
152
+ "http://59.53.91.230:8088/",
153
+ "https://kq.ddzg.cn:8093/"
154
+ );
155
+ this.trackUrl = this.trackUrl.replace(
156
+ "http://59.53.91.231:8088/",
157
+ "https://qt.ddzg.cn:2119/"
158
+ );
159
+ this.trackUrl = this.trackUrl.replace(
160
+ "http://121.40.143.183:80/",
161
+ "https://www.ddzg.cn:2119/"
162
+ );
163
+ this.trackUrl = this.trackUrl.replace(
164
+ "http://121.40.143.183/",
165
+ "https://www.ddzg.cn:2119/"
166
+ );
167
+ }
168
+ }
169
+ },
170
+ immediate: true,
171
+ deep: true,
172
+ },
173
+ // 审批记录列表
174
+ taskComment: {
175
+ handler(val, preVal) {
176
+ if (val) {
177
+ this.taskCommentList = val;
178
+ }
179
+ },
180
+ immediate: true,
181
+ deep: true,
182
+ },
183
+ trackList: {
184
+ handler(val, preVal) {
185
+ if (val) {
186
+ this.trackListss = val;
187
+ }
188
+ },
189
+ immediate: true,
190
+ deep: true,
191
+ },
192
+ },
193
+
194
+ mounted() {
195
+ // 渲染后初始化为第一个位置
196
+ this.tabAnimation(0);
197
+ },
198
+
199
+ methods: {
200
+ // 选中
201
+ handleActive(e, i) {
202
+ if (e === this.active) {
203
+ return;
204
+ }
205
+
206
+ this.active = e;
207
+ this.tabAnimation(i);
208
+ },
209
+
210
+ // tab切换动画
211
+ tabAnimation(i) {
212
+ if (this.label.length) {
213
+ let doc = document.getElementsByClassName("bottom-line")[0];
214
+ let left;
215
+ if (doc.offsetWidth < this.label[i].offsetWidth - 10) {
216
+ let num =
217
+ (this.label[i].offsetWidth - doc.offsetWidth - 10) / 2;
218
+ left = `${this.label[i].offsetLeft + num}px`;
219
+ } else if (doc.offsetWidth > this.label[i].offsetWidth - 10) {
220
+ let num =
221
+ (doc.offsetWidth - this.label[i].offsetWidth + 10) / 2;
222
+ left = `${this.label[i].offsetLeft - num}px`;
223
+ } else {
224
+ left = `${this.label[i].offsetLeft}px`;
225
+ }
226
+ doc.style.transition = ".3s";
227
+ doc.style.transform = `translateX(${left})`;
228
+ }
229
+ },
230
+ // 附件列表
231
+ viewList(val) {
232
+ this.visible = true;
233
+ this.inList = val;
234
+ },
235
+ },
236
+ });