提交 5ff1a031 编写于 作者: ibizdev's avatar ibizdev

chitanda 发布系统代码 [TrainSys,网页端]

上级 3be9d6c3
......@@ -7,10 +7,13 @@
<link type="text/css" href="/assets/css/app-loading.css" rel="stylesheet">
<link type="text/css" href="/assets/fontawesome/css/fontawesome.min.css" rel="stylesheet" />
<link type="text/css" href="/assets/fontawesome/css/solid.min.css" rel="stylesheet" />
<link type="text/css" href="/extras/css/iview.css" rel="stylesheet" />
<script src="/extras/js/system.min.js"></script>
<script type="systemjs-importmap" src="./extras/json/system-import.json" crossorigin="anonymous"></script>
<script src="/environments/environment.js"></script>
<script type="module" src="/assets/ionicons/ionicons/ionicons.esm.js"></script>
<script nomodule="" src="/assets/ionicons/ionicons/ionicons.js"></script>
<title></title>
<script nomodule src="/assets/ionicons/ionicons/ionicons.js"></script>
<title>页面加载中</title>
</head>
<body>
<div id="app"></div>
......
......@@ -11,22 +11,19 @@
"lint:style": "stylelint 'src/**/*.scss'"
},
"dependencies": {
"@ibiz-template/command": "0.0.1-alpha.13",
"@ibiz-template/controller": "0.0.1-alpha.20",
"@ibiz-template/core": "0.0.1-alpha.17",
"@ibiz-template/model": "0.0.1-alpha.17",
"@ibiz-template/runtime": "0.0.1-alpha.20",
"@ibiz-template/service": "0.0.1-alpha.19",
"@ibiz-template/vue-util": "0.0.1-alpha.20",
"@ibiz-template/command": "0.0.1-alpha.23",
"@ibiz-template/controller": "0.0.1-alpha.23",
"@ibiz-template/core": "0.0.1-alpha.23",
"@ibiz-template/model": "0.0.1-alpha.23",
"@ibiz-template/runtime": "0.0.1-alpha.23",
"@ibiz-template/service": "0.0.1-alpha.23",
"@ibiz-template/vue-util": "0.0.1-alpha.23",
"dayjs": "^1.11.5",
"ionicons": "^6.0.3",
"lodash-es": "^4.17.21",
"pinia": "^2.0.22",
"proxy-polyfill": "^0.3.2",
"qs": "^6.11.0",
"qx-util": "^0.4.1",
"qx-util": "^0.4.3",
"ramda": "^0.28.0",
"systemjs": "^6.13.0",
"view-design": "^4.7.0",
"vue": "^2.7.10",
"vue-router": "^3.6.4"
......@@ -38,7 +35,6 @@
"@types/node": "^18.8.3",
"@types/qs": "^6.9.7",
"@types/ramda": "^0.28.15",
"@types/systemjs": "^6.1.1",
"@typescript-eslint/eslint-plugin": "^5.39.0",
"@typescript-eslint/parser": "^5.39.0",
"@vitejs/plugin-legacy": "^2.2.0",
......
此差异已折叠。
此差异已折叠。
因为 它太大了无法显示 源差异 。您可以改为 查看blob
此差异已折叠。
此差异已折叠。
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){"use strict";var t=1e3,e=6e4,n=36e5,r="millisecond",i="second",s="minute",u="hour",a="day",o="week",f="month",h="quarter",c="year",d="date",$="Invalid Date",l=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,y=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_")},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:""+Array(e+1-r.length).join(n)+t},g={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?"+":"-")+m(r,2,"0")+":"+m(i,2,"0")},m:function t(e,n){if(e.date()<n.date())return-t(n,e);var r=12*(n.year()-e.year())+(n.month()-e.month()),i=e.clone().add(r,f),s=n-i<0,u=e.clone().add(r+(s?-1:1),f);return+(-(r+(n-i)/(s?i-u:u-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:f,y:c,w:o,d:a,D:d,h:u,m:s,s:i,ms:r,Q:h}[t]||String(t||"").toLowerCase().replace(/s$/,"")},u:function(t){return void 0===t}},v="en",D={};D[v]=M;var p=function(t){return t instanceof _},S=function t(e,n,r){var i;if(!e)return v;if("string"==typeof e){var s=e.toLowerCase();D[s]&&(i=s),n&&(D[s]=n,i=s);var u=e.split("-");if(!i&&u.length>1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(v=i),i||!r&&v},w=function(t,e){if(p(t))return t.clone();var n="object"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},O=g;O.l=S,O.i=p,O.w=function(t,e){return w(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=S(t.locale,null,!0),this.parse(t)}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(O.u(e))return new Date;if(e instanceof Date)return new Date(e);if("string"==typeof e&&!/Z$/i.test(e)){var r=e.match(l);if(r){var i=r[2]-1||0,s=(r[7]||"0").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.$x=t.x||{},this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return O},m.isValid=function(){return!(this.$d.toString()===$)},m.isSame=function(t,e){var n=w(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return w(t)<this.startOf(e)},m.isBefore=function(t,e){return this.endOf(e)<w(t)},m.$g=function(t,e,n){return O.u(t)?this[e]:this.set(n,t)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(t,e){var n=this,r=!!O.u(e)||e,h=O.p(t),$=function(t,e){var i=O.w(n.$u?Date.UTC(n.$y,e,t):new Date(n.$y,e,t),n);return r?i:i.endOf(a)},l=function(t,e){return O.w(n.toDate()[t].apply(n.toDate("s"),(r?[0,0,0,0]:[23,59,59,999]).slice(e)),n)},y=this.$W,M=this.$M,m=this.$D,g="set"+(this.$u?"UTC":"");switch(h){case c:return r?$(1,0):$(31,11);case f:return r?$(1,M):$(0,M+1);case o:var v=this.$locale().weekStart||0,D=(y<v?y+7:y)-v;return $(r?m-D:m+(6-D),M);case a:case d:return l(g+"Hours",0);case u:return l(g+"Minutes",1);case s:return l(g+"Seconds",2);case i:return l(g+"Milliseconds",3);default:return this.clone()}},m.endOf=function(t){return this.startOf(t,!1)},m.$set=function(t,e){var n,o=O.p(t),h="set"+(this.$u?"UTC":""),$=(n={},n[a]=h+"Date",n[d]=h+"Date",n[f]=h+"Month",n[c]=h+"FullYear",n[u]=h+"Hours",n[s]=h+"Minutes",n[i]=h+"Seconds",n[r]=h+"Milliseconds",n)[o],l=o===a?this.$D+(e-this.$W):e;if(o===f||o===c){var y=this.clone().set(d,1);y.$d[$](l),y.init(),this.$d=y.set(d,Math.min(this.$D,y.daysInMonth())).$d}else $&&this.$d[$](l);return this.init(),this},m.set=function(t,e){return this.clone().$set(t,e)},m.get=function(t){return this[O.p(t)]()},m.add=function(r,h){var d,$=this;r=Number(r);var l=O.p(h),y=function(t){var e=w($);return O.w(e.date(e.date()+Math.round(t*r)),$)};if(l===f)return this.set(f,this.$M+r);if(l===c)return this.set(c,this.$y+r);if(l===a)return y(1);if(l===o)return y(7);var M=(d={},d[s]=e,d[u]=n,d[i]=t,d)[l]||1,m=this.$d.getTime()+r*M;return O.w(m,this)},m.subtract=function(t,e){return this.add(-1*t,e)},m.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return n.invalidDate||$;var r=t||"YYYY-MM-DDTHH:mm:ssZ",i=O.z(this),s=this.$H,u=this.$m,a=this.$M,o=n.weekdays,f=n.months,h=function(t,n,i,s){return t&&(t[n]||t(e,r))||i[n].slice(0,s)},c=function(t){return O.s(s%12||12,t,"0")},d=n.meridiem||function(t,e,n){var r=t<12?"AM":"PM";return n?r.toLowerCase():r},l={YY:String(this.$y).slice(-2),YYYY:this.$y,M:a+1,MM:O.s(a+1,2,"0"),MMM:h(n.monthsShort,a,f,3),MMMM:h(f,a),D:this.$D,DD:O.s(this.$D,2,"0"),d:String(this.$W),dd:h(n.weekdaysMin,this.$W,o,2),ddd:h(n.weekdaysShort,this.$W,o,3),dddd:o[this.$W],H:String(s),HH:O.s(s,2,"0"),h:c(1),hh:c(2),a:d(s,u,!0),A:d(s,u,!1),m:String(u),mm:O.s(u,2,"0"),s:String(this.$s),ss:O.s(this.$s,2,"0"),SSS:O.s(this.$ms,3,"0"),Z:i};return r.replace(y,(function(t,e){return e||l[t]||i.replace(":","")}))},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(r,d,$){var l,y=O.p(d),M=w(r),m=(M.utcOffset()-this.utcOffset())*e,g=this-M,v=O.m(this,M);return v=(l={},l[c]=v/12,l[f]=v,l[h]=v/3,l[o]=(g-m)/6048e5,l[a]=(g-m)/864e5,l[u]=g/n,l[s]=g/e,l[i]=g/t,l)[y]||g,$?v:O.a(v)},m.daysInMonth=function(){return this.endOf(f).$D},m.$locale=function(){return D[this.$L]},m.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=S(t,e,!0);return r&&(n.$L=r),n},m.clone=function(){return O.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},M}(),T=_.prototype;return w.prototype=T,[["$ms",r],["$s",i],["$m",s],["$H",u],["$W",a],["$M",f],["$y",c],["$D",d]].forEach((function(t){T[t[1]]=function(e){return this.$g(e,t[0],t[1])}})),w.extend=function(t,e){return t.$i||(t(e,_,w),t.$i=!0),w},w.locale=S,w.isDayjs=p,w.unix=function(t){return w(1e3*t)},w.en=D[v],w.Ls=D,w.p={},w}));
\ No newline at end of file
此差异已折叠。
此差异已折叠。
(function(root,pluralize){if(typeof require==='function'&&typeof exports==='object'&&typeof module==='object'){module.exports=pluralize()}else if(typeof define==='function'&&define.amd){define(function(){return pluralize()})}else{root.pluralize=pluralize()}})(this,function(){var pluralRules=[];var singularRules=[];var uncountables={};var irregularPlurals={};var irregularSingles={};function sanitizeRule(rule){if(typeof rule==='string'){return new RegExp('^'+rule+'$','i')}return rule}function restoreCase(word,token){if(word===token)return token;if(word===word.toLowerCase())return token.toLowerCase();if(word===word.toUpperCase())return token.toUpperCase();if(word[0]===word[0].toUpperCase()){return token.charAt(0).toUpperCase()+token.substr(1).toLowerCase()}return token.toLowerCase()}function interpolate(str,args){return str.replace(/\$(\d{1,2})/g,function(match,index){return args[index]||''})}function replace(word,rule){return word.replace(rule[0],function(match,index){var result=interpolate(rule[1],arguments);if(match===''){return restoreCase(word[index-1],result)}return restoreCase(match,result)})}function sanitizeWord(token,word,rules){if(!token.length||uncountables.hasOwnProperty(token)){return word}var len=rules.length;while(len--){var rule=rules[len];if(rule[0].test(word))return replace(word,rule)}return word}function replaceWord(replaceMap,keepMap,rules){return function(word){var token=word.toLowerCase();if(keepMap.hasOwnProperty(token)){return restoreCase(word,token)}if(replaceMap.hasOwnProperty(token)){return restoreCase(word,replaceMap[token])}return sanitizeWord(token,word,rules)}}function checkWord(replaceMap,keepMap,rules,bool){return function(word){var token=word.toLowerCase();if(keepMap.hasOwnProperty(token))return true;if(replaceMap.hasOwnProperty(token))return false;return sanitizeWord(token,token,rules)===token}}function pluralize(word,count,inclusive){var pluralized=count===1?pluralize.singular(word):pluralize.plural(word);return(inclusive?count+' ':'')+pluralized}pluralize.plural=replaceWord(irregularSingles,irregularPlurals,pluralRules);pluralize.isPlural=checkWord(irregularSingles,irregularPlurals,pluralRules);pluralize.singular=replaceWord(irregularPlurals,irregularSingles,singularRules);pluralize.isSingular=checkWord(irregularPlurals,irregularSingles,singularRules);pluralize.addPluralRule=function(rule,replacement){pluralRules.push([sanitizeRule(rule),replacement])};pluralize.addSingularRule=function(rule,replacement){singularRules.push([sanitizeRule(rule),replacement])};pluralize.addUncountableRule=function(word){if(typeof word==='string'){uncountables[word.toLowerCase()]=true;return}pluralize.addPluralRule(word,'$0');pluralize.addSingularRule(word,'$0')};pluralize.addIrregularRule=function(single,plural){plural=plural.toLowerCase();single=single.toLowerCase();irregularSingles[single]=plural;irregularPlurals[plural]=single};[['I','we'],['me','us'],['he','they'],['she','they'],['them','them'],['myself','ourselves'],['yourself','yourselves'],['itself','themselves'],['herself','themselves'],['himself','themselves'],['themself','themselves'],['is','are'],['was','were'],['has','have'],['this','these'],['that','those'],['echo','echoes'],['dingo','dingoes'],['volcano','volcanoes'],['tornado','tornadoes'],['torpedo','torpedoes'],['genus','genera'],['viscus','viscera'],['stigma','stigmata'],['stoma','stomata'],['dogma','dogmata'],['lemma','lemmata'],['schema','schemata'],['anathema','anathemata'],['ox','oxen'],['axe','axes'],['die','dice'],['yes','yeses'],['foot','feet'],['eave','eaves'],['goose','geese'],['tooth','teeth'],['quiz','quizzes'],['human','humans'],['proof','proofs'],['carve','carves'],['valve','valves'],['looey','looies'],['thief','thieves'],['groove','grooves'],['pickaxe','pickaxes'],['passerby','passersby']].forEach(function(rule){return pluralize.addIrregularRule(rule[0],rule[1])});[[/s?$/i,'s'],[/[^\u0000-\u007F]$/i,'$0'],[/([^aeiou]ese)$/i,'$1'],[/(ax|test)is$/i,'$1es'],[/(alias|[^aou]us|t[lm]as|gas|ris)$/i,'$1es'],[/(e[mn]u)s?$/i,'$1s'],[/([^l]ias|[aeiou]las|[ejzr]as|[iu]am)$/i,'$1'],[/(alumn|syllab|vir|radi|nucle|fung|cact|stimul|termin|bacill|foc|uter|loc|strat)(?:us|i)$/i,'$1i'],[/(alumn|alg|vertebr)(?:a|ae)$/i,'$1ae'],[/(seraph|cherub)(?:im)?$/i,'$1im'],[/(her|at|gr)o$/i,'$1oes'],[/(agend|addend|millenni|dat|extrem|bacteri|desiderat|strat|candelabr|errat|ov|symposi|curricul|automat|quor)(?:a|um)$/i,'$1a'],[/(apheli|hyperbat|periheli|asyndet|noumen|phenomen|criteri|organ|prolegomen|hedr|automat)(?:a|on)$/i,'$1a'],[/sis$/i,'ses'],[/(?:(kni|wi|li)fe|(ar|l|ea|eo|oa|hoo)f)$/i,'$1$2ves'],[/([^aeiouy]|qu)y$/i,'$1ies'],[/([^ch][ieo][ln])ey$/i,'$1ies'],[/(x|ch|ss|sh|zz)$/i,'$1es'],[/(matr|cod|mur|sil|vert|ind|append)(?:ix|ex)$/i,'$1ices'],[/\b((?:tit)?m|l)(?:ice|ouse)$/i,'$1ice'],[/(pe)(?:rson|ople)$/i,'$1ople'],[/(child)(?:ren)?$/i,'$1ren'],[/eaux$/i,'$0'],[/m[ae]n$/i,'men'],['thou','you']].forEach(function(rule){return pluralize.addPluralRule(rule[0],rule[1])});[[/s$/i,''],[/(ss)$/i,'$1'],[/(wi|kni|(?:after|half|high|low|mid|non|night|[^\w]|^)li)ves$/i,'$1fe'],[/(ar|(?:wo|[ae])l|[eo][ao])ves$/i,'$1f'],[/ies$/i,'y'],[/\b([pl]|zomb|(?:neck|cross)?t|coll|faer|food|gen|goon|group|lass|talk|goal|cut)ies$/i,'$1ie'],[/\b(mon|smil)ies$/i,'$1ey'],[/\b((?:tit)?m|l)ice$/i,'$1ouse'],[/(seraph|cherub)im$/i,'$1'],[/(x|ch|ss|sh|zz|tto|go|cho|alias|[^aou]us|t[lm]as|gas|(?:her|at|gr)o|[aeiou]ris)(?:es)?$/i,'$1'],[/(analy|diagno|parenthe|progno|synop|the|empha|cri|ne)(?:sis|ses)$/i,'$1sis'],[/(movie|twelve|abuse|e[mn]u)s$/i,'$1'],[/(test)(?:is|es)$/i,'$1is'],[/(alumn|syllab|vir|radi|nucle|fung|cact|stimul|termin|bacill|foc|uter|loc|strat)(?:us|i)$/i,'$1us'],[/(agend|addend|millenni|dat|extrem|bacteri|desiderat|strat|candelabr|errat|ov|symposi|curricul|quor)a$/i,'$1um'],[/(apheli|hyperbat|periheli|asyndet|noumen|phenomen|criteri|organ|prolegomen|hedr|automat)a$/i,'$1on'],[/(alumn|alg|vertebr)ae$/i,'$1a'],[/(cod|mur|sil|vert|ind)ices$/i,'$1ex'],[/(matr|append)ices$/i,'$1ix'],[/(pe)(rson|ople)$/i,'$1rson'],[/(child)ren$/i,'$1'],[/(eau)x?$/i,'$1'],[/men$/i,'man']].forEach(function(rule){return pluralize.addSingularRule(rule[0],rule[1])});['adulthood','advice','agenda','aid','aircraft','alcohol','ammo','analytics','anime','athletics','audio','bison','blood','bream','buffalo','butter','carp','cash','chassis','chess','clothing','cod','commerce','cooperation','corps','debris','diabetes','digestion','elk','energy','equipment','excretion','expertise','firmware','flounder','fun','gallows','garbage','graffiti','hardware','headquarters','health','herpes','highjinks','homework','housework','information','jeans','justice','kudos','labour','literature','machinery','mackerel','mail','media','mews','moose','music','mud','manga','news','only','personnel','pike','plankton','pliers','police','pollution','premises','rain','research','rice','salmon','scissors','series','sewage','shambles','shrimp','software','species','staff','swine','tennis','traffic','transportation','trout','tuna','wealth','welfare','whiting','wildebeest','wildlife','you',/pok[]mon$/i,/[^aeiou]ese$/i,/deer$/i,/fish$/i,/measles$/i,/o[iu]s$/i,/pox$/i,/sheep$/i].forEach(pluralize.addUncountableRule);return pluralize});
\ No newline at end of file
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
{
"imports": {
"axios": "../js/axios.min.js",
"dayjs": "../js/dayjs.min.js",
"async-validator": "../js/async-validator.min.js",
"pluralize": "../js/pluralize.min.js",
"qs": "../js/qs.min.js",
"ramda": "../js/ramda.min.js",
"vue": "../js/vue.runtime.min.js",
"vue-router": "../js/vue-router.min.js",
"view-design": "../js/iview.min.js",
"lodash-es": "../js/lodash.min.js",
"qx-util": "../js/qx-util.min.js",
"@ibiz/dynamic-model-api": "../js/ibiz-dynamic-model-api.system.min.js",
"@ibiz-template/command": "../js/ibiz-template-command.system.min.js",
"@ibiz-template/core": "../js/ibiz-template-core.system.min.js",
"@ibiz-template/model": "../js/ibiz-template-model.system.min.js",
"@ibiz-template/runtime": "../js/ibiz-template-runtime.system.min.js",
"@ibiz-template/service": "../js/ibiz-template-service.system.min.js",
"@ibiz-template/controller": "../js/ibiz-template-controller.system.min.js",
"@ibiz-template/vue-util": "../js/ibiz-template-vue-util.system.min.js"
}
}
git pull
git add -A
git commit -m "build: 升级底包"
git checkout publish
git merge master
git push
git checkout master
\ No newline at end of file
......@@ -4,7 +4,6 @@ import { install as installService } from '@ibiz-template/service';
import { install as installRuntime } from '@ibiz-template/runtime';
import { install as installController } from '@ibiz-template/controller';
import { IViewRegister } from './i-view-register';
import 'view-design/dist/styles/iview.css';
import {
AppLayout,
ControlLayout,
......@@ -33,6 +32,9 @@ import {
GridEditItem,
ViewPanel,
PickupViewPanel,
DashboardControl,
PortletContainer,
PortletPart,
} from './components/widgets';
import {
EditView,
......@@ -46,6 +48,7 @@ import {
WFDynaEditView3,
WFDynaStartView,
WFStepTraceView,
AppPortalView,
} from './components/views';
import { IndexView } from './views';
import AppKeepAlive from './components/common/app-keep-alive/app-keep-alive.vue';
......@@ -62,6 +65,8 @@ import {
AppUser,
AppTransition,
WfVersionSelect,
ExtendActionTimeLine,
ExtendActionGrid,
} from './components/common';
// 编辑器组件
......@@ -81,7 +86,7 @@ import IBizFileUpload from './components/editor/ibiz-file-upload/ibiz-file-uploa
import AppFileUploadRowPreview from './components/editor/app-file-upload-row-preview/app-file-upload-row-preview';
import AppImageUpload from './components/editor/app-image-upload/app-image-upload';
import NotSupportedEditor from './components/editor/not-supported-editor/not-supported-editor';
import { presetEditorProvider } from './provider';
import { presetAllProviders } from './provider';
import { MDViewBase } from './components/layout/md-view-base/md-view-base';
export const AppRegister = {
......@@ -90,7 +95,7 @@ export const AppRegister = {
installService();
installRuntime();
installController();
presetEditorProvider();
presetAllProviders();
v.use(IViewRegister);
// 注册布局组件
v.component('AppLayout', AppLayout);
......@@ -111,6 +116,7 @@ export const AppRegister = {
v.component('WFDynaStartView', WFDynaStartView);
v.component('WFDynaEditView3', WFDynaEditView3);
v.component('WFStepTraceView', WFStepTraceView);
v.component('AppPortalView', AppPortalView);
// 注册部件组件
v.component('AppMenu', AppMenu);
v.component('GridControl', GridControl);
......@@ -121,7 +127,7 @@ export const AppRegister = {
v.component('FormButton', FormButton);
v.component('FormDruipart', FormDRUIPart);
v.component('FormGroupPanel', FormGroupPanel);
v.component('AppFormItem', FormItem);
v.component('FormItem', FormItem);
v.component('FormPage', FormPage);
v.component('FormPageItem', FormPageItem);
v.component('FormRawItem', FormRawItem);
......@@ -132,6 +138,9 @@ export const AppRegister = {
v.component('SearchFormControl', SearchFormControl);
v.component('ViewPanel', ViewPanel);
v.component('PickupViewPanel', PickupViewPanel);
v.component('DashboardControl', DashboardControl);
v.component('PortletPart', PortletPart);
v.component('PortletContainer', PortletContainer);
// 注册通用组件
v.component('AppKeepAlive', AppKeepAlive);
v.component('AppIcon', AppIcon);
......@@ -146,6 +155,8 @@ export const AppRegister = {
v.component('AppUser', AppUser);
v.component('AppTransition', AppTransition);
v.component('WfVersionSelect', WfVersionSelect);
v.component('ExtendActionTimeLine', ExtendActionTimeLine);
v.component('ExtendActionGrid', ExtendActionGrid);
// 注册编辑器组件
v.component('IBizSpan', IBizSpan);
v.component('IBizInputBox', IBizInputBox);
......
......@@ -2,7 +2,7 @@ import { defineComponent, PropType } from 'vue';
import { IPSUIActionGroup, IPSUIActionGroupDetail } from '@ibiz-template/model';
import { useNamespace } from '@ibiz-template/vue-util';
import '@/styles/components/common/view-toolbar/view-toolbar.scss';
import { IActionsState } from '@ibiz-template/controller';
import { IButtonContainerState } from '@ibiz-template/controller';
export const ActionToolbar = defineComponent({
name: 'ActionToolbar',
......@@ -12,7 +12,7 @@ export const ActionToolbar = defineComponent({
required: true,
},
actionsState: {
type: Object as PropType<IActionsState>,
type: Object as PropType<IButtonContainerState>,
required: true,
},
},
......@@ -36,7 +36,7 @@ export const ActionToolbar = defineComponent({
{details.length > 0 &&
details.map(detail => {
const action = detail.getPSUIAction();
if (action) {
if (action && this.actionsState[detail.name].visible) {
return (
<i-button
type='text'
......
......@@ -51,6 +51,8 @@ export const AppCol = defineComponent({
width: props.modelData.width ? props.modelData.width : '100%',
height: props.modelData.height ? props.modelData.height : '100%',
});
// 关系界面额外样式
if (props.modelData.source?.detailType === 'DRUIPART') {
Object.assign(styles, {
overflow: 'auto',
......
/* eslint-disable no-param-reassign */
import { defineComponent, PropType, watch, Ref, ref } from 'vue';
import { useNamespace } from '@ibiz-template/vue-util';
import '@/styles/components/common/extend-action-grid/extend-action-grid.scss';
import dayjs from 'dayjs';
import { clone } from 'ramda';
/**
* 办理人员名称显示去重
*
* @param tag 需要去重的名称标识
* @param dataS 需要去重数据集
*/
const acceptingOfficerNoDup = (tag: string, dataS: IData[]) => {
const tempData: IData[] = [];
if (dataS?.length > 0 && tag) {
dataS.forEach((data: IData) => {
tempData.push(data[tag]);
});
}
const noDup = [...new Set(tempData)];
return noDup;
};
/**
* 绘制人员
*/
const renderAuthorName = (task: IData) => {
let authorNames: IData[] = [];
if (task.comments.length > 0) {
authorNames = acceptingOfficerNoDup('authorName', task.comments);
} else {
authorNames = acceptingOfficerNoDup('displayname', task.identitylinks);
}
const disabled = !(authorNames.length > 1);
const content = authorNames.map(item => item).toString();
return (
<i-tooltip
placement='bottom'
content={content}
theme='light'
disabled={disabled}
>
{content}
</i-tooltip>
);
};
/**
* 绘制单位
*/
const renderAuthorOrgName = (task: IData) => {
let authorOrgNames: IData[] = [];
if (task.comments.length > 0) {
authorOrgNames = acceptingOfficerNoDup('authorOrgName', task.comments);
}
const disabled = !(authorOrgNames.length > 1);
const content = authorOrgNames.map(item => item).toString();
return (
<i-tooltip
placement='bottom'
content={content}
theme='light'
disabled={disabled}
>
{content}
</i-tooltip>
);
};
/**
* 绘制部门
*/
const renderAuthorDeptName = (task: IData) => {
let authorDeptNames: IData[] = [];
if (task.comments.length > 0) {
authorDeptNames = acceptingOfficerNoDup('authorDeptName', task.comments);
}
const disabled = !(authorDeptNames.length > 1);
const content = authorDeptNames.map(item => item).toString();
return (
<i-tooltip
placement='bottom'
content={content}
theme='light'
disabled={disabled}
>
{content}
</i-tooltip>
);
};
export const ExtendActionGrid = defineComponent({
name: 'ExtendActionGrid',
props: {
data: {
type: Object as PropType<IData>,
},
},
setup(props) {
const ns = useNamespace('extend-action-grid');
const UIData: Ref<IData | null> = ref(null);
watch(
() => props.data,
(newVal, oldVal) => {
if (newVal !== oldVal && newVal) {
const copyData = clone(newVal);
if (copyData.usertasks.length > 0) {
copyData.usertasks.forEach((task: IData) => {
task.isShow = false;
});
copyData.usertasks = copyData.usertasks.reverse();
UIData.value = copyData;
}
}
},
{ immediate: true },
);
/**
* 时间转换
*
* @memberof ExtendActionTimeline
*/
const formatDate = (date: string, format: string) => {
return dayjs(date).format(format);
};
/**
* 点击事件
*
* @memberof ExtendActionTimeline
*/
const changeExpand = (userTask: IData) => {
userTask.isShow = !userTask.isShow;
};
return { ns, formatDate, changeExpand, UIData };
},
render() {
return (
<div class={this.ns.b()}>
<div class={this.ns.b('header')}>
<div class={this.ns.be('header', 'index')}>序号</div>
<div class={this.ns.be('header', 'user-task-name')}>节点</div>
<div class={this.ns.be('header', 'author-name')}>办理人员</div>
<div class={this.ns.be('header', 'author-org-name')}>单位</div>
<div class={this.ns.be('header', 'author-dept-name')}>部门</div>
<div class={this.ns.be('header', 'type')}>操作</div>
<div class={this.ns.be('header', 'last-time')}>完成时间</div>
<div class={this.ns.be('header', 'full-message')}>审批意见</div>
</div>
<div class={this.ns.b('content')}>
{this.UIData &&
this.UIData.usertasks.map((task: IData, index: number) => {
return [
<div class={this.ns.b('task')}>
<div class={this.ns.be('task', 'index')}>
<span>{index + 1}</span>
</div>
<div class={this.ns.be('task', 'user-task-name')}>
<i-tooltip
placement='bottom'
content={task.userTaskName}
theme='light'
>
{task.userTaskName}
</i-tooltip>
</div>
<div class={this.ns.be('task', 'author-name')}>
{renderAuthorName(task)}
</div>
<div class={this.ns.be('task', 'author-org-name')}>
{renderAuthorOrgName(task)}
</div>
<div class={this.ns.be('task', 'author-dept-name')}>
{renderAuthorDeptName(task)}
</div>
<div class={this.ns.be('task', 'type')}>
{task.comments[task.comments.length - 1] &&
task.comments[task.comments.length - 1].type}
</div>
<div class={this.ns.be('task', 'last-time')}>
{task.comments[task.comments.length - 1] &&
this.formatDate(
task.comments[task.comments.length - 1].time,
'MM月DD日 HH:mm:ss',
)}
</div>
<div class={this.ns.be('task', 'full-message')}>
{task.comments[task.comments.length - 1] &&
task.comments[task.comments.length - 1].fullMessage}
</div>
{(task.comments.length > 1 ||
task.identitylinks.length > 1) && (
<div
class={this.ns.be('task', 'arrow')}
on-click={() => {
this.changeExpand(task);
}}
>
<i-icon type={task.isShow ? 'md-remove' : 'md-add'} />
</div>
)}
</div>,
task.isShow && [
task.comments.map((comment: IData) => {
return (
<div class={this.ns.b('comment')}>
<div class={this.ns.be('comment', 'index')}></div>
<div
class={this.ns.be('comment', 'user-task-name')}
></div>
<div class={this.ns.be('comment', 'author-name')}>
{comment.authorName}
</div>
<div class={this.ns.be('comment', 'author-org-name')}>
{comment.authorOrgName}
</div>
<div class={this.ns.be('comment', 'author-dept-name')}>
{comment.authorDeptName}
</div>
<div class={this.ns.be('comment', 'type')}>
{comment.type}
</div>
<div class={this.ns.be('comment', 'last-time')}>
{this.formatDate(comment.time, 'MM月DD日 HH:mm:ss')}
</div>
<div class={this.ns.be('comment', 'full-message')}>
{comment.fullMessage}
</div>
</div>
);
}),
task.identitylinks.length > 0 && (
<div class={this.ns.b('identity-link')}>
<div class={this.ns.be('identity-link', 'index')}></div>
<div
class={this.ns.be('identity-link', 'user-task-name')}
>
<i-tooltip
placement='bottom'
content='待办理'
theme='light'
>
待办理
</i-tooltip>
</div>
<div class={this.ns.be('identity-link', 'author-name')}>
<i-tooltip
placement='bottom'
content={task.identitylinks
.map((item: IData) => item.displayname)
.toString()}
theme='light'
>
{task.identitylinks
.map((item: IData) => item.displayname)
.toString()}
</i-tooltip>
</div>
</div>
),
],
];
})}
</div>
</div>
);
},
});
/* eslint-disable no-param-reassign */
import { defineComponent, PropType, watch, Ref, ref } from 'vue';
import { useNamespace } from '@ibiz-template/vue-util';
import '@/styles/components/common/extend-action-timeline/extend-action-timeline.scss';
import dayjs from 'dayjs';
import { clone } from 'ramda';
/**
* 办理人员名称显示去重
*
* @param tag 需要去重的名称标识
* @param dataS 需要去重数据集
*/
const acceptingOfficerNoDup = (tag: string, dataS: IData[]) => {
const tempData: IData[] = [];
if (dataS?.length > 0 && tag) {
dataS.forEach((data: IData) => {
tempData.push(data[tag]);
});
}
const noDup = [...new Set(tempData)];
return noDup;
};
export const ExtendActionTimeLine = defineComponent({
name: 'ExtendActionTimeLine',
props: {
data: {
type: Object as PropType<IData>,
},
},
setup(props) {
const ns = useNamespace('extend-action-timeline');
const UIData: Ref<IData[]> = ref([]);
const sortData = (a: IData, b: IData) => {
return Date.parse(b.time) - Date.parse(a.time);
};
watch(
() => props.data,
(newVal, oldVal) => {
if (newVal !== oldVal && newVal) {
const commentsData: IData[] = [];
const copyData = clone(newVal);
let tasks = copyData.usertasks;
if (tasks.length > 0) {
tasks = tasks.reverse();
tasks.forEach((task: IData) => {
if (task.identitylinks.length > 0) {
const authorNames = acceptingOfficerNoDup(
'displayname',
task.identitylinks,
);
commentsData.push({
authorName: authorNames.join('、'),
taskName: task.userTaskName,
isLink: true,
});
}
if (task.comments.length > 0) {
task.comments.forEach((comment: IData) => {
Object.assign(comment, { taskName: task.userTaskName });
});
task.comments.sort(sortData);
commentsData.push(...task.comments);
}
});
UIData.value = commentsData;
}
}
},
{ immediate: true },
);
/**
* 时间转换
*
* @memberof ExtendActionTimeline
*/
const formatDate = (date: string, format: string) => {
return dayjs(date).format(format);
};
return { ns, formatDate, UIData };
},
render() {
return (
<div class={this.ns.b()}>
{this.UIData &&
this.UIData.map((task: IData) => {
return (
<div
class={[
this.ns.b('task'),
this.ns.is('wrong', task.type && task.type.includes('驳回')),
this.ns.is('link', task.isLink),
]}
>
<div class={this.ns.be('task', 'tail')}></div>
<div class={this.ns.be('task', 'head')}></div>
<div class={this.ns.be('task', 'top')}>
<div class={this.ns.be('task', 'user-task-name')}>
{task.taskName}
</div>
<div class={this.ns.be('task', 'author-name')}>
{task.authorName}
</div>
{task.type && (
<div class={this.ns.be('task', 'type')}>{task.type}</div>
)}
{task.time && (
<div class={this.ns.be('task', 'last-time')}>
{task.time && '处理时间'}
<span class={this.ns.be('task', 'last-time-text')}>
{task.time}
</span>
</div>
)}
</div>
<div class={this.ns.be('task', 'bottom')}>
<div class={this.ns.be('task', 'full-message')}>
{task.fullMessage}
</div>
</div>
</div>
);
})}
</div>
);
},
});
......@@ -10,6 +10,8 @@ import { ActionToolbar } from './action-toolbar/action-toolbar';
import { AppUser } from './app-user/app-user';
import AppTransition from './app-transition/app-transition.vue';
import { WfVersionSelect } from './wf-version-select/wf-version-select';
import { ExtendActionTimeLine } from './extend-action-timeline/extend-action-timeline';
import { ExtendActionGrid } from './extend-action-grid/extend-action-grid';
export {
AppIcon,
......@@ -24,4 +26,6 @@ export {
AppUser,
AppTransition,
WfVersionSelect,
ExtendActionTimeLine,
ExtendActionGrid,
};
......@@ -2,9 +2,9 @@ import {
computed,
defineComponent,
onMounted,
PropType,
reactive,
ref,
watch,
} from 'vue';
import {
IPSDETBGroupItem,
......@@ -12,7 +12,10 @@ import {
IPSDEToolbarItem,
ToolbarModel,
} from '@ibiz-template/model';
import { ActionsState, ToolbarNeuron } from '@ibiz-template/controller';
import {
IButtonContainerState,
ToolbarNeuron,
} from '@ibiz-template/controller';
import { useNamespace } from '@ibiz-template/vue-util';
import '@/styles/components/common/view-toolbar/view-toolbar.scss';
......@@ -34,7 +37,10 @@ export const ViewToolbar = defineComponent({
type: ToolbarModel,
required: true,
},
selections: Array<IData>,
toolbarState: {
type: Object as PropType<IButtonContainerState>,
required: true,
},
viewMode: {
type: String,
required: true,
......@@ -55,27 +61,9 @@ export const ViewToolbar = defineComponent({
return props.viewMode === 'EMBED' ? 'small' : 'default';
});
// 初始化工具栏状态控制对象
const actionsState = new ActionsState();
[...props.modelData.actionItems.values()].forEach(item => {
actionsState.addAction(
item.id,
item.uIActionTarget,
item.getPSUIAction()?.uIActionTag || '',
);
});
const toolbarState = reactive(actionsState);
watch(
() => props.selections,
newVal => {
toolbarState.setSelectedData(newVal || []);
},
{ immediate: true },
);
// 点击事件
const handleClick = async (item: IPSDEToolbarItem, _event: MouseEvent) => {
toolbarState.setDoingAction(item.id);
props.toolbarState.setLoading(item.id);
try {
await neuron.evt.asyncEmit(
'itemClick',
......@@ -83,11 +71,13 @@ export const ViewToolbar = defineComponent({
_event,
);
} finally {
toolbarState.setDoingAction('');
props.toolbarState.setLoading('');
}
};
return { ns, doingToolbarItem, toolbarState, handleClick, btnSize };
const toolbarState2 = reactive(props.toolbarState);
return { ns, toolbarState2, doingToolbarItem, handleClick, btnSize };
},
render() {
return (
......@@ -109,15 +99,15 @@ export const ViewToolbar = defineComponent({
}
if (
item.itemType === 'DEUIACTION' &&
this.toolbarState[item.id].visible
this.toolbarState2[item.id].visible
) {
return (
<div key={item.id} class={this.ns.b('item')}>
<i-button
title={item.tooltip}
size={this.btnSize}
loading={this.toolbarState[item.id].loading}
disabled={this.toolbarState[item.id].disabled}
loading={this.toolbarState2[item.id].loading}
disabled={this.toolbarState2[item.id].disabled}
on-click={(e: MouseEvent) => this.handleClick(item, e)}
>
{btnContent(item, this.viewMode)}
......
......@@ -326,7 +326,7 @@ export default defineComponent({
render(h) {
return (
<div class={this.ns.b()}>
<row>
<i-row>
{this.files.length > 0 ? (
<i-col span={12}>
<i-button
......@@ -362,7 +362,7 @@ export default defineComponent({
[<i-button icon='ios-cloud-upload-outline'>上传文件</i-button>],
)}
</i-col>
</row>
</i-row>
<i-modal
class-name={this.ns.b('upload-preview-modal')}
......
import { PickerEditorController } from '@ibiz-template/controller';
import { ref, Ref, watch, computed, defineComponent, PropType } from 'vue';
import { useNamespace } from '@ibiz-template/vue-util';
import { debounce } from 'lodash-es';
import { isEmpty } from 'ramda';
import '@/styles/components/editor/ibiz-picker-dropdown/ibiz-picker-dropdown.scss';
import { debounce, isEmpty } from 'lodash-es';
export const IBizPickerDropdown = defineComponent({
name: 'IBizPickerDropdown',
......
import { PickerEditorController } from '@ibiz-template/controller';
import { ref, watch, Ref, defineComponent, PropType } from 'vue';
import { useNamespace } from '@ibiz-template/vue-util';
import { isEmpty } from 'ramda';
import '@/styles/components/editor/ibiz-picker/ibiz-picker.scss';
import { isEmpty } from 'lodash-es';
export const IBizPicker = defineComponent({
name: 'IBizPicker',
......
......@@ -29,7 +29,7 @@ export const MDViewBase = defineComponent({
return [
<view-toolbar
modelData={c.model.toolbar}
selections={c.selectedData}
toolbarState={c.toolbarState}
on-neuronInit={c.nerve.onNeuronInit(
c.model.toolbar.source.name,
)}
......
......@@ -12,6 +12,7 @@ export const ViewBase = defineComponent({
},
setup() {
const ns = useNamespace('view');
return { ns };
},
render() {
......@@ -61,6 +62,7 @@ export const ViewBase = defineComponent({
on-neuronInit={c.nerve.onNeuronInit(
c.model.toolbar.source.name,
)}
toolbarState={c.toolbarState}
viewMode={c.modal.mode}
></view-toolbar>,
];
......
import { IModal } from '@ibiz-template/runtime';
import { useAppPortalViewController } from '@ibiz-template/vue-util';
import { defineComponent, getCurrentInstance, PropType } from 'vue';
export const AppPortalView = defineComponent({
name: 'AppPortalView',
props: {
context: Object as PropType<IContext>,
params: { type: Object as PropType<IParams> },
modelPath: { type: String, required: true },
modal: { type: Object as PropType<IModal> },
},
setup(props) {
const { proxy } = getCurrentInstance()!;
const c = useAppPortalViewController(proxy, props.modelPath);
return { c };
},
render() {
return (
<view-base controller={this.c}>
{this.c.complete && (
<dashboard-control
modelData={this.c.model.dashboard}
context={this.c.context}
params={this.c.params}
on-neuronInit={this.c.nerve.onNeuronInit(
this.c.model.dashboard.source.name,
)}
></dashboard-control>
)}
</view-base>
);
},
});
......@@ -9,3 +9,4 @@ export * from './wf-dyna-action-view/wf-dyna-action-view';
export * from './wf-dyna-edit-view3/wf-dyna-edit-view3';
export * from './wf-dyna-start-view/wf-dyna-start-view';
export * from './wf-step-trace-view/wf-step-trace-view';
export * from './app-portal-view/app-portal-view';
......@@ -22,6 +22,8 @@ export const WFStepTraceView = defineComponent({
return { c };
},
render() {
return <view-base controller={this.c}>审批日志</view-base>;
return (
<extend-action-time-line data={this.c.data}></extend-action-time-line>
);
},
});
import { IBizContext } from '@ibiz-template/core';
import {
DashboardModel,
PortletContainerModel,
PortletPartModel,
} from '@ibiz-template/model';
import { useDashboardController, useNamespace } from '@ibiz-template/vue-util';
import { defineComponent, getCurrentInstance, PropType } from 'vue';
/**
* 根据类型绘制数据看板成员
*
* @author lxm
* @date 2022-10-14 17:10:42
* @param {PortletPartModel} model 模型
* @param {IData} opts 额外参数
*/
function renderPortletByType(model: PortletPartModel, opts?: IData) {
// 绘制容器
if (model.source.portletType === 'CONTAINER') {
const container = model as PortletContainerModel;
return (
<portlet-container modelData={container}>
{container.children.map(child => renderPortletByType(child, opts))}
</portlet-container>
);
}
return <portlet-part modelData={model}></portlet-part>;
}
export const DashboardControl = defineComponent({
name: 'DashboardControl',
props: {
modelData: {
type: DashboardModel,
required: true,
},
context: {
type: IBizContext,
required: true,
},
params: { type: Object as PropType<IParams>, default: () => ({}) },
},
setup(props) {
const { proxy } = getCurrentInstance()!;
const c = useDashboardController(
proxy,
props.modelData,
props.context,
props.params,
);
const ns = useNamespace('dashboard');
console.log(c.model);
return { c, ns };
},
render() {
return (
<control-layout modelData={this.c.model}>
{this.c.complete && (
<app-row
class={[this.ns.b()]}
layout={this.modelData.source.getPSLayout()}
>
{this.modelData.children.map(child => {
return (
<app-col
layoutPos={child.source.getPSLayoutPos()}
modelData={child}
>
{renderPortletByType(child)}
</app-col>
);
})}
</app-row>
)}
</control-layout>
);
},
});
export * from './portlet-part/portlet-part';
export * from './portlet-container/portlet-container';
export * from './dashboard-control';
import { PortletContainerModel } from '@ibiz-template/model';
import { useNamespace } from '@ibiz-template/vue-util';
import { defineComponent, VNode } from 'vue';
export const PortletContainer = defineComponent({
name: 'PortletContainer',
props: {
modelData: {
type: PortletContainerModel,
required: true,
},
},
setup() {
const ns = useNamespace('portlet-container');
return { ns };
},
render() {
const defaultSlots: VNode[] = this.$slots.default || [];
const content = (
<app-row layout={this.modelData.source.getPSLayout()}>
{defaultSlots.map(slot => {
const opts = slot.componentOptions!;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const props = (opts.propsData || {}) as Record<string, any>;
return (
<app-col
layoutPos={props.modelData.source.getPSLayoutPos()}
modelData={props.modelData}
>
{slot}
</app-col>
);
})}
</app-row>
);
const classArr: string[] = [
this.ns.b(),
this.ns.m(this.modelData.modelClass),
];
let header: unknown = null;
if (this.modelData.showTitleBar) {
header = (
<div class={[this.ns.b('header')]}>
<div class={[this.ns.e('caption')]}>
{this.modelData.source.title}
</div>
</div>
);
}
return (
<div class={classArr}>
{header}
<div class={[this.ns.b('content')]}>{content}</div>
</div>
);
},
});
import { PortletPartModel } from '@ibiz-template/model';
import { useNamespace } from '@ibiz-template/vue-util';
import { defineComponent } from 'vue';
export const PortletPart = defineComponent({
name: 'PortletPart',
props: {
modelData: {
type: PortletPartModel,
required: true,
},
},
setup() {
const ns = useNamespace('portlet-part');
return { ns };
},
render() {
const classArr: string[] = [
this.ns.b(),
this.ns.m(this.modelData.modelClass),
];
const header: unknown = null;
return (
<div class={classArr}>
{header}
<div class={[this.ns.b('content')]}>{this.modelData.modelClass}</div>
</div>
);
},
});
......@@ -3,10 +3,8 @@ import { IBizContext } from '@ibiz-template/core';
import {
FormDetailModel,
FormGroupPanelModel,
FormTabPanelModel,
FormTabPageModel,
FormModel,
FormItemModel,
FormModel,
} from '@ibiz-template/model';
import { useForceTogether, useNamespace } from '@ibiz-template/vue-util';
import {
......@@ -15,6 +13,8 @@ import {
toRef,
computed,
PropType,
CreateElement,
VNode,
} from 'vue';
import '@/styles/components/widgets/form/form.scss';
......@@ -28,80 +28,35 @@ import '@/styles/components/widgets/form/form.scss';
* @returns {*}
*/
function renderByDetailType(
h: CreateElement,
detail: FormDetailModel,
controller: FormController,
) {
): VNode | undefined {
if ((detail as FormItemModel).source.hidden) {
return;
}
const commonProps = {
modelData: detail,
controller: computed(() => controller.details[detail.source.name]),
};
switch (detail.source.detailType) {
// 分页部件
case 'TABPANEL':
return (
<form-tab-panel key={detail.id} props={{ ...commonProps }}>
{(detail as FormTabPanelModel).children.map(page => {
return (
<form-tab-page
key={page.id}
props={{
modelData: page,
controller: controller.details[page.source.name],
caption: page.source.caption,
}}
>
{(page as FormTabPageModel).children.map(item =>
renderByDetailType(item, controller),
)}
</form-tab-page>
);
})}
</form-tab-panel>
);
// 分组面板
case 'GROUPPANEL':
return (
<form-group-panel key={detail.id} props={{ ...commonProps }}>
{(detail as FormGroupPanelModel).children.map(item =>
renderByDetailType(item, controller),
)}
</form-group-panel>
);
// 表单项
case 'FORMITEM':
if ((detail as FormItemModel).source.hidden) {
return null;
}
return (
<app-form-item
key={detail.id}
props={{ ...commonProps }}
></app-form-item>
);
// 表单按钮
case 'BUTTON':
return (
<form-button key={detail.id} props={{ ...commonProps }}></form-button>
);
// 关系界面
case 'DRUIPART':
return (
<form-druipart
key={detail.id}
props={{ ...commonProps }}
></form-druipart>
);
// 直接内容
case 'RAWITEM':
return (
<form-raw-item
key={detail.id}
props={{ ...commonProps }}
></form-raw-item>
);
default:
return <div>暂未支持的表单项类型: {detail.source.detailType}</div>;
const provider = controller.providers[detail.source.name];
if (!provider) {
<div>
暂未支持的表单项类型: {detail.source.detailType}或找不到对应适配器
</div>;
}
return h(
provider.compName,
{
props: {
...commonProps,
},
key: detail.id,
},
(detail as FormGroupPanelModel).children?.map(child => {
return renderByDetailType(h, child, controller);
}),
);
}
export const FormControl = defineComponent({
......@@ -127,7 +82,7 @@ export const FormControl = defineComponent({
return { ns, c };
},
render(_h) {
render(h) {
return (
<control-layout modelData={this.c.model}>
{this.c.complete && (
......@@ -142,7 +97,7 @@ export const FormControl = defineComponent({
controller={this.c.details[page.source.name]}
>
{page.children.map(detail =>
renderByDetailType(detail, this.c),
renderByDetailType(h, detail, this.c),
)}
</form-page-item>
);
......
......@@ -13,10 +13,6 @@ export default defineComponent({
type: FormTabPageController,
required: true,
},
caption: {
type: String,
required: true,
},
},
setup() {
const ns = useNamespace('form-tab-page');
......
......@@ -43,7 +43,7 @@ export const GridEditItem = defineComponent({
value: this.row.data[codeName],
data: this.row.data,
controller: this.controller.editor,
disable: this.row.editItemState[codeName]!.disabled,
disable: this.row.columnState[codeName]!.disabled,
},
on: {
change: (val: unknown, name?: string) => {
......
......@@ -30,6 +30,7 @@ export const GridUAColumn = defineComponent({
) => {
await props.uaColumn.onActionClick(detail, props.row, event);
};
return { ns, onStopPropagation, onActionClick };
},
render() {
......
......@@ -5,3 +5,4 @@ export * from './grid-control';
export * from './pickup-view-panel/pickup-view-panel';
export * from './view-panel/view-panel';
export * from './app-menu/app-menu';
export * from './dashboard-control';
......@@ -31,14 +31,6 @@ async function loadAppData(): Promise<void> {
const res = await ibiz.net.get('/appdata');
if (res.ok) {
ibiz.appData = res.data;
// 设置权限服务需要的appData里的数据
if (ibiz.appData.unires) {
ibiz.authority.setResCodes(ibiz.appData.unires);
}
if (ibiz.appData.appmenu) {
ibiz.authority.setRtMenuCodes(ibiz.appData.appmenu);
}
}
}
......@@ -72,9 +64,11 @@ async function appInit(): Promise<void> {
await loadOrgData();
await loadAppData();
await loadModel();
// 设置权限服务需要的appData里的数据
await ibiz.authority.init();
} catch (error) {
const { response, message } = error as IData;
if (response.status === 401) {
if (response?.status === 401) {
await UnauthorizedHandler.handle();
}
console.log(`应用参数初始化失败:${message}`);
......
import '@/styles/index.scss';
import 'systemjs';
import Vue from 'vue';
import Router from 'vue-router';
import { PiniaVuePlugin } from 'pinia';
......
import { CheckBoxListModel } from '@ibiz-template/model';
import { IEditorProvider } from '@ibiz-template/runtime';
import { FormItemController } from '@ibiz-template/controller/src/control/form';
import { GridEditItemController } from '@ibiz-template/controller/src/control/grid';
import { CheckBoxListEditorController } from '@ibiz-template/controller/src/editor';
import { IEditorProvider } from '@ibiz-template/controller';
/**
* 多选框列表编辑器适配器
*
......
import { PickerEditorModel } from '@ibiz-template/model';
import { IEditorProvider } from '@ibiz-template/runtime';
import { IEditorProvider } from '@ibiz-template/controller';
import { FormItemController } from '@ibiz-template/controller/src/control/form';
import { GridEditItemController } from '@ibiz-template/controller/src/control/grid';
import { PickerEditorController } from '@ibiz-template/controller/src/editor';
......
import { DatePickerEditorModel } from '@ibiz-template/model';
import { IEditorProvider } from '@ibiz-template/runtime';
import { IEditorProvider } from '@ibiz-template/controller';
import { FormItemController } from '@ibiz-template/controller/src/control/form';
import { GridEditItemController } from '@ibiz-template/controller/src/control/grid';
import { DatePickerEditorController } from '@ibiz-template/controller/src/editor';
......
import { DropDownListModel } from '@ibiz-template/model';
import { IEditorProvider } from '@ibiz-template/runtime';
import { IEditorProvider } from '@ibiz-template/controller';
import { FormItemController } from '@ibiz-template/controller/src/control/form';
import { GridEditItemController } from '@ibiz-template/controller/src/control/grid';
import { DropDownListEditorController } from '@ibiz-template/controller/src/editor';
......
import { FileUploaderEditorModel } from '@ibiz-template/model';
import { IEditorProvider } from '@ibiz-template/runtime';
import { IEditorProvider } from '@ibiz-template/controller';
import { FormItemController } from '@ibiz-template/controller/src/control/form';
import { GridEditItemController } from '@ibiz-template/controller/src/control/grid';
import { UploadEditorController } from '@ibiz-template/controller/src/editor';
......
......@@ -15,7 +15,7 @@ import { DataPickerEditorProvider } from './data-picker-provider';
* @export
*/
export function presetEditorProvider(): void {
const { editorRegister } = ibiz.register;
const { editor: editorRegister } = ibiz.register;
if (!editorRegister) {
return;
}
......
import { RadioButtonListModel } from '@ibiz-template/model';
import { IEditorProvider } from '@ibiz-template/runtime';
import { IEditorProvider } from '@ibiz-template/controller';
import { FormItemController } from '@ibiz-template/controller/src/control/form';
import { GridEditItemController } from '@ibiz-template/controller/src/control/grid';
import { RadioButtonListEditorController } from '@ibiz-template/controller/src/editor';
......
import { SpanEditorModel } from '@ibiz-template/model';
import { IEditorProvider } from '@ibiz-template/runtime';
import { IEditorProvider } from '@ibiz-template/controller';
import { FormItemController } from '@ibiz-template/controller/src/control/form';
import { GridEditItemController } from '@ibiz-template/controller/src/control/grid';
import { SpanEditorController } from '@ibiz-template/controller/src/editor';
......
import { TextBoxEditorModel } from '@ibiz-template/model';
import { IEditorProvider } from '@ibiz-template/runtime';
import {
IEditorProvider,
FormItemController,
GridEditItemController,
TextBoxEditorController,
......
import { FormButtonModel } from '@ibiz-template/model';
import {
FormContainerController,
FormController,
FormButtonController,
IFormDetailProvider,
} from '@ibiz-template/controller';
/**
* 表单按钮适配器
*
* @author lxm
* @date 2022-09-19 22:09:03
* @export
* @class FormButtonProvider
* @implements {EditorProvider}
*/
export class FormButtonProvider
implements IFormDetailProvider<FormButtonController>
{
compName: string = 'FormButton';
async createController(
detailModel: FormButtonModel,
form: FormController,
parent: FormContainerController | undefined,
): Promise<FormButtonController> {
const c = new FormButtonController(detailModel, form, parent);
await c.init();
return c;
}
}
import { FormDRUIPartModel } from '@ibiz-template/model';
import {
FormContainerController,
FormController,
FormDRUIPartController,
IFormDetailProvider,
} from '@ibiz-template/controller';
/**
* 表单按钮适配器
*
* @author lxm
* @date 2022-09-19 22:09:03
* @export
* @class FormDRUIPartProvider
* @implements {EditorProvider}
*/
export class FormDRUIPartProvider
implements IFormDetailProvider<FormDRUIPartController>
{
compName: string = 'FormDruipart';
async createController(
detailModel: FormDRUIPartModel,
form: FormController,
parent: FormContainerController | undefined,
): Promise<FormDRUIPartController> {
const c = new FormDRUIPartController(detailModel, form, parent);
await c.init();
return c;
}
}
import { FormGroupPanelModel } from '@ibiz-template/model';
import {
FormContainerController,
FormController,
FormGroupPanelController,
IFormDetailProvider,
} from '@ibiz-template/controller';
/**
* 表单分组面板适配器
*
* @author lxm
* @date 2022-09-19 22:09:03
* @export
* @class FormGroupPanelProvider
* @implements {EditorProvider}
*/
export class FormGroupPanelProvider
implements IFormDetailProvider<FormGroupPanelController>
{
compName: string = 'FormGroupPanel';
async createController(
detailModel: FormGroupPanelModel,
form: FormController,
parent: FormContainerController | undefined,
): Promise<FormGroupPanelController> {
const c = new FormGroupPanelController(detailModel, form, parent);
await c.init();
return c;
}
}
import { FormItemModel } from '@ibiz-template/model';
import {
FormContainerController,
FormController,
FormItemController,
IFormDetailProvider,
} from '@ibiz-template/controller';
/**
* 表单项适配器
*
* @author lxm
* @date 2022-09-19 22:09:03
* @export
* @class FormItemProvider
* @implements {EditorProvider}
*/
export class FormItemProvider
implements IFormDetailProvider<FormItemController>
{
compName: string = 'FormItem';
async createController(
detailModel: FormItemModel,
form: FormController,
parent: FormContainerController | undefined,
): Promise<FormItemController> {
const c = new FormItemController(detailModel, form, parent);
await c.init();
return c;
}
}
import { FormPageModel } from '@ibiz-template/model';
import {
FormContainerController,
FormController,
FormPageController,
IFormDetailProvider,
} from '@ibiz-template/controller';
/**
* 表单分页部件适配器
*
* @author lxm
* @date 2022-09-19 22:09:03
* @export
* @class FormPageProvider
* @implements {EditorProvider}
*/
export class FormPageProvider
implements IFormDetailProvider<FormPageController>
{
compName: string = 'FormPage';
async createController(
detailModel: FormPageModel,
form: FormController,
_parent: FormContainerController | undefined,
): Promise<FormPageController> {
const c = new FormPageController(detailModel, form);
await c.init();
return c;
}
}
import { FormRawItemModel } from '@ibiz-template/model';
import {
FormContainerController,
FormController,
FormRawItemController,
IFormDetailProvider,
} from '@ibiz-template/controller';
/**
* 表单项适配器
*
* @author lxm
* @date 2022-09-19 22:09:03
* @export
* @class FormRawItemProvider
* @implements {EditorProvider}
*/
export class FormRawItemProvider
implements IFormDetailProvider<FormRawItemController>
{
compName: string = 'FormRawItem';
async createController(
detailModel: FormRawItemModel,
form: FormController,
parent: FormContainerController | undefined,
): Promise<FormRawItemController> {
const c = new FormRawItemController(detailModel, form, parent);
await c.init();
return c;
}
}
import { FormTabPageModel } from '@ibiz-template/model';
import {
FormContainerController,
FormController,
FormTabPageController,
IFormDetailProvider,
} from '@ibiz-template/controller';
/**
* 表单分页面板适配器
*
* @author lxm
* @date 2022-09-19 22:09:03
* @export
* @class FormTabPageProvider
* @implements {EditorProvider}
*/
export class FormTabPageProvider
implements IFormDetailProvider<FormTabPageController>
{
compName: string = 'FormTabPage';
async createController(
detailModel: FormTabPageModel,
form: FormController,
_parent: FormContainerController | undefined,
): Promise<FormTabPageController> {
const c = new FormTabPageController(detailModel, form);
await c.init();
return c;
}
}
import { FormTabPanelModel } from '@ibiz-template/model';
import {
FormContainerController,
FormController,
FormTabPanelController,
IFormDetailProvider,
} from '@ibiz-template/controller';
/**
* 表单分页部件适配器
*
* @author lxm
* @date 2022-09-19 22:09:03
* @export
* @class FormTabPanelProvider
* @implements {EditorProvider}
*/
export class FormTabPanelProvider
implements IFormDetailProvider<FormTabPanelController>
{
compName: string = 'FormTabPanel';
async createController(
detailModel: FormTabPanelModel,
form: FormController,
_parent: FormContainerController | undefined,
): Promise<FormTabPanelController> {
const c = new FormTabPanelController(detailModel, form);
await c.init();
return c;
}
}
import { FormButtonProvider } from './form-button-provider';
import { FormDRUIPartProvider } from './form-druipart-provider';
import { FormGroupPanelProvider } from './form-group-panel-provider';
import { FormItemProvider } from './form-item-provider';
import { FormPageProvider } from './form-page-provider';
import { FormRawItemProvider } from './form-raw-item-provider';
import { FormTabPageProvider } from './form-tab-page-provider';
import { FormTabPanelProvider } from './form-tab-panel-provider';
/**
* 预置默认的表单成员适配器
*
* @author lxm
* @date 2022-09-19 22:09:50
* @export
*/
export function presetFormDetailProvider(): void {
const { formDetail } = ibiz.register;
if (!formDetail) {
return;
}
// 表单项
formDetail.register('FORMITEM', new FormItemProvider());
// 表单分组
formDetail.register('GROUPPANEL', new FormGroupPanelProvider());
// 表单分页
formDetail.register('FORMPAGE', new FormPageProvider());
// 表单按钮
formDetail.register('BUTTON', new FormButtonProvider());
// 表单关系界面
formDetail.register('DRUIPART', new FormDRUIPartProvider());
// 表单直接内容
formDetail.register('RAWITEM', new FormRawItemProvider());
// 表单分页部件
formDetail.register('TABPANEL', new FormTabPanelProvider());
// 表单分页面板
formDetail.register('TABPAGE', new FormTabPageProvider());
}
export * from './editor/index';
import { presetEditorProvider } from './editor';
import { presetFormDetailProvider } from './form-detail';
export * from './editor';
export * from './form-detail';
/**
* 注册所有预置的适配器
*
* @author lxm
* @date 2022-10-17 18:10:30
* @export
*/
export function presetAllProviders(): void {
presetEditorProvider();
presetFormDetailProvider();
}
@mixin tooltip-style {
.ivu-tooltip {
width: 100%;
height: 100%;
.ivu-tooltip-rel {
display: block;
height: 100%;
text-align: center;
@include utils-ellipsis;
}
}
}
@mixin action-grid-style {
@include e(index) {
width: 5%;
text-align: center;
@include utils-ellipsis;
}
@include e(user-task-name) {
width: 10%;
@include flex(row, center, center);
@include tooltip-style;
}
@include e(author-name) {
width: 15%;
@include flex(row, center, center);
@include tooltip-style;
}
@include e(author-org-name) {
width: 10%;
@include flex(row, center, center);
@include tooltip-style;
}
@include e(author-dept-name) {
width: 10%;
@include flex(row, center, center);
@include tooltip-style;
}
@include e(type) {
width: 10%;
text-align: center;
@include utils-ellipsis;
}
@include e(last-time) {
width: 15%;
text-align: center;
@include utils-ellipsis;
}
@include e(full-message) {
width: 15%;
text-align: center;
@include utils-ellipsis;
}
@include e(arrow) {
width: 10%;
white-space: nowrap;
cursor: pointer;
@include flex(row, center, center);
}
}
@include b(extend-action-grid) {
@include b(extend-action-grid-header) {
@include flex(row, flex-start, center);
@include action-grid-style;
height: 50px;
background-color: #fafafa;
border-bottom: 1px solid #e8eaec;
}
@include b(extend-action-grid-task) {
@include flex(row, flex-start, center);
@include action-grid-style;
@include e(index) {
> span {
@include flex(row, center, center);
width: 25px;
height: 25px;
margin: 0 auto;
line-height: 25px;
color: #fff;
background-color: getCssVar('color', 'primary');
border-radius: 50%;
}
}
height: 50px;
}
@include b(extend-action-grid-comment) {
@include flex(row, flex-start, center);
@include action-grid-style;
height: 50px;
}
@include b(extend-action-grid-identity-link) {
@include flex(row, flex-start, center);
@include action-grid-style;
height: 50px;
}
}
@include b(extend-action-timeline) {
margin-top: 30px;
@include b(extend-action-timeline-task) {
position: relative;
width: calc(100% - 52px);
margin-left: 52px;
@include e(top) {
@include flex;
padding-left: 35px;
margin-bottom: 16px;
}
@include e(bottom) {
min-height: 100px;
padding-bottom: 20px;
padding-left: 35px;
}
@include e(last-time) {
flex: 1;
padding-right: 16px;
text-align: right;
@include e(last-time-text) {
display: inline-block;
margin-left: 10px;
font-size: 14px;
color: #999;
}
}
@include e(user-task-name) {
width: 190px;
margin-right: 35px;
font-size: 18px;
font-weight: bold;
color: #2d8cf0;
}
@include e(head) {
position: absolute;
top: 3px;
left: -9px;
width: 22px;
height: 22px;
border: 2px solid #2d8cf0;
border-radius: 50%;
}
@include e(tail) {
position: absolute;
top: 22px;
width: 4px;
height: calc(100% - 16px);
background: #e8eaec;
}
@include e(author-name) {
width: 140px;
font-size: 18px;
color: #666;
}
@include e(type) {
width: 200px;
font-size: 18px;
color: #2d8cf0;
}
@include e(full-message) {
font-size: 18px;
color: #666;
}
@include when(wrong) {
@include e(head) {
border: 2px solid #ff686a;
}
@include e(user-task-name) {
color: #ff686a;
}
@include e(type) {
color: #ff686a;
}
}
@include when(link) {
@include e(author-name) {
flex-grow: 1;
}
}
}
.#{bem('extend-action-timeline-task')} {
&:nth-child(1) {
.#{bem('extend-action-timeline-task','head')} {
background-color: #fff;
border: 2px solid #92a1b3;
}
.#{bem('extend-action-timeline-task','user-task-name')} {
color: #70849d;
}
}
&:nth-last-child(1) {
.#{bem('extend-action-timeline-task','tail')} {
background-color: transparent;
}
}
}
}
......@@ -37,6 +37,8 @@ export function getViewComponentName(viewType: string) {
return 'WFDynaActionView';
case ViewType.APP_WF_STEP_TRACE_VIEW:
return 'WFStepTraceView';
case ViewType.APP_PORTAL_VIEW:
return 'AppPortalView';
default:
return '';
}
......
......@@ -6,6 +6,7 @@
"allowSyntheticDefaultImports": true
},
"include": [
"./vite-plugins/*",
"vite.config.ts"
]
}
\ No newline at end of file
}
/* eslint-disable import/no-extraneous-dependencies */
import { copyFileSync, readFileSync, writeFileSync } from 'node:fs';
import { Plugin } from 'vite';
import { join } from 'path';
function IBizVitePlugin(): Plugin[] {
const p: Plugin = {
name: 'iBizSys:System',
closeBundle() {
// 其他第三方依赖包
const map = {
'node_modules/qx-util/dist/umd/qx-util.umd.js':
'dist/extras/js/qx-util.min.js',
};
// 模板底包
const templatePackages = [
'command',
'core',
'model',
'runtime',
'service',
'controller',
'vue-util',
];
const cwd = process.cwd();
{
// 拷贝第三方依赖包
const keys = Object.keys(map);
keys.forEach(key => {
const val = map[key];
copyFileSync(join(cwd, key), join(cwd, val));
});
}
// eslint-disable-next-line no-lone-blocks
{
// 拷贝模板底包并修改文件名称
templatePackages.forEach(pkg => {
const cpFile = join(
cwd,
`node_modules/@ibiz-template/${pkg}/dist/system/index.system.js`,
);
const outFile = join(
cwd,
`dist/extras/js/ibiz-template-${pkg}.system.min.js`,
);
copyFileSync(cpFile, outFile);
});
}
// 重新改写 index.html 部分代码
const htmlFilePath = join(cwd, 'dist/index.html');
let html = readFileSync(htmlFilePath, 'utf-8');
html = html
.replace(
'<script type="module">try{import.meta.url;import("_").catch(()=>1);}catch(e){}window.__vite_is_modern_browser=true;</script>',
'',
)
.replace(
`<script type="module">!function(){if(window.__vite_is_modern_browser)return;console.warn("vite: loading legacy build because dynamic import or import.meta.url is unsupported, syntax error above should be ignored");var e=document.getElementById("vite-legacy-polyfill"),n=document.createElement("script");n.src=e.src,n.onload=function(){System.import(document.getElementById('vite-legacy-entry').getAttribute('data-src'))},document.body.appendChild(n)}();</script>`,
'',
);
// 标准 vite 编译后脚本
const rootJsReg =
/<script type="module" crossorigin src=".\/assets\/index.(.*).js"><\/script>/;
html = html.replace(rootJsReg, '');
html = html.replace('<script nomodule', '<script');
html = html.replace('<script nomodule', '<script');
html = html.replace('<script nomodule', '<script');
html = html.replace('<script nomodule', '<script');
html = html.replace(
'<script src="./assets/ionicons/ionicons/ionicons.js"></script>',
'<script nomodule src="./assets/ionicons/ionicons/ionicons.js"></script>',
);
writeFileSync(htmlFilePath, html, 'utf-8');
},
};
return [p];
}
export default IBizVitePlugin;
......@@ -5,6 +5,7 @@ import vueJsx from '@vitejs/plugin-vue2-jsx';
import eslint from 'vite-plugin-eslint';
import legacy from '@vitejs/plugin-legacy'; // ie11 开启此配置
// import { visualizer } from 'rollup-plugin-visualizer'; // 打包内容分析
import IBizVitePlugin from './vite-plugins/ibiz-vite-plugin';
// https://vitejs.dev/config/
export default defineConfig({
......@@ -14,6 +15,31 @@ export default defineConfig({
'@': path.resolve(__dirname, 'src'),
},
},
build: {
rollupOptions: {
external: [
'vue',
'vue-router',
'view-design',
'async-validator',
'dayjs',
'axios',
'pluralize',
'qs',
'ramda',
'lodash-es',
'qx-util',
'@ibiz/dynamic-model-api',
'@ibiz-template/command',
'@ibiz-template/core',
'@ibiz-template/model',
'@ibiz-template/service',
'@ibiz-template/runtime',
'@ibiz-template/controller',
'@ibiz-template/vue-util',
],
},
},
server: {
proxy: {
'/pms__sclpmswebapp': {
......@@ -46,5 +72,6 @@ export default defineConfig({
vueJsx(),
// visualizer(),
legacy({ targets: ['ie >= 11'], externalSystemJS: true }),
IBizVitePlugin(),
],
});
......@@ -485,57 +485,57 @@
resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45"
integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==
"@ibiz-template/command@0.0.1-alpha.13", "@ibiz-template/command@^0.0.1-alpha.13":
version "0.0.1-alpha.13"
resolved "https://registry.yarnpkg.com/@ibiz-template/command/-/command-0.0.1-alpha.13.tgz#e8f07fede7fbfd3aa22eeec80ad66acf6c914d1e"
integrity sha512-IUD6x29nmmxdL8XbGGfBAEYlPO/+E8qHd/TI2ncgaaBFcF6M4ih7xga8l1oYuSdr+xx4mlXkAbzQFOqAQWm21g==
"@ibiz-template/command@0.0.1-alpha.23", "@ibiz-template/command@^0.0.1-alpha.23":
version "0.0.1-alpha.23"
resolved "https://registry.yarnpkg.com/@ibiz-template/command/-/command-0.0.1-alpha.23.tgz#87a136b06d5b600fd95ab266ff5f3d38befbd0b7"
integrity sha512-l8xv/W8b8Z0obOpxXltuTFTknRhMdakcz6uCQQq426t17VtIRkLcHf349OV28LARGWzbRzqhpUuUM6zf7fDJcA==
"@ibiz-template/controller@0.0.1-alpha.20":
version "0.0.1-alpha.20"
resolved "https://registry.yarnpkg.com/@ibiz-template/controller/-/controller-0.0.1-alpha.20.tgz#a5444f5aba7d398b53fcbec99f5416be16304e89"
integrity sha512-g+uJqdVYHEvUC+EBIlcP5XfZnbJsOo0enTLj1DmlYk6rvW5LJwqeqHvsCUjLUecQXdOsmc51eLjEYc2VEdkHjA==
"@ibiz-template/controller@0.0.1-alpha.23":
version "0.0.1-alpha.23"
resolved "https://registry.yarnpkg.com/@ibiz-template/controller/-/controller-0.0.1-alpha.23.tgz#e0335f658096ceacc23b0678478d0aa10d507ca7"
integrity sha512-bJNPfFg6udTg2lxH4B3PNFq3ZkUc1cfGqCJwWxwUlHKWNrvjxPebXWO6T/hX2Icr7SjLH1DOLxpD6DHPxiNuXw==
dependencies:
async-validator "^4.2.5"
dayjs "^1.11.5"
"@ibiz-template/core@0.0.1-alpha.17":
version "0.0.1-alpha.17"
resolved "https://registry.yarnpkg.com/@ibiz-template/core/-/core-0.0.1-alpha.17.tgz#928124edeb82cf056eb58d1c585fe77d5d15a795"
integrity sha512-jicy/kMM+A92+kbai7JEPt5+O4hyiCkRVahTe5dx3/bxOLQntvd0rwDUUPidQ1N1GYkcZzTC/6V7hG/x5imCSw==
"@ibiz-template/core@0.0.1-alpha.23":
version "0.0.1-alpha.23"
resolved "https://registry.yarnpkg.com/@ibiz-template/core/-/core-0.0.1-alpha.23.tgz#0c57b166acd72e06245025b04d37b0b49d51c9b6"
integrity sha512-ivDcrh5mLB7L30ssXJM3OlrX8eUPR89QtdwxYzK34NMjtO43PoQVaAerPcgKpzZKOpAzNvAmKYsug7OI2mH9yw==
dependencies:
axios "^0.27.2"
pluralize "^8.0.0"
qs "^6.11.0"
"@ibiz-template/model@0.0.1-alpha.17":
version "0.0.1-alpha.17"
resolved "https://registry.yarnpkg.com/@ibiz-template/model/-/model-0.0.1-alpha.17.tgz#9d5516eff2c0598b91bd9ada974ae9510ddb5304"
integrity sha512-CSwdXtHs/HyPKOL2hWMhMakl+zvj3kjHnuCvWk445iEl9UpaSzohpQFWJhxhlZrWJf5hHWP8wqaqTRBGEcVXjQ==
"@ibiz-template/model@0.0.1-alpha.23":
version "0.0.1-alpha.23"
resolved "https://registry.yarnpkg.com/@ibiz-template/model/-/model-0.0.1-alpha.23.tgz#22b5b86ad7637d7726ccbbbe66c4639f12d61e7d"
integrity sha512-9+iwXZxPdXIL12Ze/4oDqnUdjNn8jfUY/ZblCTeNOFaI5O19kzTnnKoglk+c8pCuwLyrtyiLyXujAAB3/xc1Aw==
dependencies:
"@ibiz/dynamic-model-api" "^2.0.5"
"@ibiz/dynamic-model-api" "^2.0.6"
pluralize "^8.0.0"
"@ibiz-template/runtime@0.0.1-alpha.20":
version "0.0.1-alpha.20"
resolved "https://registry.yarnpkg.com/@ibiz-template/runtime/-/runtime-0.0.1-alpha.20.tgz#8e683e577c9f35cbd4a2d809685243df4a419ddc"
integrity sha512-6dArBNwt4SW1zgfgyHWnvYxW7EWxj/4fXO9hNl531rqywzpag5BmITjOTS5fl2XLvYvfxnhNBn0SkPHZD7mGUA==
"@ibiz-template/runtime@0.0.1-alpha.23":
version "0.0.1-alpha.23"
resolved "https://registry.yarnpkg.com/@ibiz-template/runtime/-/runtime-0.0.1-alpha.23.tgz#e00696a5111cfab247af130122f6dc4aaf239204"
integrity sha512-ILEKw7hw00UBIohDsUlaxpEWjHZrnT2TzaqvjA1UN5nfTjKwrMBFwYz2iJ0pc95dMa7eLqOJSL4B/rrzw7ckSw==
dependencies:
"@ibiz-template/command" "^0.0.1-alpha.13"
"@ibiz-template/command" "^0.0.1-alpha.23"
"@ibiz-template/service@0.0.1-alpha.19":
version "0.0.1-alpha.19"
resolved "https://registry.yarnpkg.com/@ibiz-template/service/-/service-0.0.1-alpha.19.tgz#36cb501f0d396ffe992ceedce8a2e95fdce7df1a"
integrity sha512-t280p8II+IWcTOYBpy+lqFmeZwKHIz99ANEHseHSgwWVsQutMlfLuLPsDpIGldvic8TDqzfckIrxAFCZaAIKcw==
"@ibiz-template/service@0.0.1-alpha.23":
version "0.0.1-alpha.23"
resolved "https://registry.yarnpkg.com/@ibiz-template/service/-/service-0.0.1-alpha.23.tgz#2ebe31143004adb0312925e2ce3da65a154f4fcf"
integrity sha512-JzvtQntiNHJXSvP428aFnRsIjR/Udpo9TbP/qSn+Z23AUAAbASNU8NfyYrsFRDv68pOrEEJJA+c0jTrOLGd/IQ==
"@ibiz-template/vue-util@0.0.1-alpha.20":
version "0.0.1-alpha.20"
resolved "https://registry.yarnpkg.com/@ibiz-template/vue-util/-/vue-util-0.0.1-alpha.20.tgz#4c58e25fd710df962b5117d8a95243e87aa12c5a"
integrity sha512-+xIx3vrYP+O8/5j296zW+vZb+03FrohU124QVBHHFZ3X0vD6Z7llqSRjrbjSyC4e7QHrpUr/lAHRT4TcyRnP2g==
"@ibiz-template/vue-util@0.0.1-alpha.23":
version "0.0.1-alpha.23"
resolved "https://registry.yarnpkg.com/@ibiz-template/vue-util/-/vue-util-0.0.1-alpha.23.tgz#093b596c564370f2a2b105d3d666def17c27a6c7"
integrity sha512-KPIQ+gihldox/DYKf/fCW1GHgqSVc6uZNYe/OQE2btzk7yT9EOIZmo4oDmk7u48DlFZ1jw7a3LsqULXyx7X6Gw==
"@ibiz/dynamic-model-api@^2.0.5":
version "2.0.5"
resolved "https://registry.yarnpkg.com/@ibiz/dynamic-model-api/-/dynamic-model-api-2.0.5.tgz#bbd39980d397791f7af0bc27ec1040d7dca52da5"
integrity sha512-rJM6MwDmVOK5IplJkRfQ5DlQx0ot26BrvzOrVpiribDSLyZznuYQTspncu9RuhJleZDuEcpSXXytg24WwqHPwg==
"@ibiz/dynamic-model-api@^2.0.6":
version "2.0.6"
resolved "https://registry.yarnpkg.com/@ibiz/dynamic-model-api/-/dynamic-model-api-2.0.6.tgz#7b72e39c04a3ee56503dedfdc4bf1ccfa0f5c06f"
integrity sha512-dWg7rmsmuJhq89C3o+WWXQUNWk23zbtJmPrgS08tRVsLn9P2g4eLtAluAlWWFBUDtuvtFz7sTL95tjyQY2T4SQ==
"@jridgewell/gen-mapping@^0.1.0":
version "0.1.1"
......@@ -622,11 +622,6 @@
estree-walker "^2.0.1"
picomatch "^2.2.2"
"@stencil/core@~2.16.0":
version "2.16.1"
resolved "https://registry.yarnpkg.com/@stencil/core/-/core-2.16.1.tgz#f6752026af72a10356d5b1f27e2db6b1ee0c730f"
integrity sha512-s/UJp9qxExL3DyQPT70kiuWeb3AdjbUZM+5lEIXn30I2DLcLYPOPXfsoWJODieQywq+3vPiLZeIdkoqjf6jcSw==
"@tsconfig/node10@^1.0.7":
version "1.0.9"
resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2"
......@@ -719,11 +714,6 @@
dependencies:
ts-toolbelt "^6.15.1"
"@types/systemjs@^6.1.1":
version "6.1.1"
resolved "https://registry.yarnpkg.com/@types/systemjs/-/systemjs-6.1.1.tgz#eae17f2a080e867d01a2dd614f524ab227cf5a41"
integrity sha512-d1M6eDKBGWx7RbYy295VEFoOF9YDJkPI959QYnmzcmeaV+SP4D0xV7dEh3sN5XF3GvO3PhGzm+17Z598nvHQuQ==
"@typescript-eslint/eslint-plugin@^5.39.0":
version "5.39.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.39.0.tgz#778b2d9e7f293502c7feeea6c74dca8eb3e67511"
......@@ -2500,13 +2490,6 @@ internal-slot@^1.0.3:
has "^1.0.3"
side-channel "^1.0.4"
ionicons@^6.0.3:
version "6.0.3"
resolved "https://registry.yarnpkg.com/ionicons/-/ionicons-6.0.3.tgz#d1610e764109b121ddf006febbda80fcd7db0454"
integrity sha512-kVOWER991EMqLiVShrCSWKMHkgHZP7XfVdyN6YPMuoO33W7pc5CPNVNfR8OMe/I8rYEbaunyBs6dXNYpR6gGZw==
dependencies:
"@stencil/core" "~2.16.0"
is-arrayish@^0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
......@@ -3368,11 +3351,6 @@ prettier@^2.7.1:
resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64"
integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==
proxy-polyfill@^0.3.2:
version "0.3.2"
resolved "https://registry.yarnpkg.com/proxy-polyfill/-/proxy-polyfill-0.3.2.tgz#55f190054a3044e105d9de16e23719e1e9be0898"
integrity sha512-ENKSXOMCewnQTOyqrQXxEjIhzT6dy572mtehiItbDoIUF5Sv5UkmRUc8kowg2MFvr232Uo8rwRpNg3V5kgTKbA==
punycode@^2.1.0:
version "2.1.1"
resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
......@@ -3400,10 +3378,10 @@ quick-lru@^4.0.1:
resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f"
integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==
qx-util@^0.4.1:
version "0.4.1"
resolved "https://registry.yarnpkg.com/qx-util/-/qx-util-0.4.1.tgz#a813be6db325367d9517f4195ad5db6af9dfc039"
integrity sha512-YV5sE73tAnAeA6iKJ60Z4nFsGSeLwO+yMTZnDJ60c4WNocXJgPNoAFO1d7dEI6xe+247XWdfbnQdRMW15o+iEQ==
qx-util@^0.4.3:
version "0.4.3"
resolved "https://registry.yarnpkg.com/qx-util/-/qx-util-0.4.3.tgz#599a63f378dd37740905011056ce009afe490cbc"
integrity sha512-fVxDIh8NnmjZy74lM104cOpcjZM4OMwHSYiPIiicMghgHQpo80+JFRNU7aa3ksyuqiDey2bbmOZfMCY/+oxrvw==
ramda@^0.28.0:
version "0.28.0"
......@@ -3980,11 +3958,6 @@ systemjs@^6.12.6:
resolved "https://registry.yarnpkg.com/systemjs/-/systemjs-6.12.6.tgz#147a2a9137b8f3fddaafac1d5060adf3d11212a6"
integrity sha512-SawLiWya8/uNR4p12OggSYZ35tP4U4QTpfV57DdZEOPr6+J6zlLSeeEpMmzYTEoBAsMhctdEE+SWJUDYX4EaKw==
systemjs@^6.13.0:
version "6.13.0"
resolved "https://registry.yarnpkg.com/systemjs/-/systemjs-6.13.0.tgz#7b28e74b44352e1650e8652499f42de724c3fc7f"
integrity sha512-P3cgh2bpaPvAO2NE3uRp/n6hmk4xPX4DQf+UzTlCAycssKdqhp6hjw+ENWe+aUS7TogKRFtptMosTSFeC6R55g==
table@^6.8.0:
version "6.8.0"
resolved "https://registry.yarnpkg.com/table/-/table-6.8.0.tgz#87e28f14fa4321c3377ba286f07b79b281a3b3ca"
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册