@lambo-design/shared 1.0.0-beta.1

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.
@@ -0,0 +1,224 @@
1
+ import config from "@/config/config"
2
+ import ajax from '@/utils/ajax'
3
+
4
+ export const tools = {
5
+
6
+ registerFileDrop(container, callback) {
7
+ container.get(0).addEventListener('dragover', tools.handleDragOver, false);
8
+ container.get(0).addEventListener('drop', tools.handleFileSelect, false);
9
+ },
10
+
11
+ /**
12
+ * 通过xml创建bpmn
13
+ * @param {string} xml 创建bpms xml
14
+ * @param {object} bpmnModeler bpmn对象
15
+ * @param {object} container 容器对象
16
+ */
17
+ async createDiagram(xml, bpmnModeler, container) {
18
+ try {
19
+ await bpmnModeler.importXML(xml);
20
+ } catch (err) {
21
+ console.error(err);
22
+ }
23
+ },
24
+ /**
25
+ * 通过Json设置颜色
26
+ * @param {object} json json 字符串
27
+ */
28
+ setColor(json, bpmnModeler) {
29
+ var modeling = bpmnModeler.get('modeling');
30
+ var elementRegistry = bpmnModeler.get('elementRegistry')
31
+ var elementToColor = elementRegistry.get(json.name);
32
+ if (elementToColor) {
33
+ modeling.setColor([elementToColor], {
34
+ stroke: json.stroke,
35
+ fill: json.fill
36
+ });
37
+ }
38
+ },
39
+
40
+
41
+ async createNewDiagram(bpmnModeler, processDefinitionId) {
42
+ const {$Message} = this;
43
+ let bpmnXmlStr = '<?xml version="1.0" encoding="UTF-8"?>\n' +
44
+ '<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:normal="http://flowable.org/bpmn/normal" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd" id="diagram" targetNamespace="http://bpmn.io/schema/bpmn">\n' +
45
+ ' <bpmn2:process id="Process_1" isExecutable="true">\n' +
46
+ ' <bpmn2:startEvent id="StartEvent_1"/>\n' +
47
+ ' </bpmn2:process>\n' +
48
+ ' <bpmndi:BPMNDiagram id="BPMNDiagram_1">\n' +
49
+ ' <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Process_1">\n' +
50
+ ' <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">\n' +
51
+ ' <dc:Bounds height="36.0" width="36.0" x="412.0" y="240.0"/>\n' +
52
+ ' </bpmndi:BPMNShape>\n' +
53
+ ' </bpmndi:BPMNPlane>\n' +
54
+ ' </bpmndi:BPMNDiagram>\n' +
55
+ '</bpmn2:definitions>'
56
+ if (processDefinitionId) {
57
+ await ajax.get(config.upmsServerContext + '/manage/workflow/getProcessXml?processDefinitionId=' + processDefinitionId).then(function ({data}) {
58
+ if (data.code === 1) {
59
+ bpmnXmlStr = data.data;
60
+ } else {
61
+ $Message.error("加载流程xml失败," + data.message);
62
+ }
63
+ // 将字符串转换成图显示出来
64
+ bpmnModeler.importXML(bpmnXmlStr, function (err) {
65
+ if (err) {
66
+ console.error(err)
67
+ }
68
+ })
69
+ })
70
+ } else {
71
+ // 将字符串转换成图显示出来
72
+ bpmnModeler.importXML(bpmnXmlStr, function (err) {
73
+ if (err) {
74
+ console.error(err)
75
+ }
76
+ })
77
+ }
78
+ },
79
+ // 下载为SVG格式,done是个函数,调用的时候传入的
80
+ saveSVG(bpmnModeler, done) {
81
+ // 把传入的done再传给bpmn原型的saveSVG函数调用
82
+ this.bpmnModeler.saveSVG(done)
83
+ },
84
+ // 下载为SVG格式,done是个函数,调用的时候传入的
85
+ saveDiagram(bpmnModeler, done) {
86
+ // 把传入的done再传给bpmn原型的saveXML函数调用
87
+ this.bpmnModeler.saveXML({format: true}, function (err, xml) {
88
+ done(err, xml)
89
+ })
90
+ },
91
+ // 下载为SVG格式,done是个函数,调用的时候传入的
92
+ deployBpm(bpmnModeler, xmlStr) {
93
+ const {$Message, $Spin} = this
94
+ const elementRegistry = bpmnModeler.get('elementRegistry');
95
+ const processNode = elementRegistry.filter(
96
+ (item) => {
97
+ return item.type === 'bpmn:Process'
98
+ }
99
+ )[0];
100
+ const processId = processNode.id;
101
+ const processName = processNode.businessObject.name;
102
+ if (!processId) {
103
+ $Message.error("流程编号不能为空")
104
+ return
105
+ }
106
+ if (!processName) {
107
+ $Message.error("流程名称不能为空")
108
+ return
109
+ }
110
+ $Spin.show();
111
+ ajax.post(config.upmsServerContext + '/manage/workflow/deployString', {
112
+ bpmnXml: xmlStr,
113
+ processId: processId,
114
+ processName: processName
115
+ }).then(function ({data}) {
116
+ $Spin.hide();
117
+ if (data.code === 1) {
118
+ $Message.success("流程部署成功")
119
+ } else {
120
+ $Message.error(data.data)
121
+ }
122
+ })
123
+
124
+ // 把传入的done再传给bpmn原型的saveSVG函数调用
125
+ // this.bpmnModeler.saveSVG(done)
126
+ },
127
+ // 当图发生改变的时候会调用这个函数,这个data就是图的xml
128
+ // setEncoded(link, name, data) {
129
+ // // 把xml转换为URI,下载要用到的
130
+ // const encodedData = encodeURIComponent(data)
131
+ // // 获取到图的xml,保存就是把这个xml提交给后台
132
+ // this.xmlStr = data
133
+ // // 下载图的具体操作,改变a的属性,className令a标签可点击,href令能下载,download是下载的文件的名字
134
+ // if (data) {
135
+ // link.className = 'active'
136
+ // link.href = 'data:application/bpmn20-xml;charset=UTF-8,' + encodedData
137
+ // link.download = name
138
+ // }
139
+ // },
140
+
141
+ /**
142
+ * 下载bpmn
143
+ * @param {object} bpmnModeler bpmn对象
144
+ */
145
+ downLoad(bpmnModeler) {
146
+ var downloadLink = $("#downloadBpmn")
147
+ bpmnModeler.saveXML({format: true}, function (err, xml) {
148
+ if (err) {
149
+ return console.error('could not save BPMN 2.0 diagram', err);
150
+ }
151
+ tools.setEncoded(downloadLink, 'diagram.bpmn', err ? null : xml);
152
+ });
153
+ },
154
+ /**
155
+ * 转码xml并下载
156
+ * @param {object} link 按钮
157
+ * @param {string} name 下载名称
158
+ * @param {string} data base64XML
159
+ */
160
+ setEncoded(link, name, data) {
161
+ var encodedData = encodeURIComponent(data);
162
+ if (data) {
163
+ link.addClass('active').attr({
164
+ 'href': 'data:application/bpmn20-xml;charset=UTF-8,' + encodedData,
165
+ 'download': name
166
+ });
167
+ } else {
168
+ link.removeClass('active');
169
+ }
170
+ },
171
+ /**
172
+ * 上传bpmn
173
+ * @param {object} bpmnModeler bpmn对象
174
+ * @param {object} container 容器对象
175
+ */
176
+ upload(bpmnModeler, container) {
177
+
178
+ },
179
+
180
+
181
+ /**
182
+ * 根据数据设置颜色
183
+ * @param data
184
+ * @returns {Array}
185
+ */
186
+ getByColor(data) {
187
+
188
+ var ColorJson = []
189
+ for (var k in data['doneLightSet']) {
190
+ var par = {
191
+ "name": data['doneLightSet'][k],
192
+ "stroke": "green",
193
+ "fill": "green"
194
+ }
195
+ ColorJson.push(par)
196
+ }
197
+ for (var k in data['donePointSet']) {
198
+ var par = {
199
+ "name": data['donePointSet'][k],
200
+ "stroke": "gray",
201
+ "fill": "#53d63a"
202
+
203
+ }
204
+ ColorJson.push(par)
205
+ }
206
+ for (var k in data['doneTaskSet']) {
207
+ var par = {
208
+ "name": data['doneTaskSet'][k],
209
+ "stroke": "green",
210
+ "fill": "#53d63a"
211
+ }
212
+ ColorJson.push(par)
213
+ }
214
+ for (var k in data['todoPointSet']) {
215
+ var par = {
216
+ "name": data['todoPointSet'][k],
217
+ "stroke": "green",
218
+ "fill": "#d6541c"
219
+ }
220
+ ColorJson.push(par)
221
+ }
222
+ return ColorJson
223
+ }
224
+ }
@@ -0,0 +1,123 @@
1
+ /**
2
+ * 生成uid
3
+ */
4
+ export function guid() {
5
+ return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
6
+ var r = Math.random() * 16 | 0,
7
+ v = c === 'x' ? r : (r & 0x3 | 0x8);
8
+ return v.toString(16);
9
+ });
10
+ }
11
+
12
+ // 数字每三位加逗号
13
+ export function toThousands(num) {
14
+ let result = '';
15
+ num = (num || 0).toString();
16
+ while (num.length > 3) {
17
+ result = ',' + num.slice(-3) + result;
18
+ num = num.slice(0, num.length - 3);
19
+ }
20
+ if (num) {
21
+ result = num + result;
22
+ }
23
+ return result;
24
+ }
25
+
26
+ /**
27
+ * 数字金额转为汉字
28
+ * @param values
29
+ * @returns {string}
30
+ */
31
+ export function toChies(values) {
32
+ //形参
33
+ let len = values.length //统计出长度
34
+ let arr = []
35
+
36
+ let chin_list = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'] //所有的数值对应的汉字
37
+
38
+ let chin_lisp = [
39
+ '仟',
40
+ '佰',
41
+ '拾',
42
+ '亿',
43
+ '仟',
44
+ '佰',
45
+ '拾',
46
+ '万',
47
+ '仟',
48
+ '佰',
49
+ '拾'
50
+ ] //进制
51
+
52
+ for (let i = 0; i < len; i++) {
53
+ arr.push(parseInt(values[i])) //输入的数据按下标存进去 存进去的只是数字
54
+ arr[i] = chin_list[arr[i]] //是根据我们输入的输入的数字,对应着我们的chin_list这个数组
55
+ } //123['壹','佰','贰','拾','叁']
56
+
57
+ for (let i = len - 1, j = 1; i > 0; i--) {
58
+ //i =2 1 //倒序 为了添加进制,方便我们去观看
59
+ arr.splice(i, 0, chin_lisp[chin_lisp.length - j++]) //j=2
60
+ }
61
+ arr = arr.join('')
62
+ if (len >= 1) {
63
+ arr += '元整'
64
+ }
65
+ return arr
66
+ }
67
+
68
+ export function numToDX(num) {
69
+ if (!/^(0|[1-9]\d*)(\.\d+)?$/.test(num))
70
+ return "数据非法";
71
+ let unit = "千百拾亿千百拾万千百拾元角分", str = "";
72
+ num += "00";
73
+ let p = num.indexOf('.');
74
+ if (p >= 0)
75
+ num = num.substring(0, p) + num.substr(p + 1, 2);
76
+ unit = unit.substr(unit.length - num.length);
77
+ for (let i = 0; i < num.length; i++)
78
+ str += '零壹贰叁肆伍陆柒捌玖'.charAt(num.charAt(i)) + unit.charAt(i);
79
+ return str.replace(/零(千|百|拾|角)/g, "零").replace(/(零)+/g, "零").replace(/零(万|亿|元)/g, "$1").replace(/(亿)万|壹(拾)/g, "$1$2").replace(/^元零?|零分/g, "").replace(/元$/g, "元整");
80
+ }
81
+
82
+ /**
83
+ * 校验电话号码是否正确
84
+ *
85
+ */
86
+
87
+ export function checkTel(val) {
88
+ var isPhone = /^([0-9]{3,4}-)?[0-9]{7,8}$/;
89
+ var isMob = /^((\+?86)|(\(\+86\)))?(13[0123456789][0-9]{8}|15[012356789][0-9]{8}|18[0123456789][0-9]{8}|14[57][0-9]{8}|17[678][0-9]{8})$/;
90
+ if (isMob.test(val) || isPhone.test(val)) {
91
+ return true;
92
+ } else {
93
+ return false;
94
+ }
95
+ }
96
+
97
+ /**
98
+ * 保留小数位数
99
+ */
100
+ export function toFixed(num, digit) {
101
+ if (digit > 6) {
102
+ digit = 6;
103
+ }
104
+ var changenum;
105
+ if (num > 0) {
106
+ changenum = (parseInt(num * Math.pow(10, digit) + 0.5) / Math.pow(10, digit)).toString();
107
+ } else {
108
+ changenum = (parseInt(num * Math.pow(10, digit) - 0.5) / Math.pow(10, digit)).toString();
109
+ }
110
+ var index = changenum.indexOf(".");
111
+ if (index < 0 && digit > 0) {
112
+ changenum = changenum + ".";
113
+ for (var i = 0; i < digit; i++) {
114
+ changenum = changenum + "0";
115
+ }
116
+ } else {
117
+ index = changenum.length - index;
118
+ for (var i = 0; i < (digit - index) + 1; i++) {
119
+ changenum = changenum + "0";
120
+ }
121
+ }
122
+ return changenum;
123
+ }