xrk-components 0.1.0 → 0.3.2

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 (38) hide show
  1. package/.babelrc +2 -11
  2. package/lib/index.css +18560 -0
  3. package/lib/index.esm.js +2958 -0
  4. package/lib/index.umd.js +2997 -0
  5. package/package.json +47 -69
  6. package/rollup.config.js +59 -0
  7. package/tsconfig.json +24 -0
  8. package/typings/shims-vue.d.ts +6 -0
  9. package/.editorconfig +0 -9
  10. package/.eslintrc.js +0 -40
  11. package/.prettierrc.js +0 -16
  12. package/debug.log +0 -1
  13. package/dist/bundler.js +0 -7
  14. package/dist/bundler.js.map +0 -1
  15. package/index.html +0 -19
  16. package/src/App.vue +0 -134
  17. package/src/lib/index.js +0 -27
  18. package/src/main.js +0 -25
  19. package/src/packages/dialog/index.js +0 -32
  20. package/src/packages/dialog/src/main.vue +0 -197
  21. package/src/packages/slide-verify/index.js +0 -12
  22. package/src/packages/slide-verify/src/main.vue +0 -479
  23. package/src/packages/slide-verify/src/static/close.png +0 -0
  24. package/src/packages/slide-verify/src/static/placeholder.png +0 -0
  25. package/src/packages/slide-verify/src/static/range_btn.png +0 -0
  26. package/src/packages/slide-verify/src/static/refresh.png +0 -0
  27. package/src/packages/task-detail/index.js +0 -12
  28. package/src/packages/task-detail/src/components/formDetail.vue +0 -79
  29. package/src/packages/task-detail/src/components/mixin.js +0 -105
  30. package/src/packages/task-detail/src/components/styles/index.scss +0 -162
  31. package/src/packages/task-detail/src/components/surveyDetail.vue +0 -337
  32. package/src/packages/task-detail/src/config/fields.js +0 -655
  33. package/src/packages/task-detail/src/config/index.js +0 -34
  34. package/src/packages/task-detail/src/main.vue +0 -108
  35. package/src/packages/task-detail/src/static/fieldsMap.js +0 -274
  36. package/src/packages/task-detail/src/test/testData.js +0 -743
  37. package/src/packages/task-detail/src/tools/index.js +0 -290
  38. package/webpack.config.js +0 -93
