eoss-ui 0.3.97 → 0.4.14
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/lib/button-group.js +98 -15
- package/lib/button.js +100 -17
- package/lib/ca-login.js +326 -0
- package/lib/card.js +2 -2
- package/lib/cascader.js +2 -2
- package/lib/checkbox-group.js +104 -18
- package/lib/clients.js +2 -2
- package/lib/data-table-form.js +104 -21
- package/lib/data-table.js +228 -35
- package/lib/date-picker.js +100 -17
- package/lib/dialog.js +101 -17
- package/lib/enterprise.js +2 -2
- package/lib/eoss-ui.common.js +480 -122
- package/lib/error-page.js +2 -2
- package/lib/flow-group.js +100 -17
- package/lib/flow-list.js +98 -15
- package/lib/flow.js +98 -15
- package/lib/form.js +112 -26
- package/lib/handle-user.js +100 -17
- package/lib/handler.js +100 -17
- package/lib/index.js +1 -1
- package/lib/input-number.js +100 -17
- package/lib/input.js +100 -17
- package/lib/label.js +2 -2
- package/lib/login.js +126 -27
- package/lib/main.js +98 -15
- package/lib/mainComp.js +98 -15
- package/lib/menu.js +2 -2
- package/lib/nav.js +100 -17
- package/lib/notify.js +2 -2
- package/lib/page.js +100 -17
- package/lib/pagination.js +2 -2
- package/lib/player.js +100 -17
- package/lib/qr-code.js +107 -24
- package/lib/radio-group.js +106 -20
- package/lib/select-ganged.js +104 -18
- package/lib/select.js +114 -25
- package/lib/selector-panel.js +109 -23
- package/lib/selector.js +106 -20
- package/lib/sizer.js +100 -17
- package/lib/steps.js +100 -17
- package/lib/switch.js +100 -17
- package/lib/table-form.js +107 -24
- package/lib/tabs-panel.js +2 -2
- package/lib/tabs.js +100 -17
- package/lib/theme-chalk/base.css +1 -1
- package/lib/theme-chalk/ca-login.css +1 -0
- package/lib/theme-chalk/fonts/iconfont.ttf +0 -0
- package/lib/theme-chalk/fonts/iconfont.woff +0 -0
- package/lib/theme-chalk/icon.css +1 -1
- package/lib/theme-chalk/index.css +1 -1
- package/lib/theme-chalk/main.css +1 -1
- package/lib/theme-chalk/menu.css +1 -1
- package/lib/theme-chalk/sizer.css +1 -1
- package/lib/theme-chalk/upload.css +1 -1
- package/lib/tips.js +110 -22
- package/lib/toolbar.js +2 -2
- package/lib/tree-group.js +100 -17
- package/lib/tree.js +100 -17
- package/lib/upload.js +98 -15
- package/lib/utils/util.js +98 -15
- package/lib/wujie.js +100 -17
- package/lib/wxlogin.js +100 -17
- package/package.json +2 -2
- package/packages/ca-login/index.js +5 -0
- package/packages/ca-login/src/main.vue +62 -0
- package/packages/checkbox-group/index.js +3 -3
- package/packages/checkbox-group/src/main.vue +4 -1
- package/packages/data-table/src/column.vue +110 -28
- package/packages/data-table/src/main.vue +2 -1
- package/packages/data-table-form/src/table.vue +1 -1
- package/packages/form/src/main.vue +17 -7
- package/packages/login/src/main.vue +40 -13
- package/packages/radio-group/index.js +3 -3
- package/packages/radio-group/src/main.vue +4 -1
- package/packages/select/src/main.vue +7 -1
- package/packages/select-ganged/src/main.vue +4 -1
- package/packages/selector/src/main.vue +4 -1
- package/packages/selector-panel/src/selection.vue +4 -1
- package/packages/theme-chalk/lib/base.css +1 -1
- package/packages/theme-chalk/lib/ca-login.css +1 -0
- package/packages/theme-chalk/lib/fonts/iconfont.ttf +0 -0
- package/packages/theme-chalk/lib/fonts/iconfont.woff +0 -0
- package/packages/theme-chalk/lib/icon.css +1 -1
- package/packages/theme-chalk/lib/index.css +1 -1
- package/packages/theme-chalk/lib/main.css +1 -1
- package/packages/theme-chalk/lib/menu.css +1 -1
- package/packages/theme-chalk/lib/sizer.css +1 -1
- package/packages/theme-chalk/lib/upload.css +1 -1
- package/packages/theme-chalk/src/ca-login.scss +4 -0
- package/packages/theme-chalk/src/fonts/iconfont.ttf +0 -0
- package/packages/theme-chalk/src/fonts/iconfont.woff +0 -0
- package/packages/theme-chalk/src/icon.scss +8 -0
- package/packages/theme-chalk/src/index.scss +1 -0
- package/packages/tips/src/main.vue +5 -2
- package/src/index.js +4 -1
- package/src/utils/util.js +108 -36
- package/lib/theme-chalk/radio.css +0 -1
- package/packages/radio/index.js +0 -5
- package/packages/radio/src/main.vue +0 -259
- package/packages/theme-chalk/lib/radio.css +0 -1
- package/packages/theme-chalk/src/radio.scss +0 -3
package/src/utils/util.js
CHANGED
|
@@ -326,7 +326,7 @@ const ajax = function ({
|
|
|
326
326
|
* @param {String} [key] - 对象子元素的属性名
|
|
327
327
|
**/
|
|
328
328
|
const arrUnique = function (data, key) {
|
|
329
|
-
|
|
329
|
+
let newArr = [];
|
|
330
330
|
if (key === undefined) {
|
|
331
331
|
data.sort();
|
|
332
332
|
newArr = [data[0]];
|
|
@@ -336,7 +336,7 @@ const arrUnique = function (data, key) {
|
|
|
336
336
|
}
|
|
337
337
|
}
|
|
338
338
|
} else {
|
|
339
|
-
|
|
339
|
+
let obj = {};
|
|
340
340
|
for (let i = 0; i < data.length; i++) {
|
|
341
341
|
if (!obj[data[i][key]]) {
|
|
342
342
|
newArr.push(data[i]);
|
|
@@ -474,8 +474,8 @@ const esEncode = function (value) {
|
|
|
474
474
|
* @param {string} [key] - 私钥
|
|
475
475
|
**/
|
|
476
476
|
const esDecode = function (value) {
|
|
477
|
-
|
|
478
|
-
|
|
477
|
+
let kleng = publicKey.length;
|
|
478
|
+
let result;
|
|
479
479
|
let cat1;
|
|
480
480
|
let cat2;
|
|
481
481
|
let cat3;
|
|
@@ -483,7 +483,7 @@ const esDecode = function (value) {
|
|
|
483
483
|
let arr;
|
|
484
484
|
arr = new Array(Math.floor(value.length / 3));
|
|
485
485
|
result = arr.length;
|
|
486
|
-
for (
|
|
486
|
+
for (let i = 0; i < result; i++) {
|
|
487
487
|
cat1 = publicKey.indexOf(value.charAt(num));
|
|
488
488
|
num++;
|
|
489
489
|
cat2 = publicKey.indexOf(value.charAt(num));
|
|
@@ -562,10 +562,11 @@ const exclAttribute = ({ attrs = 'value', data }) => {
|
|
|
562
562
|
* @param {name} [string] - 导出文件名
|
|
563
563
|
* @param {numbers} [boolean] - 序号
|
|
564
564
|
**/
|
|
565
|
-
const exportXls = function ({ thead = [], data = [], name, numbers }) {
|
|
565
|
+
const exportXls = function ({ thead = [], data = [], name, numbers, option }) {
|
|
566
566
|
let tbody = '';
|
|
567
567
|
let aligns = [];
|
|
568
568
|
let fields = [];
|
|
569
|
+
let keys = {};
|
|
569
570
|
let others = {};
|
|
570
571
|
let alink = document.createElement('a');
|
|
571
572
|
for (let i = 0; i < thead.length; i++) {
|
|
@@ -573,14 +574,17 @@ const exportXls = function ({ thead = [], data = [], name, numbers }) {
|
|
|
573
574
|
if (numbers) {
|
|
574
575
|
tbody += '<th rowspan="' + thead.length + '"></th>';
|
|
575
576
|
}
|
|
576
|
-
|
|
577
|
+
let tr = thead[i];
|
|
577
578
|
let col = 0;
|
|
578
579
|
for (let x = 0; x < tr.length; x++) {
|
|
579
|
-
|
|
580
|
+
let td = tr[x];
|
|
580
581
|
if (td.property) {
|
|
581
582
|
if (col === x) {
|
|
582
583
|
fields.push(td.property);
|
|
583
584
|
aligns.push(td.align);
|
|
585
|
+
if (td.labelKey && td.valueKey) {
|
|
586
|
+
keys[td.property] = {labelKey: td.labelKey, valueKey: td.valueKey, multiple: !!(td.valueToString || td['value-to-string'])};
|
|
587
|
+
}
|
|
584
588
|
} else {
|
|
585
589
|
others[String(col)] = [td.property, td.align];
|
|
586
590
|
}
|
|
@@ -601,16 +605,66 @@ const exportXls = function ({ thead = [], data = [], name, numbers }) {
|
|
|
601
605
|
}
|
|
602
606
|
for (let i = 0; i < data.length; i++) {
|
|
603
607
|
tbody += '<tr>';
|
|
604
|
-
for (
|
|
605
|
-
|
|
608
|
+
for (let x in fields) {
|
|
609
|
+
let field = '';
|
|
610
|
+
let valueKey = keys[fields[x]] && keys[fields[x]].valueKey ? keys[fields[x]].valueKey : 'value';
|
|
611
|
+
let labelKey = keys[fields[x]] && keys[fields[x]].labelKey ? keys[fields[x]].labelKey : 'name';
|
|
612
|
+
if (option[fields[x]]) {
|
|
613
|
+
if (Array.isArray(data[i][fields[x]])) {
|
|
614
|
+
field = [];
|
|
615
|
+
data[i][fields[x]].forEach(ele => {
|
|
616
|
+
option[fields[x]].forEach(item => {
|
|
617
|
+
// eslint-disable-next-line eqeqeq
|
|
618
|
+
if (item[valueKey] == ele) {
|
|
619
|
+
field.push(item[labelKey]);
|
|
620
|
+
return;
|
|
621
|
+
}
|
|
622
|
+
});
|
|
623
|
+
});
|
|
624
|
+
field = field.join(' ');
|
|
625
|
+
} else if (typeof data[i][fields[x]] === 'string' && keys[fields[x]] && keys[fields[x]].multiple) {
|
|
626
|
+
field = [];
|
|
627
|
+
data[i][fields[x]].split(',').forEach(ele => {
|
|
628
|
+
option[fields[x]].forEach(item => {
|
|
629
|
+
// eslint-disable-next-line eqeqeq
|
|
630
|
+
if (item[valueKey] == ele) {
|
|
631
|
+
field.push(item[labelKey]);
|
|
632
|
+
return;
|
|
633
|
+
}
|
|
634
|
+
});
|
|
635
|
+
});
|
|
636
|
+
field = field.join(' ');
|
|
637
|
+
} else {
|
|
638
|
+
option[fields[x]].forEach(item => {
|
|
639
|
+
// eslint-disable-next-line eqeqeq
|
|
640
|
+
if (item[valueKey] == data[i][fields[x]]) {
|
|
641
|
+
field = item[labelKey];
|
|
642
|
+
return;
|
|
643
|
+
}
|
|
644
|
+
});
|
|
645
|
+
}
|
|
646
|
+
} else if (typeof data[i][fields[x]] === 'object' && keys[fields[x]]) {
|
|
647
|
+
if (Array.isArray(data[i][fields[x]])) {
|
|
648
|
+
data[i][fields[x]].forEach(item => {
|
|
649
|
+
field = [];
|
|
650
|
+
field.push({}.toString.call(item) === '[object Object]' ? item[labelKey] : item);
|
|
651
|
+
});
|
|
652
|
+
field = field.join(' ');
|
|
653
|
+
} else {
|
|
654
|
+
field = data[i][fields[x]][labelKey];
|
|
655
|
+
}
|
|
656
|
+
} else {
|
|
657
|
+
field = data[i][fields[x]];
|
|
658
|
+
}
|
|
659
|
+
tbody += '<td align="' + aligns[x] + '">' + field + '</td>';
|
|
606
660
|
}
|
|
607
661
|
tbody += '</tr>';
|
|
608
662
|
}
|
|
609
663
|
if (!name) {
|
|
610
664
|
name = 'table_' + new Date().getTime();
|
|
611
665
|
}
|
|
612
|
-
|
|
613
|
-
|
|
666
|
+
let uri = 'data:application/vnd.ms-excel;base64,';
|
|
667
|
+
let template =
|
|
614
668
|
'<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><meta charset="UTF-8"><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head><body><table style="vnd.ms-excel.numberformat:@">' +
|
|
615
669
|
tbody +
|
|
616
670
|
'</table></body></html>';
|
|
@@ -948,7 +1002,7 @@ const getSaturation = function ($s, $i, $isLight) {
|
|
|
948
1002
|
const getScript = function (url, callback) {
|
|
949
1003
|
// eslint-disable-next-line no-undef
|
|
950
1004
|
return new Promise((resolve, reject) => {
|
|
951
|
-
|
|
1005
|
+
let xmlHttp = null;
|
|
952
1006
|
if (win.XMLHttpRequest) {
|
|
953
1007
|
xmlHttp = new XMLHttpRequest();
|
|
954
1008
|
} else if (win.ActiveXObject) {
|
|
@@ -1170,15 +1224,15 @@ const getValues = function (obj, flag) {
|
|
|
1170
1224
|
**/
|
|
1171
1225
|
|
|
1172
1226
|
const handlerUrl = function (url, before) {
|
|
1173
|
-
|
|
1227
|
+
let arry = url.split('?');
|
|
1174
1228
|
if (arry.length > 2) {
|
|
1175
1229
|
let ary = arry.splice(1, arry.length);
|
|
1176
1230
|
arry.push(ary.join('?'));
|
|
1177
1231
|
}
|
|
1178
1232
|
if (arry.length > 1) {
|
|
1179
1233
|
if (arry[1].indexOf('_tt') > -1) {
|
|
1180
|
-
|
|
1181
|
-
for (
|
|
1234
|
+
let search = arry[1].split('&');
|
|
1235
|
+
for (let i in search) {
|
|
1182
1236
|
if (search[i].indexOf('_tt') > -1) {
|
|
1183
1237
|
search[i] = '_tt=' + new Date().getTime();
|
|
1184
1238
|
}
|
|
@@ -1303,7 +1357,7 @@ const identical = function ({
|
|
|
1303
1357
|
* @param {String} [key] - 目标对象的属性名
|
|
1304
1358
|
**/
|
|
1305
1359
|
const indexOfObj = function (arry, target, key) {
|
|
1306
|
-
for (
|
|
1360
|
+
for (let i = 0; i < arry.length; i++) {
|
|
1307
1361
|
if (key) {
|
|
1308
1362
|
if (typeof target === 'string' && arry[i][key] === target) {
|
|
1309
1363
|
return i;
|
|
@@ -1353,7 +1407,7 @@ const isLogged = function ({
|
|
|
1353
1407
|
to,
|
|
1354
1408
|
from,
|
|
1355
1409
|
next,
|
|
1356
|
-
exclude,
|
|
1410
|
+
exclude = [],
|
|
1357
1411
|
open,
|
|
1358
1412
|
cookie,
|
|
1359
1413
|
loginPage,
|
|
@@ -1405,10 +1459,27 @@ const isLogged = function ({
|
|
|
1405
1459
|
'{redirectUri}',
|
|
1406
1460
|
encodeURIComponent(url)
|
|
1407
1461
|
);
|
|
1408
|
-
if (
|
|
1409
|
-
|
|
1462
|
+
if (to.query.openType) {
|
|
1463
|
+
switch (to.query.openType) {
|
|
1464
|
+
case 'self':
|
|
1465
|
+
win.location.href = href;
|
|
1466
|
+
break;
|
|
1467
|
+
case 'blank':
|
|
1468
|
+
win.open(href);
|
|
1469
|
+
break;
|
|
1470
|
+
case 'top':
|
|
1471
|
+
win.top.location.href = href;
|
|
1472
|
+
break;
|
|
1473
|
+
case 'parent':
|
|
1474
|
+
win.parent.location.href = href;
|
|
1475
|
+
break;
|
|
1476
|
+
}
|
|
1410
1477
|
} else {
|
|
1411
|
-
|
|
1478
|
+
if (open) {
|
|
1479
|
+
win.open(href);
|
|
1480
|
+
} else {
|
|
1481
|
+
win.top.location.href = href;
|
|
1482
|
+
}
|
|
1412
1483
|
}
|
|
1413
1484
|
break;
|
|
1414
1485
|
}
|
|
@@ -1423,12 +1494,13 @@ const isLogged = function ({
|
|
|
1423
1494
|
} else if (
|
|
1424
1495
|
token ||
|
|
1425
1496
|
to.path === '/' ||
|
|
1426
|
-
to.path === '/login' ||
|
|
1427
1497
|
to.path === '/404' ||
|
|
1428
|
-
exclude.indexOf(to.path) > -1 || exclude.indexOf(to.name) > -1
|
|
1498
|
+
exclude.indexOf(to.path) > -1 || exclude.indexOf(to.name) > -1 ||
|
|
1499
|
+
to.path === '/login' ||
|
|
1500
|
+
(token && to.path === '/main')
|
|
1429
1501
|
) {
|
|
1430
|
-
if (redirect &&
|
|
1431
|
-
window.location.replace(urlJoinParams({ url:
|
|
1502
|
+
if (redirect && (to.path === '/main' || to.path === '/login')) {
|
|
1503
|
+
window.location.replace(urlJoinParams({ url: `.${to.path}.html`, param: to.query }));
|
|
1432
1504
|
} else {
|
|
1433
1505
|
next();
|
|
1434
1506
|
}
|
|
@@ -1593,7 +1665,7 @@ const mixColor = function ($color1, $color2, $n) {
|
|
|
1593
1665
|
**/
|
|
1594
1666
|
const overbrim = function (el) {
|
|
1595
1667
|
let w = el.offsetWidth;
|
|
1596
|
-
|
|
1668
|
+
let s = el.scrollWidth;
|
|
1597
1669
|
if (s > w) {
|
|
1598
1670
|
return true;
|
|
1599
1671
|
} else {
|
|
@@ -1749,7 +1821,7 @@ const sendMessage = function ({ data = {}, url }) {
|
|
|
1749
1821
|
* @param {String} [url] - 图标地址
|
|
1750
1822
|
**/
|
|
1751
1823
|
const setFavicon = function (url) {
|
|
1752
|
-
|
|
1824
|
+
let link = document.querySelector("link[rel*='icon']");
|
|
1753
1825
|
if (link) {
|
|
1754
1826
|
link.href = url;
|
|
1755
1827
|
} else {
|
|
@@ -1842,13 +1914,13 @@ const startWith = function (value, reg, or = false) {
|
|
|
1842
1914
|
* @param {Number} [wait] - 延迟毫秒数
|
|
1843
1915
|
**/
|
|
1844
1916
|
const throttle = function (fn, wait) {
|
|
1845
|
-
|
|
1846
|
-
|
|
1917
|
+
let timer = null;
|
|
1918
|
+
let startTime = Date.now();
|
|
1847
1919
|
return function () {
|
|
1848
|
-
|
|
1849
|
-
|
|
1850
|
-
|
|
1851
|
-
|
|
1920
|
+
let curTime = Date.now();
|
|
1921
|
+
let remaining = wait - (curTime - startTime);
|
|
1922
|
+
let context = this;
|
|
1923
|
+
let args = arguments;
|
|
1852
1924
|
clearTimeout(timer);
|
|
1853
1925
|
if (remaining <= 0) {
|
|
1854
1926
|
fn.apply(context, args);
|
|
@@ -2037,9 +2109,9 @@ const watermark = function (option) {
|
|
|
2037
2109
|
let { rows, cols, html, angle, color, height, lineHeight, opacity, fontSize, fontWeight, fontFamily, textAlign, zIndex } = options;
|
|
2038
2110
|
|
|
2039
2111
|
wrap.style.cssText = 'display: flex;align-items: center;justify-content: flex-start;flex-wrap: wrap;align-content: space-between;position: fixed;left: 50%;top: 50%;transform: translate(-50%, -50%);height: 100vh;width: 100vw;pointer-events: none;overflow: hidden;background: transparent;z-index: ' + zIndex + ';';
|
|
2040
|
-
|
|
2041
|
-
for (
|
|
2042
|
-
|
|
2112
|
+
let num = rows * cols;
|
|
2113
|
+
for (let i = 0; i < num; i++) {
|
|
2114
|
+
let item = document.createElement('div');
|
|
2043
2115
|
item.innerHTML = html;
|
|
2044
2116
|
item.style.cssText = 'flex-grow: 1;flex-shrink: 0;color: ' + color + ';text-align: ' + textAlign + ';width: ' + (100 / cols) + '%;height: ' + height + 'px;line-height: ' + lineHeight + 'px;font-size:' + fontSize + 'px;font-weight: ' + fontWeight + ';font-family: ' + fontFamily + ';text-align: ' + textAlign + ';transform: rotate(' + angle + 'deg);opacity: ' + opacity + ';';
|
|
2045
2117
|
docFrag.appendChild(item);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.el-radio__label{display:inline-block}
|
package/packages/radio/index.js
DELETED
|
@@ -1,259 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div v-show="display" v-if="!hide" class="es-radio">
|
|
3
|
-
<el-radio
|
|
4
|
-
v-if="!optionList.length && label"
|
|
5
|
-
v-model="selectValue"
|
|
6
|
-
:label="label"
|
|
7
|
-
v-bind="$attrs"
|
|
8
|
-
v-on="$listeners"
|
|
9
|
-
>
|
|
10
|
-
<slot></slot>
|
|
11
|
-
</el-radio>
|
|
12
|
-
<el-radio-group
|
|
13
|
-
v-else
|
|
14
|
-
v-model="selectValue"
|
|
15
|
-
v-bind="$attrs"
|
|
16
|
-
:rules="rules"
|
|
17
|
-
v-on="$listeners"
|
|
18
|
-
>
|
|
19
|
-
<template v-if="genre === 'button'">
|
|
20
|
-
<el-radio-button
|
|
21
|
-
v-for="(item, index) in optionList"
|
|
22
|
-
:key="item.value || index"
|
|
23
|
-
:label="item"
|
|
24
|
-
:disabled="item.disabled"
|
|
25
|
-
>
|
|
26
|
-
{{ item.label }}
|
|
27
|
-
</el-radio-button>
|
|
28
|
-
</template>
|
|
29
|
-
<template v-else>
|
|
30
|
-
<el-radio
|
|
31
|
-
v-for="(item, index) in optionList"
|
|
32
|
-
:key="item.value || index"
|
|
33
|
-
:label="item"
|
|
34
|
-
:disabled="item.disabled"
|
|
35
|
-
:border="genre === 'border'"
|
|
36
|
-
>
|
|
37
|
-
{{ item.label }}
|
|
38
|
-
</el-radio>
|
|
39
|
-
</template>
|
|
40
|
-
</el-radio-group>
|
|
41
|
-
</div>
|
|
42
|
-
</template>
|
|
43
|
-
|
|
44
|
-
<script>
|
|
45
|
-
import util from 'eoss-ui/src/utils/util';
|
|
46
|
-
export default {
|
|
47
|
-
name: 'EsRadio',
|
|
48
|
-
props: {
|
|
49
|
-
label: {
|
|
50
|
-
type: String,
|
|
51
|
-
default: ''
|
|
52
|
-
},
|
|
53
|
-
name: {
|
|
54
|
-
type: String,
|
|
55
|
-
default: ''
|
|
56
|
-
},
|
|
57
|
-
value: {
|
|
58
|
-
type: [String, Number, Object],
|
|
59
|
-
default: ''
|
|
60
|
-
},
|
|
61
|
-
valueKey: {
|
|
62
|
-
type: String,
|
|
63
|
-
default: ''
|
|
64
|
-
},
|
|
65
|
-
valueType: {
|
|
66
|
-
type: String,
|
|
67
|
-
default: 'string'
|
|
68
|
-
},
|
|
69
|
-
// 指定选择项显示值的键名,data元素是对象类型时必填
|
|
70
|
-
optionKey: {
|
|
71
|
-
type: String,
|
|
72
|
-
default: ''
|
|
73
|
-
},
|
|
74
|
-
// 样式风格 button(按钮样式), border(带有边框)
|
|
75
|
-
genre: {
|
|
76
|
-
type: String,
|
|
77
|
-
default: ''
|
|
78
|
-
},
|
|
79
|
-
display: {
|
|
80
|
-
type: Boolean,
|
|
81
|
-
default: true
|
|
82
|
-
},
|
|
83
|
-
hide: {
|
|
84
|
-
type: Boolean,
|
|
85
|
-
default: false
|
|
86
|
-
},
|
|
87
|
-
// 选择项远程地址
|
|
88
|
-
url: {
|
|
89
|
-
type: String,
|
|
90
|
-
default: ''
|
|
91
|
-
},
|
|
92
|
-
// 选择项获取代码表数据(优先级大于url)
|
|
93
|
-
sysCode: {
|
|
94
|
-
type: String,
|
|
95
|
-
default: ''
|
|
96
|
-
},
|
|
97
|
-
// 选择项获取代码表数据(优先级大于url)
|
|
98
|
-
rules: {
|
|
99
|
-
type: Object,
|
|
100
|
-
default() {
|
|
101
|
-
return {};
|
|
102
|
-
}
|
|
103
|
-
},
|
|
104
|
-
// 选择项本地数据
|
|
105
|
-
data: {
|
|
106
|
-
type: Array,
|
|
107
|
-
default() {
|
|
108
|
-
return [];
|
|
109
|
-
}
|
|
110
|
-
},
|
|
111
|
-
// 选择项本地数据
|
|
112
|
-
optionData: {
|
|
113
|
-
type: Array,
|
|
114
|
-
default() {
|
|
115
|
-
return [];
|
|
116
|
-
}
|
|
117
|
-
},
|
|
118
|
-
method: {
|
|
119
|
-
type: String,
|
|
120
|
-
default: 'get'
|
|
121
|
-
},
|
|
122
|
-
params: {
|
|
123
|
-
type: Object,
|
|
124
|
-
default() {
|
|
125
|
-
return {};
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
},
|
|
129
|
-
data() {
|
|
130
|
-
return {
|
|
131
|
-
list: '',
|
|
132
|
-
radioValue: ''
|
|
133
|
-
};
|
|
134
|
-
},
|
|
135
|
-
computed: {
|
|
136
|
-
selectValue: {
|
|
137
|
-
get() {
|
|
138
|
-
return this.value;
|
|
139
|
-
},
|
|
140
|
-
set(val) {
|
|
141
|
-
return val;
|
|
142
|
-
}
|
|
143
|
-
},
|
|
144
|
-
optionList: {
|
|
145
|
-
get() {
|
|
146
|
-
let arr = [];
|
|
147
|
-
if (this.list.length) {
|
|
148
|
-
arr = this.list;
|
|
149
|
-
} else if (this.optionData.length) {
|
|
150
|
-
arr = this.optionData;
|
|
151
|
-
} else if (this.data.length) {
|
|
152
|
-
arr = this.data;
|
|
153
|
-
}
|
|
154
|
-
arr.forEach(item => {
|
|
155
|
-
if (this.optionLabelKey) {
|
|
156
|
-
item.label = item[this.optionLabelKey];
|
|
157
|
-
} else if (this.optionKey) {
|
|
158
|
-
item.label = item[this.optionKey];
|
|
159
|
-
} else {
|
|
160
|
-
item.label = item.label || item.name || item.shortName || item.text;
|
|
161
|
-
}
|
|
162
|
-
if (this.optionValueKey) {
|
|
163
|
-
item.value = item[this.optionValueKey];
|
|
164
|
-
} else {
|
|
165
|
-
item.value = item.value || item.id || item.label;
|
|
166
|
-
}
|
|
167
|
-
});
|
|
168
|
-
return arr;
|
|
169
|
-
},
|
|
170
|
-
set(val) {
|
|
171
|
-
return val;
|
|
172
|
-
}
|
|
173
|
-
},
|
|
174
|
-
border() {
|
|
175
|
-
if (this.genre === 'border') {
|
|
176
|
-
return true;
|
|
177
|
-
}
|
|
178
|
-
return false;
|
|
179
|
-
},
|
|
180
|
-
reqUrl: {
|
|
181
|
-
get() {
|
|
182
|
-
return this.sysCode || this.url;
|
|
183
|
-
},
|
|
184
|
-
set(val) {
|
|
185
|
-
return val;
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
},
|
|
189
|
-
watch: {
|
|
190
|
-
// value(newVal) {
|
|
191
|
-
// this.getRadioValue(newVal);
|
|
192
|
-
// },
|
|
193
|
-
reqUrl(val) {
|
|
194
|
-
if (val) {
|
|
195
|
-
this.getOptinData();
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
},
|
|
199
|
-
mounted() {
|
|
200
|
-
// this.getRadioValue(this.value);
|
|
201
|
-
this.getOptinData();
|
|
202
|
-
},
|
|
203
|
-
methods: {
|
|
204
|
-
getRadioValue(newVal) {
|
|
205
|
-
if (
|
|
206
|
-
this.valueType === 'object' &&
|
|
207
|
-
this.value &&
|
|
208
|
-
util.getObjectType(this.value) === 'object'
|
|
209
|
-
) {
|
|
210
|
-
this.radioValue = this.value[this.valueKey];
|
|
211
|
-
return;
|
|
212
|
-
}
|
|
213
|
-
this.radioValue = newVal;
|
|
214
|
-
},
|
|
215
|
-
getOptinData() {
|
|
216
|
-
if (!this.reqUrl) {
|
|
217
|
-
return [];
|
|
218
|
-
}
|
|
219
|
-
this.tableLoading = true;
|
|
220
|
-
const reqData = { ...this.params, ...this.where };
|
|
221
|
-
util
|
|
222
|
-
.ajax({
|
|
223
|
-
url: this.reqUrl,
|
|
224
|
-
method: this.method,
|
|
225
|
-
params: reqData,
|
|
226
|
-
data: reqData
|
|
227
|
-
})
|
|
228
|
-
.then(res => {
|
|
229
|
-
this.tableLoading = false;
|
|
230
|
-
if (res.rCode === 0) {
|
|
231
|
-
if (res.results && util.getObjectType(res.results) === 'array') {
|
|
232
|
-
this.list = res.results;
|
|
233
|
-
} else if (
|
|
234
|
-
res.results &&
|
|
235
|
-
util.getObjectType(res.results) === 'object'
|
|
236
|
-
) {
|
|
237
|
-
this.list = res.list || res.records || res.data;
|
|
238
|
-
}
|
|
239
|
-
}
|
|
240
|
-
})
|
|
241
|
-
.catch(err => {
|
|
242
|
-
this.tableLoading = false;
|
|
243
|
-
if (err.message && err.message !== 'canceled') {
|
|
244
|
-
this.$message.error(err.message);
|
|
245
|
-
}
|
|
246
|
-
});
|
|
247
|
-
},
|
|
248
|
-
handleRadioChange(value) {
|
|
249
|
-
let radioValue = value;
|
|
250
|
-
if (this.valueType === 'object') {
|
|
251
|
-
radioValue = this.optionList.filter(item => {
|
|
252
|
-
return item.label === value;
|
|
253
|
-
})[0];
|
|
254
|
-
}
|
|
255
|
-
this.$emit('change', radioValue);
|
|
256
|
-
}
|
|
257
|
-
}
|
|
258
|
-
};
|
|
259
|
-
</script>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.el-radio__label{display:inline-block}
|