// ==UserScript==
// @name 宜搭+
// @namespace http://tampermonkey.net/
// @version 1.2.1
// @description 宜搭插件升级工具
// @author Nicoo
// @match https://*.aliwork.com/alibaba/web/*/design/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=aliwork.com
// @grant unsafeWindow
// @grant GM_setClipboard
// @grant GM_addStyle
// @license MIT
// ==/UserScript==
(function() {
'use strict';
// Your code here...
var _react_18_2_0_react = {
exports: {}
};
var react_production_min = {};
/**
* @license React
* react.production.min.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
var l$1 = Symbol.for("react.element"),
n$1 = Symbol.for("react.portal"),
p$1 = Symbol.for("react.fragment"),
q$1 = Symbol.for("react.strict_mode"),
r = Symbol.for("react.profiler"),
t = Symbol.for("react.provider"),
u = Symbol.for("react.context"),
v = Symbol.for("react.forward_ref"),
w = Symbol.for("react.suspense"),
x = Symbol.for("react.memo"),
y = Symbol.for("react.lazy"),
z = Symbol.iterator;
function A(a) {
if (null === a || "object" !== typeof a)
return null;
a = z && a[z] || a["@@iterator"];
return "function" === typeof a ? a : null;
}
var B = {
isMounted: function() {
return false;
},
enqueueForceUpdate: function() {},
enqueueReplaceState: function() {},
enqueueSetState: function() {}
},
C = Object.assign,
D = {};
function E(a, b, e) {
this.props = a;
this.context = b;
this.refs = D;
this.updater = e || B;
}
E.prototype.isReactComponent = {};
E.prototype.setState = function(a, b) {
if ("object" !== typeof a && "function" !== typeof a && null != a)
throw Error(
"setState(...): takes an object of state variables to update or a function which returns an object of state variables."
);
this.updater.enqueueSetState(this, a, b, "setState");
};
E.prototype.forceUpdate = function(a) {
this.updater.enqueueForceUpdate(this, a, "forceUpdate");
};
function F() {}
F.prototype = E.prototype;
function G(a, b, e) {
this.props = a;
this.context = b;
this.refs = D;
this.updater = e || B;
}
var H = G.prototype = new F();
H.constructor = G;
C(H, E.prototype);
H.isPureReactComponent = true;
var I = Array.isArray,
J = Object.prototype.hasOwnProperty,
K = {
current: null
},
L = {
key: true,
ref: true,
__self: true,
__source: true
};
function M(a, b, e) {
var d, c = {},
k2 = null,
h = null;
if (null != b)
for (d in void 0 !== b.ref && (h = b.ref), void 0 !== b.key && (k2 = "" + b.key), b)
J.call(b, d) && !L.hasOwnProperty(d) && (c[d] = b[d]);
var g = arguments.length - 2;
if (1 === g)
c.children = e;
else if (1 < g) {
for (var f2 = Array(g), m2 = 0; m2 < g; m2++)
f2[m2] = arguments[m2 + 2];
c.children = f2;
}
if (a && a.defaultProps)
for (d in g = a.defaultProps, g)
void 0 === c[d] && (c[d] = g[d]);
return {
$$typeof: l$1,
type: a,
key: k2,
ref: h,
props: c,
_owner: K.current
};
}
function N(a, b) {
return {
$$typeof: l$1,
type: a.type,
key: b,
ref: a.ref,
props: a.props,
_owner: a._owner
};
}
function O(a) {
return "object" === typeof a && null !== a && a.$$typeof === l$1;
}
function escape(a) {
var b = {
"=": "=0",
":": "=2"
};
return "$" + a.replace(/[=:]/g, function(a2) {
return b[a2];
});
}
var P = /\/+/g;
function Q(a, b) {
return "object" === typeof a && null !== a && null != a.key ? escape("" + a.key) : b.toString(36);
}
function R(a, b, e, d, c) {
var k2 = typeof a;
if ("undefined" === k2 || "boolean" === k2)
a = null;
var h = false;
if (null === a)
h = true;
else
switch (k2) {
case "string":
case "number":
h = true;
break;
case "object":
switch (a.$$typeof) {
case l$1:
case n$1:
h = true;
}
}
if (h)
return h = a, c = c(h), a = "" === d ? "." + Q(h, 0) : d, I(c) ? (e = "", null != a && (e = a.replace(P,
"$&/") + "/"), R(c, b, e, "", function(a2) {
return a2;
})) : null != c && (O(c) && (c = N(c, e + (!c.key || h && h.key === c.key ? "" : ("" + c.key)
.replace(P, "$&/") + "/") + a)), b.push(c)), 1;
h = 0;
d = "" === d ? "." : d + ":";
if (I(a))
for (var g = 0; g < a.length; g++) {
k2 = a[g];
var f2 = d + Q(k2, g);
h += R(k2, b, e, f2, c);
}
else if (f2 = A(a), "function" === typeof f2)
for (a = f2.call(a), g = 0; !(k2 = a.next()).done;)
k2 = k2.value, f2 = d + Q(k2, g++), h += R(k2, b, e, f2, c);
else if ("object" === k2)
throw b = String(a), Error("Objects are not valid as a React child (found: " + ("[object Object]" ===
b ? "object with keys {" + Object.keys(a).join(", ") + "}" : b) +
"). If you meant to render a collection of children, use an array instead.");
return h;
}
function S(a, b, e) {
if (null == a) {
return a;
}
var d = [],
c = 0;
R(a, d, "", "", function(a2) {
return b.call(e, a2, c++);
});
return d;
}
function T(a) {
if (-1 === a._status) {
var b = a._result;
b = b();
b.then(function(b2) {
if (0 === a._status || -1 === a._status)
a._status = 1, a._result = b2;
}, function(b2) {
if (0 === a._status || -1 === a._status)
a._status = 2, a._result = b2;
}); -
1 === a._status && (a._status = 0, a._result = b);
}
if (1 === a._status)
return a._result.default;
throw a._result;
}
var U = {
current: null
},
V = {
transition: null
},
W = {
ReactCurrentDispatcher: U,
ReactCurrentBatchConfig: V,
ReactCurrentOwner: K
};
react_production_min.Children = {
map: S,
forEach: function(a, b, e) {
S(a, function() {
b.apply(this, arguments);
}, e);
},
count: function(a) {
var b = 0;
S(a, function() {
b++;
});
return b;
},
toArray: function(a) {
return S(a, function(a2) {
return a2;
}) || [];
},
only: function(a) {
if (!O(a))
throw Error("React.Children.only expected to receive a single React element child.");
return a;
}
};
react_production_min.Component = E;
react_production_min.Fragment = p$1;
react_production_min.Profiler = r;
react_production_min.PureComponent = G;
react_production_min.StrictMode = q$1;
react_production_min.Suspense = w;
react_production_min.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = W;
react_production_min.cloneElement = function(a, b, e) {
if (null === a || void 0 === a) {
throw Error("React.cloneElement(...): The argument must be a React element, but you passed " + a +
".");
}
var d = C({}, a.props),
c = a.key,
k2 = a.ref,
h = a._owner;
if (null != b) {
void 0 !== b.ref && (k2 = b.ref, h = K.current);
void 0 !== b.key && (c = "" + b.key);
if (a.type && a.type.defaultProps)
var g = a.type.defaultProps;
for (f2 in b)
J.call(b, f2) && !L.hasOwnProperty(f2) && (d[f2] = void 0 === b[f2] && void 0 !== g ? g[f2] : b[
f2]);
}
var f2 = arguments.length - 2;
if (1 === f2) {
d.children = e;
} else if (1 < f2) {
g = Array(f2);
for (var m2 = 0; m2 < f2; m2++)
g[m2] = arguments[m2 + 2];
d.children = g;
}
return {
$$typeof: l$1,
type: a.type,
key: c,
ref: k2,
props: d,
_owner: h
};
};
react_production_min.createContext = function(a) {
a = {
$$typeof: u,
_currentValue: a,
_currentValue2: a,
_threadCount: 0,
Provider: null,
Consumer: null,
_defaultValue: null,
_globalName: null
};
a.Provider = {
$$typeof: t,
_context: a
};
return a.Consumer = a;
};
react_production_min.createElement = M;
react_production_min.createFactory = function(a) {
var b = M.bind(null, a);
b.type = a;
return b;
};
react_production_min.createRef = function() {
return {
current: null
};
};
react_production_min.forwardRef = function(a) {
return {
$$typeof: v,
render: a
};
};
react_production_min.isValidElement = O;
react_production_min.lazy = function(a) {
return {
$$typeof: y,
_payload: {
_status: -1,
_result: a
},
_init: T
};
};
react_production_min.memo = function(a, b) {
return {
$$typeof: x,
type: a,
compare: void 0 === b ? null : b
};
};
react_production_min.startTransition = function(a) {
var b = V.transition;
V.transition = {};
try {
a();
} finally {
V.transition = b;
}
};
react_production_min.unstable_act = function() {
throw Error("act(...) is not supported in production builds of React.");
};
react_production_min.useCallback = function(a, b) {
return U.current.useCallback(a, b);
};
react_production_min.useContext = function(a) {
return U.current.useContext(a);
};
react_production_min.useDebugValue = function() {};
react_production_min.useDeferredValue = function(a) {
return U.current.useDeferredValue(a);
};
react_production_min.useEffect = function(a, b) {
return U.current.useEffect(a, b);
};
react_production_min.useId = function() {
return U.current.useId();
};
react_production_min.useImperativeHandle = function(a, b, e) {
return U.current.useImperativeHandle(a, b, e);
};
react_production_min.useInsertionEffect = function(a, b) {
return U.current.useInsertionEffect(a, b);
};
react_production_min.useLayoutEffect = function(a, b) {
return U.current.useLayoutEffect(a, b);
};
react_production_min.useMemo = function(a, b) {
return U.current.useMemo(a, b);
};
react_production_min.useReducer = function(a, b, e) {
return U.current.useReducer(a, b, e);
};
react_production_min.useRef = function(a) {
return U.current.useRef(a);
};
react_production_min.useState = function(a) {
return U.current.useState(a);
};
react_production_min.useSyncExternalStore = function(a, b, e) {
return U.current.useSyncExternalStore(a, b, e);
};
react_production_min.useTransition = function() {
return U.current.useTransition();
};
react_production_min.version = "18.2.0";
(function(module) {
{
module.exports = react_production_min;
}
})(_react_18_2_0_react);
var monkeyWindow = window;
var unsafeWindow = /* @__PURE__ */ (() => {
return monkeyWindow.unsafeWindow;
})();
var GM_addStyle = /* @__PURE__ */ (() => monkeyWindow.GM_addStyle)();
var jsxRuntime = {
exports: {}
};
var reactJsxRuntime_production_min = {};
/**
* @license React
* react-jsx-runtime.production.min.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
var f = _react_18_2_0_react.exports,
k = Symbol.for("react.element"),
l = Symbol.for("react.fragment"),
m = Object.prototype.hasOwnProperty,
n = f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,
p = {
key: true,
ref: true,
__self: true,
__source: true
};
function q(c, a, g) {
var b, d = {},
e = null,
h = null;
void 0 !== g && (e = "" + g);
void 0 !== a.key && (e = "" + a.key);
void 0 !== a.ref && (h = a.ref);
for (b in a)
m.call(a, b) && !p.hasOwnProperty(b) && (d[b] = a[b]);
if (c && c.defaultProps)
for (b in a = c.defaultProps, a)
void 0 === d[b] && (d[b] = a[b]);
return {
$$typeof: k,
type: c,
key: e,
ref: h,
props: d,
_owner: n.current
};
}
reactJsxRuntime_production_min.Fragment = l;
reactJsxRuntime_production_min.jsx = q;
reactJsxRuntime_production_min.jsxs = q;
(function(module) {
{
module.exports = reactJsxRuntime_production_min;
}
})(jsxRuntime);
const jsx = jsxRuntime.exports.jsx;
function init() {
GM_addStyle(
`.next-tabs-tabpane{display: none;min-height: 50px;outline: none!important;outline-offset: none!important;-webkit-box-shadow: none;box-shadow: none;padding: 12px;overflow-y: auto; max-height: calc(100vh - 138px)!important}`
);
GM_addStyle(
`.box-grid-1{display: grid;grid-template-columns:repeat(1,minmax(0,1fr));gap: 4px;}.jsApiItemTitle{font-size: 14px;}.jsApiItemTitle_Box{display: flex;align-items: center;gap:8px;}.jsApiItemDescription{font-size: 12px;color: rgba(31,56,88,0.4);}.jsApiItemIcon{cursor: pointer;}.jsApiItem_Box{border-radius: 4px;padding:4px;}.jsApiItem_Box:hover{background-color:rgba(31,56,88,0.04)}.jsApiIcon_Box{height:14px;}`
);
GM_addStyle(`.box-grid-2{display: grid;grid-template-columns:repeat(2,minmax(0,1fr));gap: 4px;}`);
GM_addStyle(
`.DataSourceApi-title{display:flex;align-items: center;gap:4px;}.DataSourceApi-content{width: 600px;max-height: 350px;overflow-y: auto;background: #ffffff;border: 1px solid #ccc;border-radius: 4px;padding:16px;}.DataSourceApi-content-apiName{font-size:14px;font-weight:600;line-height:2em}.DataSourceApi-content-InterfacePath{font-size:14px;margin-bottom:4px;display:flex;align-items: center;gap:4px;}.DataSourceApi-content-requestType{border-style: solid;border-width: 1px;border-radius: 4px;padding: 1px 4px;display: inline;background-color: rgba(31,56,88,0.1);border-color: rgba(31,56,88,0.06);}`
);
GM_addStyle(
`.helper-entry.mode-float {-webkit-transform: rotate(-90deg);-ms-transform: rotate(-90deg);transform: rotate(90deg);left: -22px;right: auto;}.helper-entry {position: fixed;right: auto;bottom: 60px;z-index: 1000;cursor: pointer;-webkit-transition: all .3s ease-in-out;transition: all .3s ease-in-out;}`
);
GM_addStyle(`.border{border-style: solid;border-width: 1px;border-color: rgba(31,56,88,0.1);border-radius: 8px; padding:12px;}`);
GM_addStyle(`.input-style{width:100%}`);
const yidaToolIcon = (hexColor) => {
return jsx("svg", {
className: "icon",
viewBox: "0 0 1024 1024",
version: "1.1",
xmlns: "http://www.w3.org/2000/svg",
pId: "5866",
width: "20",
height: "20",
children: [
jsx("path", {
d: "M960.7 513.4c0-249.5-199.6-449.2-449.2-449.2C262 64.2 62.3 263.8 62.3 513.4c0 249.5 199.6 449.2 449.2 449.2 104.8 0 199.6-34.9 279.5-99.8 10-10 10-20 5-29.9-10-10-20-10-29.9-5-69.9 54.9-159.7 89.8-254.5 89.8-224.6 0-404.3-179.7-404.3-404.3 0-224.6 179.7-404.3 404.3-404.3 224.6 0 404.3 179.7 404.3 404.3 0 74.9-20 149.7-59.9 214.6-5 10-5 25 5 29.9 10 5 25 5 29.9-5 44.8-74.8 69.8-154.7 69.8-239.5z m0 0",
pId: "5867",
fill: hexColor
}),
jsx("path", {
d: "M802 346.6L680.4 225c-9.5-9.9-22.5-15.6-36.2-15.6-13.7-0.1-26.8 5.4-36.4 15.3L214 618.4c-15.6 16.2-15.5 42 0.3 58l137.4 137.4c15.8 15.8 41.2 14.7 56.9-0.9l393.7-393.8c9.8-9.5 15.3-22.7 15.3-36.4-0.1-13.6-5.7-26.7-15.6-36.1zM383.2 774.9L252.9 644.7c-2.3-2.3-2.3-6.9 0-9.2l108.5-108.6 69.9 69.9c6.9 6.9 16.1 7 23 0.1 6.8-6.8 6.8-16-0.1-23L384.3 504l68.5-68.5 69.9 69.9c6.9 6.9 16.1 7 23 0.1 6.8-6.8 6.8-16-0.1-23l-69.9-69.9 68.5-68.5 69.9 69.9c6.9 6.9 16.1 7 23 0.1 6.8-6.8 6.8-16-0.2-23L567 321.2l59.2-59.2c6.8-6.8 16-6.8 23 0.1l116.4 116.4c6.9 6.9 7 16.1 0.1 23L392.3 774.9c-2.3 2.3-6.9 2.3-9.1 0z m0 0",
pId: "5868",
fill: hexColor
})
]
});
}
const copyIcon = (hexColor) => {
return jsx("svg", {
t: '1693788640006',
className: "icon jsApiItemIcon",
viewBox: "0 0 1024 1024",
version: "1.1",
xmlns: "http://www.w3.org/2000/svg",
pId: "4043",
width: "14",
height: "14",
children: [
jsx("path", {
d: "M96.1 575.7a32.2 32.1 0 1 0 64.4 0 32.2 32.1 0 1 0-64.4 0Z",
pId: "4044",
fill: hexColor
}),
jsx("path", {
d: "M742.1 450.7l-269.5-2.1c-14.3-0.1-26 13.8-26 31s11.7 31.3 26 31.4l269.5 2.1c14.3 0.1 26-13.8 26-31s-11.7-31.3-26-31.4zM742.1 577.7l-269.5-2.1c-14.3-0.1-26 13.8-26 31s11.7 31.3 26 31.4l269.5 2.1c14.3 0.2 26-13.8 26-31s-11.7-31.3-26-31.4z",
pId: "4045",
fill: hexColor
}),
jsx("path", {
d: "M736.1 63.9H417c-70.4 0-128 57.6-128 128h-64.9c-70.4 0-128 57.6-128 128v128c-0.1 17.7 14.4 32 32.2 32 17.8 0 32.2-14.4 32.2-32.1V320c0-35.2 28.8-64 64-64H289v447.8c0 70.4 57.6 128 128 128h255.1c-0.1 35.2-28.8 63.8-64 63.8H224.5c-35.2 0-64-28.8-64-64V703.5c0-17.7-14.4-32.1-32.2-32.1-17.8 0-32.3 14.4-32.3 32.1v128.3c0 70.4 57.6 128 128 128h384.1c70.4 0 128-57.6 128-128h65c70.4 0 128-57.6 128-128V255.9l-193-192z m0.1 63.4l127.7 128.3H800c-35.2 0-64-28.8-64-64v-64.3h0.2z m64 641H416.1c-35.2 0-64-28.8-64-64v-513c0-35.2 28.8-64 64-64H671V191c0 70.4 57.6 128 128 128h65.2v385.3c0 35.2-28.8 64-64 64z",
pId: "4046",
fill: hexColor
})
]
});
}
const interfaceIcon = (hexColor) => {
return jsx("svg", {
t: '1694410902204',
className: "icon jsApiItemIcon",
viewBox: "0 0 1024 1024",
version: "1.1",
xmlns: "http://www.w3.org/2000/svg",
pId: "7705",
width: "14",
height: "14",
children: [
jsx("path", {
d: "M952.4 71.6c9.8 9.4 10.2 24.9 0.9 34.8l-84.8 84.8 27.4 27.4c73.8 73.8 73.8 193.4 0 267.2l-82.7 82.7c-28.1 28.1-73.6 28.1-101.7 0L453.8 310.9c-28.1-28.1-28.1-73.6 0-101.7l82.7-82.7c71.1-71.1 185.5-74 260.2-6.7l7.1 6.7 29.1 29.1 84.8-84.7c8.5-8.2 21.7-9.1 31.3-2.1l3.4 2.8zM862 252.5l-92.1-92.2-6-5.7c-55.8-49.6-140.6-47.1-193.4 5.7L487.8 243c-9.4 9.4-9.4 24.5 0 33.9l257.6 257.6c9.4 9.4 24.5 9.4 33.9 0l82.7-82.7c55-55 55-144.2 0-199.3zM615.7 543.7c9.8 9.4 10.2 24.9 0.9 34.8l-61.3 61.3 42.6 42.7c28.1 28.1 28.1 73.6 0 101.7l-97.4 97.4c-79.1 79.1-206.3 82.2-289.2 7.1l-7.4-7.1-12.7-12.7-84.8 84.8c-8.5 8.2-21.7 9.1-31.2 2.1l-3.5-2.9c-8.6-8.3-10.1-21.4-3.6-31.4l2.8-3.3 84.8-84.8-14.5-14.4c-81.9-81.9-81.9-214.6 0-296.5l97.4-97.4c28.1-28.1 73.6-28.1 101.7 0l49 49 61.4-61.3c8.5-8.2 21.8-9.1 31.3-2.1l3.5 2.9c8.6 8.3 10.1 21.5 3.6 31.4l-2.7 3.3-61.4 61.3 94.6 94.7 61.3-61.3c8.5-8.2 21.7-9 31.2-2l3.6 2.7z m-51.8 172.7L306.3 458.8c-9.4-9.4-24.5-9.4-33.9 0L175 556.2c-63.2 63.2-63.2 165.6 0 228.8l62.8 62.7 6.4 6.1c64 57.3 161.6 54.6 222.3-6.1l97.4-97.4c9.4-9.3 9.4-24.5 0-33.9z",
pId: "4044",
fill: hexColor
})
]
});
}
const JsApiBox = () => {
const jsApiData = [{
title: "this.reloadDataSource()",
description: '重新请求所有自动加载设置为 true 的远程 API,该方法也返回一个 Promise',
code: `this.reloadDataSource().then(res => {\n this.utils.toast({\n type: 'success', \n title: '刷新成功!'\n });\n });`
}, {
title: "this.utils.dialog()",
description: '弹出对话框',
code: `this.utils.dialog({\n method: 'confirm', // 'alert', 'confirm', 'show'\n title: 'title',\n content: 'content', // 如需换行可传入 HTML/JSX 来实现\n onOk: () => {},\n onCancel: () => {},\n});`
}, {
title: "this.utils.getDateTimeRange(when, type)",
description: '获取当前或指定日期的开始结束区间时间戳',
code: `//when:支持时间戳、Date 日期类型,type:'year', 'month', 'week', 'day', 'date', 'hour', 'minute', 'second'\nconst [timeStart, timeEnd] = this.utils.getDateTimeRange(when:number, type:String); `
}, {
title: "this.utils.getLocale()",
description: '获取当前页面的语言环境',
code: `const locale = this.utils.getLocale();\n // 输出:locale: zh_CN`
}, {
title: "this.utils.getLoginUserId()",
description: '获取登录用户userId',
code: `const userId = this.utils.getLoginUserId();\n // 输出:userId`
}, {
title: "this.utils.getLoginUserName()",
description: '获取登录用户名称',
code: `const userName = this.utils.getLoginUserName();\n // 输出:userName`
}, {
title: "this.utils.isMobile()",
description: '判断当前访问环境是否是移动端',
code: `this.utils.isMobile()`
}, {
title: "this.utils.isSubmissionPage()",
description: '判断当前页面是否是数据提交页面',
code: `this.utils.isSubmissionPage()`
}, {
title: "this.utils.isViewPage()",
description: '判断当前页面是否是数据查看页面',
code: `this.utils.isViewPage()`
}, {
title: "this.utils.loadScript()",
description: '动态加载远程脚本',
code: `this.utils.loadScript('');`
}, {
title: "this.utils.openPage()",
description: '打开新页面,如果在钉钉环境下,会使用钉钉 API 打开新页面,体验会更友好一些',
code: `this.utils.openPage('');`
}, {
title: "this.utils.previewImage()",
description: '图片预览,通过这个 API 我们可以实现一个简洁的图片预览效果',
code: `this.utils.previewImage({ current: '' });`
}, {
title: "this.utils.toast()",
description: '信息提醒,会比 Dialog 对话框更加轻量,弹出后过一段时间会自动消失',
code: `this.utils.toast({\n title: 'success', // 'success', 'warning', 'error', 'notice', 'help', 'loading'\n type: 'success',\n size: 'large',\n duration: 2000, // 毫秒, type 为 loding 时无效\n});`
}];
return (
jsx('div', {
className: 'box-grid-1',
children: [
jsApiData.map((item) => {
return jsx('div', {
className: 'jsApiItem_Box',
children: [
jsx('div', {
children: [
jsx('div', {
className: 'jsApiItemTitle_Box',
children: [
jsx('div', {
className: 'jsApiItemTitle',
children: item
.title
}),
jsx('div', {
className: 'jsApiIcon_Box',
onClick: () => {
if (item
.code
) {
GM_setClipboard
(item
.code
);
Next.Message
.show({
type: "success",
title: `复制成功!`
})
} else {
Next.Message
.show({
type: "error",
title: `复制失败,请联系开发者!`
})
}
},
children: copyIcon(
'#3c99d8'
)
})
]
}),
jsx('div', {
className: 'jsApiItemDescription',
children: item
.description
}),
]
})
]
})
})
]
})
)
}
const ComponentsBox = () => {
const componentsData = [{
title: "容器",
schema: `{"componentsTree":[{"componentName":"Div"}]}`
}, {
title: "选项卡",
schema: `{"componentsTree":[{"componentName":"TabsLayout","props":{"items":[{"primaryKey":"tab_lm4jmqz1","title":{"zh_CN":"标签项","en_US":"Tab Item","type":"i18n","use":"zh_CN"},"defaultActived":true},{"primaryKey":"tab_lm4jmqz2","title":{"zh_CN":"标签项","en_US":"Tab Item","type":"i18n","use":"zh_CN"}}]},"children":[{"componentName":"Tab","props":{"primaryKey":"tab_lm4jmqz1","title":{"zh_CN":"标签项","en_US":"Tab Item","type":"i18n","use":"zh_CN"}}},{"componentName":"Tab","props":{"primaryKey":"tab_lm4jmqz2","title":{"zh_CN":"标签项","en_US":"Tab Item","type":"i18n","use":"zh_CN"}}}]}]}`
}, {
title: "分组",
schema: `{"componentsTree":[{"componentName":"PageSection","props":{"showHeader":true,"title":{"type":"i18n","en_US":"Group","zh_CN":"分组","use":"zh_CN"}}}]}`
}, {
title: "按钮",
schema: `{"componentsTree":[{"componentName":"Button","props":{"content":{"use":"zh_CN","en_US":"Button","zh_CN":"按 钮","type":"i18n"}}}]}`
}, {
title: "文本",
schema: `{"componentsTree":[{"componentName":"Text","props":{"content":{"type":"i18n","en_US":"Tips content","zh_CN":"文本","use":"zh_CN"}}}]}`
}, {
title: "HTML",
schema: `{"componentsTree":[{"componentName":"Html","props":{"content":"<div>这里可以写html</div>"}}]}`
}, {
title: "JSX",
schema: `{"componentsTree":[{"componentName":"Jsx"}]}`
}, {
title: "关联表单",
schema: `{"componentsTree":[{"componentName":"AssociationFormField"}]}`
}];
return (
jsx('div',{
className: 'box-grid-1',
children:[
jsx('div', {
className: 'box-grid-2',
children: [
componentsData.map((item) => {
return jsx(Next.Button, {
onClick: () => {
if (item.schema) {
GM_setClipboard(item.schema);
Next.Message.show({
type: "success",
title: `复制成功!`
})
} else {
Next.Message.show({
type: "error",
title: `复制失败,请联系开发者!`
})
}
},
children: [
item.title
],
})
})
]
}),
jsx("div", {
className: 'box-grid-1 border',
children: [
jsx('h6',{children:'生成表格'}),
jsx(Next.Form,{
size:'small',
children:[
jsx(Next.Form.Item,{children:jsx(Next.Input,{valueName:'appKey',label:'AppKey',colon:true,className:'input-style',defaultValue:unsafeWindow.pageConfig.appType || unsafeWindow.g_config.appKey,onChange:(value)=>{yidaToolsData.appKey = value}})}),
jsx(Next.Form.Item,{children:jsx(Next.Input,{valueName:'fromUuid',label:'FromUuid',colon:true,className:'input-style',onChange:(value)=>{yidaToolsData.fromUuid = value}})}),
jsx(Next.Form.Submit,{size:'small',type:'secondary',children:'创 建',className:'input-style',onClick: (values,errors)=>{
if(!yidaToolsData.appKey){
Next.Message.show({
type: "error",
title: `缺少appKey`
})
}
else if(!yidaToolsData.fromUuid){
Next.Message.show({
type: "error",
title: `缺少fromUuid`
})
}
else{
fetch(`/${yidaToolsData.appKey}/query/formdesign/getLatestFormWithNavNew.json?formUuid=${yidaToolsData.fromUuid}`)
.then(res => res.json())
.then(({ content: { pages } }) => {
const allComponent = pages[0].componentsTree[0].children[1].children[0].children;
let tableSchemaObj={"componentsTree":[{"componentName":"TablePc","props":{"noPadding":true,"columns":[],"dataSourceType":"data","data":{"currentPage":1,"totalCount":2,"data":[]},"actionColumn":[{"title":{"type":"i18n","zh_CN":"详情","en_US":"Detail","use":"zh_CN"},"option":"callback"}],"showActionBar":true,"actionBar":[{"title":{"zh_CN":"操作1","en_US":"Action 1","type":"i18n","use":"zh_CN"},"option":"callback"},{"title":{"zh_CN":"操作2","en_US":"Action 2","type":"i18n","use":"zh_CN"},"option":"callback"}],"showSearch":true,"searchBarPlaceholder":{"type":"i18n","en_US":"Please Input","zh_CN":"请搜索","use":"zh_CN"}}}]}
const formComponentList = ['TextField', 'TextareaField', 'NumberField', 'RateField', 'RadioField', 'CheckboxField', 'DateField',
'CascadeDateField', 'AttachmentField', 'EmployeeField', 'ImageField', 'SelectField', 'MultiSelectField',
'CascadeSelectField', 'PageSection', 'CountrySelectField', 'DepartmentSelectField', 'AddressField',
'LocationField', 'AssociationFormField', 'DigitalSignatureField', 'SerialNumberField',
'CompanyField',]
function recursiveSearch(obj) {
if (typeof obj === 'object') {
if (obj.hasOwnProperty('componentName')) {
if (formComponentList.includes(obj.componentName)){
try {
tableSchemaObj.componentsTree[0].props.columns.push({
"dataKey":'formData.'+obj.props.fieldId,
"title": {
"zh_CN": obj.props.label.zh_CN,
"en_US": "",
"type": "i18n",
"use": "zh_CN"
},
"width": 100,
"dataType": "text"
})
} catch (e) { }
}
if (obj.componentName ==='TableField') return;
}
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
recursiveSearch(obj[key]);
}
}
}
}
recursiveSearch(allComponent);
GM_setClipboard(JSON.stringify(tableSchemaObj));
Next.Message.show({
type: "success",
title: `生成成功,请粘贴入页面!`
})
console.log(tableSchemaObj);
})
}
}})
]
}),
]
})
]
})
)
}
const CommonCodeBox = () => {
const CommonCodeData = [{
title: "this.utils.formatter(when, value, type)",
description: '日期格式化',
code: `// 格式化日期,输出值为:2022-01-29\n const formatDate = this.utils.formatter('date', new Date(), 'YYYY-MM-DD');`
}, {
title: "setTimeout()",
description: '定时器(单次)',
code: `setTimeout(()=>{\n\n},number)`
}, {
title: "setTimeout()",
description: '定时器(循环)',
code: `// 设置一个计数器\n let count = 0;\n const interval = setInterval(() => {\n ++count;\n if (count === 5) {\n //停止\n clearInterval(interval);\n }\n }, number);`
}, {
title: "validateRule(idCardNumber)",
description: '身份证号校验',
code: `function validateRule(idCardNumber) {\n if (idCardNumber && idCardNumber.length === 18) {\n const coeff = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];\n const laststr = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'];\n let total = 0;\n for(let i = 0; i < 17; ++ i) {\n total+= parseInt(idCardNumber[i], 10) * coeff[i];\n }\n return idCardNumber[17] === laststr[total % 11];\n }\n return false;\n}`
}, {
title: "validateRule(bankCardNumber)",
description: '卡号校验「Luhn 算法」',
code: `function validateRule(bankCardNumber) {\n if (bankCardNumber && /^([0-9]{16}|[0-9]{19})$/.test(bankCardNumber)) {\n let total = 0;\n bankCardNumber.split('').reverse().forEach((item, idx) => {\n const num = parseInt(item, 10);\n total += idx % 2 ? 2 * num - (num > 4 ? 9 : 0) : num;\n });\n if (total === 0) {\n return false;\n }\n return total % 10 === 0;\n }\n return false;\n}`
}, {
title: "validateRule(phoneNumber)",
description: '手机号校验',
code: `function validateRule(phoneNumber) {\n var reg = /^1\d{10}$/;\n return reg.test(value);\n}`
}, {
title: "maskPhoneNumber()",
description: '手机号加密',
code: `export function maskPhoneNumber(phoneNumber) {\n return phoneNumber.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2');\n}`
}, {
title: "fieldsValidate()",
description: '表单必填校验「JS触发事件」',
code: `/**\n* 表单必填校验js事件\n*/\nexport async function onClick() {\n //组件id集合,子表视作一个元素\n const fieldList = [];\n\n // 调用表单校验函数 \n this.fieldsValidate(fieldList).then(errorList => {\n setTimeout(() => {\n if (errorList.length > 0) {\n // 表单校验未通过,你可以做一些数据错误提示\n return;\n };\n // 表单校验通过,你的后续业务逻辑由此往下写\n this.utils.toast({\n title: '表单校验通过',\n type: 'success',\n });\n });\n }, 0);\n}\n\n// fieldList:Array,需要校验组件的唯一标识集合\nexport async function fieldsValidate(fieldList = []) {\n const result = [];\n for (let i = 0; i < fieldList.length; i++) {\n await this.$(fieldList[i]).validate((errors, values) => {\n if (!errors) { return };\n result.push({\n fieldId: fieldList[i], // 组件标识\n errors: this.utils.isMobile() ? errors.errors[fieldList[i]].errors : errors[fieldList[i]].errors // 校验错误信息\n });\n });\n };\n return result;\n}`
},{
title: "vConsole",
description: '打开需要调试页面的动作面板,在最上方直接输入下面代码。访问进行调试。 注意调试完成后删除该代码。',
code: `const vConsole = 'https://g.alicdn.com/code/lib/vConsole/3.11.2/vconsole.min.js';const js = document.createElement('script');js.src = vConsole;document.body.append(js);js.onload = function() {\n window.vConsole = new window.VConsole();};`
}];
return (
jsx('div', {
className: 'box-grid-1',
children: [
CommonCodeData.map((item) => {
return jsx('div', {
className: 'jsApiItem_Box',
children: [
jsx('div', {
children: [
jsx('div', {
className: 'jsApiItemTitle_Box',
children: [
jsx('div', {
className: 'jsApiItemTitle',
children: item
.title
}),
jsx('div', {
className: 'jsApiIcon_Box',
onClick: () => {
if (item
.code
) {
GM_setClipboard
(item
.code
);
Next.Message
.show({
type: "success",
title: `复制成功!`
})
} else {
Next.Message
.show({
type: "error",
title: `复制失败,请联系开发者!`
})
}
},
children: copyIcon(
'#3c99d8'
)
})
]
}),
jsx('div', {
className: 'jsApiItemDescription',
children: item
.description
}),
]
})
]
})
})
]
})
)
}
const DataSourceApiBox = () => {
const DataSourceApiData = [
{
title: '表单相关 API',
key: "1",
content: [{
apiName: '新建表单实例',
InterfacePath: '/v1/form/saveFormData.json',
requestType: 'POST',
params: [{
parameterName: "formUuid",
description: "表单 ID",
requiredFields: "是"
}, {
parameterName: "appType",
description: "应用 ID",
requiredFields: "是"
}, {
parameterName: "formDataJson",
description: "表单数据",
requiredFields: "是"
}]
},
{
apiName: '更新表单中指定组件值',
InterfacePath: '/v1/form/updateFormData.json',
requestType: 'POST',
params: [{
parameterName: "formInstId",
description: "要更新的表单数据 ID",
requiredFields: "是"
}, {
parameterName: "updateFormDataJson",
description: "要更新的表单组件值,必填",
requiredFields: "是"
}, {
parameterName: "useLatestVersion",
description: "使用最新的表单版本进行更新",
requiredFields: "否"
}]
},
{
apiName: '删除表单实例',
InterfacePath: '/v1/form/deleteFormData.json',
requestType: 'POST',
params: [{
parameterName: "formInstId",
description: "要删除的表单数据 ID",
requiredFields: "是"
}]
},
{
apiName: '根据表单实例 ID 查询表单实例详情',
InterfacePath: '/v1/form/getFormDataById.json',
requestType: 'GET',
params: [{
parameterName: "formInstId",
description: "要查询的表单数据 ID",
requiredFields: "是"
}]
},
{
apiName: '根据条件搜索表单实例 ID 列表',
InterfacePath: '/v1/form/searchFormDataIds.json',
requestType: 'GET',
params: [{
parameterName: "formUuid",
description: "表单 ID",
requiredFields: "是"
}, {
parameterName: "searchFieldJson",
description: "根据表单内组件值查询",
requiredFields: "否"
}, {
parameterName: "currentPage",
description: "当前页",
requiredFields: "否"
}, {
parameterName: "pageSize",
description: "每页记录数",
requiredFields: "否"
}, {
parameterName: "originatorId",
description: "根据数据提交人工号查询",
requiredFields: "否"
}, {
parameterName: "createFrom",
description: "createFrom 和 createTo 两个时间构造一个时间段。查询在该时间段创建的数据列表",
requiredFields: "否"
}, {
parameterName: "createTo",
description: "createFrom 和 createTo 两个时间构造一个时间段。查询在该时间段创建的数据列表",
requiredFields: "否"
}, {
parameterName: "modifiedFrom",
description: "modifiedFrom 和 modifiedTo 构成一个时间段,查询在该时间段有修改的数据列表",
requiredFields: "否"
}, {
parameterName: "modifiedTo",
description: "modifiedFrom 和 modifiedTo 构成一个时间段,查询在该时间段有修改的数据列表",
requiredFields: "否"
}, {
parameterName: "dynamicOrder",
description: "排序",
requiredFields: "否"
}]
},
{
apiName: '根据条件搜索表单实例详情列表',
InterfacePath: '/v1/form/searchFormDatas.json',
requestType: 'GET',
params: [{
parameterName: "formUuid",
description: "表单 ID",
requiredFields: "是"
}, {
parameterName: "searchFieldJson",
description: "根据表单内组件值查询",
requiredFields: "否"
}, {
parameterName: "currentPage",
description: "当前页",
requiredFields: "否"
}, {
parameterName: "pageSize",
description: "每页记录数",
requiredFields: "否"
}, {
parameterName: "originatorId",
description: "根据数据提交人工号查询",
requiredFields: "否"
}, {
parameterName: "createFrom",
description: "createFrom 和 createTo 两个时间构造一个时间段。查询在该时间段创建的数据列表",
requiredFields: "否"
}, {
parameterName: "createTo",
description: "createFrom 和 createTo 两个时间构造一个时间段。查询在该时间段创建的数据列表",
requiredFields: "否"
}, {
parameterName: "modifiedFrom",
description: "modifiedFrom 和 modifiedTo 构成一个时间段,查询在该时间段有修改的数据列表",
requiredFields: "否"
}, {
parameterName: "modifiedTo",
description: "modifiedFrom 和 modifiedTo 构成一个时间段,查询在该时间段有修改的数据列表",
requiredFields: "否"
}, {
parameterName: "dynamicOrder",
description: "排序",
requiredFields: "否"
}]
},
{
apiName: '获取表单定义',
InterfacePath: '/v1/form/getFormComponentDefinationList.json',
requestType: 'GET',
params: [{
parameterName: "formUuid",
description: "表单 ID",
requiredFields: "是"
}, {
parameterName: "version",
description: "表单版本",
requiredFields: "否"
}]
},
{
apiName: '获取子表单数据',
InterfacePath: '/v1/form/listTableDataByFormInstIdAndTableId.json',
requestType: 'GET',
params: [{
parameterName: "formUuid",
description: "表单 ID",
requiredFields: "是"
}, {
parameterName: "formInstanceId",
description: "要查询的实例的实例 ID",
requiredFields: "是"
}, {
parameterName: "tableFieldId",
description: "需要查找的子表单组件的唯一标识",
requiredFields: "是"
}, {
parameterName: "currentPage",
description: "当前页",
requiredFields: "否"
}, {
parameterName: "pageSize",
description: "每页记录数",
requiredFields: "否"
}]
}
]
}, {
title: '流程相关 API',
key: "2",
content: [{
apiName: '流程发起',
InterfacePath: '/v1/process/startInstance.json',
requestType: 'POST',
params: [{
parameterName: "processCode",
description: "流程 code",
requiredFields: "是"
}, {
parameterName: "formUuid",
description: "表单 ID",
requiredFields: "是"
}, {
parameterName: "formDataJson",
description: "表单数据",
requiredFields: "是"
}, {
parameterName: "deptId",
description: "发起人所在部门号",
requiredFields: "否"
}]
},
{
apiName: '根据条件搜索流程实例 ID',
InterfacePath: '/v1/process/getInstanceIds.json',
requestType: 'GET',
params: [{
parameterName: "formUuid",
description: "表单 ID",
requiredFields: "是"
}, {
parameterName: "searchFieldJson",
description: "根据表单内组件值查询",
requiredFields: "否"
}, {
parameterName: "taskId",
description: "",
requiredFields: "否"
}, {
parameterName: "instanceStatxus",
description: "实例状态",
requiredFields: "否"
}, {
parameterName: "approvedResult",
description: "流程审批结果",
requiredFields: "否"
}, {
parameterName: "currentPage",
description: "当前页",
requiredFields: "否"
}, {
parameterName: "pageSize",
description: "每页记录数",
requiredFields: "否"
}, {
parameterName: "originatorId",
description: "根据流程发起人工号查询",
requiredFields: "否"
}, {
parameterName: "createFrom",
description: "createFrom 和 createTo 两个时间构造一个时间段。查询在该时间段创建的数据列表",
requiredFields: "否"
}, {
parameterName: "createTo",
description: "createFrom 和 createTo 两个时间构造一个时间段。查询在该时间段创建的数据列表",
requiredFields: "否"
}, {
parameterName: "modifiedFrom",
description: "modifiedFrom 和 modifiedTo 构成一个时间段,查询在该时间段有修改的数据列表",
requiredFields: "否"
}, {
parameterName: "modifiedTo",
description: "modifiedFrom 和 modifiedTo 构成一个时间段,查询在该时间段有修改的数据列表",
requiredFields: "否"
}]
},
{
apiName: '根据搜索条件获取实例详情列表',
InterfacePath: '/v1/process/getInstances.json',
requestType: 'GET',
params: [{
parameterName: "formUuid",
description: "表单 ID",
requiredFields: "是"
}, {
parameterName: "searchFieldJson",
description: "根据表单内组件值查询",
requiredFields: "否"
}, {
parameterName: "taskId",
description: "任务 ID",
requiredFields: "否"
}, {
parameterName: "instanceStatus",
description: "实例状态",
requiredFields: "否"
}, {
parameterName: "approvedResult",
description: "流程审批结果",
requiredFields: "否"
}, {
parameterName: "currentPage",
description: "当前页",
requiredFields: "否"
}, {
parameterName: "pageSize",
description: "每页记录数",
requiredFields: "否"
}, {
parameterName: "originatorId",
description: "根据数据提交人工号查询",
requiredFields: "否"
}, {
parameterName: "createFrom",
description: "createFrom 和 createTo 两个时间构造一个时间段。查询在该时间段创建的数据列表",
requiredFields: "否"
}, {
parameterName: "createTo",
description: "createFrom 和 createTo 两个时间构造一个时间段。查询在该时间段创建的数据列表",
requiredFields: "否"
}, {
parameterName: "modifiedFrom",
description: "modifiedFrom 和 modifiedTo 构成一个时间段,查询在该时间段有修改的数据列表",
requiredFields: "否"
}, {
parameterName: "modifiedTo",
description: "modifiedFrom 和 modifiedTo 构成一个时间段,查询在该时间段有修改的数据列表",
requiredFields: "否"
}]
},
{
apiName: '根据实例 ID 获取流程实例详情',
InterfacePath: '/v1/process/getInstanceById.json',
requestType: 'GET',
params: [{
parameterName: "processInstanceId",
description: "流程实例 ID",
requiredFields: "是"
}]
},
{
apiName: '删除流程实例',
InterfacePath: '/v1/process/deleteInstance.json',
requestType: 'POST',
params: [{
parameterName: "processInstanceId",
description: "流程实例 ID",
requiredFields: "是"
}]
},
{
apiName: '终止流程实例',
InterfacePath: '/v1/process/terminateInstance.json',
requestType: 'POST',
params: [{
parameterName: "processInstanceId",
description: "流程实例 ID",
requiredFields: "是"
}]
},
{
apiName: '执行单个任务接口',
InterfacePath: '/v1/task/executeTask.json',
requestType: 'POST',
params: [{
parameterName: "taskId",
description: "任务 ID",
requiredFields: "是"
}, {
parameterName: "procInstId",
description: "实例 ID",
requiredFields: "是"
}, {
parameterName: "outResult",
description: "审批结果",
requiredFields: "是"
}, {
parameterName: "remark",
description: "审批意见",
requiredFields: "是"
}, {
parameterName: "formDataJson",
description: "表单数据",
requiredFields: "否"
}, {
parameterName: "noExecuteExpressions",
description: "是否不执行校验&关联操作",
requiredFields: "否"
}]
},
{
apiName: '获取审批记录',
InterfacePath: '/v1/process/getOperationRecords.json',
requestType: 'GET',
params: [{
parameterName: "processInstanceId",
description: "流程实例 ID",
requiredFields: "是"
}]
},
{
apiName: '流程实例更新',
InterfacePath: '/v1/process/updateInstance.json',
requestType: 'POST',
params: [{
parameterName: "processInstanceId",
description: "实例 ID",
requiredFields: "是"
}, {
parameterName: "updateFormDataJson",
description: "更新的表单数据",
requiredFields: "是"
}]
}
]
}, {
title: '任务中心相关 API',
key: "3",
content: [{
apiName: '已提交任务',
InterfacePath: '/v1/process/getMySubmitInApp.json',
requestType: 'GET',
params: [{
parameterName: "pageSize",
description: "每页记录数",
requiredFields: "是"
}, {
parameterName: "currentPage",
description: "当前页",
requiredFields: "是"
}, {
parameterName: "keyword",
description: "关键词",
requiredFields: "否"
}]
}, {
apiName: '待办任务',
InterfacePath: '/v1/task/getTodoTasksInApp.json',
requestType: 'GET',
params: [{
parameterName: "pageSize",
description: "每页记录数",
requiredFields: "是"
}, {
parameterName: "currentPage",
description: "当前页",
requiredFields: "是"
}, {
parameterName: "keyword",
description: "关键词",
requiredFields: "否"
}]
}, {
apiName: '已完成任务',
InterfacePath: '/v1/task/getDoneTasksInApp.json',
requestType: 'GET',
params: [{
parameterName: "pageSize",
description: "每页记录数",
requiredFields: "是"
}, {
parameterName: "currentPage",
description: "当前页",
requiredFields: "是"
}, {
parameterName: "keyword",
description: "关键词",
requiredFields: "否"
}]
}, {
apiName: '抄送我的任务(应用纬度)',
InterfacePath: '/v1/task/getNotifyMeTasksInApp.json',
requestType: 'GET',
params: [{
parameterName: "pageSize",
description: "每页记录数",
requiredFields: "是"
}, {
parameterName: "currentPage",
description: "当前页",
requiredFields: "是"
}, {
parameterName: "keyword",
description: "关键词",
requiredFields: "否"
}]
}]
}];
const setDatapool = (y,name, description, method, parVariable, urlVariable) => {
console.log(y,name, description, method, parVariable, urlVariable)
return {
"id": "",
name,
description,
formUuid:unsafeWindow.pageConfig.formUuid,
"protocal": "REMOTE",
"options": {
"shouldFetch": true,
method,
"params": parVariable ? {
"type": "variable",
"variable": parVariable,
"value": []
} : y&&{}||[],
"isSync": false,
"url": urlVariable ? {
"type": "variable",
"variable": urlVariable,
"value": ""
} : {},
"loadType": ""
},
"isInit": false,
"dpType": "REMOTE",
"type": "legao",
"requestHandler": {
"type": "JSExpression",
"value": "this.utils.legaoBuiltin.dataSourceHandler"
},
"dataHandler": {
"type": "js",
"source": `function(data, err) { this.setState({${name}: data}); return data; }`,
"compiled": `function(data, err) { this.setState({${name}: data}); return data; }`,
}
}
}
return (
jsx('div', {
children: [
jsx('div', {
className: 'DataSourceApi-content-InterfacePath',
children: [
jsx('div', {
children: '页面路径(变量)'
}),
jsx('div', {
className: 'jsApiIcon_Box',
onClick: () => {
GM_setClipboard(
'`/${window.pageConfig.appType || window.g_config.appKey}`'
);
Next.Message.show({
type: "success",
title: `复制成功!`
})
},
children: copyIcon('#3c99d8')
})
]
}),
jsx(Next.Menu, {
openMode: "single",
defaultOpenKeys: "1",
embeddable: true,
children: [
DataSourceApiData.map((item) => {
return jsx(Next.Menu.SubMenu, {
label: item.title,
children: [
item.content.map((content) => {
return jsx(Next.Menu
.PopupItem, {
label: content
.apiName,
triggerType: 'click',
children: jsx(
'div', {
className: 'DataSourceApi-content box-grid-1',
children: [
jsx('div', {
className: 'DataSourceApi-title',
children: [
jsx('div', {
className: 'DataSourceApi-content-apiName',
children: content
.apiName
}),
jsx('div', {
className: 'DataSourceApi-content-requestType',
children: content
.requestType
})
]
}),
jsx('div', {
className: 'DataSourceApi-content-InterfacePath',
children: [
jsx('div', {
children: content
.InterfacePath
}),
jsx('div', {
className: 'jsApiIcon_Box',
onClick: () => {
if (content
.InterfacePath
) {
GM_setClipboard
('`/${window.pageConfig.appType || window.g_config.appKey}' +
content
.InterfacePath +
'`'
);
Next.Message
.show({
type: "success",
title: `复制成功!`
})
} else {
Next.Message
.show({
type: "error",
title: `复制失败,请联系开发者!`
})
}
},
children: jsx(Next.Balloon,{
trigger:copyIcon('#3c99d8'),
children:"复制",
closable:false,
align:'t'
})
}),
jsx('div', {
className: 'jsApiIcon_Box',
onClick: () => {
const {project,skeleton}=AliLowCodeEngine;
let projectSchema = project.getSchema();
const pl=setDatapool(true,content.InterfacePath.match(/\b([A-Za-z]+)/g)[2],content.apiName,content.requestType,null,"`/${window.pageConfig.appType || window.g_config.appKey}"+content.InterfacePath+"`")
const pl2=setDatapool(false,content.InterfacePath.match(/\b([A-Za-z]+)/g)[2],content.apiName,content.requestType,null,"`/${window.pageConfig.appType || window.g_config.appKey}"+content.InterfacePath+"`")
projectSchema.componentsTree[0].dataSource.list.push(pl);
projectSchema.componentsTree[0].dataSource.online.push(pl2);
project.setSchema(projectSchema);
const dp=skeleton.getPanel('datapool');
dp.parent.remove(dp);
Next.Message.show({
type: "success",
title: `数据源添加成功!`
})
setTimeout(()=>dp.parent.add(dp),100);
},
children: jsx(Next.Balloon,{
trigger:interfaceIcon('#3c99d8'),
children:"一键创建数据源(无数据)",
closable:false,
align:'t'
})
}),
jsx('div', {
className: 'jsApiIcon_Box',
onClick: () => {
const {project,skeleton}=AliLowCodeEngine;
let projectSchema = project.getSchema();
const pl=setDatapool(true,content.InterfacePath.match(/\b([A-Za-z]+)/g)[2],content.apiName,content.requestType,`{${content.params.map((param)=>{return `\n "${param.parameterName}":"",//${param.description}`})}\n}`,"`/${window.pageConfig.appType || window.g_config.appKey}"+content.InterfacePath+"`")
projectSchema.componentsTree[0].dataSource.list.push(pl);
projectSchema.componentsTree[0].dataSource.online.push(pl);
project.setSchema(projectSchema);
const dp=skeleton.getPanel('datapool');
dp.parent.remove(dp);
Next.Message.show({
type: "success",
title: `数据源添加成功!`
})
setTimeout(()=>dp.parent.add(dp),100);
},
children: jsx(Next.Balloon,{
trigger:interfaceIcon('#3c99d8'),
children:"一键创建数据源(有数据)",
closable:false,
align:'t'
})
})
]
}),
jsx(Next
.Table, {
dataSource: content
.params,
children: [
jsx(Next
.Table
.Column, {
title: "参数名",
dataIndex: "parameterName"
}
),
jsx(Next
.Table
.Column, {
title: "描述",
dataIndex: "description"
}
),
jsx(Next
.Table
.Column, {
title: "必填",
dataIndex: "requiredFields"
}
),
jsx(Next
.Table
.Column, {
title: "操作",
cell: (value,
index,
record
) => {
return jsx(
Next
.Button, {
children: '复制',
type: 'primary',
text: true,
onClick: () => {
GM_setClipboard
(record
.parameterName
);
Next.Message
.show({
type: "success",
title: `复制成功!`
})
}
}
)
}
}
)
]
}
)
]
})
})
})
]
})
})
]
})
]
})
)
}
const yidaTool = () => {
return (
jsx(Next.Tab, {
shape: "text",
children: [
jsx(Next.Tab.Item, {
title: '组件',
key: 1,
children: ComponentsBox()
}),
jsx(Next.Tab.Item, {
title: 'JS-API',
key: 2,
children: JsApiBox()
}),
jsx(Next.Tab.Item, {
title: '跨应用数据源API',
key: 3,
children: DataSourceApiBox()
}),
jsx(Next.Tab.Item, {
title: '常用代码',
key: 4,
children: CommonCodeBox()
})
]
})
)
}
AliLowCodeEngine.skeleton.add({
area: "leftArea",
type: "PanelDock",
name: "yidaTool",
content: yidaTool,
props: {
align: "left",
icon: yidaToolIcon("currentColor"),
description: "Yida+"
},
panelProps: {
floatable: true,
hideTitleBar: false,
title: "YidaTools",
width: 400,
enableDrag: true
}
});
//复制组件按钮
AliLowCodeEngine.designerCabin.addBuiltinComponentAction({
name: "Copy",
content: {
icon: yidaToolIcon("#ffffff"),
title: "复制唯一标识",
action(node) {
const fieldId = ((node == null ? void 0 : node.propsData) == null ? void 0 : node
.propsData.fieldId) || node.id;
GM_setClipboard(fieldId);
Next.Message.show({
type: "success",
title: `唯一标识:${fieldId} 复制成功!`
})
}
},
important: true,
condition: true
});
document.getElementsByClassName('lc-left-area-bottom')[0].children[0].style.display = 'block';
console.log("Yida+加载完成!")
}
let yidaToolsData = {
appKey: unsafeWindow.pageConfig.appType || unsafeWindow.g_config.appKey,
fromUuid:''
}
// 设置一个计数器
let count = 0;
const interval = setInterval(() => {
if (unsafeWindow.LeGao && unsafeWindow.AliLowCodeEngine && unsafeWindow.__VcDeepYidaUtils__) {
count++;
init()
}
if (count) {
//停止
clearInterval(interval);
}
}, 1e2);
})();