@@ -1,655 +0,0 @@
1
- /*
2
- * @Description:
3
- * @Date: 2021-02-23 14:26:30
4
- * @LastEditors: jml
5
- */
6
-
7
- // 图片预览插件
8
- // import preview from 'vue-photo-preview';
9
- // import 'vue-photo-preview/dist/skin.css';
10
-
11
- import { check, date, money } from '../tools/index';
12
- import Config from './index';
13
- import { createDialog } from '../../../dialog/index';
14
-
15
- export default Vue => {
16
- const { $createElement: createElement } = Vue;
17
- /**
18
- * 创建img元素
19
- * @param {*} imgUrl 图片地址
20
- * @param {*} prop
21
- * @param {*} config vNode默认配置
22
- * @param {*} noUsePreview 不使用图片预览
23
- */
24
- const createImgDom = (imgUrl, prop, config = {}, noUsePreview = false) => {
25
- if (Array.isArray(imgUrl) && imgUrl.length > 0) {
26
- // 数组图片
27
- return createElement(
28
- 'div',
29
- {
30
- ...config,
31
- class: 'img-group'
32
- },
33
- imgUrl.reduce((pre, cur) => {
34
- pre.push(createImgDom(cur, prop, config));
35
- return pre;
36
- }, [])
37
- );
38
- }
39
- if (check.isString(imgUrl)) {
40
- return createElement('img', {
41
- ...config,
42
- class: 'd_img',
43
- attrs: noUsePreview
44
- ? {
45
- src: imgUrl
46
- }
47
- : {
48
- src: imgUrl,
49
- preview: `${imgUrl}-${prop}`
50
- }
51
- });
52
- }
53
- return null;
54
- };
55
-
56
- /**
57
- * 创建iframe元素
58
- * @param {*} content
59
- */
60
- const createIframe = url => {
61
- return createElement('iframe', {
62
- attrs: {
63
- src: url,
64
- frameborder: 0,
65
- width: '375px',
66
- height: '667px'
67
- }
68
- });
69
- };
70
-
71
- const fields = {
72
- /**
73
- * 自然人
74
- */
75
- fullName: {
76
- label: '自然人',
77
- prop: ['fullName', 'full_name', 'agentName']
78
- },
79
- /**
80
- * 手机号
81
- */
82
- phone: {
83
- label: '手机号',
84
- prop: 'phone'
85
- },
86
- /**
87
- * 客户姓名
88
- */
89
- customerName: {
90
- label: '客户姓名',
91
- prop: 'customerName'
92
- },
93
- /**
94
- * 医院
95
- */
96
- hospitalName: {
97
- label: '医院',
98
- prop: ['hospitalName', 'hospital']
99
- },
100
- /**
101
- * 科室
102
- */
103
- departmentName: {
104
- label: '科室',
105
- prop: 'departmentName'
106
- },
107
- /**
108
- * 职称
109
- */
110
- dutyName: {
111
- label: '职称',
112
- prop: 'dutyName'
113
- },
114
- /**
115
- * 拜访时间
116
- */
117
- visitTime: {
118
- label: '拜访时间',
119
- prop: 'visitTime',
120
- render(row, prop) {
121
- if (row[prop]) {
122
- return date.dateFormat(row[prop]);
123
- } else {
124
- return date.dateFormat(row['createDt']);
125
- }
126
- }
127
- },
128
- /**
129
- * 拜访时长
130
- */
131
- visitMinute: {
132
- label: '拜访时长',
133
- prop: 'visitMinute',
134
- render(row, prop) {
135
- return `${row[prop]}分钟`;
136
- }
137
- },
138
- /**
139
- * 拜访地址
140
- */
141
- visitAddress: {
142
- label: '拜访地点',
143
- prop: 'visitAddress',
144
- style: { width: '100%' },
145
- slot: row => {
146
- const { addressWatermarkPicUrl, addressPicUrl } = row;
147
- return createImgDom(
148
- addressWatermarkPicUrl || addressPicUrl,
149
- 'addressWatermarkPicUrl'
150
- );
151
- }
152
- },
153
- /**
154
- * 传递信息
155
- */
156
- messages: {
157
- label: '传递信息',
158
- prop: 'messages'
159
- },
160
- /**
161
- * 客户反馈
162
- */
163
- customerRemark: {
164
- label: '客户反馈',
165
- prop: ['customerRemark', 'feedbackContent']
166
- },
167
- /**
168
- * 客户反馈时间
169
- */
170
- feedbackDt: {
171
- label: '客户反馈时间',
172
- prop: 'feedbackDt',
173
- render(row, prop) {
174
- return date.dateFormat(row[prop]);
175
- }
176
- },
177
- /**
178
- * 产品名称
179
- */
180
- productName: {
181
- label: '产品名称',
182
- prop: ['productName', 'product_name']
183
- },
184
- /**
185
- * 产品剂型
186
- */
187
- jixing: {
188
- label: '产品剂型',
189
- prop: 'jixing'
190
- },
191
- /**
192
- * 产品规格
193
- */
194
- guige: {
195
- label: '产品规格',
196
- prop: 'guige'
197
- },
198
- /**
199
- * 产品国药准字
200
- */
201
- approvalNumber: {
202
- label: '产品国药准字',
203
- prop: ['approvalNumber', 'approval_number']
204
- },
205
- /**
206
- * 客户签名
207
- */
208
- autographPicUrl: {
209
- label: '客户签名',
210
- prop: 'autographPicUrl',
211
- style: { width: '100%' },
212
- render(row, prop) {
213
- return createImgDom(row[prop], prop);
214
- }
215
- },
216
- /**
217
- * 现场照片
218
- */
219
- pics: {
220
- label: '现场照片',
221
- prop: 'pics',
222
- style: { width: '100%' },
223
- render(row, prop) {
224
- return createImgDom(row[prop], prop);
225
- }
226
- },
227
- /**
228
- * 会议时长
229
- */
230
- meetingMinute: {
231
- label: '会议时长',
232
- prop: 'meetingMinute',
233
- render(row, prop) {
234
- return row[prop] ? `${row[prop]}分钟` : '-';
235
- }
236
- },
237
- /**
238
- * 地点 , 暂时没用
239
- */
240
- addressPicUrl: {
241
- label: '地点',
242
- prop: ['addressWatermarkPicUrl', 'addressPicUrl'],
243
- render(row, prop) {
244
- if (Array.isArray(prop)) {
245
- const _k = prop.find(item => row[item]);
246
- return createImgDom(row[_k], _k);
247
- }
248
- return createImgDom(row[prop], prop);
249
- }
250
- },
251
- /**
252
- * 陈列照片
253
- */
254
- displayPhotos: {
255
- style: { width: '100%' },
256
- label: '陈列照片',
257
- prop: 'displayPhotos',
258
- render(row, prop) {
259
- if (row['imgUrls']) {
260
- return createImgDom(row['imgUrls'].split(';'), prop);
261
- }
262
- return createImgDom(
263
- check.isString(row[prop]) ? row[prop].split(',') : row[prop],
264
- prop
265
- );
266
- }
267
- },
268
- /**
269
- * 签到详情
270
- */
271
- signInfo: {
272
- label: '签到详情',
273
- type: 'table',
274
- style: { width: '100%' },
275
- prop: ['signInfo', 'signInformation']
276
- },
277
- /**
278
- * 拜访定位
279
- */
280
- longitudeAndLatitude: {
281
- label: '拜访定位',
282
- prop: 'longitudeAndLatitude',
283
- render(row) {
284
- const { longitudeAndLatitude, visitLongitude, visitLatitude } = row;
285
- if (longitudeAndLatitude) {
286
- return longitudeAndLatitude;
287
- }
288
- if (visitLongitude && visitLatitude) {
289
- return `${visitLongitude},${visitLatitude}`;
290
- }
291
- return '-';
292
- }
293
- },
294
- /**
295
- * 反馈
296
- */
297
- customerFeedback: {
298
- label: '反馈',
299
- prop: 'customerFeedback'
300
- },
301
- /**
302
- * 药店名称
303
- */
304
- pharmacyName: {
305
- label: '药店名称',
306
- prop: 'pharmacyName'
307
- },
308
- /**
309
- * 巡店时间
310
- */
311
- startDt: {
312
- label: '巡店时间',
313
- prop: 'startDt'
314
- },
315
- /**
316
- * 全国指导价
317
- */
318
- price: {
319
- label: '全国指导价',
320
- prop: 'price',
321
- render(row, prop) {
322
- return money.moneyFixed(row[prop]);
323
- }
324
- },
325
- /**
326
- * 产品售价
327
- */
328
- salesPrice: {
329
- label: '产品售价',
330
- prop: 'salesPrice',
331
- render(row, prop) {
332
- return money.moneyFixed(row[prop]);
333
- }
334
- },
335
- /**
336
- * 陈列要求
337
- */
338
- productRequire: {
339
- label: '陈列要求',
340
- prop: 'productRequire'
341
- },
342
- /**
343
- * 陈列要求
344
- */
345
- displayStatus: {
346
- label: '陈列状态',
347
- prop: 'displayStatus',
348
- render(row, prop) {
349
- const status = row[prop];
350
- return status == 1 ? '优秀' : status == 2 ? '合格' : '不合格';
351
- }
352
- },
353
- /**
354
- * 是否有POP
355
- */
356
- isProdectPop: {
357
- label: '是否有POP',
358
- prop: 'isProdectPop',
359
- render(row, prop) {
360
- const status = row[prop];
361
- return status == 1 ? '是' : '否';
362
- }
363
- },
364
- /**
365
- * 是否知道卖点
366
- */
367
- isKnow: {
368
- label: '是否知道卖点',
369
- prop: 'isKnow',
370
- render(row, prop) {
371
- const status = row[prop];
372
- return status == 1 ? '知道' : '不知道';
373
- }
374
- },
375
- /**
376
- * 主要竞品
377
- */
378
- competitor: {
379
- label: '主要竞品',
380
- prop: ['competitor', 'specifications']
381
- },
382
- /**
383
- * 门店库存
384
- */
385
- stock: {
386
- label: '门店库存',
387
- prop: 'stock'
388
- },
389
- /**
390
- * 医院等级
391
- */
392
- gradeName: {
393
- label: '医院等级',
394
- prop: 'gradeName'
395
- },
396
- /**
397
- * 签到人数
398
- */
399
- signInformationTotal: {
400
- label: '签到人数',
401
- prop: 'signInformationTotal',
402
- render(row, prop) {
403
- return `${row[prop]}人`;
404
- }
405
- },
406
- /**
407
- * 数字拜访途径
408
- */
409
- visitType: {
410
- label: '数字拜访途径',
411
- prop: 'visitType',
412
- render(row, prop) {
413
- return ['-', '微信'][row[prop]] || '-';
414
- }
415
- },
416
- /**
417
- * 传递详情
418
- */
419
- numberVisitMessage: {
420
- style: { width: '100%' },
421
- label: '传递详情',
422
- prop: 'numberVisitMessage',
423
- render(row, prop) {
424
- const { id } = row;
425
- return createElement(
426
- 'ul',
427
- {
428
- style: 'padding-left:20px;'
429
- },
430
- (row[prop] || row['transmitList'] || []).reduce((pre, cur) => {
431
- pre.push(
432
- createElement(
433
- 'li',
434
- {
435
- style:
436
- 'margin-bottom:10px;color:#1989fa;cursor: pointer;list-style: disc;',
437
- on: {
438
- click: createDialog.bind(null, {
439
- title: '传递详情',
440
- content: createIframe(
441
- `${Config.webViewUrl}${Config.webPath}/visit?id=${id}&platform=oss`
442
- ),
443
- hideCancel: true,
444
- success: res => {
445
- const { dialog } = res;
446
- dialog.close();
447
- }
448
- })
449
- }
450
- },
451
- `${cur.informationName}`
452
- )
453
- );
454
- return pre;
455
- }, [])
456
- );
457
- }
458
- },
459
- /**
460
- * 信息反馈记录
461
- */
462
- xinxifankui: {
463
- label: '信息反馈记录',
464
- prop: 'xinxifankui',
465
- render(row) {
466
- const { id } = row;
467
- return createImgDom(
468
- 'http://yiyang.oss-cn-beijing.aliyuncs.com/WEB/SaaS/images/xinxifankui.png',
469
- 'xinxifankui',
470
- {
471
- style: 'width:200px;',
472
- on: {
473
- click: createDialog.bind(null, {
474
- title: '传递详情',
475
- content: createIframe(
476
- `${Config.webViewUrl}${Config.webPath}/visit?id=${id}&showType=feedback&platform=oss`
477
- ),
478
- hideCancel: true,
479
- success: res => {
480
- const { dialog } = res;
481
- dialog.close();
482
- }
483
- })
484
- }
485
- },
486
- true
487
- );
488
- }
489
- },
490
- /**
491
- * 信息转发记录
492
- */
493
- xinxizhuanf: {
494
- label: '信息转发记录',
495
- prop: 'xinxizhuanf',
496
- render(row) {
497
- const { id } = row;
498
- return createImgDom(
499
- 'http://yiyang.oss-cn-beijing.aliyuncs.com/WEB/SaaS/images/xinxizhuanf.png',
500
- 'xinxizhuanf',
501
- {
502
- style: 'width:200px;',
503
- on: {
504
- click: createDialog.bind(null, {
505
- title: '传递详情',
506
- content: createIframe(
507
- `${Config.webViewUrl}${Config.webPath}/visitDetail?id=${id}&platform=oss`
508
- ),
509
- hideCancel: true,
510
- success: res => {
511
- const { dialog } = res;
512
- dialog.close();
513
- }
514
- })
515
- }
516
- },
517
- true
518
- );
519
- }
520
- },
521
- /**
522
- * 线上推广
523
- */
524
- xstg: {
525
- hideLabel: true,
526
- style: {
527
- width: '100%'
528
- },
529
- render(row) {
530
- const { titleList: _titleList, taskList = [] } = row;
531
- const titleList = (_titleList || [])[0] || [];
532
- const createTable = (firstLabel, list) => {
533
- const labelWidth = 100;
534
- const indexWidth = 70;
535
- const _list = [firstLabel, ...list];
536
- return createElement(
537
- 'div',
538
- {
539
- class: 'xstg_table_column',
540
- style: {
541
- width: `${list.length * labelWidth + indexWidth}px`
542
- }
543
- },
544
- _list.reduce((pre, cur, index) => {
545
- pre.push(
546
- createElement(
547
- 'div',
548
- {
549
- class: 'xstg_table_column_item',
550
- style: {
551
- width: `${index === 0 ? indexWidth : labelWidth}px`
552
- }
553
- },
554
- cur
555
- )
556
- );
557
- return pre;
558
- }, [])
559
- );
560
- };
561
- return createElement('div', { class: 'xstg_table' }, [
562
- createTable('序号', titleList),
563
- ...taskList.reduce((pre, cur = [], index) => {
564
- pre.push(createTable(+index + 1, cur));
565
- return pre;
566
- }, [])
567
- ]);
568
- }
569
- },
570
- /**
571
- * 标题
572
- */
573
- title: {
574
- label: '标题',
575
- prop: 'title'
576
- },
577
- /**
578
- * 描述
579
- */
580
- content: {
581
- label: '描述',
582
- prop: 'content'
583
- },
584
- /**
585
- * 照片
586
- */
587
- imgList: {
588
- style: { width: '100%' },
589
- label: '照片',
590
- prop: 'imgList',
591
- render(row, prop) {
592
- const _imgArr = row[prop] || [];
593
- return createElement(
594
- 'ul',
595
- { class: 'case_imgs' },
596
- _imgArr.reduce((pre, cur) => {
597
- pre.push(
598
- createElement('li', [
599
- createImgDom(cur.imgUrl),
600
- createElement('div', cur.imgDescribe)
601
- ])
602
- );
603
- return pre;
604
- }, [])
605
- );
606
- }
607
- },
608
- /**
609
- * ppt文件列表
610
- */
611
- fileList: {
612
- style: { width: '100%' },
613
- label: 'ppt文件列表',
614
- prop: 'fileList',
615
- render(row, prop) {
616
- const _fileArr = row[prop] || [];
617
- return createElement(
618
- 'ul',
619
- { style: { 'padding-left': '19px' } },
620
- _fileArr.reduce((pre, cur) => {
621
- pre.push(
622
- createElement(
623
- 'li',
624
- {
625
- style: {
626
- color: '#409eff',
627
- 'list-style': 'decimal',
628
- 'margin-bottom': '5px'
629
- }
630
- },
631
- [
632
- createElement(
633
- 'span',
634
- {
635
- style: { cursor: 'pointer' },
636
- on: {
637
- click: () => {
638
- window.open(cur.fileUrl);
639
- }
640
- }
641
- },
642
- cur.fileName
643
- )
644
- ]
645
- )
646
- );
647
- return pre;
648
- }, [])
649
- );
650
- }
651
- }
652
- };
653
-
654
- return fields;
655
- };
@@ -1,34 +0,0 @@
1
- /*
2
- * @Description:
3
- * @Author: jml
4
- * @Date: 2021-02-25 17:26:10
5
- * @LastEditors: jml
6
- * @LastEditTime: 2021-02-25 17:26:41
7
- */
8
- const setDomain = () => {
9
- let hostname = window.location.hostname;
10
- let len = 0;
11
- if (!/192|172/.test(hostname)) {
12
- hostname = hostname.split('.');
13
- len = hostname.length;
14
- hostname = `${hostname[len - 2]}.${hostname[len - 1]}`;
15
- }
16
- return hostname;
17
- };
18
- const setWebViewUrl = () => {
19
- let domain = setDomain();
20
- let url = '//saas-crm-wx.jimijiayuan.cn';
21
- if (domain.includes('192')) {
22
- return url;
23
- }
24
- url = `//saas-crm-wx.${domain}`;
25
- return url;
26
- };
27
-
28
- const config = {
29
- token: 'supplierSaaSToken',
30
- domain: setDomain(),
31
- webPath: '/html/index.html#',
32
- webViewUrl: setWebViewUrl()
33
- };
34
- export default config;