From 76ef266068b240c93ebb174733c068d15829f310 Mon Sep 17 00:00:00 2001 From: 田源 <lastanimals@163.com> Date: 星期四, 11 四月 2024 10:54:14 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- Source/ProjectWeb/src/actions/base/AddAction.js | 0 /dev/null | 52 ---------- Source/ProjectWeb/src/actions/base/BaseAction.js | 175 +++++++++++++++++++++++++++++++++++ Source/ProjectWeb/src/views/base/UIContentViewerInDialog.vue | 2 Source/ProjectWeb/src/router/avue-router.js | 16 +- Source/ProjectWeb/src/components/dynamic-components/dynamic-custom.vue | 39 ++++--- Source/ProjectWeb/src/page/index/top/index.vue | 4 Source/ProjectWeb/src/store/modules/user.js | 4 Source/ProjectWeb/src/views/base/UIContentViewer.vue | 2 Source/ProjectWeb/src/permission.js | 1 10 files changed, 213 insertions(+), 82 deletions(-) diff --git a/Source/ProjectWeb/src/actions/BaseAction.js b/Source/ProjectWeb/src/actions/BaseAction.js deleted file mode 100644 index a0005bc..0000000 --- a/Source/ProjectWeb/src/actions/BaseAction.js +++ /dev/null @@ -1,52 +0,0 @@ -import {validatenull} from "@/util/validate"; -import {findArray} from "@/util/util"; - -/** - * 鎸夐挳鐨勫熀纭�鏈嶅姟 - */ - -/** - * 鏇挎崲鏂囨湰涓殑${xxx} - * @param text 鏂囨湰 - * @param dataStore 閫夋嫨鐨勬暟鎹� - * @param sourceData 鏉ユ簮鏁版嵁 - * @returns 鏇挎崲鍚庣殑鍊�,瀛楃涓� - */ -export const replaceFreeMarker = (text,dataStore,sourceData) => { - //鏇挎崲琛ㄨ揪寮� - if (!sourceData) { - sourceData = {}; - } - if (!dataStore) { - dataStore = []; - } - let replaceData = dataStore.length > 0 ? dataStore[0] : {}; - if (text && text.indexOf("${") > -1 && text.indexOf("}")) { - //js鍙兘浣跨敤${xxx}杩欑鐨勬柟寮� - let reg = "root.${"; - while (text.indexOf(reg) > -1) { - let temp = text.substring(0, text.indexOf(reg)); - let field = text.substring(text.indexOf(reg) + reg.length, text.indexOf("}")); - let end = text.substring(text.indexOf("}") + 1); - field = replaceData[field] || sourceData[field] || ''; - text = temp + field + end; - } - reg = "sourceData.${"; - while (text.indexOf(reg) > -1) { - let temp = text.substring(0, text.indexOf(reg)); - let field = text.substring(text.indexOf(reg) + reg.length, text.indexOf("}")); - let end = text.substring(text.indexOf("}") + 1); - field = replaceData[field] || sourceData[field] || ''; - text = temp + field + end; - } - reg = "${"; - while (text.indexOf(reg) > -1) { - let temp = text.substring(0, text.indexOf(reg)); - let field = text.substring(text.indexOf(reg) + reg.length, text.indexOf("}")); - let end = text.substring(text.indexOf("}") + 1); - field = replaceData[field] || sourceData[field] || ''; - text = temp + field + end; - } - } - return text; -}; diff --git a/Source/ProjectWeb/src/actions/AddAction.js b/Source/ProjectWeb/src/actions/base/AddAction.js similarity index 100% rename from Source/ProjectWeb/src/actions/AddAction.js rename to Source/ProjectWeb/src/actions/base/AddAction.js diff --git a/Source/ProjectWeb/src/actions/base/BaseAction.js b/Source/ProjectWeb/src/actions/base/BaseAction.js new file mode 100644 index 0000000..528dbe4 --- /dev/null +++ b/Source/ProjectWeb/src/actions/base/BaseAction.js @@ -0,0 +1,175 @@ +import {validatenull} from "@/util/validate"; +import {findArray} from "@/util/util"; + +/** + * 鎸夐挳鐨勫熀纭�鏈嶅姟 + */ + +/** + * 鏇挎崲鏂囨湰涓殑${xxx} + * @param text 鏂囨湰 + * @param dataStore 閫夋嫨鐨勬暟鎹� + * @param sourceData 鏉ユ簮鏁版嵁 + * @returns 鏇挎崲鍚庣殑鍊�,瀛楃涓� + */ +export const replaceFreeMarker = (text,dataStore,sourceData) => { + //鏇挎崲琛ㄨ揪寮� + if (!sourceData) { + sourceData = {}; + } + if (!dataStore) { + dataStore = []; + } + let replaceData = dataStore.length > 0 ? dataStore[0] : {}; + if (text && text.indexOf("${") > -1 && text.indexOf("}")) { + //js鍙兘浣跨敤${xxx}杩欑鐨勬柟寮� + let reg = "root.${"; + while (text.indexOf(reg) > -1) { + let temp = text.substring(0, text.indexOf(reg)); + let field = text.substring(text.indexOf(reg) + reg.length, text.indexOf("}")); + let end = text.substring(text.indexOf("}") + 1); + field = replaceData[field] || sourceData[field] || ''; + text = temp + field + end; + } + reg = "sourceData.${"; + while (text.indexOf(reg) > -1) { + let temp = text.substring(0, text.indexOf(reg)); + let field = text.substring(text.indexOf(reg) + reg.length, text.indexOf("}")); + let end = text.substring(text.indexOf("}") + 1); + field = replaceData[field] || sourceData[field] || ''; + text = temp + field + end; + } + reg = "${"; + while (text.indexOf(reg) > -1) { + let temp = text.substring(0, text.indexOf(reg)); + let field = text.substring(text.indexOf(reg) + reg.length, text.indexOf("}")); + let end = text.substring(text.indexOf("}") + 1); + field = replaceData[field] || sourceData[field] || ''; + text = temp + field + end; + } + } + return text; +}; + +/** + * 鍙傛暟杞崲涓哄皬鍐� + * @param paramsVOs 鍙傛暟 + * @returns 灏忓啓鍚庣殑鍙傛暟瀵硅薄 + */ +export const paramLow = (paramsVOs) => { + // + if (!paramsVOs) { + paramsVOs = {}; + } + var params = {}; + for (var key in paramsVOs) { + params[key.toLowerCase()] = paramsVOs[key]; + } + return params; +}; +/** + * 鎵ц鍓嶇疆浜嬩欢 + * @param options 鎸夐挳鐨勯厤缃俊鎭紝鍓嶇疆浜嬩欢閲岄厤缃殑鍙傛暟浼氭浛鎹㈣繖涓噷鐨勫弬鏁扮殑淇℃伅 + * @param buttonTarget 鎸夐挳js鎵�鍦ㄧ殑瀵硅薄 + * @param callback 鍥炶皟锛屽鏋滃瓨鍦ㄥ墠缃簨浠讹紝浼氬湪鎵ц瀹屾垚鍚庢墽琛屽洖璋冿紝鍚﹀垯鐩存帴鍥炶皟 + * @param preEventName 鍓嶇疆浜嬩欢鍚嶇О锛岄粯璁eforeevent + */ +export const callPreEvent = (options,buttonTarget,callback,preEventName) => { + const params = paramLow(options.paramVOS); + options.paramVOS = params; + let beforeEvent = params[preEventName || 'beforeevent']; + if(beforeEvent) { + let buttonParse = parseEventByUrl(beforeEvent,options,true); + buttonParse.options.callback = callback; + if(validatenull(buttonParse)){ + buttonTarget[buttonParse.methodName](buttonParse); + }else{ + layui.use(buttonParse.jsPath,function () { + layui[buttonParse.jsPath][buttonParse.methodName](options); + }); + } + }else{ + if(callback){ + callback(options); + } + } +}; +/** + * 鎵ц鍚庣疆鏃堕棿 + * @param options 鎸夐挳鐨勯厤缃俊鎭紝鍚庣疆浜嬩欢閲岄厤缃殑鍙傛暟浼氭浛鎹㈣繖涓噷鐨勫弬鏁扮殑淇℃伅 + * @param buttonTarget 鎸夐挳Js鎵�鍦ㄧ殑瀵硅薄 + */ +export const callPostEvent = (options,buttonTarget,callback,postEventName)=>{ + const params = paramLow(options.paramVOS); + options.paramVOS = params; + var afterEvent = params[postEventName || 'afterevent']; + if(afterEvent) { + var buttonParse = parseEventByUrl(afterEvent,options,false); + if(validatenull(buttonParse)){ + buttonTarget[buttonParse.methodName](buttonParse); + }else{ + layui.use(buttonParse.jsPath,function () { + layui[buttonParse.jsPath][buttonParse.methodName](options); + }); + } + }else{ + if(callback){ + callback(options); + } + } +}; +/** + * 浣跨敤url鑾峰彇浜嬩欢鐨勪俊鎭� + * @param url 璺緞,鏍煎紡濡俲sPath#methodName?param=aaa¶m1=bbb + * @param options 鎸夐挳鐨勯厤缃俊鎭紝浼氳嚜鍔ㄨ鐩栫浉鍚屽睘鎬х殑鍙傛暟 + * @param isBefore 鏄惁涓哄墠缃簨浠讹紝鍚﹀垯涓哄悗缃� + * @returns {{jsPath: js鐨勮矾寰�, options: 鎸夐挳鐨勯厤缃俊鎭�, methodName: (string)鏂规硶鐨勫悕瀛梷} + */ +export const parseEventByUrl = (url,options,isBefore) => { + //鏍规嵁閰嶇疆鏍煎紡鍖栦簨浠� + var jsPath = url; + var methodName = isBefore?"doBefore":"doAfter"; + var params = {}; + if (url.indexOf("?")) { + var temp = url.substring(0, url.indexOf("?")); + if (temp.indexOf("#") > -1) { + var array = temp.split("#"); + if(array.length == 1){ + jsPath = array[0]; + }else{ + jsPath = array[0]; + methodName = array[1]; + } + }else{ + jsPath = temp; + } + var paramArray = url.substring(url.indexOf("?") + 1).split("&"); + layui.each(paramArray, function (_index, _item) { + if (_item.indexOf("=") < 0) { + this.$message.error(isBefore?"鍓嶇疆浜嬩欢":"鍚庣疆浜嬩欢" + "鐨勫弬鏁伴厤缃敊璇紝闇�瑕佽xxx=yyy&zzz=a鐨勬柟寮�"); + return true; + } + params[_item.split("=")[0]] = _item.split("=")[1]; + }); + }else{ + if (url.indexOf("#") > -1) { + var array = url.split("#"); + if(array.length == 1){ + jsPath = array[0]; + }else{ + jsPath = array[0]; + methodName = array[1]; + } + }else{ + jsPath = url; + } + } + for (var key in params) { + options.paramVOS[key.toLowerCase()] = params[key]; + } + return { + jsPath:jsPath, + methodName:methodName, + options:options + }; +}; diff --git a/Source/ProjectWeb/src/components/dynamic-components/dynamic-custom.vue b/Source/ProjectWeb/src/components/dynamic-components/dynamic-custom.vue index c15d92f..9a1a0cf 100644 --- a/Source/ProjectWeb/src/components/dynamic-components/dynamic-custom.vue +++ b/Source/ProjectWeb/src/components/dynamic-components/dynamic-custom.vue @@ -2,11 +2,12 @@ <div class="UI-dynamic" :id="'UI-dynamic-'+areasName+componentVO.oid"> <el-alert class="alert" + :closable="false" v-if="isError" title="鑷畾涔夌粍浠堕厤缃俊鎭敊璇紒" type="error" show-icon - description="杩欎釜鑷畾涔夐〉闈㈢殑鍦板潃鏍煎紡涓嶆纭�傛帹鑽愪娇鐢╞s=缁勪欢name?type=xxx&context=yyy&pparam=zzz杩欑褰㈠紡"> + description="杩欎釜鑷畾涔夐〉闈㈢殑鍦板潃鏍煎紡涓嶆纭�傛帹鑽愪娇鐢ㄢ�滅粍浠秐ame?param=xxx鈥濓紙鑷畾涔夌粍浠讹級鎴栬�呪��?type=xxx&context=yyy&pparam=zzz鈥濓紙UI寮曟搸锛夎繖2绉嶅舰寮�"> </el-alert> <component v-else :is="currentComponent" :btmType="btmType" @@ -23,6 +24,7 @@ <script> import {queryStringToObject} from '@/util/util' +import {validatenull} from "@/util/validate"; export default { name: "dynamic-custom", components: { @@ -69,7 +71,7 @@ content: '', urlParams: {}, height: '300px', - customClass: this.componentVO.customClass, //bs=?type=xxx&context=yyy¶m=zzz 鎴栬�� bs=缁勪欢name?type=xxx&context=yyy¶m=zzz + customClass: '', //?type=xxx&context=yyy¶m=zzz 鎴栬�� 缁勪欢name?type=xxx&context=yyy¶m=zzz isError: false, //璺緞瑙f瀽澶辫触 currentComponent: 'UI',//缁勪欢name } @@ -88,24 +90,31 @@ }, mounted() { - if (this.customClass.indexOf("bs=") < 0) { + this.componentVO.customClass.split(';').forEach(item=>{ + if(item.indexOf('web=')==0){ + this.customClass=item.split('web=')[1]; + } + }) + // 濡傛灉璺緞涓瓨鍦� '?'锛屽垯鍙栭棶鍙峰墠闈㈤儴鍒嗙粰 parts + if (this.customClass.includes('?')) { + this.currentComponent = this.customClass.split("?")[0]; + } else { + this.currentComponent = this.customClass; // 涓嶅瓨鍦� '?' 鏁存潯璺緞灏辨槸 parts + } + if(validatenull(this.currentComponent)){ + this.currentComponent='UI'; + } + if (['UI', 'ui'].includes(this.currentComponent) && (this.customClass.indexOf("type=") < 0 || this.customClass.indexOf("context=") < 0)) { this.isError = true; return; } - this.customClass = this.componentVO.customClass.split("bs=")[1]; - if (this.customClass.indexOf("?") < 0 || this.customClass.indexOf("type=") < 0 || this.customClass.indexOf("context=") < 0) { - this.isError = true; - return; + let urlParams = {}; + if(this.customClass.includes('?')) { + urlParams = queryStringToObject(this.customClass); } - if (this.customClass.split('?')[0] != '' && this.customClass.split('?')[0] != 'UI' && this.customClass.split('?')[0] != 'ui') { - this.currentComponent = this.customClass.split('?')[0]; - } - let urlParams = queryStringToObject(this.customClass); - let btmType = urlParams.type; - let content = urlParams.context; - this.btmType = btmType; - this.content = content; + this.btmType = urlParams.type; + this.content = urlParams.context; this.urlParams = Object.assign(this.paramVOS, urlParams) //this.getHeight(this.$parent); diff --git a/Source/ProjectWeb/src/page/index/top/index.vue b/Source/ProjectWeb/src/page/index/top/index.vue index 6b99b79..8430d37 100644 --- a/Source/ProjectWeb/src/page/index/top/index.vue +++ b/Source/ProjectWeb/src/page/index/top/index.vue @@ -242,10 +242,10 @@ cancelButtonText: this.$t("cancelText"), type: "warning" }).then(() => { - this.$store.dispatch("LogOut").then(() => { + //this.$store.dispatch("LogOut").then(() => { resetRouter(); this.$router.push({path: "/login"}); - }); + //}); }); } } diff --git a/Source/ProjectWeb/src/permission.js b/Source/ProjectWeb/src/permission.js index 116b150..3af463c 100644 --- a/Source/ProjectWeb/src/permission.js +++ b/Source/ProjectWeb/src/permission.js @@ -11,7 +11,6 @@ NProgress.configure({showSpinner: false}); const lockPage = store.getters.website.lockPage; //閿佸睆椤� router.beforeEach((to, from, next) => { - // debugger; const meta = to.meta || {}; const isMenu = meta.menu === undefined ? to.query.menu : meta.menu; store.commit('SET_IS_MENU', isMenu === undefined); diff --git a/Source/ProjectWeb/src/router/avue-router.js b/Source/ProjectWeb/src/router/avue-router.js index fb9f9e2..dd431b5 100644 --- a/Source/ProjectWeb/src/router/avue-router.js +++ b/Source/ProjectWeb/src/router/avue-router.js @@ -1,3 +1,5 @@ +import {validatenull} from "@/util/validate"; + let RouterPlugin = function () { this.$router = null; this.$store = null; @@ -131,22 +133,18 @@ } else { parts = path; // 涓嶅瓨鍦� '?' 鏁存潯璺緞灏辨槸 parts } - - // 濡傛灉闂彿鍓嶉潰閮ㄥ垎涓嶅湪 ['ui', 'UI', 'base'] 涓紝鍒欐槸鑷畾涔夌粍浠� - if (!['ui', 'UI', 'base'].includes(parts)) { - component = `views/custom-ui/${parts}`; + if(validatenull(parts)){ + parts='UI'; } - - // 濡傛灉闂彿鍓嶉潰绛変簬绌猴紝鍒欓粯璁や负UI寮曟搸 - if (!parts) { - component = 'views/base/UIContentViewer'; + // 濡傛灉闂彿鍓嶉潰閮ㄥ垎涓嶅湪 ['ui', 'UI', 'base'] 涓紝鍒欐槸鑷畾涔夌粍浠� + if (!['ui', 'UI', 'base','bs'].includes(parts)) { + component = `views/custom-ui/${parts}`; } // 濡傛灉闂彿鍓嶉潰绛変簬 UI銆乽i 鍒欎负UI寮曟搸 if (['UI', 'ui'].includes(parts)) { component = 'views/base/UIContentViewer'; } - let name = oMenu[propsDefault.label], icon = oMenu[propsDefault.icon], children = oMenu[propsDefault.children], diff --git a/Source/ProjectWeb/src/store/modules/user.js b/Source/ProjectWeb/src/store/modules/user.js index a5bf964..3b04ff9 100644 --- a/Source/ProjectWeb/src/store/modules/user.js +++ b/Source/ProjectWeb/src/store/modules/user.js @@ -37,7 +37,9 @@ item.pathValue = item.path; item.path = '/' + item.code; item.query = {}; // 鍒濆鍖� item.query - item.query = queryStringToObject(item.pathValue) + if(item.pathValue.indexOf('?')!=-1) { + item.query = queryStringToObject(item.pathValue) + } if (item.children && item.children.length > 0) { updateCode(item.children); } diff --git a/Source/ProjectWeb/src/views/base/UIContentViewer.vue b/Source/ProjectWeb/src/views/base/UIContentViewer.vue index a963086..c987860 100644 --- a/Source/ProjectWeb/src/views/base/UIContentViewer.vue +++ b/Source/ProjectWeb/src/views/base/UIContentViewer.vue @@ -90,7 +90,7 @@ }, created() { if (verifyNull(this.$route.query.type) || (verifyNull(this.$route.query.context) && verifyNull(this.$route.query.content))) { - this.$message.error("閰嶇疆鐨勪俊鎭敊璇紝璇峰弬鑰僢s=缁勪欢name?type=xxx&context=yyy¶m=zzz杩欑褰㈠紡銆傚叾涓璽ype鏄笟鍔$被鍨嬶紙鎴栭摼鎺ョ被鍨嬶級锛宑ontext鏄疷I涓婁笅鏂囩殑鍚嶇О"); + this.$message.error("閰嶇疆鐨勪俊鎭敊璇紝璇峰弬鑰冣��?type=xxx&context=yyy¶m=zzz鈥濊繖绉嶅舰寮忋�傚叾涓璽ype鏄笟鍔$被鍨嬶紙鎴栭摼鎺ョ被鍨嬶級锛宑ontext鏄疷I涓婁笅鏂囩殑鍚嶇О"); return false; } this.getTheParameters() diff --git a/Source/ProjectWeb/src/views/base/UIContentViewerInDialog.vue b/Source/ProjectWeb/src/views/base/UIContentViewerInDialog.vue index 86c330a..cfb67d8 100644 --- a/Source/ProjectWeb/src/views/base/UIContentViewerInDialog.vue +++ b/Source/ProjectWeb/src/views/base/UIContentViewerInDialog.vue @@ -115,7 +115,7 @@ }, created() { if (verifyNull(this.btmType) || verifyNull(this.content) ) { - this.$message.error("鑷畾涔夌粍浠堕厤缃殑淇℃伅閿欒锛岃鍙傝�僢s=name?type=xxx&context=yyy¶m=zzz杩欑褰㈠紡銆傚叾涓璽ype鏄笟鍔$被鍨嬶紙鎴栭摼鎺ョ被鍨嬶級锛宑ontext鏄疷I涓婁笅鏂囩殑鍚嶇О,name涓虹粍浠跺悕绉帮紝绌哄�兼椂榛樿灞曠ずUI寮曟搸"); + this.$message.error("鑷畾涔夌粍浠堕厤缃殑淇℃伅閿欒锛岃鍙傝�冣��?type=xxx&context=yyy¶m=zzz鈥滆繖绉嶅舰寮忋�傚叾涓璽ype鏄笟鍔$被鍨嬶紙鎴栭摼鎺ョ被鍨嬶級锛宑ontext鏄疷I涓婁笅鏂囩殑鍚嶇О"); return false; } }, -- Gitblit v1.9.3