w-web-perm 1.0.37 → 1.0.39
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/css/{app.fe37e537.css → app.26002708.css} +1 -1
- package/dist/index.tmp +1 -1
- package/dist/js/{app-legacy.bfe48ec6.js → app-legacy.54c06748.js} +2 -2
- package/dist/js/{app-legacy.bfe48ec6.js.map → app-legacy.54c06748.js.map} +1 -1
- package/dist/js/{app.bfe48ec6.js → app.54c06748.js} +2 -2
- package/dist/js/{app.bfe48ec6.js.map → app.54c06748.js.map} +1 -1
- package/dist/js/{chunk-vendors.d7df8579.js → chunk-vendors-legacy.5499e593.js} +5 -5
- package/dist/js/chunk-vendors-legacy.5499e593.js.map +1 -0
- package/dist/js/{chunk-vendors-legacy.d7df8579.js → chunk-vendors.5499e593.js} +5 -5
- package/dist/js/chunk-vendors.5499e593.js.map +1 -0
- package/dist/w-web-perm.umd.js +2 -2
- package/dist/w-web-perm.umd.js.map +1 -1
- package/docs/WWebPerm.html +1 -1
- package/docs/WWebPerm.mjs.html +1 -1
- package/docs/index.html +1 -1
- package/package.json +5 -5
- package/dist/js/chunk-vendors-legacy.d7df8579.js.map +0 -1
- package/dist/js/chunk-vendors.d7df8579.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"js/app-legacy.bfe48ec6.js","mappings":"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","sources":["webpack://w-web-perm/./src/App.vue","webpack://w-web-perm/./src/components/Common/LoadingWinBar.vue","webpack://w-web-perm/src/components/Common/LoadingWinBar.vue","webpack://w-web-perm/./src/components/Common/LoadingWinBar.vue?20f2","webpack://w-web-perm/./src/components/Common/LoadingWinBar.vue?0bae","webpack://w-web-perm/./src/components/Common/CheckYesNo.vue","webpack://w-web-perm/src/components/Common/CheckYesNo.vue","webpack://w-web-perm/./src/components/Common/CheckYesNo.vue?0786","webpack://w-web-perm/./src/components/Common/CheckYesNo.vue?5d88","webpack://w-web-perm/./src/components/Common/CheckYes.vue","webpack://w-web-perm/src/components/Common/CheckYes.vue","webpack://w-web-perm/./src/components/Common/CheckYes.vue?6829","webpack://w-web-perm/./src/components/Common/CheckYes.vue?d003","webpack://w-web-perm/./src/components/LayoutState.vue","webpack://w-web-perm/src/components/LayoutState.vue","webpack://w-web-perm/./src/components/LayoutState.vue?4eb5","webpack://w-web-perm/./src/components/LayoutState.vue?272c","webpack://w-web-perm/./src/components/Layout.vue","webpack://w-web-perm/./src/components/LayoutContent.vue","webpack://w-web-perm/./src/components/LayoutContentTargets.vue","webpack://w-web-perm/src/components/LayoutContentTargets.vue","webpack://w-web-perm/./src/components/LayoutContentTargets.vue?8196","webpack://w-web-perm/./src/components/LayoutContentTargets.vue?1e0d","webpack://w-web-perm/./src/components/LayoutContentPemis.vue","webpack://w-web-perm/src/components/LayoutContentPemis.vue","webpack://w-web-perm/./src/components/LayoutContentPemis.vue?2db1","webpack://w-web-perm/./src/components/LayoutContentPemis.vue?628d","webpack://w-web-perm/./src/components/LayoutContentGrups.vue","webpack://w-web-perm/src/components/LayoutContentGrups.vue","webpack://w-web-perm/./src/components/LayoutContentGrups.vue?378c","webpack://w-web-perm/./src/components/LayoutContentGrups.vue?82ba","webpack://w-web-perm/./src/components/LayoutContentUsers.vue","webpack://w-web-perm/src/components/LayoutContentUsers.vue","webpack://w-web-perm/./src/components/LayoutContentUsers.vue?6395","webpack://w-web-perm/./src/components/LayoutContentUsers.vue?9c9b","webpack://w-web-perm/src/components/LayoutContent.vue","webpack://w-web-perm/./src/components/LayoutContent.vue?07f8","webpack://w-web-perm/./src/components/LayoutContent.vue?a8dd","webpack://w-web-perm/src/components/Layout.vue","webpack://w-web-perm/./src/components/Layout.vue?620d","webpack://w-web-perm/./src/components/Layout.vue?6d15","webpack://w-web-perm/./src/components/VeCrules.vue","webpack://w-web-perm/src/components/VeCrules.vue","webpack://w-web-perm/./src/components/VeCrules.vue?f8db","webpack://w-web-perm/./src/components/VeCrules.vue?a6fe","webpack://w-web-perm/./src/components/VeCpemis.vue","webpack://w-web-perm/src/components/VeCpemis.vue","webpack://w-web-perm/./src/components/VeCpemis.vue?6066","webpack://w-web-perm/./src/components/VeCpemis.vue?5c83","webpack://w-web-perm/./src/components/VeCgrups.vue","webpack://w-web-perm/src/components/VeCgrups.vue","webpack://w-web-perm/./src/components/VeCgrups.vue?74e5","webpack://w-web-perm/./src/components/VeCgrups.vue?50c0","webpack://w-web-perm/./src/components/VeGrupBlngUsers.vue","webpack://w-web-perm/src/components/VeGrupBlngUsers.vue","webpack://w-web-perm/./src/components/VeGrupBlngUsers.vue?16e5","webpack://w-web-perm/./src/components/VeGrupBlngUsers.vue?b8b8","webpack://w-web-perm/./src/components/VePemiBlngGrups.vue","webpack://w-web-perm/src/components/VePemiBlngGrups.vue","webpack://w-web-perm/./src/components/VePemiBlngGrups.vue?349f","webpack://w-web-perm/./src/components/VePemiBlngGrups.vue?f761","webpack://w-web-perm/src/App.vue","webpack://w-web-perm/./src/App.vue?c036","webpack://w-web-perm/./src/App.vue?0e40","webpack://w-web-perm/./src/store/types.mjs","webpack://w-web-perm/./src/schema/tables/grups.mjs","webpack://w-web-perm/./src/schema/tables/pemis.mjs","webpack://w-web-perm/./src/schema/tables/targets.mjs","webpack://w-web-perm/./src/schema/tables/users.mjs","webpack://w-web-perm/./src/schema/index.mjs","webpack://w-web-perm/./src/store/mutations.mjs","webpack://w-web-perm/./src/store/index.mjs","webpack://w-web-perm/./src/plugins/mLang.mjs","webpack://w-web-perm/./src/plugins/mUI.mjs","webpack://w-web-perm/./src/plugins/mDataSelectorSchema.mjs","webpack://w-web-perm/./src/plugins/mShare.mjs","webpack://w-web-perm/./src/main.js","webpack://w-web-perm/./node_modules/w-converhp/src/ lazy strict namespace object","webpack://w-web-perm/webpack/bootstrap","webpack://w-web-perm/webpack/runtime/chunk loaded","webpack://w-web-perm/webpack/runtime/compat get default export","webpack://w-web-perm/webpack/runtime/define property getters","webpack://w-web-perm/webpack/runtime/global","webpack://w-web-perm/webpack/runtime/hasOwnProperty shorthand","webpack://w-web-perm/webpack/runtime/make namespace object","webpack://w-web-perm/webpack/runtime/jsonp chunk loading","webpack://w-web-perm/webpack/startup"],"sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{directives:[{name:\"domresize\",rawName:\"v-domresize\"}],on:{\"domresize\":_vm.resize}},[(!_vm.ready)?_c('LayoutState',{style:(`opacity:${_vm.ready?0:1};`)}):_vm._e(),_c('transition',{attrs:{\"enter-active-class\":\"fade-enter-active\",\"leave-active-class\":\"fade-leave-active\"}},[(_vm.ready)?_c('Layout'):_vm._e()],1),_c('LoadingWinBar'),_c('CheckYesNo'),_c('CheckYes'),_c('VeCrules'),_c('VeCpemis'),_c('VeCgrups'),_c('VeGrupBlngUsers'),_c('VePemiBlngGrups')],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('WDialog',{attrs:{\"show\":_vm.loading,\"maxWidth\":_vm.dialogWidth},on:{\"update:show\":function($event){_vm.loading=$event},\"resize\":_vm.resizeDialog},scopedSlots:_vm._u([{key:\"panel\",fn:function(){return [_c('div',{style:(`padding:${_vm.barPadding-5}px ${_vm.barPadding}px ${_vm.barPadding}px ${_vm.barPadding}px;`)},[_c('div',{staticStyle:{\"padding-bottom\":\"3px\",\"font-size\":\"0.9rem\",\"color\":\"#666\"}},[(_vm.msg!=='')?_c('span',[_vm._v(_vm._s(_vm.msg))]):_c('span',[_vm._v(_vm._s(_vm.$t('processing')))])]),_c('WProgressBar',{style:(`width:${_vm.barWidth}px;`),attrs:{\"height\":3,\"enableContinuous\":true,\"progColor\":'deep-purple lighten-1',\"progBackgroundColor\":'deep-purple lighten-4'}})],1)]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <WDialog\r\n :show.sync=\"loading\"\r\n :maxWidth=\"dialogWidth\"\r\n @resize=\"resizeDialog\"\r\n >\r\n\r\n <template v-slot:panel>\r\n\r\n <div :style=\"`padding:${barPadding-5}px ${barPadding}px ${barPadding}px ${barPadding}px;`\">\r\n\r\n\r\n <div style=\"padding-bottom:3px; font-size:0.9rem; color:#666;\">\r\n\r\n <span v-if=\"msg!==''\">{{msg}}</span>\r\n\r\n <span v-else>{{$t('processing')}}</span>\r\n\r\n </div>\r\n\r\n <WProgressBar\r\n :style=\"`width:${barWidth}px;`\"\r\n :height=\"3\"\r\n :enableContinuous=\"true\"\r\n :progColor=\"'deep-purple lighten-1'\"\r\n :progBackgroundColor=\"'deep-purple lighten-4'\"\r\n ></WProgressBar>\r\n\r\n </div>\r\n\r\n </template>\r\n\r\n </WDialog>\r\n</template>\r\n\r\n<script>\r\nimport Vue from 'vue'\r\nimport get from 'lodash-es/get.js'\r\nimport WDialog from 'w-component-vue/src/components/WDialog.vue'\r\nimport WProgressBar from 'w-component-vue/src/components/WProgressBar.vue'\r\n\r\n\r\nexport default {\r\n components: {\r\n WDialog,\r\n WProgressBar,\r\n },\r\n props: {\r\n },\r\n data: function() {\r\n return {\r\n\r\n dialogWidth: 0,\r\n dialogWidthMax: 600,\r\n\r\n barPadding: 20,\r\n barWidth: 0,\r\n msg: '',\r\n\r\n }\r\n },\r\n mounted: function() {\r\n //console.log('mounted')\r\n\r\n let vo = this\r\n\r\n //set\r\n Vue.prototype.$dg.setLoadingWinBarMessage = vo.setMessage\r\n\r\n },\r\n computed: {\r\n\r\n loading: function() {\r\n let vo = this\r\n let b = get(vo, `$store.state.loading`)\r\n // console.log('loading', b)\r\n return b\r\n },\r\n\r\n },\r\n methods: {\r\n\r\n setMessage: function(msg) {\r\n this.msg = msg\r\n },\r\n\r\n resizeDialog: function(msg) {\r\n // console.log('methods resizeDialog', msg)\r\n\r\n let vo = this\r\n\r\n let w = window.innerWidth\r\n // console.log('window.innerWidth', window.innerWidth)\r\n\r\n //dialogWidth\r\n let dialogWidth = w - vo.barPadding * 2\r\n dialogWidth = Math.max(dialogWidth, 0)\r\n dialogWidth = Math.min(dialogWidth, vo.dialogWidthMax)\r\n vo.dialogWidth = dialogWidth\r\n // console.log('dialogWidth', dialogWidth)\r\n\r\n //barWidth\r\n let barWidth = dialogWidth - vo.barPadding * 2\r\n barWidth = Math.max(barWidth, 0)\r\n vo.barWidth = barWidth\r\n // console.log('barWidth', barWidth)\r\n\r\n },\r\n\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LoadingWinBar.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LoadingWinBar.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./LoadingWinBar.vue?vue&type=template&id=9bcb4aee&scoped=true\"\nimport script from \"./LoadingWinBar.vue?vue&type=script&lang=js\"\nexport * from \"./LoadingWinBar.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"9bcb4aee\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('WConfirm',{attrs:{\"show\":_vm.bShow,\"title\":_vm.$t('systemMessage'),\"content\":_vm.content,\"_contentColor\":'white',\"_contentIconColor\":'white',\"_contentBackgroundColor\":'orange lighten-5',\"_titleColor\":'white',\"headerBackgroundColor\":'grey lighten-3',\"noBtnText\":_vm.$t('no'),\"yesBtnText\":_vm.$t('yes')},on:{\"update:show\":function($event){_vm.bShow=$event},\"click-no\":function($event){return _vm.clickBtn(false)},\"click-yes\":function($event){return _vm.clickBtn(true)}}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <WConfirm\r\n :show.sync=\"bShow\"\r\n :title=\"$t('systemMessage')\"\r\n :content=\"content\"\r\n :_contentColor=\"'white'\"\r\n :_contentIconColor=\"'white'\"\r\n :_contentBackgroundColor=\"'orange lighten-5'\"\r\n :_titleColor=\"'white'\"\r\n :headerBackgroundColor=\"'grey lighten-3'\"\r\n :noBtnText=\"$t('no')\"\r\n :yesBtnText=\"$t('yes')\"\r\n @click-no=\"clickBtn(false)\"\r\n @click-yes=\"clickBtn(true)\"\r\n ></WConfirm>\r\n</template>\r\n\r\n<script>\r\nimport Vue from 'vue'\r\nimport genPm from 'wsemi/src/genPm.mjs'\r\nimport WConfirm from 'w-component-vue/src/components/WConfirm.vue'\r\n\r\nexport default {\r\n components: {\r\n WConfirm,\r\n },\r\n props: {\r\n },\r\n data: function() {\r\n return {\r\n\r\n bShow: false,\r\n pm: null,\r\n\r\n content: '',\r\n\r\n }\r\n },\r\n mounted: function() {\r\n //console.log('mounted')\r\n\r\n let vo = this\r\n\r\n //set\r\n Vue.prototype.$dg.showCheckYesNo = vo.show\r\n\r\n },\r\n computed: {\r\n },\r\n methods: {\r\n\r\n show: function (content) {\r\n //console.log('methods show', content)\r\n\r\n let vo = this\r\n\r\n //pm\r\n vo.pm = genPm()\r\n\r\n //save\r\n vo.content = content\r\n\r\n //show\r\n vo.bShow = true\r\n\r\n return vo.pm\r\n },\r\n\r\n clickBtn: function(mode) {\r\n //console.log('methods clickBtn', mode)\r\n\r\n let vo = this\r\n\r\n if (mode) {\r\n vo.pm.resolve()\r\n }\r\n else {\r\n vo.pm.reject('close')\r\n }\r\n\r\n //hide\r\n vo.bShow = false\r\n\r\n },\r\n\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CheckYesNo.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CheckYesNo.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./CheckYesNo.vue?vue&type=template&id=cfad0048&scoped=true\"\nimport script from \"./CheckYesNo.vue?vue&type=script&lang=js\"\nexport * from \"./CheckYesNo.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"cfad0048\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('WConfirm',{attrs:{\"show\":_vm.bShow,\"title\":_vm.$t('systemMessage'),\"content\":_vm.content,\"_contentColor\":'white',\"_contentIconColor\":'white',\"_contentBackgroundColor\":'orange lighten-5',\"headerBackgroundColor\":'grey lighten-3',\"hasNoBtn\":false,\"yesBtnText\":_vm.$t('ok')},on:{\"update:show\":function($event){_vm.bShow=$event},\"click-yes\":function($event){return _vm.clickUnit()}}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <WConfirm\r\n :show.sync=\"bShow\"\r\n :title=\"$t('systemMessage')\"\r\n :content=\"content\"\r\n :_contentColor=\"'white'\"\r\n :_contentIconColor=\"'white'\"\r\n :_contentBackgroundColor=\"'orange lighten-5'\"\r\n :headerBackgroundColor=\"'grey lighten-3'\"\r\n :hasNoBtn=\"false\"\r\n :yesBtnText=\"$t('ok')\"\r\n @click-yes=\"clickUnit()\"\r\n ></WConfirm>\r\n</template>\r\n\r\n<script>\r\nimport Vue from 'vue'\r\nimport genPm from 'wsemi/src/genPm.mjs'\r\nimport WConfirm from 'w-component-vue/src/components/WConfirm.vue'\r\n\r\nexport default {\r\n components: {\r\n WConfirm,\r\n },\r\n props: {\r\n },\r\n data: function() {\r\n return {\r\n\r\n bShow: false,\r\n pm: null,\r\n\r\n content: '',\r\n\r\n }\r\n },\r\n mounted: function() {\r\n //console.log('mounted')\r\n\r\n let vo = this\r\n\r\n //set\r\n Vue.prototype.$dg.showCheckYes = vo.show\r\n\r\n },\r\n computed: {\r\n },\r\n methods: {\r\n\r\n show: function (content) {\r\n //console.log('methods show', content)\r\n\r\n let vo = this\r\n\r\n //pm\r\n vo.pm = genPm()\r\n\r\n //save\r\n vo.content = content\r\n\r\n //show\r\n vo.bShow = true\r\n\r\n return vo.pm\r\n },\r\n\r\n clickUnit: function() {\r\n //console.log('methods clickUnit')\r\n\r\n let vo = this\r\n\r\n //resolve\r\n vo.pm.resolve()\r\n\r\n //hide\r\n vo.bShow = false\r\n\r\n },\r\n\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CheckYes.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CheckYes.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./CheckYes.vue?vue&type=template&id=9943c370&scoped=true\"\nimport script from \"./CheckYes.vue?vue&type=script&lang=js\"\nexport * from \"./CheckYes.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"9943c370\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{style:(`position:absolute; top:0px; left:0px; width:100%; height:100%; transition:all 0.5s linear; display:flex; align-items:center; justify-content:center;`)},[(_vm.connState==='csIng')?[_c('img',{staticStyle:{\"width\":\"100px\",\"height\":\"100px\"},attrs:{\"src\":_vm.img_connection}}),_c('div',{staticStyle:{\"margin-left\":\"10px\"}},[_c('div',{staticStyle:{\"color\":\"#aaa\"}},[_vm._v(\" \"+_vm._s(_vm.$t('csIng'))+\" \")])])]:(_vm.connState==='csLogin')?[_c('img',{staticStyle:{\"width\":\"100px\",\"height\":\"100px\"},attrs:{\"src\":_vm.img_connection}}),_c('div',{staticStyle:{\"margin-left\":\"10px\"}},[_c('div',{staticStyle:{\"color\":\"#aaa\"}},[_vm._v(\" \"+_vm._s(_vm.$t('csLogin'))+\" \")])])]:(_vm.connState==='csLogout')?[_c('img',{staticStyle:{\"width\":\"75px\",\"height\":\"75px\"},attrs:{\"src\":_vm.img_logout}}),_c('div',{staticStyle:{\"margin-left\":\"10px\"}},[_c('div',{staticStyle:{\"color\":\"#aaa\"}},[_vm._v(\" \"+_vm._s(_vm.$t('csLogout'))+\" \")])])]:(_vm.connState==='csErrConn')?[_c('img',{staticStyle:{\"width\":\"75px\",\"height\":\"75px\"},attrs:{\"src\":_vm.img_dissconnection}}),_c('div',{staticStyle:{\"margin-left\":\"10px\"}},[_c('div',{staticStyle:{\"color\":\"#aaa\"}},[_vm._v(\" \"+_vm._s(_vm.$t('csErrConn'))+\" \")])])]:[_c('img',{staticStyle:{\"width\":\"75px\",\"height\":\"75px\"},attrs:{\"src\":_vm.img_deny}}),_c('div',{staticStyle:{\"margin-left\":\"10px\"}},[_c('div',{staticStyle:{\"color\":\"#aaa\"}},[_vm._v(\" \"+_vm._s(_vm.$t('csErrLogin'))+\" \")])])]],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div\r\n :style=\"`position:absolute; top:0px; left:0px; width:100%; height:100%; transition:all 0.5s linear; display:flex; align-items:center; justify-content:center;`\"\r\n >\r\n\r\n <template v-if=\"connState==='csIng'\">\r\n\r\n <img style=\"width:100px; height:100px;\" :src=\"img_connection\">\r\n\r\n <div style=\"margin-left:10px;\">\r\n <div style=\"color:#aaa;\">\r\n {{$t('csIng')}}\r\n </div>\r\n </div>\r\n\r\n </template>\r\n\r\n <template v-else-if=\"connState==='csLogin'\">\r\n\r\n <img style=\"width:100px; height:100px;\" :src=\"img_connection\">\r\n\r\n <div style=\"margin-left:10px;\">\r\n <div style=\"color:#aaa;\">\r\n {{$t('csLogin')}}\r\n </div>\r\n </div>\r\n\r\n </template>\r\n\r\n <template v-else-if=\"connState==='csLogout'\">\r\n\r\n <img style=\"width:75px; height:75px;\" :src=\"img_logout\">\r\n\r\n <div style=\"margin-left:10px;\">\r\n <div style=\"color:#aaa;\">\r\n {{$t('csLogout')}}\r\n </div>\r\n </div>\r\n\r\n </template>\r\n\r\n <template v-else-if=\"connState==='csErrConn'\">\r\n\r\n <img style=\"width:75px; height:75px;\" :src=\"img_dissconnection\">\r\n\r\n <div style=\"margin-left:10px;\">\r\n <div style=\"color:#aaa;\">\r\n {{$t('csErrConn')}}\r\n </div>\r\n </div>\r\n\r\n </template>\r\n\r\n <template v-else>\r\n\r\n <img style=\"width:75px; height:75px;\" :src=\"img_deny\">\r\n\r\n <div style=\"margin-left:10px;\">\r\n <div style=\"color:#aaa;\">\r\n {{$t('csErrLogin')}}\r\n </div>\r\n </div>\r\n\r\n </template>\r\n\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport get from 'lodash-es/get.js'\r\n\r\n\r\nexport default {\r\n components: {\r\n },\r\n props: {\r\n },\r\n data: function() {\r\n return {\r\n img_connection: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTAwcHgiIGhlaWdodD0iMTAwcHgiIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCI+DQo8Y2lyY2xlIGN4PSI1MCIgY3k9IjUwIiByPSIxMy44MTkzIiBmaWxsPSJub25lIiBzdHJva2U9IiM1ZjJhNjIiIHN0cm9rZS13aWR0aD0iMiI+DQogIDxhbmltYXRlIGF0dHJpYnV0ZU5hbWU9InIiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjEuMjY1ODIyNzg0ODEwMTI2NHMiIHZhbHVlcz0iMDs0NCIga2V5VGltZXM9IjA7MSIga2V5U3BsaW5lcz0iMCAwLjIgMC44IDEiIGNhbGNNb2RlPSJzcGxpbmUiIGJlZ2luPSItMC42MzI5MTEzOTI0MDUwNjMycyI+PC9hbmltYXRlPg0KICA8YW5pbWF0ZSBhdHRyaWJ1dGVOYW1lPSJvcGFjaXR5IiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgZHVyPSIxLjI2NTgyMjc4NDgxMDEyNjRzIiB2YWx1ZXM9IjE7MCIga2V5VGltZXM9IjA7MSIga2V5U3BsaW5lcz0iMC4yIDAgMC44IDEiIGNhbGNNb2RlPSJzcGxpbmUiIGJlZ2luPSItMC42MzI5MTEzOTI0MDUwNjMycyI+PC9hbmltYXRlPg0KPC9jaXJjbGU+DQo8Y2lyY2xlIGN4PSI1MCIgY3k9IjUwIiByPSIzNS44MTY1IiBmaWxsPSJub25lIiBzdHJva2U9IiNhOTc2YzMiIHN0cm9rZS13aWR0aD0iMiI+DQogIDxhbmltYXRlIGF0dHJpYnV0ZU5hbWU9InIiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjEuMjY1ODIyNzg0ODEwMTI2NHMiIHZhbHVlcz0iMDs0NCIga2V5VGltZXM9IjA7MSIga2V5U3BsaW5lcz0iMCAwLjIgMC44IDEiIGNhbGNNb2RlPSJzcGxpbmUiPjwvYW5pbWF0ZT4NCiAgPGFuaW1hdGUgYXR0cmlidXRlTmFtZT0ib3BhY2l0eSIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGR1cj0iMS4yNjU4MjI3ODQ4MTAxMjY0cyIgdmFsdWVzPSIxOzAiIGtleVRpbWVzPSIwOzEiIGtleVNwbGluZXM9IjAuMiAwIDAuOCAxIiBjYWxjTW9kZT0ic3BsaW5lIj48L2FuaW1hdGU+DQo8L2NpcmNsZT4NCjwvc3ZnPg==`,\r\n img_logout: `data:image/png;base64,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`,\r\n img_dissconnection: `data:image/png;base64,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`,\r\n img_deny: `data:image/png;base64,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`,\r\n }\r\n },\r\n computed: {\r\n\r\n connState: function() {\r\n //console.log('computed loading')\r\n\r\n let vo = this\r\n\r\n return get(vo, `$store.state.connState`)\r\n },\r\n\r\n },\r\n methods: {\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n</style>\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LayoutState.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LayoutState.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./LayoutState.vue?vue&type=template&id=7f6340a0&scoped=true\"\nimport script from \"./LayoutState.vue?vue&type=script&lang=js\"\nexport * from \"./LayoutState.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7f6340a0\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticStyle:{\"height\":\"100svh\",\"background\":\"#f5f5f5\"}},[_c('div',{style:(`height:${_vm.heightToolbar}px; overflow-y:hidden; padding:0px 10px; background:#fff; border-bottom:1px solid #ccc; display:flex; align-items:center;`)},[_c('div',{staticStyle:{\"padding-left\":\"5px\",\"white-space\":\"nowrap\"}},[_c('div',{staticStyle:{\"display\":\"flex\",\"align-items\":\"center\"}},[(_vm.webLogo)?_c('div',{staticStyle:{\"padding-right\":\"10px\",\"display\":\"flex\",\"align-items\":\"center\"}},[_c('img',{staticStyle:{\"width\":\"36px\",\"_min-width\":\"36px\",\"height\":\"36px\"},attrs:{\"src\":_vm.webLogo}})]):_vm._e(),_c('div',[_c('div',{staticStyle:{\"font-size\":\"1.2rem\",\"color\":\"#000\"}},[_vm._v(_vm._s(_vm.webName))]),_c('div',{staticStyle:{\"font-size\":\"0.8rem\",\"color\":\"#666\"}},[_vm._v(_vm._s(_vm.$t('webDescription')))])])])]),_c('div',{staticStyle:{\"width\":\"100%\"}}),(_vm.showLangSelect)?_c('div',{staticStyle:{\"padding-right\":\"10px\",\"white-space\":\"nowrap\"}},[_c('WTextSelect',{staticStyle:{\"width\":\"100px\"},attrs:{\"items\":_vm.keysLang,\"value\":_vm.lang},on:{\"input\":_vm.toggleLang},scopedSlots:_vm._u([{key:\"select\",fn:function(props){return [_vm._v(\" \"+_vm._s(_vm.getLangText(props.item))+\" \")]}},{key:\"item\",fn:function(props){return [_vm._v(\" \"+_vm._s(_vm.getLangText(props.item))+\" \")]}}],null,false,2218956916)})],1):_vm._e()]),_c('div',{style:(`height:calc( 100% - ${_vm.heightToolbar}px );`)},[_c('LayoutContent')],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{directives:[{name:\"domresize\",rawName:\"v-domresize\"}],staticStyle:{\"height\":\"100%\",\"width\":\"100%\"},on:{\"domresize\":_vm.resize}},[(_vm.syncState)?[_c('WDrawer',{style:(`height:${_vm.panelHeight}px; width:100%;`),attrs:{\"drawerWidth\":_vm.drawerWidth,\"drawerWidthMin\":_vm.drawerWidthMin,\"drawerWidthMax\":_vm.drawerWidthMax,\"mode\":'from-left',\"dragDrawerWidth\":true,\"autoSwitchToHide\":true,\"autoSwitchToShow\":true,\"autoSwitchToFloat\":true,\"switchWidth\":_vm.drawerWidth*2.3},on:{\"update:drawerWidth\":function($event){_vm.drawerWidth=$event},\"update:drawer-width\":function($event){_vm.drawerWidth=$event}},scopedSlots:_vm._u([{key:\"drawer\",fn:function(props){return [_c('div',{style:(`height:${props.height}px; background:#fff; position:relative;`)},[_c('WListVertical',{staticStyle:{\"height\":\"100%\"},attrs:{\"items\":_vm.menus,\"itemActive\":_vm.menuActive,\"item-text-color\":'#222',\"item-text-color-hover\":'#444',\"item-text-color-active\":'#E65100',\"item-icon-color\":'#222',\"item-icon-color-hover\":'#444',\"item-icon-color-active\":'#F57C00',\"item-background-color\":'#fff',\"item-background-color-hover\":'#f6f6f6',\"item-background-color-active\":'#fff3e0',\"paddingStyle\":{v:15,h:15}},on:{\"click\":(menu)=>{_vm.menuKey=menu.key}}}),(_vm.drawer)?_c('div',{style:(`position:absolute; top:2px; right:4px;`)},[_c('WButtonCircle',{attrs:{\"paddingStyle\":{h:2,v:2},\"icon\":_vm.mdiArrowLeftBoldHexagonOutline,\"iconSize\":20,\"backgroundColor\":'rgba(255,255,255,0.1)',\"backgroundColorHover\":'rgba(255,255,255,0.4)',\"backgroundColorFocus\":'rgba(255,255,255,0.7)',\"borderColor\":'transparent',\"borderColorHover\":'transparent',\"borderColorFocus\":'transparent',\"_tooltip\":\"$t('menuTreeHide')\",\"shadow\":false},on:{\"click\":function($event){_vm.drawer=false}}})],1):_vm._e()],1)]}},{key:\"content\",fn:function(props){return [_c('div',{style:(`height:${props.height}px; width:${props.width}px; position:relative;`)},[[(_vm.menuKey==='mmTargets')?_c('LayoutContentTargets',{attrs:{\"drawer\":_vm.drawer}}):_vm._e(),(_vm.menuKey==='mmPemis')?_c('LayoutContentPemis',{attrs:{\"drawer\":_vm.drawer}}):_vm._e(),(_vm.menuKey==='mmGrups')?_c('LayoutContentGrups',{attrs:{\"drawer\":_vm.drawer}}):_vm._e(),(_vm.menuKey==='mmUsers')?_c('LayoutContentUsers',{attrs:{\"drawer\":_vm.drawer}}):_vm._e()],(!_vm.drawer)?_c('div',{style:(`position:absolute; top:3px; left:5px;`)},[_c('WButtonCircle',{attrs:{\"paddingStyle\":{h:2,v:2},\"icon\":_vm.mdiArrowRightBoldHexagonOutline,\"iconSize\":20,\"backgroundColor\":'rgba(255,255,255,0.1)',\"backgroundColorHover\":'rgba(255,255,255,0.4)',\"backgroundColorFocus\":'rgba(255,255,255,0.7)',\"borderColor\":'transparent',\"borderColorHover\":'transparent',\"borderColorFocus\":'transparent',\"_tooltip\":\"$t('menuTreeShow')\",\"shadow\":false},on:{\"click\":function($event){_vm.drawer=true}}})],1):_vm._e()],2)]}}],null,false,879892180),model:{value:(_vm.drawer),callback:function ($$v) {_vm.drawer=$$v},expression:\"drawer\"}})]:_c('div',{staticStyle:{\"padding\":\"20px\",\"font-size\":\"0.9rem\"}},[_vm._v(\" \"+_vm._s(_vm.$t('waitingData'))+\" \")])],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{directives:[{name:\"domresize\",rawName:\"v-domresize\"}],staticStyle:{\"height\":\"100%\"},attrs:{\"changeParams\":_vm.changeParams},on:{\"domresize\":_vm.resizePanel}},[_c('div',{directives:[{name:\"domresize\",rawName:\"v-domresize\"}],staticStyle:{\"_border-bottom\":\"1px solid #ddd\",\"background\":\"#fff\"},on:{\"domresize\":_vm.resizeHead}},[_c('div',{staticStyle:{\"padding\":\"10px 10px 10px 20px\"}},[_c('div',{style:(`display:flex; align-items:center; padding:${_vm.drawer?'5px':'5px 5px 5px 20px'};`)},[_c('WIcon',{attrs:{\"icon\":_vm.mdiGamepadCircle,\"color\":'#000',\"size\":32}}),_c('div',{staticStyle:{\"padding-left\":\"12px\"}},[_c('div',{staticStyle:{\"font-size\":\"1.4rem\",\"color\":\"#000\"}},[_vm._v(\" \"+_vm._s(_vm.$t('mmTargets'))+\" \")]),_c('div',{staticStyle:{\"padding-top\":\"2px\",\"font-size\":\"0.8rem\",\"color\":\"#666\"}},[_vm._v(\" \"+_vm._s(_vm.$t('mmTargetsMsg'))+\" \")])])],1)]),_c('div',{staticStyle:{\"padding\":\"5px\",\"border-top\":\"1px solid #ddd\",\"display\":\"flex\",\"align-items\":\"center\"},attrs:{\"_v-if\":\"showIsEditable || isEditable\"}},[(_vm.showIsEditable)?[_c('div',{staticStyle:{\"padding\":\"6px 0px 4px 4px\"}},[_c('WSwitch',{attrs:{\"checkedSwitchCircleColor\":'#F68200',\"checkedSwitchCircleColorHover\":'#FB8C00',\"checkedSwitchBarColor\":'#FFE0B2',\"checkedSwitchBarColorHover\":'#FFE6B8',\"text\":_vm.$t('modeEdit')},model:{value:(_vm.isEditable),callback:function ($$v) {_vm.isEditable=$$v},expression:\"isEditable\"}})],1),_c('div',{staticStyle:{\"padding-left\":\"10px\"}})]:_vm._e(),(true)?[_c('WPopup',{attrs:{\"isolated\":true,\"_show\":\"\",\"_hide\":\"\"},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('showTabCols'),\"icon\":_vm.mdiTableHeadersEye,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"_textColor\":\"'#eee'\",\"_textColorHover\":\"'#fff'\",\"iconColor\":'#444',\"iconColorHover\":'#222',\"shadow\":false,\"_click\":\"\"}})]},proxy:true},{key:\"content\",fn:function(){return [_c('div',{staticStyle:{\"padding\":\"10px 0px 10px 0px\"}},[_c('div',{staticStyle:{\"padding\":\"7px 10px\",\"font-size\":\"0.85rem\",\"color\":\"#222\",\"background\":\"#f2f2f2\"}},[_vm._v(\" \"+_vm._s(_vm.$t('showTabCols'))+\" \")]),_c('div',{staticStyle:{\"padding\":\"7px 9px 0px 7px\"}},[_c('WInputCheckbox',{attrs:{\"items\":_vm.tabKeysPick},on:{\"input\":_vm.toggleTabKeys},scopedSlots:_vm._u([{key:\"default\",fn:function(props){return [_c('div',{staticStyle:{\"padding-left\":\"3px\",\"display\":\"flex\",\"align-items\":\"center\",\"font-size\":\"0.85rem\",\"height\":\"24px\",\"cursor\":\"pointer\"}},[_vm._v(\" \"+_vm._s(_vm.getHead(props.item.data))+\" \")])]}}],null,false,286315898),model:{value:(_vm.tabKeysShow),callback:function ($$v) {_vm.tabKeysShow=$$v},expression:\"tabKeysShow\"}})],1)])]},proxy:true}],null,false,1031542656)}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})]:_vm._e(),(_vm.isEditable)?[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('targetAdd'),\"icon\":_vm.mdiPlus,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"_textColor\":\"'#eee'\",\"_textColorHover\":\"'#fff'\",\"iconColor\":'#444',\"iconColorHover\":'#222',\"shadow\":false},on:{\"click\":_vm.addItem}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})]:_vm._e(),(_vm.isEditable && _vm.hasItemCheckOne)?[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('targetCopy'),\"icon\":_vm.mdiContentCopy,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"_textColor\":\"'#eee'\",\"_textColorHover\":\"'#fff'\",\"iconColor\":'#444',\"iconColorHover\":'#222',\"shadow\":false},on:{\"click\":_vm.copyItem}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})]:_vm._e(),(_vm.isEditable && _vm.hasItemsCheck)?[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('targetDeleteCheckTargets'),\"icon\":_vm.mdiTrashCanOutline,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"_textColor\":\"'#eee'\",\"_textColorHover\":\"'#fff'\",\"iconColor\":'#444',\"iconColorHover\":'#222',\"shadow\":false},on:{\"click\":_vm.deleteItemsCheck}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})]:_vm._e(),(_vm.isEditable && _vm.isModified)?[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('saveChanges'),\"icon\":_vm.mdiCloudUploadOutline,\"backgroundColor\":'rgba(255,0,50,0.7)',\"backgroundColorHover\":'rgba(255,0,50,0.8)',\"textColor\":'#eee',\"textColorHover\":'#fff',\"iconColor\":'#eee',\"iconColorHover\":'#fff',\"shadow\":false},on:{\"click\":_vm.saveTargets}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})]:_vm._e()],2)]),(!_vm.firstLoading)?[(_vm.items)?[_c('WAggridVueDyn',{ref:\"rftable\",style:(`width:100%;`),attrs:{\"height\":_vm.contentHeight,\"opt\":_vm.opt}})]:_vm._e()]:_c('div',{staticStyle:{\"padding\":\"10px 15px\",\"font-size\":\"0.8rem\"}},[_vm._v(\" \"+_vm._s(_vm.$t('waitingData'))+\" \")])],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div\r\n style=\"height:100%;\"\r\n v-domresize\r\n @domresize=\"resizePanel\"\r\n :changeParams=\"changeParams\"\r\n >\r\n\r\n <div\r\n style=\"_border-bottom:1px solid #ddd; background:#fff;\"\r\n v-domresize\r\n @domresize=\"resizeHead\"\r\n >\r\n\r\n <!-- 標題區 -->\r\n <div style=\"padding:10px 10px 10px 20px;\">\r\n <div :style=\"`display:flex; align-items:center; padding:${drawer?'5px':'5px 5px 5px 20px'};`\">\r\n\r\n <WIcon\r\n :icon=\"mdiGamepadCircle\"\r\n :color=\"'#000'\"\r\n :size=\"32\"\r\n ></WIcon>\r\n\r\n <div style=\"padding-left:12px;\">\r\n\r\n <div style=\"font-size:1.4rem; color:#000;\">\r\n {{$t('mmTargets')}}\r\n </div>\r\n\r\n <div style=\"padding-top:2px; font-size:0.8rem; color:#666;\">\r\n {{$t('mmTargetsMsg')}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <!-- 功能區 -->\r\n <div\r\n style=\"padding:5px; border-top:1px solid #ddd; display:flex; align-items:center;\"\r\n _v-if=\"showIsEditable || isEditable\"\r\n >\r\n\r\n <template v-if=\"showIsEditable\">\r\n\r\n <div style=\"padding:6px 0px 4px 4px;\">\r\n <WSwitch\r\n :checkedSwitchCircleColor=\"'#F68200'\"\r\n :checkedSwitchCircleColorHover=\"'#FB8C00'\"\r\n :checkedSwitchBarColor=\"'#FFE0B2'\"\r\n :checkedSwitchBarColorHover=\"'#FFE6B8'\"\r\n v-model=\"isEditable\"\r\n :text=\"$t('modeEdit')\"\r\n ></WSwitch>\r\n </div>\r\n\r\n <div style=\"padding-left:10px;\"></div>\r\n\r\n </template>\r\n\r\n <template v-if=\"true\">\r\n\r\n <WPopup\r\n :isolated=\"true\"\r\n _show=\"\"\r\n _hide=\"\"\r\n >\r\n <template v-slot:trigger>\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('showTabCols')\"\r\n :icon=\"mdiTableHeadersEye\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n _textColor=\"'#eee'\"\r\n _textColorHover=\"'#fff'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :shadow=\"false\"\r\n _click=\"\"\r\n ></WButtonCircle>\r\n </template>\r\n\r\n <template v-slot:content>\r\n <div style=\"padding:10px 0px 10px 0px;\">\r\n\r\n <div style=\"padding:7px 10px; font-size:0.85rem; color:#222; background:#f2f2f2;\">\r\n {{$t('showTabCols')}}\r\n </div>\r\n\r\n <div style=\"padding:7px 9px 0px 7px;\">\r\n <WInputCheckbox\r\n :items=\"tabKeysPick\"\r\n v-model=\"tabKeysShow\"\r\n @input=\"toggleTabKeys\"\r\n >\r\n <template v-slot=\"props\">\r\n <div style=\"padding-left:3px; display:flex; align-items:center; font-size:0.85rem; height:24px; cursor:pointer;\">\r\n {{getHead(props.item.data)}}\r\n </div>\r\n </template>\r\n </WInputCheckbox>\r\n </div>\r\n\r\n </div>\r\n </template>\r\n </WPopup>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n <template v-if=\"isEditable\">\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('targetAdd')\"\r\n :icon=\"mdiPlus\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n _textColor=\"'#eee'\"\r\n _textColorHover=\"'#fff'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :shadow=\"false\"\r\n @click=\"addItem\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n <template v-if=\"isEditable && hasItemCheckOne\">\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('targetCopy')\"\r\n :icon=\"mdiContentCopy\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n _textColor=\"'#eee'\"\r\n _textColorHover=\"'#fff'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :shadow=\"false\"\r\n @click=\"copyItem\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n <template v-if=\"isEditable && hasItemsCheck\">\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('targetDeleteCheckTargets')\"\r\n :icon=\"mdiTrashCanOutline\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n _textColor=\"'#eee'\"\r\n _textColorHover=\"'#fff'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :shadow=\"false\"\r\n @click=\"deleteItemsCheck\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n <template v-if=\"isEditable && isModified\">\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('saveChanges')\"\r\n :icon=\"mdiCloudUploadOutline\"\r\n :backgroundColor=\"'rgba(255,0,50,0.7)'\"\r\n :backgroundColorHover=\"'rgba(255,0,50,0.8)'\"\r\n :textColor=\"'#eee'\"\r\n :textColorHover=\"'#fff'\"\r\n :iconColor=\"'#eee'\"\r\n :iconColorHover=\"'#fff'\"\r\n :shadow=\"false\"\r\n @click=\"saveTargets\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n <template\r\n v-if=\"!firstLoading\"\r\n >\r\n\r\n <template v-if=\"items\">\r\n <WAggridVueDyn\r\n ref=\"rftable\"\r\n :style=\"`width:100%;`\"\r\n :height=\"contentHeight\"\r\n :opt=\"opt\"\r\n >\r\n </WAggridVueDyn>\r\n </template>\r\n\r\n </template>\r\n\r\n <div\r\n style=\"padding:10px 15px; font-size:0.8rem;\"\r\n v-else\r\n >\r\n {{$t('waitingData')}}\r\n </div>\r\n\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport { mdiGamepadCircle, mdiStackOverflow, mdiAccountGroupOutline, mdiBallotRecountOutline, mdiCloudUploadOutline, mdiTrashCanOutline, mdiTableHeadersEye, mdiPlus, mdiPencilOutline, mdiContentCopy } from '@mdi/js/mdi.js'\r\nimport get from 'lodash-es/get.js'\r\nimport each from 'lodash-es/each.js'\r\nimport size from 'lodash-es/size.js'\r\nimport filter from 'lodash-es/filter.js'\r\nimport sortBy from 'lodash-es/sortBy.js'\r\nimport cloneDeep from 'lodash-es/cloneDeep.js'\r\nimport haskey from 'wsemi/src/haskey.mjs'\r\nimport isestr from 'wsemi/src/isestr.mjs'\r\nimport iseobj from 'wsemi/src/iseobj.mjs'\r\nimport isnum from 'wsemi/src/isnum.mjs'\r\nimport cdbl from 'wsemi/src/cdbl.mjs'\r\nimport cstr from 'wsemi/src/cstr.mjs'\r\nimport arrPull from 'wsemi/src/arrPull.mjs'\r\nimport WIcon from 'w-component-vue/src/components/WIcon.vue'\r\nimport WSwitch from 'w-component-vue/src/components/WSwitch.vue'\r\nimport WButtonCircle from 'w-component-vue/src/components/WButtonCircle.vue'\r\nimport WPopup from 'w-component-vue/src/components/WPopup.vue'\r\nimport WInputCheckbox from 'w-component-vue/src/components/WInputCheckbox.vue'\r\nimport WAggridVueDyn from 'w-component-vue/src/components/WAggridVueDyn.vue'\r\n\r\n\r\nexport default {\r\n components: {\r\n WIcon,\r\n WSwitch,\r\n WButtonCircle,\r\n WPopup,\r\n WInputCheckbox,\r\n WAggridVueDyn,\r\n },\r\n props: {\r\n drawer: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n data: function() {\r\n return {\r\n mdiGamepadCircle,\r\n mdiStackOverflow,\r\n mdiAccountGroupOutline,\r\n mdiBallotRecountOutline,\r\n mdiCloudUploadOutline,\r\n mdiTrashCanOutline,\r\n mdiTableHeadersEye,\r\n mdiPlus,\r\n mdiPencilOutline,\r\n mdiContentCopy,\r\n\r\n panelWidth: 100,\r\n panelHeight: 100,\r\n headHeight: 100,\r\n\r\n firstLoading: true,\r\n firstSetting: true,\r\n showIsEditable: false,\r\n isEditable: false,\r\n isModified: false,\r\n\r\n tabKeys: [\r\n 'id',\r\n 'description',\r\n 'from',\r\n 'userId',\r\n 'timeCreate',\r\n 'userIdUpdate',\r\n 'timeUpdate',\r\n ],\r\n tabKeysPick: [\r\n 'id',\r\n 'description',\r\n 'from',\r\n 'userId',\r\n 'timeCreate',\r\n 'userIdUpdate',\r\n 'timeUpdate',\r\n ],\r\n tabKeysShow: [\r\n 'id',\r\n 'description',\r\n // 'from',\r\n // 'userId',\r\n // 'timeCreate',\r\n // 'userIdUpdate',\r\n // 'timeUpdate',\r\n ],\r\n\r\n widthTargetId: null,\r\n widthTargetDescription: null,\r\n\r\n items: [],\r\n itemsCheck: [],\r\n opt: null,\r\n\r\n }\r\n },\r\n mounted: function() {\r\n // console.log('mounted')\r\n\r\n let vo = this\r\n\r\n //firstSetting\r\n if (vo.firstSetting) {\r\n // console.log('webInfor', vo.webInfor)\r\n\r\n let showModeEditTargets = get(vo, 'webInfor.showModeEditTargets', '')\r\n vo.showIsEditable = showModeEditTargets === 'y'\r\n let modeEditTargets = get(vo, 'webInfor.modeEditTargets', '')\r\n vo.isEditable = modeEditTargets === 'y'\r\n\r\n vo.widthTargetId = get(vo, 'webInfor.widthTargetId', '')\r\n vo.widthTargetDescription = get(vo, 'webInfor.widthTargetDescription', '')\r\n\r\n vo.firstSetting = false\r\n }\r\n\r\n },\r\n computed: {\r\n\r\n webInfor: function() {\r\n let wi = get(this, `$store.state.webInfor`)\r\n return wi\r\n },\r\n\r\n targets: function() {\r\n let rs = get(this, `$store.state.targets`)\r\n rs = sortBy(rs, 'order')\r\n return rs\r\n },\r\n\r\n pemis: function() {\r\n let rs = get(this, `$store.state.pemis`)\r\n rs = sortBy(rs, 'order')\r\n return rs\r\n },\r\n\r\n grups: function() {\r\n let rs = get(this, `$store.state.grups`)\r\n rs = sortBy(rs, 'order')\r\n return rs\r\n },\r\n\r\n users: function() {\r\n let rs = get(this, `$store.state.users`)\r\n rs = sortBy(rs, 'order')\r\n return rs\r\n },\r\n\r\n changeParams: function() {\r\n // console.log('computed changeParams')\r\n\r\n let vo = this\r\n\r\n //trigger\r\n let isEditable = vo.isEditable\r\n\r\n //items\r\n let items = cloneDeep(vo.targets)\r\n\r\n //save\r\n vo.items = items\r\n\r\n //genOpt\r\n vo.genOpt({ isEditable })\r\n\r\n //firstLoading\r\n vo.firstLoading = false\r\n\r\n return ''\r\n },\r\n\r\n contentHeight: function() {\r\n let vo = this\r\n\r\n //h\r\n let h = vo.panelHeight - vo.headHeight\r\n h = Math.max(h, 0)\r\n\r\n return h\r\n },\r\n\r\n hasItemsCheck: function() {\r\n let vo = this\r\n\r\n //h\r\n let b = vo.itemsCheck.length > 0\r\n\r\n return b\r\n },\r\n\r\n hasItemCheckOne: function() {\r\n let vo = this\r\n\r\n //h\r\n let b = size(vo.itemsCheck) === 1\r\n\r\n return b\r\n },\r\n\r\n errItemsById: function() {\r\n let vo = this\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //kpErr\r\n let kpErr = {}\r\n let kpId = {}\r\n each(rows, (v, k) => {\r\n\r\n //id\r\n let id = get(v, 'id', '')\r\n\r\n //check\r\n if (!isestr(id)) {\r\n\r\n //kpErr\r\n kpErr[id] = vo.$t(`targetIdEmpty`)\r\n\r\n return true //跳出換下一個\r\n }\r\n\r\n //check\r\n if (haskey(kpId, id)) {\r\n\r\n //kpErr\r\n kpErr[id] = vo.$t(`targetIdDuplicate`)\r\n\r\n return true //跳出換下一個\r\n }\r\n\r\n //kpId\r\n kpId[id] = true\r\n\r\n })\r\n\r\n return kpErr\r\n },\r\n\r\n isError: function() {\r\n let vo = this\r\n\r\n let c = ''\r\n let b = false\r\n b = iseobj(vo.errItemsByName)\r\n if (b) {\r\n c = vo.$t('errInNames')\r\n }\r\n\r\n return c\r\n },\r\n\r\n kpHead: function() {\r\n let vo = this\r\n\r\n let kp = {\r\n 'id': vo.$t('targetId'),\r\n 'description': vo.$t('description'),\r\n 'from': vo.$t('from'),\r\n 'userId': vo.$t('userId'),\r\n 'timeCreate': vo.$t('timeCreate'),\r\n 'userIdUpdate': vo.$t('userIdUpdate'),\r\n 'timeUpdate': vo.$t('timeUpdate'),\r\n }\r\n\r\n return kp\r\n },\r\n\r\n },\r\n methods: {\r\n\r\n resizePanel: function(msg) {\r\n // console.log('methods resizePanel', msg)\r\n\r\n let vo = this\r\n\r\n //panelWidth, panelHeight\r\n vo.panelWidth = msg.snew.offsetWidth\r\n vo.panelHeight = msg.snew.offsetHeight\r\n\r\n },\r\n\r\n resizeHead: function(msg) {\r\n // console.log('methods resizeHead', msg)\r\n\r\n let vo = this\r\n\r\n //headHeight\r\n vo.headHeight = msg.snew.offsetHeight\r\n\r\n },\r\n\r\n getHead: function(key) {\r\n // console.log('methods getHead', key)\r\n\r\n let vo = this\r\n\r\n let head = get(vo, `kpHead.${key}`, '')\r\n\r\n return head\r\n },\r\n\r\n genOpt: function() {\r\n // console.log('methods genOpt')\r\n\r\n let vo = this\r\n\r\n //default\r\n vo.itemsCheck = []\r\n\r\n //opt\r\n let opt = null\r\n if (size(vo.items) > 0) {\r\n\r\n //ks\r\n let ks = vo.tabKeys\r\n // console.log('ks', ks)\r\n\r\n //kpHead\r\n let kpHead = vo.kpHead\r\n\r\n //kpCellEditable, kpRowDrag, kpHeadCheckBox\r\n let kpCellEditable = {}\r\n let kpRowDrag = {}\r\n let kpHeadCheckBox = {}\r\n if (vo.isEditable) {\r\n kpCellEditable = {\r\n 'id': true,\r\n 'description': true,\r\n 'from': true,\r\n }\r\n kpRowDrag = {\r\n 'id': true,\r\n }\r\n kpHeadCheckBox = {\r\n 'id': true,\r\n }\r\n }\r\n\r\n //kpHeadHide\r\n let kpHeadHide = {}\r\n if (true) {\r\n let tabKeysHide = arrPull(vo.tabKeysPick, vo.tabKeysShow)\r\n each(tabKeysHide, (k) => {\r\n kpHeadHide[k] = true\r\n })\r\n }\r\n\r\n //opt\r\n opt = {\r\n language: vo.$t('aggridLanguage'),\r\n rows: vo.items,\r\n keys: ks,\r\n kpHead,\r\n // autoFitColumn: true,\r\n defCellEditable: false, //vo.isEditable,\r\n defHeadFilter: true,\r\n defCellAlignH: 'left',\r\n kpHeadHide,\r\n kpHeadFixLeft: {\r\n 'id': true,\r\n },\r\n defHeadMinWidth: 150,\r\n kpHeadWidth: {\r\n 'id': isnum(vo.widthTargetId) ? cdbl(vo.widthTargetId) : 600,\r\n 'description': isnum(vo.widthTargetId) ? cdbl(vo.widthTargetId) : 600,\r\n 'timeCreate': 220,\r\n 'timeUpdate': 220,\r\n },\r\n kpHeadFilterType: {\r\n 'id': 'text',\r\n 'description': 'text',\r\n 'from': 'text',\r\n 'userId': 'text',\r\n 'timeCreate': 'text',\r\n 'userIdUpdate': 'text',\r\n 'timeUpdate': 'text',\r\n },\r\n kpCellEditable,\r\n kpRowDrag,\r\n kpHeadCheckBox,\r\n kpCellRender: {\r\n 'id': (v) => {\r\n // console.log('kpCellRender', v)\r\n\r\n //err\r\n let err = get(vo.errItemsById, v, '')\r\n // console.log(v, err)\r\n\r\n //check\r\n if (isestr(err)) {\r\n v = `\r\n <span title=\"${err}\">\r\n <span style=\"color:#F57C00;\">${cstr(v)}</span>\r\n <img style=\"vertical-align:sub; width:16px; height:16px;\" src=\"${vo.$ui.getIcon('warning')}\" />\r\n </span>\r\n `\r\n }\r\n\r\n return v\r\n },\r\n },\r\n // kpCellTooltip: {\r\n // 'id': (v) => {\r\n // // console.log('kpCellTooltip', v)\r\n\r\n // //err\r\n // let err = get(vo.errItemsById, v, '')\r\n // // console.log(v, err)\r\n\r\n // //check\r\n // let t = ''\r\n // if (isestr(err)) {\r\n // t = err\r\n // }\r\n\r\n // return t\r\n // },\r\n // },\r\n rowsChange: (rs) => {\r\n // console.log('rowsChange', rs)\r\n // console.log('rowsChange cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n rowChecked: (rs) => {\r\n // console.log('rowChecked', rs)\r\n // console.log('rowChecked cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\r\n\r\n //save itemsCheck\r\n vo.itemsCheck = cloneDeep(rs)\r\n\r\n },\r\n }\r\n // console.log('opt', opt)\r\n\r\n }\r\n\r\n //save\r\n vo.opt = opt\r\n\r\n },\r\n\r\n refresh: function() {\r\n let vo = this\r\n\r\n //cmp\r\n let cmp = get(vo, '$refs.rftable.$refs.$self')\r\n // console.log('cmp', cmp)\r\n\r\n //refresh, 因set不會觸發kpCellRender, 故須另外調用組件函數refresh, 進而觸發kpCellRender, 使能更新數據\r\n cmp.refresh()\r\n\r\n },\r\n\r\n toggleTabKeys: function() {\r\n let vo = this\r\n\r\n //cmp\r\n let cmp = get(vo, '$refs.rftable.$refs.$self')\r\n // console.log('cmp', cmp)\r\n\r\n //showKeys\r\n cmp.showKeys(vo.tabKeysShow)\r\n // console.log('tabKeysShow', vo.tabKeysShow)\r\n\r\n },\r\n\r\n addItem: function() {\r\n // console.log('method addItem')\r\n\r\n let vo = this\r\n\r\n //cloneDeep\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //cloneDeep\r\n rows = cloneDeep(rows)\r\n\r\n //r\r\n let r = vo.$ds.targets.funNew()\r\n r.id = vo.$s.getNameNew(rows, 'id', '', vo.$t('targetAddNameNew'))\r\n r.userId = `{${vo.$t('targetAddIdNew')}}`\r\n r.timeCreate = `{${vo.$t('targetAddIdNew')}}`\r\n r.userIdUpdate = `{${vo.$t('targetAddIdNew')}}`\r\n r.timeUpdate = `{${vo.$t('targetAddIdNew')}}`\r\n // console.log('r', r)\r\n\r\n //添加至最首\r\n rows = [\r\n r,\r\n ...rows,\r\n ]\r\n\r\n //save\r\n vo.opt.rows = rows\r\n // console.log('cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n copyItem: function() {\r\n // console.log('method copyItem')\r\n\r\n let vo = this\r\n\r\n //check\r\n if (size(vo.itemsCheck) !== 1) {\r\n console.log(`size(vo.itemsCheck) !== 1`, vo.itemsCheck)\r\n vo.$alert(`${vo.$t('anUnexpectedErrorOccurred')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //cloneDeep\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //cloneDeep\r\n rows = cloneDeep(rows)\r\n\r\n //find\r\n let tar = vo.itemsCheck[0]\r\n let tarId = get(tar, 'data.id', '')\r\n let row = null\r\n each(rows, (v) => {\r\n let id = get(v, 'id', '')\r\n if (id === tarId) {\r\n row = v\r\n return false //跳出\r\n }\r\n })\r\n // console.log('tar', tar)\r\n // console.log('row', row)\r\n\r\n //check\r\n if (!iseobj(row)) {\r\n console.log(`!iseobj(row)`, row)\r\n vo.$alert(`${vo.$t('anUnexpectedErrorOccurred')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //r\r\n let r = cloneDeep(row)\r\n let nameOld = r.id\r\n let _r = vo.$ds.targets.funNew()\r\n r.id = _r.id //使用新建方式預先產生id避免重複\r\n r.id = vo.$s.getNameNew(rows, 'id', nameOld, vo.$t('targetCopyNameNew'))\r\n r.userId = `{${vo.$t('targetAddIdNew')}}`\r\n r.timeCreate = `{${vo.$t('targetAddIdNew')}}`\r\n r.userIdUpdate = `{${vo.$t('targetAddIdNew')}}`\r\n r.timeUpdate = `{${vo.$t('targetAddIdNew')}}`\r\n // console.log('r', r)\r\n\r\n //添加至最首\r\n rows = [\r\n r,\r\n ...rows,\r\n ]\r\n\r\n //save\r\n vo.opt.rows = rows\r\n // console.log('cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n deleteItemsCheck: function() {\r\n // console.log('method deleteItemsCheck')\r\n\r\n let vo = this\r\n\r\n //check\r\n if (size(vo.itemsCheck) === 0) {\r\n return\r\n }\r\n\r\n //cloneDeep\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //cloneDeep\r\n rows = cloneDeep(rows)\r\n\r\n //filter\r\n each(vo.itemsCheck, (v) => {\r\n // console.log('v', v)\r\n let id = get(v, 'data.id', '')\r\n if (!isestr(id)) {\r\n console.log(`invalid id`)\r\n return true //跳出換下一個\r\n }\r\n rows = filter(rows, (vv) => {\r\n return vv.id !== id\r\n })\r\n })\r\n\r\n //clear\r\n vo.itemsCheck = []\r\n\r\n //save\r\n vo.opt.rows = rows\r\n // console.log('deleteItemsCheck cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n saveTargets: function() {\r\n // console.log('method saveTargets')\r\n\r\n let vo = this\r\n\r\n async function core() {\r\n let errTemp = null\r\n\r\n //show loading\r\n vo.$ui.updateLoading(true)\r\n\r\n //check\r\n if (isestr(vo.isError)) {\r\n vo.$alert(`${vo.isError}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //check\r\n if (size(rows) === 0) {\r\n vo.$alert(`${vo.$t('targetAddEmpty')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //updateTargets\r\n await vo.$fapi.updateTargets(rows)\r\n .catch((err) => {\r\n errTemp = err\r\n })\r\n\r\n //check\r\n if (errTemp !== null) {\r\n vo.$alert(`${vo.$t('targetSaveTargetsFail')}: ${errTemp}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //isModified\r\n vo.isModified = false\r\n\r\n //alert\r\n vo.$alert(vo.$t('targetSaveTargetsSuccess'))\r\n\r\n }\r\n\r\n //core\r\n core()\r\n // .then((res) => {\r\n // console.log('then', res)\r\n // })\r\n .catch((err) => {\r\n console.log('catch', err)\r\n vo.$alert(vo.$t('anUnexpectedErrorOccurred'), { type: 'error' })\r\n })\r\n .finally(() => {\r\n\r\n //hide loading\r\n vo.$ui.updateLoading(false)\r\n\r\n })\r\n\r\n },\r\n\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n</style>\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LayoutContentTargets.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LayoutContentTargets.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./LayoutContentTargets.vue?vue&type=template&id=9e00f8d6&scoped=true\"\nimport script from \"./LayoutContentTargets.vue?vue&type=script&lang=js\"\nexport * from \"./LayoutContentTargets.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"9e00f8d6\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{directives:[{name:\"domresize\",rawName:\"v-domresize\"}],staticStyle:{\"height\":\"100%\"},attrs:{\"changeParams\":_vm.changeParams},on:{\"domresize\":_vm.resizePanel}},[_c('div',{directives:[{name:\"domresize\",rawName:\"v-domresize\"}],staticStyle:{\"_border-bottom\":\"1px solid #ddd\",\"background\":\"#fff\"},on:{\"domresize\":_vm.resizeHead}},[_c('div',{staticStyle:{\"padding\":\"10px 10px 10px 20px\"}},[_c('div',{style:(`display:flex; align-items:center; padding:${_vm.drawer?'5px':'5px 5px 5px 20px'};`)},[_c('WIcon',{attrs:{\"icon\":_vm.mdiStackOverflow,\"color\":'#000',\"size\":32}}),_c('div',{staticStyle:{\"padding-left\":\"12px\"}},[_c('div',{staticStyle:{\"font-size\":\"1.4rem\",\"color\":\"#000\"}},[_vm._v(\" \"+_vm._s(_vm.$t('mmPemis'))+\" \")]),_c('div',{staticStyle:{\"padding-top\":\"2px\",\"font-size\":\"0.8rem\",\"color\":\"#666\"}},[_vm._v(\" \"+_vm._s(_vm.$t('mmPemisMsg'))+\" \")])])],1)]),_c('div',{staticStyle:{\"padding\":\"5px\",\"border-top\":\"1px solid #ddd\",\"display\":\"flex\",\"align-items\":\"center\"},attrs:{\"_v-if\":\"showIsEditable || isEditable\"}},[(_vm.showIsEditable)?[_c('div',{staticStyle:{\"padding\":\"6px 0px 4px 4px\"}},[_c('WSwitch',{attrs:{\"checkedSwitchCircleColor\":'#F68200',\"checkedSwitchCircleColorHover\":'#FB8C00',\"checkedSwitchBarColor\":'#FFE0B2',\"checkedSwitchBarColorHover\":'#FFE6B8',\"text\":_vm.$t('modeEdit')},model:{value:(_vm.isEditable),callback:function ($$v) {_vm.isEditable=$$v},expression:\"isEditable\"}})],1),_c('div',{staticStyle:{\"padding-left\":\"10px\"}})]:_vm._e(),(true)?[_c('WPopup',{attrs:{\"isolated\":true,\"_show\":\"\",\"_hide\":\"\"},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('showTabCols'),\"icon\":_vm.mdiTableHeadersEye,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"_textColor\":\"'#eee'\",\"_textColorHover\":\"'#fff'\",\"iconColor\":'#444',\"iconColorHover\":'#222',\"shadow\":false,\"_click\":\"\"}})]},proxy:true},{key:\"content\",fn:function(){return [_c('div',{staticStyle:{\"padding\":\"10px 0px 10px 0px\"}},[_c('div',{staticStyle:{\"padding\":\"7px 10px\",\"font-size\":\"0.85rem\",\"color\":\"#222\",\"background\":\"#f2f2f2\"}},[_vm._v(\" \"+_vm._s(_vm.$t('showTabCols'))+\" \")]),_c('div',{staticStyle:{\"padding\":\"7px 9px 0px 7px\"}},[_c('WInputCheckbox',{attrs:{\"items\":_vm.tabKeysPick},on:{\"input\":_vm.toggleTabKeys},scopedSlots:_vm._u([{key:\"default\",fn:function(props){return [_c('div',{staticStyle:{\"padding-left\":\"3px\",\"display\":\"flex\",\"align-items\":\"center\",\"font-size\":\"0.85rem\",\"height\":\"24px\",\"cursor\":\"pointer\"}},[_vm._v(\" \"+_vm._s(_vm.getHead(props.item.data))+\" \")])]}}],null,false,286315898),model:{value:(_vm.tabKeysShow),callback:function ($$v) {_vm.tabKeysShow=$$v},expression:\"tabKeysShow\"}})],1)])]},proxy:true}],null,false,1031542656)}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})]:_vm._e(),(_vm.isEditable)?[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('pemiAdd'),\"icon\":_vm.mdiPlus,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"_textColor\":\"'#eee'\",\"_textColorHover\":\"'#fff'\",\"iconColor\":'#444',\"iconColorHover\":'#222',\"shadow\":false},on:{\"click\":_vm.addItem}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})]:_vm._e(),(_vm.isEditable && _vm.hasItemCheckOne)?[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('pemiCopy'),\"icon\":_vm.mdiContentCopy,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"_textColor\":\"'#eee'\",\"_textColorHover\":\"'#fff'\",\"iconColor\":'#444',\"iconColorHover\":'#222',\"shadow\":false},on:{\"click\":_vm.copyItem}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})]:_vm._e(),(_vm.isEditable && _vm.hasItemsCheck)?[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('pemiDeleteCheckPemis'),\"icon\":_vm.mdiTrashCanOutline,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"_textColor\":\"'#eee'\",\"_textColorHover\":\"'#fff'\",\"iconColor\":'#444',\"iconColorHover\":'#222',\"shadow\":false},on:{\"click\":_vm.deleteItemsCheck}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})]:_vm._e(),(_vm.isEditable && _vm.isModified)?[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('saveChanges'),\"icon\":_vm.mdiCloudUploadOutline,\"backgroundColor\":'rgba(255,0,50,0.7)',\"backgroundColorHover\":'rgba(255,0,50,0.8)',\"textColor\":'#eee',\"textColorHover\":'#fff',\"iconColor\":'#eee',\"iconColorHover\":'#fff',\"shadow\":false},on:{\"click\":_vm.savePemis}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})]:_vm._e()],2)]),(!_vm.firstLoading)?[(_vm.items)?[_c('WAggridVueDyn',{ref:\"rftable\",style:(`width:100%;`),attrs:{\"height\":_vm.contentHeight,\"opt\":_vm.opt}})]:_vm._e()]:_c('div',{staticStyle:{\"padding\":\"10px 15px\",\"font-size\":\"0.8rem\"}},[_vm._v(\" \"+_vm._s(_vm.$t('waitingData'))+\" \")])],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div\r\n style=\"height:100%;\"\r\n v-domresize\r\n @domresize=\"resizePanel\"\r\n :changeParams=\"changeParams\"\r\n >\r\n\r\n <div\r\n style=\"_border-bottom:1px solid #ddd; background:#fff;\"\r\n v-domresize\r\n @domresize=\"resizeHead\"\r\n >\r\n\r\n <!-- 標題區 -->\r\n <div style=\"padding:10px 10px 10px 20px;\">\r\n <div :style=\"`display:flex; align-items:center; padding:${drawer?'5px':'5px 5px 5px 20px'};`\">\r\n\r\n <WIcon\r\n :icon=\"mdiStackOverflow\"\r\n :color=\"'#000'\"\r\n :size=\"32\"\r\n ></WIcon>\r\n\r\n <div style=\"padding-left:12px;\">\r\n\r\n <div style=\"font-size:1.4rem; color:#000;\">\r\n {{$t('mmPemis')}}\r\n </div>\r\n\r\n <div style=\"padding-top:2px; font-size:0.8rem; color:#666;\">\r\n {{$t('mmPemisMsg')}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <!-- 功能區 -->\r\n <div\r\n style=\"padding:5px; border-top:1px solid #ddd; display:flex; align-items:center;\"\r\n _v-if=\"showIsEditable || isEditable\"\r\n >\r\n\r\n <template v-if=\"showIsEditable\">\r\n\r\n <div style=\"padding:6px 0px 4px 4px;\">\r\n <WSwitch\r\n :checkedSwitchCircleColor=\"'#F68200'\"\r\n :checkedSwitchCircleColorHover=\"'#FB8C00'\"\r\n :checkedSwitchBarColor=\"'#FFE0B2'\"\r\n :checkedSwitchBarColorHover=\"'#FFE6B8'\"\r\n v-model=\"isEditable\"\r\n :text=\"$t('modeEdit')\"\r\n ></WSwitch>\r\n </div>\r\n\r\n <div style=\"padding-left:10px;\"></div>\r\n\r\n </template>\r\n\r\n <template v-if=\"true\">\r\n\r\n <WPopup\r\n :isolated=\"true\"\r\n _show=\"\"\r\n _hide=\"\"\r\n >\r\n <template v-slot:trigger>\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('showTabCols')\"\r\n :icon=\"mdiTableHeadersEye\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n _textColor=\"'#eee'\"\r\n _textColorHover=\"'#fff'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :shadow=\"false\"\r\n _click=\"\"\r\n ></WButtonCircle>\r\n </template>\r\n\r\n <template v-slot:content>\r\n <div style=\"padding:10px 0px 10px 0px;\">\r\n\r\n <div style=\"padding:7px 10px; font-size:0.85rem; color:#222; background:#f2f2f2;\">\r\n {{$t('showTabCols')}}\r\n </div>\r\n\r\n <div style=\"padding:7px 9px 0px 7px;\">\r\n <WInputCheckbox\r\n :items=\"tabKeysPick\"\r\n v-model=\"tabKeysShow\"\r\n @input=\"toggleTabKeys\"\r\n >\r\n <template v-slot=\"props\">\r\n <div style=\"padding-left:3px; display:flex; align-items:center; font-size:0.85rem; height:24px; cursor:pointer;\">\r\n {{getHead(props.item.data)}}\r\n </div>\r\n </template>\r\n </WInputCheckbox>\r\n </div>\r\n\r\n </div>\r\n </template>\r\n </WPopup>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n <template v-if=\"isEditable\">\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('pemiAdd')\"\r\n :icon=\"mdiPlus\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n _textColor=\"'#eee'\"\r\n _textColorHover=\"'#fff'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :shadow=\"false\"\r\n @click=\"addItem\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n <template v-if=\"isEditable && hasItemCheckOne\">\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('pemiCopy')\"\r\n :icon=\"mdiContentCopy\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n _textColor=\"'#eee'\"\r\n _textColorHover=\"'#fff'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :shadow=\"false\"\r\n @click=\"copyItem\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n <template v-if=\"isEditable && hasItemsCheck\">\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('pemiDeleteCheckPemis')\"\r\n :icon=\"mdiTrashCanOutline\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n _textColor=\"'#eee'\"\r\n _textColorHover=\"'#fff'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :shadow=\"false\"\r\n @click=\"deleteItemsCheck\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n <template v-if=\"isEditable && isModified\">\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('saveChanges')\"\r\n :icon=\"mdiCloudUploadOutline\"\r\n :backgroundColor=\"'rgba(255,0,50,0.7)'\"\r\n :backgroundColorHover=\"'rgba(255,0,50,0.8)'\"\r\n :textColor=\"'#eee'\"\r\n :textColorHover=\"'#fff'\"\r\n :iconColor=\"'#eee'\"\r\n :iconColorHover=\"'#fff'\"\r\n :shadow=\"false\"\r\n @click=\"savePemis\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n <template\r\n v-if=\"!firstLoading\"\r\n >\r\n\r\n <template v-if=\"items\">\r\n <WAggridVueDyn\r\n ref=\"rftable\"\r\n :style=\"`width:100%;`\"\r\n :height=\"contentHeight\"\r\n :opt=\"opt\"\r\n >\r\n </WAggridVueDyn>\r\n </template>\r\n\r\n </template>\r\n\r\n <div\r\n style=\"padding:10px 15px; font-size:0.8rem;\"\r\n v-else\r\n >\r\n {{$t('waitingData')}}\r\n </div>\r\n\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport { mdiStackOverflow, mdiVectorPolylinePlus, mdiCheckboxMarkedCircle, mdiCloudUploadOutline, mdiTrashCanOutline, mdiTableHeadersEye, mdiPlus, mdiPencilOutline, mdiContentCopy } from '@mdi/js/mdi.js'\r\nimport JSON5 from 'json5'\r\nimport get from 'lodash-es/get.js'\r\nimport set from 'lodash-es/set.js'\r\nimport each from 'lodash-es/each.js'\r\nimport map from 'lodash-es/map.js'\r\nimport size from 'lodash-es/size.js'\r\nimport filter from 'lodash-es/filter.js'\r\nimport sortBy from 'lodash-es/sortBy.js'\r\nimport cloneDeep from 'lodash-es/cloneDeep.js'\r\nimport haskey from 'wsemi/src/haskey.mjs'\r\nimport isestr from 'wsemi/src/isestr.mjs'\r\nimport iseobj from 'wsemi/src/iseobj.mjs'\r\nimport isnum from 'wsemi/src/isnum.mjs'\r\nimport cdbl from 'wsemi/src/cdbl.mjs'\r\nimport cstr from 'wsemi/src/cstr.mjs'\r\nimport arrPull from 'wsemi/src/arrPull.mjs'\r\nimport WIcon from 'w-component-vue/src/components/WIcon.vue'\r\nimport WSwitch from 'w-component-vue/src/components/WSwitch.vue'\r\nimport WButtonCircle from 'w-component-vue/src/components/WButtonCircle.vue'\r\nimport WPopup from 'w-component-vue/src/components/WPopup.vue'\r\nimport WInputCheckbox from 'w-component-vue/src/components/WInputCheckbox.vue'\r\nimport WAggridVueDyn from 'w-component-vue/src/components/WAggridVueDyn.vue'\r\n\r\n\r\nexport default {\r\n components: {\r\n WIcon,\r\n WSwitch,\r\n WButtonCircle,\r\n WPopup,\r\n WInputCheckbox,\r\n WAggridVueDyn,\r\n },\r\n props: {\r\n drawer: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n data: function() {\r\n return {\r\n mdiStackOverflow,\r\n mdiVectorPolylinePlus,\r\n mdiCheckboxMarkedCircle,\r\n mdiCloudUploadOutline,\r\n mdiTrashCanOutline,\r\n mdiTableHeadersEye,\r\n mdiPlus,\r\n mdiPencilOutline,\r\n mdiContentCopy,\r\n\r\n panelWidth: 100,\r\n panelHeight: 100,\r\n headHeight: 100,\r\n\r\n firstLoading: true,\r\n firstSetting: true,\r\n showIsEditable: false,\r\n isEditable: false,\r\n isModified: false,\r\n\r\n tabKeys: [\r\n 'id',\r\n 'name',\r\n 'description',\r\n 'from',\r\n 'belongGrups',\r\n 'crules',\r\n 'userId',\r\n 'timeCreate',\r\n 'userIdUpdate',\r\n 'timeUpdate',\r\n ],\r\n tabKeysPick: [\r\n 'name',\r\n 'description',\r\n 'from',\r\n 'belongGrups',\r\n 'crules',\r\n 'userId',\r\n 'timeCreate',\r\n 'userIdUpdate',\r\n 'timeUpdate',\r\n ],\r\n tabKeysShow: [\r\n 'name',\r\n 'description',\r\n // 'from',\r\n 'belongGrups',\r\n 'crules',\r\n // 'userId',\r\n // 'timeCreate',\r\n // 'userIdUpdate',\r\n // 'timeUpdate',\r\n ],\r\n\r\n widthPemisName: null,\r\n widthPemisDescription: null,\r\n\r\n items: [],\r\n itemsCheck: [],\r\n opt: null,\r\n\r\n }\r\n },\r\n mounted: function() {\r\n // console.log('mounted')\r\n\r\n let vo = this\r\n\r\n //註冊至$dg供使用\r\n vo.$dg.showVePemiBlngGrupsById = vo.showVePemiBlngGrupsById\r\n vo.$dg.showVeCrulesById = vo.showVeCrulesById\r\n\r\n //firstSetting\r\n if (vo.firstSetting) {\r\n // console.log('webInfor', vo.webInfor)\r\n\r\n let showModeEditPemis = get(vo, 'webInfor.showModeEditPemis', '')\r\n vo.showIsEditable = showModeEditPemis === 'y'\r\n let modeEditPemis = get(vo, 'webInfor.modeEditPemis', '')\r\n vo.isEditable = modeEditPemis === 'y'\r\n\r\n vo.widthPemisName = get(vo, 'webInfor.widthPemisName', '')\r\n vo.widthPemisDescription = get(vo, 'webInfor.widthPemisDescription', '')\r\n\r\n vo.firstSetting = false\r\n }\r\n\r\n },\r\n computed: {\r\n\r\n webInfor: function() {\r\n let wi = get(this, `$store.state.webInfor`)\r\n return wi\r\n },\r\n\r\n targets: function() {\r\n let rs = get(this, `$store.state.targets`)\r\n rs = sortBy(rs, 'order')\r\n return rs\r\n },\r\n\r\n pemis: function() {\r\n let rs = get(this, `$store.state.pemis`)\r\n rs = sortBy(rs, 'order')\r\n return rs\r\n },\r\n\r\n grups: function() {\r\n let rs = get(this, `$store.state.grups`)\r\n rs = sortBy(rs, 'order')\r\n return rs\r\n },\r\n\r\n users: function() {\r\n let rs = get(this, `$store.state.users`)\r\n rs = sortBy(rs, 'order')\r\n return rs\r\n },\r\n\r\n useGrups: function() {\r\n let vo = this\r\n\r\n //parse cpemis\r\n let grups = map(vo.grups, (g) => {\r\n\r\n //cloneDeep\r\n g = cloneDeep(g)\r\n\r\n //kpPemi\r\n let kpPemi = {}\r\n try {\r\n // console.log('g.cpemis', g.cpemis)\r\n kpPemi = JSON5.parse(g.cpemis)\r\n }\r\n catch (err) {}\r\n\r\n //save kpPemi\r\n g.kpPemi = kpPemi\r\n\r\n return g\r\n })\r\n // console.log('grups', grups)\r\n\r\n return grups\r\n },\r\n\r\n kpPemiGrup: function() {\r\n let vo = this\r\n\r\n //kp\r\n let kp = {}\r\n each(vo.useGrups, (g) => {\r\n each(g.kpPemi, (v, k) => {\r\n let isActive = get(v, 'isActive', '')\r\n if (isActive !== 'y') {\r\n return true //跳出換下一個\r\n }\r\n if (!haskey(kp, k)) {\r\n kp[k] = []\r\n }\r\n kp[k].push({\r\n grup: g,\r\n pemi: v,\r\n })\r\n })\r\n })\r\n // console.log('kp', kp)\r\n\r\n return kp\r\n },\r\n\r\n kpUsePemiGrup: function() {\r\n let vo = this\r\n\r\n //_kp\r\n let _kp = {}\r\n each(vo.pemis, (v, k) => {\r\n _kp[v.name] = true\r\n })\r\n // console.log('_kp', _kp)\r\n\r\n //kp\r\n let kp = {}\r\n each(vo.kpPemiGrup, (v, k) => {\r\n if (haskey(_kp, k)) {\r\n kp[k] = v\r\n }\r\n })\r\n // console.log('kp', kp)\r\n\r\n return kp\r\n },\r\n\r\n changeParams: function() {\r\n // console.log('computed changeParams')\r\n\r\n let vo = this\r\n\r\n //trigger\r\n let isEditable = vo.isEditable\r\n let pemis = cloneDeep(vo.pemis)\r\n let kpUsePemiGrup = cloneDeep(vo.kpUsePemiGrup)\r\n\r\n //items\r\n let items = vo.genItems(pemis, kpUsePemiGrup)\r\n\r\n //save\r\n vo.items = items\r\n\r\n //genOpt\r\n vo.genOpt({ isEditable })\r\n\r\n //firstLoading\r\n vo.firstLoading = false\r\n\r\n return ''\r\n },\r\n\r\n contentHeight: function() {\r\n let vo = this\r\n\r\n //h\r\n let h = vo.panelHeight - vo.headHeight\r\n h = Math.max(h, 0)\r\n\r\n return h\r\n },\r\n\r\n hasItemsCheck: function() {\r\n let vo = this\r\n\r\n //h\r\n let b = size(vo.itemsCheck) > 0\r\n\r\n return b\r\n },\r\n\r\n hasItemCheckOne: function() {\r\n let vo = this\r\n\r\n //h\r\n let b = size(vo.itemsCheck) === 1\r\n\r\n return b\r\n },\r\n\r\n errItemsByName: function() {\r\n let vo = this\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //kpErr\r\n let kpErr = {}\r\n let kpName = {}\r\n each(rows, (v, k) => {\r\n\r\n //name\r\n let name = get(v, 'name', '')\r\n\r\n //check\r\n if (!isestr(name)) {\r\n\r\n //kpErr\r\n kpErr[name] = vo.$t(`pemiNameEmpty`)\r\n\r\n return true //跳出換下一個\r\n }\r\n\r\n //check\r\n if (haskey(kpName, name)) {\r\n\r\n //kpErr\r\n kpErr[name] = vo.$t(`pemiNameDuplicate`)\r\n\r\n return true //跳出換下一個\r\n }\r\n\r\n //kpName\r\n kpName[name] = true\r\n\r\n })\r\n\r\n return kpErr\r\n },\r\n\r\n isError: function() {\r\n let vo = this\r\n\r\n let c = ''\r\n let b = false\r\n b = iseobj(vo.errItemsByName)\r\n if (b) {\r\n c = vo.$t('errInNames')\r\n }\r\n\r\n return c\r\n },\r\n\r\n kpHead: function() {\r\n let vo = this\r\n\r\n let kp = {\r\n 'id': vo.$t('id'),\r\n 'name': vo.$t('name'),\r\n 'description': vo.$t('description'),\r\n 'from': vo.$t('from'),\r\n 'belongGrups': vo.$t('belongGrups'),\r\n 'crules': vo.$t('pemiCrules'),\r\n 'userId': vo.$t('userId'),\r\n 'timeCreate': vo.$t('timeCreate'),\r\n 'userIdUpdate': vo.$t('userIdUpdate'),\r\n 'timeUpdate': vo.$t('timeUpdate'),\r\n }\r\n\r\n return kp\r\n },\r\n\r\n },\r\n methods: {\r\n\r\n resizePanel: function(msg) {\r\n // console.log('methods resizePanel', msg)\r\n\r\n let vo = this\r\n\r\n //panelWidth, panelHeight\r\n vo.panelWidth = msg.snew.offsetWidth\r\n vo.panelHeight = msg.snew.offsetHeight\r\n\r\n },\r\n\r\n resizeHead: function(msg) {\r\n // console.log('methods resizeHead', msg)\r\n\r\n let vo = this\r\n\r\n //headHeight\r\n vo.headHeight = msg.snew.offsetHeight\r\n\r\n },\r\n\r\n getHead: function(key) {\r\n // console.log('methods getHead', key)\r\n\r\n let vo = this\r\n\r\n let head = get(vo, `kpHead.${key}`, '')\r\n\r\n return head\r\n },\r\n\r\n genOpt: function() {\r\n // console.log('methods genOpt')\r\n\r\n let vo = this\r\n\r\n //default\r\n vo.itemsCheck = []\r\n\r\n //opt\r\n let opt = null\r\n if (size(vo.items) > 0) {\r\n\r\n //ks\r\n let ks = vo.tabKeys\r\n // console.log('ks', ks)\r\n\r\n //kpHead\r\n let kpHead = vo.kpHead\r\n\r\n //kpCellEditable, kpRowDrag, kpHeadCheckBox\r\n let kpCellEditable = {}\r\n let kpRowDrag = {}\r\n let kpHeadCheckBox = {}\r\n if (vo.isEditable) {\r\n kpCellEditable = {\r\n 'name': true,\r\n 'description': true,\r\n 'from': true,\r\n }\r\n kpRowDrag = {\r\n 'name': true,\r\n }\r\n kpHeadCheckBox = {\r\n 'name': true,\r\n }\r\n }\r\n\r\n //kpHeadHide\r\n let kpHeadHide = {\r\n 'id': true,\r\n }\r\n if (true) {\r\n let tabKeysHide = arrPull(vo.tabKeysPick, vo.tabKeysShow)\r\n each(tabKeysHide, (k) => {\r\n kpHeadHide[k] = true\r\n })\r\n }\r\n\r\n //opt\r\n opt = {\r\n language: vo.$t('aggridLanguage'),\r\n rows: vo.items,\r\n keys: ks,\r\n kpHead,\r\n // autoFitColumn: true,\r\n defCellEditable: false, //vo.isEditable,\r\n defHeadFilter: true,\r\n defCellAlignH: 'left',\r\n kpHeadHide,\r\n kpHeadFixLeft: {\r\n 'name': true,\r\n },\r\n defHeadMinWidth: 150,\r\n kpHeadWidth: {\r\n 'name': isnum(vo.widthPemisName) ? cdbl(vo.widthPemisName) : 300,\r\n 'description': isnum(vo.widthPemisDescription) ? cdbl(vo.widthPemisDescription) : 300,\r\n 'belongGrups': 300,\r\n 'crules': 300,\r\n 'timeCreate': 220,\r\n 'timeUpdate': 220,\r\n },\r\n kpHeadFilterType: {\r\n 'id': 'text',\r\n 'name': 'text',\r\n 'description': 'text',\r\n 'from': 'text',\r\n 'belongGrups': 'text',\r\n 'crules': 'text',\r\n 'userId': 'text',\r\n 'timeCreate': 'text',\r\n 'userIdUpdate': 'text',\r\n 'timeUpdate': 'text',\r\n },\r\n kpCellEditable,\r\n kpRowDrag,\r\n kpHeadCheckBox,\r\n kpHeadFilter: {\r\n 'belongGrups': false,\r\n 'crules': false,\r\n },\r\n kpHeadSort: {\r\n 'belongGrups': false,\r\n 'crules': false,\r\n },\r\n kpHeadFocusHighlight: { //雖然效果不完全, 但因按鈕與cell有padding可被點擊, 故還是需要開啟\r\n 'belongGrups': false,\r\n 'crules': false,\r\n },\r\n kpCellRender: {\r\n 'name': (v) => {\r\n // console.log('kpCellRender name', v)\r\n\r\n //err\r\n let err = get(vo.errItemsByName, v, '')\r\n // console.log(v, err)\r\n\r\n //check\r\n if (isestr(err)) {\r\n v = `\r\n <span title=\"${err}\">\r\n <span style=\"color:#F57C00;\">${cstr(v)}</span>\r\n <img style=\"vertical-align:sub; width:16px; height:16px;\" src=\"${vo.$ui.getIcon('warning')}\" />\r\n </span>\r\n `\r\n }\r\n\r\n return v\r\n },\r\n 'belongGrups': (v, k, r) => {\r\n // console.log('kpCellRender belongGrups', v, k, r)\r\n\r\n //id\r\n let id = get(r, 'id', '')\r\n // console.log('id', id, k, r)\r\n\r\n //因kpHeadFocusHighlight設定false時, 仍會於點擊其他可focus的cell, 再點回時依然出現highlight的focus邊框, 故改使用stopPropagation強制吃掉點擊訊息\r\n //因stopPropagation只吃掉訊息, 原本focus會處於原本可focus的cell, 再重複點時會於前個focus的cell出現highlight邊框, 故再多使用preventDefault阻止瀏覽器預設行為, 此等同於return false\r\n let t = `\r\n <div onclick=\"event.stopPropagation();event.preventDefault();\" onmousedown=\"event.stopPropagation();event.preventDefault();\">\r\n <button style=\"width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;\" onclick=\"$vo.$dg.showVePemiBlngGrupsById('${id}')\">${v}</button>\r\n </div>\r\n `\r\n\r\n return t\r\n },\r\n 'crules': (v, k, r) => {\r\n // console.log('kpCellRender crules', v, k, r)\r\n\r\n //id\r\n let id = get(r, 'id', '')\r\n // console.log('id', id, k, r)\r\n\r\n //因kpHeadFocusHighlight設定false時, 仍會於點擊其他可focus的cell, 再點回時依然出現highlight的focus邊框, 故改使用stopPropagation強制吃掉點擊訊息\r\n //因stopPropagation只吃掉訊息, 原本focus會處於原本可focus的cell, 再重複點時會於前個focus的cell出現highlight邊框, 故再多使用preventDefault阻止瀏覽器預設行為, 此等同於return false\r\n let t = `\r\n <div onclick=\"event.stopPropagation();event.preventDefault();\" onmousedown=\"event.stopPropagation();event.preventDefault();\">\r\n <button style=\"width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;\" onclick=\"$vo.$dg.showVeCrulesById('${id}')\">${vo.getCrulesText(v)}</button>\r\n </div>\r\n `\r\n\r\n return t\r\n },\r\n },\r\n rowsChange: (rs) => {\r\n // console.log('rowsChange', rs)\r\n // console.log('rowsChange cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n rowChecked: (rs) => {\r\n // console.log('rowChecked', rs)\r\n // console.log('rowChecked cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\r\n\r\n //save itemsCheck\r\n vo.itemsCheck = cloneDeep(rs)\r\n\r\n },\r\n }\r\n // console.log('opt', opt)\r\n\r\n }\r\n\r\n //save\r\n vo.opt = opt\r\n\r\n },\r\n\r\n refresh: function() {\r\n let vo = this\r\n\r\n //cmp\r\n let cmp = get(vo, '$refs.rftable.$refs.$self')\r\n // console.log('cmp', cmp)\r\n\r\n //refresh, 因set不會觸發kpCellRender, 故須另外調用組件函數refresh, 進而觸發kpCellRender, 使能更新數據\r\n cmp.refresh()\r\n\r\n },\r\n\r\n toggleTabKeys: function() {\r\n let vo = this\r\n\r\n //cmp\r\n let cmp = get(vo, '$refs.rftable.$refs.$self')\r\n // console.log('cmp', cmp)\r\n\r\n //showKeys\r\n cmp.showKeys(vo.tabKeysShow)\r\n // console.log('tabKeysShow', vo.tabKeysShow)\r\n\r\n },\r\n\r\n genItems: function(pemis, kpUsePemiGrup) {\r\n // console.log('method genItems', pemis, kpUsePemiGrup)\r\n\r\n let vo = this\r\n\r\n //items\r\n let items = map(pemis, (p) => {\r\n\r\n //gs\r\n let gs = []\r\n if (haskey(kpUsePemiGrup, p.name)) {\r\n gs = kpUsePemiGrup[p.name]\r\n }\r\n // console.log('gs', gs)\r\n\r\n //belongGrups\r\n let belongGrups = vo.$t('pemiBlngRnderNoGrup')\r\n let t = vo.$t('pemiBlngRnderGrups')\r\n let n = size(gs)\r\n if (n > 0) {\r\n t = t.replace('{n}', n)\r\n if (n === 1) {\r\n t = t.replace('{nms}', `(${gs[0].grup.name})`)\r\n }\r\n else {\r\n t = t.replace('{nms}', '')\r\n }\r\n belongGrups = t\r\n }\r\n\r\n //save belongGrups, gs\r\n p.belongGrups = belongGrups\r\n p.gs = gs\r\n // console.log('p', p)\r\n\r\n return p\r\n })\r\n // console.log('items', items)\r\n\r\n return items\r\n },\r\n\r\n addItem: function() {\r\n // console.log('method addItem')\r\n\r\n let vo = this\r\n\r\n //cloneDeep\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //cloneDeep\r\n rows = cloneDeep(rows)\r\n\r\n //r\r\n let r = vo.$ds.pemis.funNew()\r\n r.name = vo.$s.getNameNew(rows, 'name', '', vo.$t('pemiAddNameNew'))\r\n // r.crules = ''\r\n r.userId = `{${vo.$t('pemiAddIdNew')}}`\r\n r.timeCreate = `{${vo.$t('pemiAddIdNew')}}`\r\n r.userIdUpdate = `{${vo.$t('pemiAddIdNew')}}`\r\n r.timeUpdate = `{${vo.$t('pemiAddIdNew')}}`\r\n // console.log('r', r)\r\n\r\n //belongGrups, gs\r\n let gs = []\r\n let belongGrups = vo.$t('pemiBlngRnderNoGrup')\r\n\r\n //save belongGrups, gs\r\n r.belongGrups = belongGrups\r\n r.gs = gs\r\n // console.log('r', r)\r\n\r\n //添加至最首\r\n rows = [\r\n r,\r\n ...rows,\r\n ]\r\n\r\n //save\r\n vo.opt.rows = rows\r\n // console.log('cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n copyItem: function() {\r\n // console.log('method copyItem')\r\n\r\n let vo = this\r\n\r\n //check\r\n if (size(vo.itemsCheck) !== 1) {\r\n console.log(`size(vo.itemsCheck) !== 1`, vo.itemsCheck)\r\n vo.$alert(`${vo.$t('anUnexpectedErrorOccurred')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //cloneDeep\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //cloneDeep\r\n rows = cloneDeep(rows)\r\n\r\n //find\r\n let tar = vo.itemsCheck[0]\r\n let tarId = get(tar, 'data.id', '')\r\n let row = null\r\n each(rows, (v) => {\r\n let id = get(v, 'id', '')\r\n if (id === tarId) {\r\n row = v\r\n return false //跳出\r\n }\r\n })\r\n // console.log('tar', tar)\r\n // console.log('row', row)\r\n\r\n //check\r\n if (!iseobj(row)) {\r\n console.log(`!iseobj(row)`, row)\r\n vo.$alert(`${vo.$t('anUnexpectedErrorOccurred')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //r\r\n let r = cloneDeep(row)\r\n let nameOld = r.name\r\n let _r = vo.$ds.pemis.funNew()\r\n r.id = _r.id //使用新建方式預先產生id避免重複\r\n r.name = vo.$s.getNameNew(rows, 'name', nameOld, vo.$t('pemiCopyNameNew'))\r\n r.userId = `{${vo.$t('pemiAddIdNew')}}`\r\n r.timeCreate = `{${vo.$t('pemiAddIdNew')}}`\r\n r.userIdUpdate = `{${vo.$t('pemiAddIdNew')}}`\r\n r.timeUpdate = `{${vo.$t('pemiAddIdNew')}}`\r\n // console.log('r', r)\r\n\r\n //belongGrups, gs\r\n let gs = []\r\n let belongGrups = vo.$t('pemiBlngRnderNoGrup')\r\n\r\n //save belongGrups, gs\r\n r.belongGrups = belongGrups\r\n r.gs = gs\r\n // console.log('r', r)\r\n\r\n //添加至最首\r\n rows = [\r\n r,\r\n ...rows,\r\n ]\r\n\r\n //save\r\n vo.opt.rows = rows\r\n // console.log('cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n deleteItemsCheck: function() {\r\n // console.log('method deleteItemsCheck')\r\n\r\n let vo = this\r\n\r\n //check\r\n if (size(vo.itemsCheck) === 0) {\r\n console.log(`size(vo.itemsCheck) === 0`, vo.itemsCheck)\r\n vo.$alert(`${vo.$t('anUnexpectedErrorOccurred')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //cloneDeep\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //cloneDeep\r\n rows = cloneDeep(rows)\r\n\r\n //filter\r\n each(vo.itemsCheck, (v) => {\r\n // console.log('v', v)\r\n let id = get(v, 'data.id', '')\r\n if (!isestr(id)) {\r\n console.log(`invalid id`)\r\n return true //跳出換下一個\r\n }\r\n rows = filter(rows, (vv) => {\r\n return vv.id !== id\r\n })\r\n })\r\n\r\n //clear\r\n vo.itemsCheck = []\r\n\r\n //save\r\n vo.opt.rows = rows\r\n // console.log('deleteItemsCheck cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n fltKpRule: function(kp) {\r\n // console.log('fltKpRule', kp)\r\n\r\n let vo = this\r\n\r\n //_kp\r\n let _kp = {}\r\n each(vo.targets, (v, k) => {\r\n _kp[v.id] = true //管控對象須使用id\r\n })\r\n // console.log('_kp', _kp)\r\n\r\n //kpt\r\n let kpt = {}\r\n each(kp, (v, k) => {\r\n if (haskey(_kp, k)) {\r\n kpt[k] = v\r\n }\r\n })\r\n\r\n return kpt\r\n },\r\n\r\n getCrulesText: function(crules) {\r\n // console.log('method getCrulesText', crules)\r\n\r\n let vo = this\r\n\r\n //kpRule\r\n let kpRule = {}\r\n try {\r\n // console.log('crules', crules)\r\n kpRule = JSON5.parse(crules)\r\n }\r\n catch (err) {}\r\n // console.log('kpRule', kpRule)\r\n\r\n //fltKpRule\r\n kpRule = vo.fltKpRule(kpRule)\r\n // console.log('kpRule(fltKpRule)', kpRule)\r\n\r\n //vs\r\n let vs = []\r\n each(kpRule, (v, k) => {\r\n // console.log(k, 'v', v)\r\n\r\n //isActive\r\n let isActive = v //crules各值為直接儲存y或n\r\n if (isActive !== 'y') {\r\n return true //跳出換下一個\r\n }\r\n // console.log(k, '_isActive', _isActive)\r\n\r\n //push\r\n vs.push(k)\r\n\r\n })\r\n\r\n //crulesText\r\n let crulesText = vo.$t('pemiRnderCrulesNoRule')\r\n let t = vo.$t('pemiRnderCrulesHasNRule')\r\n let n = size(vs)\r\n if (n > 0) {\r\n t = t.replace('{n}', n)\r\n // if (n === 1) {\r\n // t = t.replace('{nms}', `(${vs[0]})`)\r\n // }\r\n // else {\r\n // t = t.replace('{nms}', '')\r\n // }\r\n t = t.replace('{nms}', '') //管控對象id太長, 顯示按鈕預設寬度小, 故皆僅顯示數量\r\n crulesText = t\r\n }\r\n\r\n return crulesText\r\n },\r\n\r\n showVePemiBlngGrupsById: function(id) {\r\n // console.log('method showVePemiBlngGrupsById', id)\r\n\r\n let vo = this\r\n\r\n //check\r\n if (!isestr(id)) {\r\n vo.$alert(`${vo.$t('pemiEditBlngGrupsNoPemiId')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //find\r\n let r = null\r\n // let kr = null\r\n each(rows, (v, k) => {\r\n if (get(v, 'id', '') === id) {\r\n r = v\r\n // kr = k\r\n return false //跳出\r\n }\r\n })\r\n // console.log('r', r)\r\n\r\n //check\r\n if (!iseobj(r)) {\r\n vo.$alert(`${vo.$t('pemiEditBlngGrupsNoPemiData')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //showVePemiBlngGrups\r\n vo.$dg.showVePemiBlngGrups({\r\n isEditable: vo.isEditable,\r\n pemi: r,\r\n })\r\n .then(() => {})\r\n .catch(() => {})\r\n\r\n },\r\n\r\n showVeCrulesById: function(id) {\r\n // console.log('method showVeCrulesById', id)\r\n\r\n let vo = this\r\n\r\n //check\r\n if (!isestr(id)) {\r\n vo.$alert(`${vo.$t('pemiEditCrulesNoPemiId')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //find\r\n let r = null\r\n let kr = null\r\n each(rows, (v, k) => {\r\n if (get(v, 'id', '') === id) {\r\n r = v\r\n kr = k\r\n return false //跳出\r\n }\r\n })\r\n\r\n //check\r\n if (!iseobj(r)) {\r\n vo.$alert(`${vo.$t('pemiEditCrulesNoPemiData')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //showVeCrules\r\n vo.$dg.showVeCrules({\r\n isEditable: vo.isEditable,\r\n pemi: r,\r\n })\r\n .then((crules) => {\r\n // console.log('crules', crules)\r\n\r\n //set\r\n set(vo, `opt.rows[${kr}].crules`, crules)\r\n // console.log('vo.opt.rows[kr]', cloneDeep(vo.opt.rows[kr]))\r\n\r\n //refresh\r\n vo.refresh()\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n })\r\n .catch(() => {})\r\n\r\n },\r\n\r\n savePemis: function() {\r\n // console.log('method savePemis')\r\n\r\n let vo = this\r\n\r\n async function core() {\r\n let errTemp = null\r\n\r\n //show loading\r\n vo.$ui.updateLoading(true)\r\n\r\n //check\r\n if (isestr(vo.isError)) {\r\n vo.$alert(`${vo.isError}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //check\r\n if (size(rows) === 0) {\r\n vo.$alert(`${vo.$t('pemiAddEmpty')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //updatePemis\r\n await vo.$fapi.updatePemis(rows)\r\n .catch((err) => {\r\n errTemp = err\r\n })\r\n\r\n //check\r\n if (errTemp !== null) {\r\n vo.$alert(`${vo.$t('pemiSavePemisFail')}: ${errTemp}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //isModified\r\n vo.isModified = false\r\n\r\n //alert\r\n vo.$alert(vo.$t('pemiSavePemisSuccess'))\r\n\r\n }\r\n\r\n //core\r\n core()\r\n // .then((res) => {\r\n // console.log('then', res)\r\n // })\r\n .catch((err) => {\r\n console.log('catch', err)\r\n vo.$alert(vo.$t('anUnexpectedErrorOccurred'), { type: 'error' })\r\n })\r\n .finally(() => {\r\n\r\n //hide loading\r\n vo.$ui.updateLoading(false)\r\n\r\n })\r\n\r\n },\r\n\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n</style>\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LayoutContentPemis.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LayoutContentPemis.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./LayoutContentPemis.vue?vue&type=template&id=5ce3fee3&scoped=true\"\nimport script from \"./LayoutContentPemis.vue?vue&type=script&lang=js\"\nexport * from \"./LayoutContentPemis.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5ce3fee3\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{directives:[{name:\"domresize\",rawName:\"v-domresize\"}],staticStyle:{\"height\":\"100%\"},attrs:{\"changeParams\":_vm.changeParams},on:{\"domresize\":_vm.resizePanel}},[_c('div',{directives:[{name:\"domresize\",rawName:\"v-domresize\"}],staticStyle:{\"_border-bottom\":\"1px solid #ddd\",\"background\":\"#fff\"},on:{\"domresize\":_vm.resizeHead}},[_c('div',{staticStyle:{\"padding\":\"10px 10px 10px 20px\"}},[_c('div',{style:(`display:flex; align-items:center; padding:${_vm.drawer?'5px':'5px 5px 5px 20px'};`)},[_c('WIcon',{attrs:{\"icon\":_vm.mdiSelectGroup,\"color\":'#000',\"size\":32}}),_c('div',{staticStyle:{\"padding-left\":\"12px\"}},[_c('div',{staticStyle:{\"font-size\":\"1.4rem\",\"color\":\"#000\"}},[_vm._v(\" \"+_vm._s(_vm.$t('mmGrups'))+\" \")]),_c('div',{staticStyle:{\"padding-top\":\"2px\",\"font-size\":\"0.8rem\",\"color\":\"#666\"}},[_vm._v(\" \"+_vm._s(_vm.$t('mmGrupsMsg'))+\" \")])])],1)]),_c('div',{staticStyle:{\"padding\":\"5px\",\"border-top\":\"1px solid #ddd\",\"display\":\"flex\",\"align-items\":\"center\"},attrs:{\"_v-if\":\"showIsEditable || isEditable\"}},[(_vm.showIsEditable)?[_c('div',{staticStyle:{\"padding\":\"6px 0px 4px 4px\"}},[_c('WSwitch',{attrs:{\"checkedSwitchCircleColor\":'#F68200',\"checkedSwitchCircleColorHover\":'#FB8C00',\"checkedSwitchBarColor\":'#FFE0B2',\"checkedSwitchBarColorHover\":'#FFE6B8',\"text\":_vm.$t('modeEdit')},model:{value:(_vm.isEditable),callback:function ($$v) {_vm.isEditable=$$v},expression:\"isEditable\"}})],1),_c('div',{staticStyle:{\"padding-left\":\"10px\"}})]:_vm._e(),(true)?[_c('WPopup',{attrs:{\"isolated\":true,\"_show\":\"\",\"_hide\":\"\"},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('showTabCols'),\"icon\":_vm.mdiTableHeadersEye,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"_textColor\":\"'#eee'\",\"_textColorHover\":\"'#fff'\",\"iconColor\":'#444',\"iconColorHover\":'#222',\"shadow\":false,\"_click\":\"\"}})]},proxy:true},{key:\"content\",fn:function(){return [_c('div',{staticStyle:{\"padding\":\"10px 0px 10px 0px\"}},[_c('div',{staticStyle:{\"padding\":\"7px 10px\",\"font-size\":\"0.85rem\",\"color\":\"#222\",\"background\":\"#f2f2f2\"}},[_vm._v(\" \"+_vm._s(_vm.$t('showTabCols'))+\" \")]),_c('div',{staticStyle:{\"padding\":\"7px 9px 0px 7px\"}},[_c('WInputCheckbox',{attrs:{\"items\":_vm.tabKeysPick},on:{\"input\":_vm.toggleTabKeys},scopedSlots:_vm._u([{key:\"default\",fn:function(props){return [_c('div',{staticStyle:{\"padding-left\":\"3px\",\"display\":\"flex\",\"align-items\":\"center\",\"font-size\":\"0.85rem\",\"height\":\"24px\",\"cursor\":\"pointer\"}},[_vm._v(\" \"+_vm._s(_vm.getHead(props.item.data))+\" \")])]}}],null,false,286315898),model:{value:(_vm.tabKeysShow),callback:function ($$v) {_vm.tabKeysShow=$$v},expression:\"tabKeysShow\"}})],1)])]},proxy:true}],null,false,1031542656)}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})]:_vm._e(),(_vm.isEditable)?[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('grupAdd'),\"icon\":_vm.mdiPlus,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"_textColor\":\"'#eee'\",\"_textColorHover\":\"'#fff'\",\"iconColor\":'#444',\"iconColorHover\":'#222',\"shadow\":false},on:{\"click\":_vm.addItem}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})]:_vm._e(),(_vm.isEditable && _vm.hasItemCheckOne)?[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('grupCopy'),\"icon\":_vm.mdiContentCopy,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"_textColor\":\"'#eee'\",\"_textColorHover\":\"'#fff'\",\"iconColor\":'#444',\"iconColorHover\":'#222',\"shadow\":false},on:{\"click\":_vm.copyItem}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})]:_vm._e(),(_vm.isEditable && _vm.hasItemsCheck)?[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('grupDeleteCheckGrups'),\"icon\":_vm.mdiTrashCanOutline,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"_textColor\":\"'#eee'\",\"_textColorHover\":\"'#fff'\",\"iconColor\":'#444',\"iconColorHover\":'#222',\"shadow\":false},on:{\"click\":_vm.deleteItemsCheck}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})]:_vm._e(),(_vm.isEditable && _vm.isModified)?[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('saveChanges'),\"icon\":_vm.mdiCloudUploadOutline,\"backgroundColor\":'rgba(255,0,50,0.7)',\"backgroundColorHover\":'rgba(255,0,50,0.8)',\"textColor\":'#eee',\"textColorHover\":'#fff',\"iconColor\":'#eee',\"iconColorHover\":'#fff',\"shadow\":false},on:{\"click\":_vm.saveGrups}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})]:_vm._e()],2)]),(!_vm.firstLoading)?[(_vm.items)?[_c('WAggridVueDyn',{ref:\"rftable\",style:(`width:100%;`),attrs:{\"height\":_vm.contentHeight,\"opt\":_vm.opt}})]:_vm._e()]:_c('div',{staticStyle:{\"padding\":\"10px 15px\",\"font-size\":\"0.8rem\"}},[_vm._v(\" \"+_vm._s(_vm.$t('waitingData'))+\" \")])],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div\r\n style=\"height:100%;\"\r\n v-domresize\r\n @domresize=\"resizePanel\"\r\n :changeParams=\"changeParams\"\r\n >\r\n\r\n <div\r\n style=\"_border-bottom:1px solid #ddd; background:#fff;\"\r\n v-domresize\r\n @domresize=\"resizeHead\"\r\n >\r\n\r\n <!-- 標題區 -->\r\n <div style=\"padding:10px 10px 10px 20px;\">\r\n <div :style=\"`display:flex; align-items:center; padding:${drawer?'5px':'5px 5px 5px 20px'};`\">\r\n\r\n <WIcon\r\n :icon=\"mdiSelectGroup\"\r\n :color=\"'#000'\"\r\n :size=\"32\"\r\n ></WIcon>\r\n\r\n <div style=\"padding-left:12px;\">\r\n\r\n <div style=\"font-size:1.4rem; color:#000;\">\r\n {{$t('mmGrups')}}\r\n </div>\r\n\r\n <div style=\"padding-top:2px; font-size:0.8rem; color:#666;\">\r\n {{$t('mmGrupsMsg')}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <!-- 功能區 -->\r\n <div\r\n style=\"padding:5px; border-top:1px solid #ddd; display:flex; align-items:center;\"\r\n _v-if=\"showIsEditable || isEditable\"\r\n >\r\n\r\n <template v-if=\"showIsEditable\">\r\n\r\n <div style=\"padding:6px 0px 4px 4px;\">\r\n <WSwitch\r\n :checkedSwitchCircleColor=\"'#F68200'\"\r\n :checkedSwitchCircleColorHover=\"'#FB8C00'\"\r\n :checkedSwitchBarColor=\"'#FFE0B2'\"\r\n :checkedSwitchBarColorHover=\"'#FFE6B8'\"\r\n v-model=\"isEditable\"\r\n :text=\"$t('modeEdit')\"\r\n ></WSwitch>\r\n </div>\r\n\r\n <div style=\"padding-left:10px;\"></div>\r\n\r\n </template>\r\n\r\n <template v-if=\"true\">\r\n\r\n <WPopup\r\n :isolated=\"true\"\r\n _show=\"\"\r\n _hide=\"\"\r\n >\r\n <template v-slot:trigger>\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('showTabCols')\"\r\n :icon=\"mdiTableHeadersEye\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n _textColor=\"'#eee'\"\r\n _textColorHover=\"'#fff'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :shadow=\"false\"\r\n _click=\"\"\r\n ></WButtonCircle>\r\n </template>\r\n\r\n <template v-slot:content>\r\n <div style=\"padding:10px 0px 10px 0px;\">\r\n\r\n <div style=\"padding:7px 10px; font-size:0.85rem; color:#222; background:#f2f2f2;\">\r\n {{$t('showTabCols')}}\r\n </div>\r\n\r\n <div style=\"padding:7px 9px 0px 7px;\">\r\n <WInputCheckbox\r\n :items=\"tabKeysPick\"\r\n v-model=\"tabKeysShow\"\r\n @input=\"toggleTabKeys\"\r\n >\r\n <template v-slot=\"props\">\r\n <div style=\"padding-left:3px; display:flex; align-items:center; font-size:0.85rem; height:24px; cursor:pointer;\">\r\n {{getHead(props.item.data)}}\r\n </div>\r\n </template>\r\n </WInputCheckbox>\r\n </div>\r\n\r\n </div>\r\n </template>\r\n </WPopup>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n <template v-if=\"isEditable\">\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('grupAdd')\"\r\n :icon=\"mdiPlus\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n _textColor=\"'#eee'\"\r\n _textColorHover=\"'#fff'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :shadow=\"false\"\r\n @click=\"addItem\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n <template v-if=\"isEditable && hasItemCheckOne\">\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('grupCopy')\"\r\n :icon=\"mdiContentCopy\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n _textColor=\"'#eee'\"\r\n _textColorHover=\"'#fff'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :shadow=\"false\"\r\n @click=\"copyItem\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n <template v-if=\"isEditable && hasItemsCheck\">\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('grupDeleteCheckGrups')\"\r\n :icon=\"mdiTrashCanOutline\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n _textColor=\"'#eee'\"\r\n _textColorHover=\"'#fff'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :shadow=\"false\"\r\n @click=\"deleteItemsCheck\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n <template v-if=\"isEditable && isModified\">\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('saveChanges')\"\r\n :icon=\"mdiCloudUploadOutline\"\r\n :backgroundColor=\"'rgba(255,0,50,0.7)'\"\r\n :backgroundColorHover=\"'rgba(255,0,50,0.8)'\"\r\n :textColor=\"'#eee'\"\r\n :textColorHover=\"'#fff'\"\r\n :iconColor=\"'#eee'\"\r\n :iconColorHover=\"'#fff'\"\r\n :shadow=\"false\"\r\n @click=\"saveGrups\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n <template\r\n v-if=\"!firstLoading\"\r\n >\r\n\r\n <template v-if=\"items\">\r\n <WAggridVueDyn\r\n ref=\"rftable\"\r\n :style=\"`width:100%;`\"\r\n :height=\"contentHeight\"\r\n :opt=\"opt\"\r\n >\r\n </WAggridVueDyn>\r\n </template>\r\n\r\n </template>\r\n\r\n <div\r\n style=\"padding:10px 15px; font-size:0.8rem;\"\r\n v-else\r\n >\r\n {{$t('waitingData')}}\r\n </div>\r\n\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport { mdiSelectGroup, mdiVectorPolylinePlus, mdiCheckboxMarkedCircle, mdiCloudUploadOutline, mdiTrashCanOutline, mdiTableHeadersEye, mdiPlus, mdiPencilOutline, mdiContentCopy } from '@mdi/js/mdi.js'\r\nimport JSON5 from 'json5'\r\nimport get from 'lodash-es/get.js'\r\nimport set from 'lodash-es/set.js'\r\nimport each from 'lodash-es/each.js'\r\nimport map from 'lodash-es/map.js'\r\nimport size from 'lodash-es/size.js'\r\nimport filter from 'lodash-es/filter.js'\r\nimport sortBy from 'lodash-es/sortBy.js'\r\nimport cloneDeep from 'lodash-es/cloneDeep.js'\r\nimport haskey from 'wsemi/src/haskey.mjs'\r\nimport isestr from 'wsemi/src/isestr.mjs'\r\nimport iseobj from 'wsemi/src/iseobj.mjs'\r\nimport isnum from 'wsemi/src/isnum.mjs'\r\nimport cdbl from 'wsemi/src/cdbl.mjs'\r\nimport cstr from 'wsemi/src/cstr.mjs'\r\nimport arrPull from 'wsemi/src/arrPull.mjs'\r\nimport WIcon from 'w-component-vue/src/components/WIcon.vue'\r\nimport WSwitch from 'w-component-vue/src/components/WSwitch.vue'\r\nimport WButtonCircle from 'w-component-vue/src/components/WButtonCircle.vue'\r\nimport WPopup from 'w-component-vue/src/components/WPopup.vue'\r\nimport WInputCheckbox from 'w-component-vue/src/components/WInputCheckbox.vue'\r\nimport WAggridVueDyn from 'w-component-vue/src/components/WAggridVueDyn.vue'\r\n\r\n\r\nexport default {\r\n components: {\r\n WIcon,\r\n WSwitch,\r\n WButtonCircle,\r\n WPopup,\r\n WInputCheckbox,\r\n WAggridVueDyn,\r\n },\r\n props: {\r\n drawer: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n data: function() {\r\n return {\r\n mdiSelectGroup,\r\n mdiVectorPolylinePlus,\r\n mdiCheckboxMarkedCircle,\r\n mdiCloudUploadOutline,\r\n mdiTrashCanOutline,\r\n mdiTableHeadersEye,\r\n mdiPlus,\r\n mdiPencilOutline,\r\n mdiContentCopy,\r\n\r\n panelWidth: 100,\r\n panelHeight: 100,\r\n headHeight: 100,\r\n\r\n firstLoading: true,\r\n firstSetting: true,\r\n showIsEditable: false,\r\n isEditable: false,\r\n isModified: false,\r\n\r\n tabKeys: [\r\n 'id',\r\n 'name',\r\n 'description',\r\n 'from',\r\n 'belongUsers',\r\n 'cpemis',\r\n 'userId',\r\n 'timeCreate',\r\n 'userIdUpdate',\r\n 'timeUpdate',\r\n ],\r\n tabKeysPick: [\r\n 'name',\r\n 'description',\r\n 'from',\r\n 'belongUsers',\r\n 'cpemis',\r\n 'userId',\r\n 'timeCreate',\r\n 'userIdUpdate',\r\n 'timeUpdate',\r\n ],\r\n tabKeysShow: [\r\n 'name',\r\n 'description',\r\n // 'from',\r\n 'belongUsers',\r\n 'cpemis',\r\n // 'userId',\r\n // 'timeCreate',\r\n // 'userIdUpdate',\r\n // 'timeUpdate',\r\n ],\r\n\r\n widthGrupsName: null,\r\n widthGrupsDescription: null,\r\n\r\n items: [],\r\n itemsCheck: [],\r\n opt: null,\r\n\r\n }\r\n },\r\n mounted: function() {\r\n // console.log('mounted')\r\n\r\n let vo = this\r\n\r\n //註冊至$dg供使用\r\n vo.$dg.showVeGrupBlngUsersById = vo.showVeGrupBlngUsersById\r\n vo.$dg.showVeCpemisById = vo.showVeCpemisById\r\n\r\n //firstSetting\r\n if (vo.firstSetting) {\r\n // console.log('webInfor', vo.webInfor)\r\n\r\n let showModeEditGrups = get(vo, 'webInfor.showModeEditGrups', '')\r\n vo.showIsEditable = showModeEditGrups === 'y'\r\n let modeEditGrups = get(vo, 'webInfor.modeEditGrups', '')\r\n vo.isEditable = modeEditGrups === 'y'\r\n\r\n vo.widthGrupsName = get(vo, 'webInfor.widthGrupsName', '')\r\n vo.widthGrupsDescription = get(vo, 'webInfor.widthGrupsDescription', '')\r\n\r\n vo.firstSetting = false\r\n }\r\n\r\n },\r\n computed: {\r\n\r\n webInfor: function() {\r\n let wi = get(this, `$store.state.webInfor`)\r\n return wi\r\n },\r\n\r\n targets: function() {\r\n let rs = get(this, `$store.state.targets`)\r\n rs = sortBy(rs, 'order')\r\n return rs\r\n },\r\n\r\n pemis: function() {\r\n let rs = get(this, `$store.state.pemis`)\r\n rs = sortBy(rs, 'order')\r\n return rs\r\n },\r\n\r\n grups: function() {\r\n let rs = get(this, `$store.state.grups`)\r\n rs = sortBy(rs, 'order')\r\n return rs\r\n },\r\n\r\n users: function() {\r\n let rs = get(this, `$store.state.users`)\r\n rs = sortBy(rs, 'order')\r\n return rs\r\n },\r\n\r\n useUsers: function() {\r\n let vo = this\r\n\r\n //parse cgrups\r\n let users = map(vo.users, (u) => {\r\n\r\n //cloneDeep\r\n u = cloneDeep(u)\r\n\r\n //kpGrup\r\n let kpGrup = {}\r\n try {\r\n // console.log('u.cgrups', u.cgrups)\r\n kpGrup = JSON5.parse(u.cgrups)\r\n }\r\n catch (err) {}\r\n\r\n //save kpGrup\r\n u.kpGrup = kpGrup\r\n\r\n return u\r\n })\r\n // console.log('users', users)\r\n\r\n return users\r\n },\r\n\r\n kpGrupUser: function() {\r\n let vo = this\r\n\r\n //kp\r\n let kp = {}\r\n each(vo.useUsers, (u) => {\r\n each(u.kpGrup, (v, k) => {\r\n let isActive = get(v, 'isActive', '')\r\n if (isActive !== 'y') {\r\n return true //跳出換下一個\r\n }\r\n if (!haskey(kp, k)) {\r\n kp[k] = []\r\n }\r\n kp[k].push({\r\n user: u,\r\n grup: v,\r\n })\r\n })\r\n })\r\n // console.log('kp', kp)\r\n\r\n return kp\r\n },\r\n\r\n kpUseGrupUser: function() {\r\n let vo = this\r\n\r\n //_kp\r\n let _kp = {}\r\n each(vo.grups, (v, k) => {\r\n _kp[v.name] = true\r\n })\r\n // console.log('_kp', _kp)\r\n\r\n //kp\r\n let kp = {}\r\n each(vo.kpGrupUser, (v, k) => {\r\n if (haskey(_kp, k)) {\r\n kp[k] = v\r\n }\r\n })\r\n // console.log('kp', kp)\r\n\r\n return kp\r\n },\r\n\r\n changeParams: function() {\r\n // console.log('computed changeParams')\r\n\r\n let vo = this\r\n\r\n //trigger\r\n let isEditable = vo.isEditable\r\n let grups = cloneDeep(vo.grups)\r\n let kpUseGrupUser = cloneDeep(vo.kpUseGrupUser)\r\n\r\n //items\r\n let items = vo.genItems(grups, kpUseGrupUser)\r\n\r\n //save\r\n vo.items = items\r\n\r\n //genOpt\r\n vo.genOpt({ isEditable })\r\n\r\n //firstLoading\r\n vo.firstLoading = false\r\n\r\n return ''\r\n },\r\n\r\n contentHeight: function() {\r\n let vo = this\r\n\r\n //h\r\n let h = vo.panelHeight - vo.headHeight\r\n h = Math.max(h, 0)\r\n\r\n return h\r\n },\r\n\r\n hasItemsCheck: function() {\r\n let vo = this\r\n\r\n //h\r\n let b = size(vo.itemsCheck) > 0\r\n\r\n return b\r\n },\r\n\r\n hasItemCheckOne: function() {\r\n let vo = this\r\n\r\n //h\r\n let b = size(vo.itemsCheck) === 1\r\n\r\n return b\r\n },\r\n\r\n errItemsByName: function() {\r\n let vo = this\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //kpErr\r\n let kpErr = {}\r\n let kpName = {}\r\n each(rows, (v, k) => {\r\n\r\n //name\r\n let name = get(v, 'name', '')\r\n\r\n //check\r\n if (!isestr(name)) {\r\n\r\n //kpErr\r\n kpErr[name] = vo.$t(`grupNameEmpty`)\r\n\r\n return true //跳出換下一個\r\n }\r\n\r\n //check\r\n if (haskey(kpName, name)) {\r\n\r\n //kpErr\r\n kpErr[name] = vo.$t(`grupNameDuplicate`)\r\n\r\n return true //跳出換下一個\r\n }\r\n\r\n //kpName\r\n kpName[name] = true\r\n\r\n })\r\n\r\n return kpErr\r\n },\r\n\r\n isError: function() {\r\n let vo = this\r\n\r\n let c = ''\r\n let b = false\r\n b = iseobj(vo.errItemsByName)\r\n if (b) {\r\n c = vo.$t('errInNames')\r\n }\r\n\r\n return c\r\n },\r\n\r\n kpHead: function() {\r\n let vo = this\r\n\r\n let kp = {\r\n 'id': vo.$t('id'),\r\n 'name': vo.$t('name'),\r\n 'description': vo.$t('description'),\r\n 'from': vo.$t('from'),\r\n 'belongUsers': vo.$t('belongUsers'),\r\n 'cpemis': vo.$t('grupCpemis'),\r\n 'userId': vo.$t('userId'),\r\n 'timeCreate': vo.$t('timeCreate'),\r\n 'userIdUpdate': vo.$t('userIdUpdate'),\r\n 'timeUpdate': vo.$t('timeUpdate'),\r\n }\r\n\r\n return kp\r\n },\r\n\r\n },\r\n methods: {\r\n\r\n resizePanel: function(msg) {\r\n // console.log('methods resizePanel', msg)\r\n\r\n let vo = this\r\n\r\n //panelWidth, panelHeight\r\n vo.panelWidth = msg.snew.offsetWidth\r\n vo.panelHeight = msg.snew.offsetHeight\r\n\r\n },\r\n\r\n resizeHead: function(msg) {\r\n // console.log('methods resizeHead', msg)\r\n\r\n let vo = this\r\n\r\n //headHeight\r\n vo.headHeight = msg.snew.offsetHeight\r\n\r\n },\r\n\r\n getHead: function(key) {\r\n // console.log('methods getHead', key)\r\n\r\n let vo = this\r\n\r\n let head = get(vo, `kpHead.${key}`, '')\r\n\r\n return head\r\n },\r\n\r\n genOpt: function() {\r\n // console.log('methods genOpt')\r\n\r\n let vo = this\r\n\r\n //default\r\n vo.itemsCheck = []\r\n\r\n //opt\r\n let opt = null\r\n if (size(vo.items) > 0) {\r\n\r\n //ks\r\n let ks = vo.tabKeys\r\n // console.log('ks', ks)\r\n\r\n //kpHead\r\n let kpHead = vo.kpHead\r\n\r\n //kpCellEditable, kpRowDrag, kpHeadCheckBox\r\n let kpCellEditable = {}\r\n let kpRowDrag = {}\r\n let kpHeadCheckBox = {}\r\n if (vo.isEditable) {\r\n kpCellEditable = {\r\n 'name': true,\r\n 'description': true,\r\n 'from': true,\r\n }\r\n kpRowDrag = {\r\n 'name': true,\r\n }\r\n kpHeadCheckBox = {\r\n 'name': true,\r\n }\r\n }\r\n\r\n //kpHeadHide\r\n let kpHeadHide = {\r\n 'id': true,\r\n }\r\n if (true) {\r\n let tabKeysHide = arrPull(vo.tabKeysPick, vo.tabKeysShow)\r\n each(tabKeysHide, (k) => {\r\n kpHeadHide[k] = true\r\n })\r\n }\r\n\r\n //opt\r\n opt = {\r\n language: vo.$t('aggridLanguage'),\r\n rows: vo.items,\r\n keys: ks,\r\n kpHead,\r\n // autoFitColumn: true,\r\n defCellEditable: false, //vo.isEditable,\r\n defHeadFilter: true,\r\n defCellAlignH: 'left',\r\n kpHeadHide,\r\n kpHeadFixLeft: {\r\n 'name': true,\r\n },\r\n defHeadMinWidth: 150,\r\n kpHeadWidth: {\r\n 'name': isnum(vo.widthGrupsName) ? cdbl(vo.widthGrupsName) : 300,\r\n 'description': isnum(vo.widthGrupsDescription) ? cdbl(vo.widthGrupsDescription) : 300,\r\n 'belongUsers': 300,\r\n 'cpemis': 300,\r\n 'timeCreate': 220,\r\n 'timeUpdate': 220,\r\n },\r\n kpHeadFilterType: {\r\n 'id': 'text',\r\n 'name': 'text',\r\n 'description': 'text',\r\n 'from': 'text',\r\n 'belongUsers': 'text',\r\n 'cpemis': 'text',\r\n 'userId': 'text',\r\n 'timeCreate': 'text',\r\n 'userIdUpdate': 'text',\r\n 'timeUpdate': 'text',\r\n },\r\n kpCellEditable,\r\n kpRowDrag,\r\n kpHeadCheckBox,\r\n kpHeadFilter: {\r\n 'belongUsers': false,\r\n 'cpemis': false,\r\n },\r\n kpHeadSort: {\r\n 'belongUsers': false,\r\n 'cpemis': false,\r\n },\r\n kpHeadFocusHighlight: { //雖然效果不完全, 但因按鈕與cell有padding可被點擊, 故還是需要開啟\r\n 'belongUsers': false,\r\n 'cpemis': false,\r\n },\r\n kpCellRender: {\r\n 'name': (v) => {\r\n // console.log('kpCellRender name', v)\r\n\r\n //err\r\n let err = get(vo.errItemsByName, v, '')\r\n // console.log(v, err)\r\n\r\n //check\r\n if (isestr(err)) {\r\n v = `\r\n <span title=\"${err}\">\r\n <span style=\"color:#F57C00;\">${cstr(v)}</span>\r\n <img style=\"vertical-align:sub; width:16px; height:16px;\" src=\"${vo.$ui.getIcon('warning')}\" />\r\n </span>\r\n `\r\n }\r\n\r\n return v\r\n },\r\n 'belongUsers': (v, k, r) => {\r\n // console.log('kpCellRender belongUsers', v, k, r)\r\n\r\n //id\r\n let id = get(r, 'id', '')\r\n // console.log('id', id, k, r)\r\n\r\n //因kpHeadFocusHighlight設定false時, 仍會於點擊其他可focus的cell, 再點回時依然出現highlight的focus邊框, 故改使用stopPropagation強制吃掉點擊訊息\r\n //因stopPropagation只吃掉訊息, 原本focus會處於原本可focus的cell, 再重複點時會於前個focus的cell出現highlight邊框, 故再多使用preventDefault阻止瀏覽器預設行為, 此等同於return false\r\n let t = `\r\n <div onclick=\"event.stopPropagation();event.preventDefault();\" onmousedown=\"event.stopPropagation();event.preventDefault();\">\r\n <button style=\"width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;\" onclick=\"$vo.$dg.showVeGrupBlngUsersById('${id}')\">${v}</button>\r\n </div>\r\n `\r\n\r\n return t\r\n },\r\n 'cpemis': (v, k, r) => {\r\n // console.log('kpCellRender cpemis', v, k, r)\r\n\r\n //id\r\n let id = get(r, 'id', '')\r\n // console.log('id', id, k, r)\r\n\r\n //因kpHeadFocusHighlight設定false時, 仍會於點擊其他可focus的cell, 再點回時依然出現highlight的focus邊框, 故改使用stopPropagation強制吃掉點擊訊息\r\n //因stopPropagation只吃掉訊息, 原本focus會處於原本可focus的cell, 再重複點時會於前個focus的cell出現highlight邊框, 故再多使用preventDefault阻止瀏覽器預設行為, 此等同於return false\r\n let t = `\r\n <div onclick=\"event.stopPropagation();event.preventDefault();\" onmousedown=\"event.stopPropagation();event.preventDefault();\">\r\n <button style=\"width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;\" onclick=\"$vo.$dg.showVeCpemisById('${id}')\">${vo.getCpemisText(v)}</button>\r\n </div>\r\n `\r\n\r\n return t\r\n },\r\n },\r\n rowsChange: (rs) => {\r\n // console.log('rowsChange', rs)\r\n // console.log('rowsChange cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n rowChecked: (rs) => {\r\n // console.log('rowChecked', rs)\r\n // console.log('rowChecked cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\r\n\r\n //save itemsCheck\r\n vo.itemsCheck = cloneDeep(rs)\r\n\r\n },\r\n }\r\n // console.log('opt', opt)\r\n\r\n }\r\n\r\n //save\r\n vo.opt = opt\r\n\r\n },\r\n\r\n refresh: function() {\r\n let vo = this\r\n\r\n //cmp\r\n let cmp = get(vo, '$refs.rftable.$refs.$self')\r\n // console.log('cmp', cmp)\r\n\r\n //refresh, 因set不會觸發kpCellRender, 故須另外調用組件函數refresh, 進而觸發kpCellRender, 使能更新數據\r\n cmp.refresh()\r\n\r\n },\r\n\r\n toggleTabKeys: function() {\r\n let vo = this\r\n\r\n //cmp\r\n let cmp = get(vo, '$refs.rftable.$refs.$self')\r\n // console.log('cmp', cmp)\r\n\r\n //showKeys\r\n cmp.showKeys(vo.tabKeysShow)\r\n // console.log('tabKeysShow', vo.tabKeysShow)\r\n\r\n },\r\n\r\n genItems: function(grups, kpUseGrupUser) {\r\n // console.log('method genItems', grups, kpUseGrupUser)\r\n\r\n let vo = this\r\n\r\n //items\r\n let items = map(grups, (g) => {\r\n\r\n //us\r\n let us = []\r\n if (haskey(kpUseGrupUser, g.name)) {\r\n us = kpUseGrupUser[g.name]\r\n }\r\n // console.log('us', us)\r\n\r\n //belongUsers\r\n let belongUsers = vo.$t('grupBlngRnderNoUser')\r\n let t = vo.$t('grupBlngRnderUsers')\r\n let n = size(us)\r\n if (n > 0) {\r\n t = t.replace('{n}', n)\r\n if (n === 1) {\r\n t = t.replace('{nms}', `(${us[0].user.name})`)\r\n }\r\n else {\r\n t = t.replace('{nms}', '')\r\n }\r\n belongUsers = t\r\n }\r\n\r\n //save belongUsers, us\r\n g.belongUsers = belongUsers\r\n g.us = us\r\n // console.log('g', g)\r\n\r\n return g\r\n })\r\n // console.log('items', items)\r\n\r\n return items\r\n },\r\n\r\n addItem: function() {\r\n // console.log('method addItem')\r\n\r\n let vo = this\r\n\r\n //cloneDeep\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //cloneDeep\r\n rows = cloneDeep(rows)\r\n\r\n //r\r\n let r = vo.$ds.grups.funNew()\r\n r.name = vo.$s.getNameNew(rows, 'name', '', vo.$t('grupAddNameNew'))\r\n r.userId = `{${vo.$t('grupAddIdNew')}}`\r\n r.timeCreate = `{${vo.$t('grupAddIdNew')}}`\r\n r.userIdUpdate = `{${vo.$t('grupAddIdNew')}}`\r\n r.timeUpdate = `{${vo.$t('grupAddIdNew')}}`\r\n // console.log('r', r)\r\n\r\n //belongUsers, us\r\n let us = []\r\n let belongUsers = vo.$t('grupBlngRnderNoUser')\r\n\r\n //save belongUsers, us\r\n r.belongUsers = belongUsers\r\n r.us = us\r\n // console.log('r', r)\r\n\r\n //添加至最首\r\n rows = [\r\n r,\r\n ...rows,\r\n ]\r\n\r\n //save\r\n vo.opt.rows = rows\r\n // console.log('cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n copyItem: function() {\r\n // console.log('method copyItem')\r\n\r\n let vo = this\r\n\r\n //check\r\n if (size(vo.itemsCheck) !== 1) {\r\n console.log(`size(vo.itemsCheck) !== 1`, vo.itemsCheck)\r\n vo.$alert(`${vo.$t('anUnexpectedErrorOccurred')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //cloneDeep\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //cloneDeep\r\n rows = cloneDeep(rows)\r\n\r\n //find\r\n let tar = vo.itemsCheck[0]\r\n let tarId = get(tar, 'data.id', '')\r\n let row = null\r\n each(rows, (v) => {\r\n let id = get(v, 'id', '')\r\n if (id === tarId) {\r\n row = v\r\n return false //跳出\r\n }\r\n })\r\n // console.log('tar', tar)\r\n // console.log('row', row)\r\n\r\n //check\r\n if (!iseobj(row)) {\r\n console.log(`!iseobj(row)`, row)\r\n vo.$alert(`${vo.$t('anUnexpectedErrorOccurred')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //r\r\n let r = cloneDeep(row)\r\n let nameOld = r.name\r\n let _r = vo.$ds.grups.funNew()\r\n r.id = _r.id //使用新建方式預先產生id避免重複\r\n r.name = vo.$s.getNameNew(rows, 'name', nameOld, vo.$t('grupCopyNameNew'))\r\n r.userId = `{${vo.$t('grupAddIdNew')}}`\r\n r.timeCreate = `{${vo.$t('grupAddIdNew')}}`\r\n r.userIdUpdate = `{${vo.$t('grupAddIdNew')}}`\r\n r.timeUpdate = `{${vo.$t('grupAddIdNew')}}`\r\n // console.log('r', r)\r\n\r\n //belongUsers, us\r\n let us = []\r\n let belongUsers = vo.$t('grupBlngRnderNoUser')\r\n\r\n //save belongUsers, us\r\n r.belongUsers = belongUsers\r\n r.us = us\r\n // console.log('r', r)\r\n\r\n //添加至最首\r\n rows = [\r\n r,\r\n ...rows,\r\n ]\r\n\r\n //save\r\n vo.opt.rows = rows\r\n // console.log('cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n deleteItemsCheck: function() {\r\n // console.log('method deleteItemsCheck')\r\n\r\n let vo = this\r\n\r\n //check\r\n if (size(vo.itemsCheck) === 0) {\r\n console.log(`size(vo.itemsCheck) === 0`, vo.itemsCheck)\r\n vo.$alert(`${vo.$t('anUnexpectedErrorOccurred')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //cloneDeep\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //cloneDeep\r\n rows = cloneDeep(rows)\r\n\r\n //filter\r\n each(vo.itemsCheck, (v) => {\r\n // console.log('v', v)\r\n let id = get(v, 'data.id', '')\r\n if (!isestr(id)) {\r\n console.log(`invalid id`)\r\n return true //跳出換下一個\r\n }\r\n rows = filter(rows, (vv) => {\r\n return vv.id !== id\r\n })\r\n })\r\n\r\n //clear\r\n vo.itemsCheck = []\r\n\r\n //save\r\n vo.opt.rows = rows\r\n // console.log('deleteItemsCheck cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n fltKpPemi: function(kp) {\r\n // console.log('fltKpPemi', kp)\r\n\r\n let vo = this\r\n\r\n //_kp\r\n let _kp = {}\r\n each(vo.pemis, (v, k) => {\r\n _kp[v.name] = true\r\n })\r\n // console.log('_kp', _kp)\r\n\r\n //kpt\r\n let kpt = {}\r\n each(kp, (v, k) => {\r\n if (haskey(_kp, k)) {\r\n kpt[k] = v\r\n }\r\n })\r\n\r\n return kpt\r\n },\r\n\r\n getCpemisText: function(cpemis) {\r\n // console.log('method getCpemisText', cpemis)\r\n\r\n let vo = this\r\n\r\n //kpPemi\r\n let kpPemi = {}\r\n try {\r\n // console.log('cpemis', cpemis)\r\n kpPemi = JSON5.parse(cpemis)\r\n }\r\n catch (err) {}\r\n // console.log('kpPemi', kpPemi)\r\n\r\n //fltKpPemi\r\n kpPemi = vo.fltKpPemi(kpPemi)\r\n // console.log('kpPemi(fltKpPemi)', kpPemi)\r\n\r\n //vs\r\n let vs = []\r\n each(kpPemi, (v, k) => {\r\n // console.log(k, 'v', v)\r\n\r\n //isActive\r\n let isActive = get(v, 'isActive', '')\r\n if (isActive !== 'y') {\r\n return true //跳出換下一個\r\n }\r\n // console.log(k, '_isActive', _isActive)\r\n\r\n //push\r\n vs.push(k)\r\n\r\n })\r\n\r\n //cpemisText\r\n let cpemisText = vo.$t('grupRnderCpemisNoPermission')\r\n let t = vo.$t('grupRnderCpemisHasNPermissions')\r\n let n = size(vs)\r\n if (n > 0) {\r\n t = t.replace('{n}', n)\r\n if (n === 1) {\r\n t = t.replace('{nms}', `(${vs[0]})`)\r\n }\r\n else {\r\n t = t.replace('{nms}', '')\r\n }\r\n cpemisText = t\r\n }\r\n\r\n return cpemisText\r\n },\r\n\r\n showVeGrupBlngUsersById: function(id) {\r\n // console.log('method showVeGrupBlngUsersById', id)\r\n\r\n let vo = this\r\n\r\n //check\r\n if (!isestr(id)) {\r\n vo.$alert(`${vo.$t('grupEditBlngNoGrupId')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //find\r\n let r = null\r\n // let kr = null\r\n each(rows, (v, k) => {\r\n if (get(v, 'id', '') === id) {\r\n r = v\r\n // kr = k\r\n return false //跳出\r\n }\r\n })\r\n // console.log('r', r)\r\n\r\n //check\r\n if (!iseobj(r)) {\r\n vo.$alert(`${vo.$t('grupEditBlngNoGrupData')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //showVeGrupBlngUsers\r\n vo.$dg.showVeGrupBlngUsers({\r\n isEditable: vo.isEditable,\r\n grup: r,\r\n })\r\n .then(() => {})\r\n .catch(() => {})\r\n\r\n },\r\n\r\n showVeCpemisById: function(id) {\r\n // console.log('method showVeCpemisById', id)\r\n\r\n let vo = this\r\n\r\n //check\r\n if (!isestr(id)) {\r\n vo.$alert(`${vo.$t('grupEditBlngNoGrupId')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //find\r\n let r = null\r\n let kr = null\r\n each(rows, (v, k) => {\r\n if (get(v, 'id', '') === id) {\r\n r = v\r\n kr = k\r\n return false //跳出\r\n }\r\n })\r\n\r\n //check\r\n if (!iseobj(r)) {\r\n vo.$alert(`${vo.$t('grupEditBlngNoGrupData')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //showVeCpemis\r\n vo.$dg.showVeCpemis({\r\n isEditable: vo.isEditable,\r\n grup: r,\r\n })\r\n .then((cpemis) => {\r\n // console.log('cpemis', cpemis)\r\n\r\n //set\r\n set(vo, `opt.rows[${kr}].cpemis`, cpemis)\r\n // console.log('vo.opt.rows[kr]', cloneDeep(vo.opt.rows[kr]))\r\n\r\n //refresh\r\n vo.refresh()\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n })\r\n .catch(() => {})\r\n\r\n },\r\n\r\n saveGrups: function() {\r\n // console.log('method saveGrups')\r\n\r\n let vo = this\r\n\r\n async function core() {\r\n let errTemp = null\r\n\r\n //show loading\r\n vo.$ui.updateLoading(true)\r\n\r\n //check\r\n if (isestr(vo.isError)) {\r\n vo.$alert(`${vo.isError}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //check\r\n if (size(rows) === 0) {\r\n vo.$alert(`${vo.$t('grupAddEmpty')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //updateGrups\r\n await vo.$fapi.updateGrups(rows)\r\n .catch((err) => {\r\n errTemp = err\r\n })\r\n\r\n //check\r\n if (errTemp !== null) {\r\n vo.$alert(`${vo.$t('grupSaveGrupsFail')}: ${errTemp}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //isModified\r\n vo.isModified = false\r\n\r\n //alert\r\n vo.$alert(vo.$t('grupSaveGrupsSuccess'))\r\n\r\n }\r\n\r\n //core\r\n core()\r\n // .then((res) => {\r\n // console.log('then', res)\r\n // })\r\n .catch((err) => {\r\n console.log('catch', err)\r\n vo.$alert(vo.$t('anUnexpectedErrorOccurred'), { type: 'error' })\r\n })\r\n .finally(() => {\r\n\r\n //hide loading\r\n vo.$ui.updateLoading(false)\r\n\r\n })\r\n\r\n },\r\n\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n</style>\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LayoutContentGrups.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LayoutContentGrups.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./LayoutContentGrups.vue?vue&type=template&id=e6799f4e&scoped=true\"\nimport script from \"./LayoutContentGrups.vue?vue&type=script&lang=js\"\nexport * from \"./LayoutContentGrups.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e6799f4e\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{directives:[{name:\"domresize\",rawName:\"v-domresize\"}],staticStyle:{\"height\":\"100%\"},attrs:{\"changeParams\":_vm.changeParams},on:{\"domresize\":_vm.resizePanel}},[_c('div',{directives:[{name:\"domresize\",rawName:\"v-domresize\"}],staticStyle:{\"_border-bottom\":\"1px solid #ddd\",\"background\":\"#fff\"},on:{\"domresize\":_vm.resizeHead}},[_c('div',{staticStyle:{\"padding\":\"10px 10px 10px 20px\"}},[_c('div',{style:(`display:flex; align-items:center; padding:${_vm.drawer?'5px':'5px 5px 5px 20px'};`)},[_c('WIcon',{attrs:{\"icon\":_vm.mdiAccountGroupOutline,\"color\":'#000',\"size\":32}}),_c('div',{staticStyle:{\"padding-left\":\"12px\"}},[_c('div',{staticStyle:{\"font-size\":\"1.4rem\",\"color\":\"#000\"}},[_vm._v(\" \"+_vm._s(_vm.$t('mmUsers'))+\" \")]),_c('div',{staticStyle:{\"padding-top\":\"2px\",\"font-size\":\"0.8rem\",\"color\":\"#666\"}},[_vm._v(\" \"+_vm._s(_vm.$t('mmUsersMsg'))+\" \")])])],1)]),_c('div',{staticStyle:{\"padding\":\"5px\",\"border-top\":\"1px solid #ddd\",\"display\":\"flex\",\"align-items\":\"center\"},attrs:{\"_v-if\":\"showIsEditable || isEditable\"}},[(_vm.showIsEditable)?[_c('div',{staticStyle:{\"padding\":\"6px 0px 4px 4px\"}},[_c('WSwitch',{attrs:{\"checkedSwitchCircleColor\":'#F68200',\"checkedSwitchCircleColorHover\":'#FB8C00',\"checkedSwitchBarColor\":'#FFE0B2',\"checkedSwitchBarColorHover\":'#FFE6B8',\"text\":_vm.$t('modeEdit')},model:{value:(_vm.isEditable),callback:function ($$v) {_vm.isEditable=$$v},expression:\"isEditable\"}})],1),_c('div',{staticStyle:{\"padding-left\":\"10px\"}})]:_vm._e(),(true)?[_c('WPopup',{attrs:{\"isolated\":true,\"_show\":\"\",\"_hide\":\"\"},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('showTabCols'),\"icon\":_vm.mdiTableHeadersEye,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"_textColor\":\"'#eee'\",\"_textColorHover\":\"'#fff'\",\"iconColor\":'#444',\"iconColorHover\":'#222',\"shadow\":false,\"_click\":\"\"}})]},proxy:true},{key:\"content\",fn:function(){return [_c('div',{staticStyle:{\"padding\":\"10px 0px 10px 0px\"}},[_c('div',{staticStyle:{\"padding\":\"7px 10px\",\"font-size\":\"0.85rem\",\"color\":\"#222\",\"background\":\"#f2f2f2\"}},[_vm._v(\" \"+_vm._s(_vm.$t('showTabCols'))+\" \")]),_c('div',{staticStyle:{\"padding\":\"7px 9px 0px 7px\"}},[_c('WInputCheckbox',{attrs:{\"items\":_vm.tabKeysPick},on:{\"input\":_vm.toggleTabKeys},scopedSlots:_vm._u([{key:\"default\",fn:function(props){return [_c('div',{staticStyle:{\"padding-left\":\"3px\",\"display\":\"flex\",\"align-items\":\"center\",\"font-size\":\"0.85rem\",\"height\":\"24px\",\"cursor\":\"pointer\"}},[_vm._v(\" \"+_vm._s(_vm.getHead(props.item.data))+\" \")])]}}],null,false,286315898),model:{value:(_vm.tabKeysShow),callback:function ($$v) {_vm.tabKeysShow=$$v},expression:\"tabKeysShow\"}})],1)])]},proxy:true}],null,false,1031542656)}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})]:_vm._e(),(_vm.isEditable)?[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('userAdd'),\"icon\":_vm.mdiPlus,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"_textColor\":\"'#eee'\",\"_textColorHover\":\"'#fff'\",\"iconColor\":'#444',\"iconColorHover\":'#222',\"shadow\":false},on:{\"click\":_vm.addItem}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})]:_vm._e(),(_vm.isEditable && _vm.hasItemCheckOne)?[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('userCopy'),\"icon\":_vm.mdiContentCopy,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"_textColor\":\"'#eee'\",\"_textColorHover\":\"'#fff'\",\"iconColor\":'#444',\"iconColorHover\":'#222',\"shadow\":false},on:{\"click\":_vm.copyItem}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})]:_vm._e(),(_vm.isEditable && _vm.hasItemsCheck)?[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('userDeleteCheckUsers'),\"icon\":_vm.mdiTrashCanOutline,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"_textColor\":\"'#eee'\",\"_textColorHover\":\"'#fff'\",\"iconColor\":'#444',\"iconColorHover\":'#222',\"shadow\":false},on:{\"click\":_vm.deleteItemsCheck}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})]:_vm._e(),(_vm.isEditable && _vm.isModified)?[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('saveChanges'),\"icon\":_vm.mdiCloudUploadOutline,\"backgroundColor\":'rgba(255,0,50,0.7)',\"backgroundColorHover\":'rgba(255,0,50,0.8)',\"textColor\":'#eee',\"textColorHover\":'#fff',\"iconColor\":'#eee',\"iconColorHover\":'#fff',\"shadow\":false},on:{\"click\":_vm.saveUsers}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})]:_vm._e()],2)]),(!_vm.firstLoading)?[(_vm.items)?[_c('WAggridVueDyn',{ref:\"rftable\",style:(`width:100%;`),attrs:{\"height\":_vm.contentHeight,\"opt\":_vm.opt}})]:_vm._e()]:_c('div',{staticStyle:{\"padding\":\"10px 15px\",\"font-size\":\"0.8rem\"}},[_vm._v(\" \"+_vm._s(_vm.$t('waitingData'))+\" \")])],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div\r\n style=\"height:100%;\"\r\n v-domresize\r\n @domresize=\"resizePanel\"\r\n :changeParams=\"changeParams\"\r\n >\r\n\r\n <div\r\n style=\"_border-bottom:1px solid #ddd; background:#fff;\"\r\n v-domresize\r\n @domresize=\"resizeHead\"\r\n >\r\n\r\n <!-- 標題區 -->\r\n <div style=\"padding:10px 10px 10px 20px;\">\r\n <div :style=\"`display:flex; align-items:center; padding:${drawer?'5px':'5px 5px 5px 20px'};`\">\r\n\r\n <WIcon\r\n :icon=\"mdiAccountGroupOutline\"\r\n :color=\"'#000'\"\r\n :size=\"32\"\r\n ></WIcon>\r\n\r\n <div style=\"padding-left:12px;\">\r\n\r\n <div style=\"font-size:1.4rem; color:#000;\">\r\n {{$t('mmUsers')}}\r\n </div>\r\n\r\n <div style=\"padding-top:2px; font-size:0.8rem; color:#666;\">\r\n {{$t('mmUsersMsg')}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <!-- 功能區 -->\r\n <div\r\n style=\"padding:5px; border-top:1px solid #ddd; display:flex; align-items:center;\"\r\n _v-if=\"showIsEditable || isEditable\"\r\n >\r\n\r\n <template v-if=\"showIsEditable\">\r\n\r\n <div style=\"padding:6px 0px 4px 4px;\">\r\n <WSwitch\r\n :checkedSwitchCircleColor=\"'#F68200'\"\r\n :checkedSwitchCircleColorHover=\"'#FB8C00'\"\r\n :checkedSwitchBarColor=\"'#FFE0B2'\"\r\n :checkedSwitchBarColorHover=\"'#FFE6B8'\"\r\n v-model=\"isEditable\"\r\n :text=\"$t('modeEdit')\"\r\n ></WSwitch>\r\n </div>\r\n\r\n <div style=\"padding-left:10px;\"></div>\r\n\r\n </template>\r\n\r\n <template v-if=\"true\">\r\n\r\n <WPopup\r\n :isolated=\"true\"\r\n _show=\"\"\r\n _hide=\"\"\r\n >\r\n <template v-slot:trigger>\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('showTabCols')\"\r\n :icon=\"mdiTableHeadersEye\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n _textColor=\"'#eee'\"\r\n _textColorHover=\"'#fff'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :shadow=\"false\"\r\n _click=\"\"\r\n ></WButtonCircle>\r\n </template>\r\n\r\n <template v-slot:content>\r\n <div style=\"padding:10px 0px 10px 0px;\">\r\n\r\n <div style=\"padding:7px 10px; font-size:0.85rem; color:#222; background:#f2f2f2;\">\r\n {{$t('showTabCols')}}\r\n </div>\r\n\r\n <div style=\"padding:7px 9px 0px 7px;\">\r\n <WInputCheckbox\r\n :items=\"tabKeysPick\"\r\n v-model=\"tabKeysShow\"\r\n @input=\"toggleTabKeys\"\r\n >\r\n <template v-slot=\"props\">\r\n <div style=\"padding-left:3px; display:flex; align-items:center; font-size:0.85rem; height:24px; cursor:pointer;\">\r\n {{getHead(props.item.data)}}\r\n </div>\r\n </template>\r\n </WInputCheckbox>\r\n </div>\r\n\r\n </div>\r\n </template>\r\n </WPopup>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n <template v-if=\"isEditable\">\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('userAdd')\"\r\n :icon=\"mdiPlus\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n _textColor=\"'#eee'\"\r\n _textColorHover=\"'#fff'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :shadow=\"false\"\r\n @click=\"addItem\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n <template v-if=\"isEditable && hasItemCheckOne\">\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('userCopy')\"\r\n :icon=\"mdiContentCopy\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n _textColor=\"'#eee'\"\r\n _textColorHover=\"'#fff'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :shadow=\"false\"\r\n @click=\"copyItem\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n <template v-if=\"isEditable && hasItemsCheck\">\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('userDeleteCheckUsers')\"\r\n :icon=\"mdiTrashCanOutline\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n _textColor=\"'#eee'\"\r\n _textColorHover=\"'#fff'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :shadow=\"false\"\r\n @click=\"deleteItemsCheck\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n <template v-if=\"isEditable && isModified\">\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('saveChanges')\"\r\n :icon=\"mdiCloudUploadOutline\"\r\n :backgroundColor=\"'rgba(255,0,50,0.7)'\"\r\n :backgroundColorHover=\"'rgba(255,0,50,0.8)'\"\r\n :textColor=\"'#eee'\"\r\n :textColorHover=\"'#fff'\"\r\n :iconColor=\"'#eee'\"\r\n :iconColorHover=\"'#fff'\"\r\n :shadow=\"false\"\r\n @click=\"saveUsers\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n <template\r\n v-if=\"!firstLoading\"\r\n >\r\n\r\n <template v-if=\"items\">\r\n <WAggridVueDyn\r\n ref=\"rftable\"\r\n :style=\"`width:100%;`\"\r\n :height=\"contentHeight\"\r\n :opt=\"opt\"\r\n >\r\n </WAggridVueDyn>\r\n </template>\r\n\r\n </template>\r\n\r\n <div\r\n style=\"padding:10px 15px; font-size:0.8rem;\"\r\n v-else\r\n >\r\n {{$t('waitingData')}}\r\n </div>\r\n\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport { mdiAccountGroupOutline, mdiVectorPolylinePlus, mdiCheckboxMarkedCircle, mdiCloudUploadOutline, mdiTrashCanOutline, mdiTableHeadersEye, mdiPlus, mdiPencilOutline, mdiContentCopy } from '@mdi/js/mdi.js'\r\nimport JSON5 from 'json5'\r\nimport get from 'lodash-es/get.js'\r\nimport set from 'lodash-es/set.js'\r\nimport each from 'lodash-es/each.js'\r\nimport size from 'lodash-es/size.js'\r\nimport filter from 'lodash-es/filter.js'\r\nimport sortBy from 'lodash-es/sortBy.js'\r\nimport cloneDeep from 'lodash-es/cloneDeep.js'\r\nimport haskey from 'wsemi/src/haskey.mjs'\r\nimport isestr from 'wsemi/src/isestr.mjs'\r\nimport iseobj from 'wsemi/src/iseobj.mjs'\r\nimport isnum from 'wsemi/src/isnum.mjs'\r\nimport isEmail from 'wsemi/src/isEmail.mjs'\r\nimport cdbl from 'wsemi/src/cdbl.mjs'\r\nimport cstr from 'wsemi/src/cstr.mjs'\r\nimport arrPull from 'wsemi/src/arrPull.mjs'\r\nimport WIcon from 'w-component-vue/src/components/WIcon.vue'\r\nimport WSwitch from 'w-component-vue/src/components/WSwitch.vue'\r\nimport WButtonCircle from 'w-component-vue/src/components/WButtonCircle.vue'\r\nimport WPopup from 'w-component-vue/src/components/WPopup.vue'\r\nimport WInputCheckbox from 'w-component-vue/src/components/WInputCheckbox.vue'\r\nimport WAggridVueDyn from 'w-component-vue/src/components/WAggridVueDyn.vue'\r\n\r\n\r\nexport default {\r\n components: {\r\n WIcon,\r\n WSwitch,\r\n WButtonCircle,\r\n WPopup,\r\n WInputCheckbox,\r\n WAggridVueDyn,\r\n },\r\n props: {\r\n drawer: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n data: function() {\r\n return {\r\n mdiAccountGroupOutline,\r\n mdiVectorPolylinePlus,\r\n mdiCheckboxMarkedCircle,\r\n mdiCloudUploadOutline,\r\n mdiTrashCanOutline,\r\n mdiTableHeadersEye,\r\n mdiPlus,\r\n mdiPencilOutline,\r\n mdiContentCopy,\r\n\r\n panelWidth: 100,\r\n panelHeight: 100,\r\n headHeight: 100,\r\n\r\n firstLoading: true,\r\n firstSetting: true,\r\n showIsEditable: false,\r\n isEditable: false,\r\n isModified: false,\r\n\r\n tabKeys: [\r\n 'id',\r\n 'name',\r\n 'email',\r\n 'description',\r\n 'from',\r\n 'cgrups',\r\n 'isAdmin',\r\n 'isActive',\r\n 'userId',\r\n 'timeCreate',\r\n 'userIdUpdate',\r\n 'timeUpdate',\r\n ],\r\n tabKeysPick: [\r\n 'name',\r\n 'email',\r\n 'description',\r\n 'from',\r\n 'cgrups',\r\n 'isAdmin',\r\n 'isActive',\r\n 'userId',\r\n 'timeCreate',\r\n 'userIdUpdate',\r\n 'timeUpdate',\r\n ],\r\n tabKeysShow: [\r\n 'name',\r\n 'email',\r\n 'description',\r\n // 'from',\r\n 'cgrups',\r\n 'isAdmin',\r\n 'isActive',\r\n // 'userId',\r\n // 'timeCreate',\r\n // 'userIdUpdate',\r\n // 'timeUpdate',\r\n ],\r\n\r\n widthUsersName: null,\r\n widthUsersEmail: null,\r\n widthUsersDescription: null,\r\n\r\n items: [],\r\n itemsCheck: [],\r\n opt: null,\r\n\r\n }\r\n },\r\n mounted: function() {\r\n // console.log('mounted')\r\n\r\n let vo = this\r\n\r\n //註冊至$dg供使用\r\n vo.$dg.showVeCgrupsById = vo.showVeCgrupsById\r\n vo.$dg.toggleItemIsAdminById = vo.toggleItemIsAdminById\r\n vo.$dg.toggleItemIsActiveById = vo.toggleItemIsActiveById\r\n\r\n //firstSetting\r\n if (vo.firstSetting) {\r\n // console.log('webInfor', vo.webInfor)\r\n\r\n let showModeEditUsers = get(vo, 'webInfor.showModeEditUsers', '')\r\n vo.showIsEditable = showModeEditUsers === 'y'\r\n let modeEditUsers = get(vo, 'webInfor.modeEditUsers', '')\r\n vo.isEditable = modeEditUsers === 'y'\r\n\r\n vo.widthUsersName = get(vo, 'webInfor.widthUsersName', '')\r\n vo.widthUsersEmail = get(vo, 'webInfor.widthUsersEmail', '')\r\n vo.widthUsersDescription = get(vo, 'webInfor.widthUsersDescription', '')\r\n\r\n vo.firstSetting = false\r\n }\r\n\r\n },\r\n computed: {\r\n\r\n webInfor: function() {\r\n let wi = get(this, `$store.state.webInfor`)\r\n return wi\r\n },\r\n\r\n targets: function() {\r\n let rs = get(this, `$store.state.targets`)\r\n rs = sortBy(rs, 'order')\r\n return rs\r\n },\r\n\r\n pemis: function() {\r\n let rs = get(this, `$store.state.pemis`)\r\n rs = sortBy(rs, 'order')\r\n return rs\r\n },\r\n\r\n grups: function() {\r\n let rs = get(this, `$store.state.grups`)\r\n rs = sortBy(rs, 'order')\r\n return rs\r\n },\r\n\r\n users: function() {\r\n let rs = get(this, `$store.state.users`)\r\n rs = sortBy(rs, 'order')\r\n return rs\r\n },\r\n\r\n changeParams: function() {\r\n // console.log('computed changeParams')\r\n\r\n let vo = this\r\n\r\n //trigger\r\n let isEditable = vo.isEditable\r\n\r\n //items\r\n let items = cloneDeep(vo.users)\r\n\r\n //save\r\n vo.items = items\r\n\r\n //genOpt\r\n vo.genOpt({ isEditable })\r\n\r\n //firstLoading\r\n vo.firstLoading = false\r\n\r\n return ''\r\n },\r\n\r\n contentHeight: function() {\r\n let vo = this\r\n\r\n //h\r\n let h = vo.panelHeight - vo.headHeight\r\n h = Math.max(h, 0)\r\n\r\n return h\r\n },\r\n\r\n hasItemsCheck: function() {\r\n let vo = this\r\n\r\n //h\r\n let b = size(vo.itemsCheck) > 0\r\n\r\n return b\r\n },\r\n\r\n hasItemCheckOne: function() {\r\n let vo = this\r\n\r\n //h\r\n let b = size(vo.itemsCheck) === 1\r\n\r\n return b\r\n },\r\n\r\n errItemsByName: function() {\r\n let vo = this\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //kpErr\r\n let kpErr = {}\r\n let kpName = {}\r\n each(rows, (v, k) => {\r\n\r\n //name\r\n let name = get(v, 'name', '')\r\n\r\n //check\r\n if (!isestr(name)) {\r\n\r\n //kpErr\r\n kpErr[name] = vo.$t(`userNameEmpty`)\r\n\r\n return true //跳出換下一個\r\n }\r\n\r\n //check\r\n if (haskey(kpName, name)) {\r\n\r\n //kpErr\r\n kpErr[name] = vo.$t(`userNameDuplicate`)\r\n\r\n return true //跳出換下一個\r\n }\r\n\r\n //kpName\r\n kpName[name] = true\r\n\r\n })\r\n\r\n return kpErr\r\n },\r\n\r\n errItemsByEmail: function() {\r\n let vo = this\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //kpErr\r\n let kpErr = {}\r\n let kpEmail = {}\r\n each(rows, (v, k) => {\r\n\r\n //email\r\n let email = get(v, 'email', '')\r\n\r\n //check\r\n if (!isestr(email)) {\r\n\r\n //kpErr\r\n kpErr[email] = vo.$t(`userEmailEmpty`)\r\n\r\n return true //跳出換下一個\r\n }\r\n\r\n //check\r\n if (!isEmail(email)) {\r\n\r\n //kpErr\r\n kpErr[email] = vo.$t(`userEmailError`)\r\n\r\n return true //跳出換下一個\r\n }\r\n\r\n //check\r\n if (haskey(kpEmail, email)) {\r\n\r\n //kpErr\r\n kpErr[email] = vo.$t(`userEmailDuplicate`)\r\n\r\n return true //跳出換下一個\r\n }\r\n\r\n //kpEmail\r\n kpEmail[email] = true\r\n\r\n })\r\n\r\n return kpErr\r\n },\r\n\r\n isError: function() {\r\n let vo = this\r\n\r\n let c = ''\r\n let b = false\r\n b = iseobj(vo.errItemsByName)\r\n if (b) {\r\n c = vo.$t('errInNames')\r\n return c\r\n }\r\n b = iseobj(vo.errItemsByEmail)\r\n if (b) {\r\n c = vo.$t('errInEmails')\r\n return c\r\n }\r\n\r\n return ''\r\n },\r\n\r\n kpHead: function() {\r\n let vo = this\r\n\r\n let kp = {\r\n 'id': vo.$t('id'),\r\n 'name': vo.$t('name'),\r\n 'email': vo.$t('email'),\r\n 'description': vo.$t('description'),\r\n 'from': vo.$t('from'),\r\n 'cgrups': vo.$t('userCgrups'),\r\n 'isAdmin': vo.$t('isAdmin'),\r\n 'isActive': vo.$t('isActive'),\r\n 'userId': vo.$t('userId'),\r\n 'timeCreate': vo.$t('timeCreate'),\r\n 'userIdUpdate': vo.$t('userIdUpdate'),\r\n 'timeUpdate': vo.$t('timeUpdate'),\r\n }\r\n\r\n return kp\r\n },\r\n\r\n },\r\n methods: {\r\n\r\n resizePanel: function(msg) {\r\n // console.log('methods resizePanel', msg)\r\n\r\n let vo = this\r\n\r\n //panelWidth, panelHeight\r\n vo.panelWidth = msg.snew.offsetWidth\r\n vo.panelHeight = msg.snew.offsetHeight\r\n\r\n },\r\n\r\n resizeHead: function(msg) {\r\n // console.log('methods resizeHead', msg)\r\n\r\n let vo = this\r\n\r\n //headHeight\r\n vo.headHeight = msg.snew.offsetHeight\r\n\r\n },\r\n\r\n getHead: function(key) {\r\n // console.log('methods getHead', key)\r\n\r\n let vo = this\r\n\r\n let head = get(vo, `kpHead.${key}`, '')\r\n\r\n return head\r\n },\r\n\r\n genOpt: function() {\r\n // console.log('methods genOpt')\r\n\r\n let vo = this\r\n\r\n //default\r\n vo.itemsCheck = []\r\n\r\n //opt\r\n let opt = null\r\n if (size(vo.items) > 0) {\r\n\r\n //ks\r\n let ks = vo.tabKeys\r\n // console.log('ks', ks)\r\n\r\n //kpHead\r\n let kpHead = vo.kpHead\r\n\r\n //kpCellEditable, kpRowDrag, kpHeadCheckBox\r\n let kpCellEditable = {}\r\n let kpRowDrag = {}\r\n let kpHeadCheckBox = {}\r\n if (vo.isEditable) {\r\n kpCellEditable = {\r\n 'name': true,\r\n 'email': true,\r\n 'description': true,\r\n 'from': true,\r\n }\r\n kpRowDrag = {\r\n 'name': true,\r\n }\r\n kpHeadCheckBox = {\r\n 'name': true,\r\n }\r\n }\r\n\r\n //kpHeadHide\r\n let kpHeadHide = {\r\n 'id': true,\r\n }\r\n if (true) {\r\n let tabKeysHide = arrPull(vo.tabKeysPick, vo.tabKeysShow)\r\n each(tabKeysHide, (k) => {\r\n kpHeadHide[k] = true\r\n })\r\n }\r\n\r\n //opt\r\n opt = {\r\n language: vo.$t('aggridLanguage'),\r\n rows: vo.items,\r\n keys: ks,\r\n kpHead,\r\n // autoFitColumn: true,\r\n defCellEditable: false, //vo.isEditable,\r\n defHeadFilter: true,\r\n defCellAlignH: 'left',\r\n kpHeadHide,\r\n kpHeadFixLeft: {\r\n 'name': true,\r\n },\r\n defHeadMinWidth: 150,\r\n kpHeadWidth: {\r\n 'name': isnum(vo.widthUsersName) ? cdbl(vo.widthUsersName) : 200,\r\n 'email': isnum(vo.widthUsersEmail) ? cdbl(vo.widthUsersEmail) : 300,\r\n 'description': isnum(vo.widthUsersDescription) ? cdbl(vo.widthUsersDescription) : 300,\r\n 'cgrups': 300,\r\n 'isAdmin': 100,\r\n 'isActive': 100,\r\n 'timeCreate': 220,\r\n 'timeUpdate': 220,\r\n },\r\n kpHeadFilterType: {\r\n 'id': 'text',\r\n 'name': 'text',\r\n 'email': 'text',\r\n 'description': 'text',\r\n 'from': 'text',\r\n 'cgrups': 'text',\r\n 'isAdmin': 'text',\r\n 'isActive': 'text',\r\n 'userId': 'text',\r\n 'timeCreate': 'text',\r\n 'userIdUpdate': 'text',\r\n 'timeUpdate': 'text',\r\n },\r\n kpCellEditable,\r\n kpRowDrag,\r\n kpHeadCheckBox,\r\n kpHeadFilter: {\r\n 'cgrups': false,\r\n },\r\n kpHeadSort: {\r\n 'cgrups': false,\r\n },\r\n kpHeadFocusHighlight: { //雖然效果不完全, 但因按鈕與cell有padding可被點擊, 故還是需要開啟\r\n 'cgrups': false,\r\n },\r\n kpCellRender: {\r\n 'name': (v) => {\r\n // console.log('kpCellRender name', v)\r\n\r\n //err\r\n let err = get(vo.errItemsByName, v, '')\r\n // console.log(v, err)\r\n\r\n //check\r\n if (isestr(err)) {\r\n v = `\r\n <span title=\"${err}\">\r\n <span style=\"color:#F57C00;\">${cstr(v)}</span>\r\n <img style=\"vertical-align:sub; width:16px; height:16px;\" src=\"${vo.$ui.getIcon('warning')}\" />\r\n </span>\r\n `\r\n }\r\n\r\n return v\r\n },\r\n 'email': (v) => {\r\n // console.log('kpCellRender email', v)\r\n\r\n //err\r\n let err = get(vo.errItemsByEmail, v, '')\r\n // console.log(v, err)\r\n\r\n //check\r\n if (isestr(err)) {\r\n v = `\r\n <span title=\"${err}\">\r\n <span style=\"color:#F57C00;\">${cstr(v)}</span>\r\n <img style=\"vertical-align:sub; width:16px; height:16px;\" src=\"${vo.$ui.getIcon('warning')}\" />\r\n </span>\r\n `\r\n }\r\n\r\n return v\r\n },\r\n 'cgrups': (v, k, r) => {\r\n // console.log('kpCellRender cgrups', v, k, r)\r\n\r\n //id\r\n let id = get(r, 'id', '')\r\n // console.log('id', id, k, r)\r\n\r\n //因kpHeadFocusHighlight設定false時, 仍會於點擊其他可focus的cell, 再點回時依然出現highlight的focus邊框, 故改使用stopPropagation強制吃掉點擊訊息\r\n //因stopPropagation只吃掉訊息, 原本focus會處於原本可focus的cell, 再重複點時會於前個focus的cell出現highlight邊框, 故再多使用preventDefault阻止瀏覽器預設行為, 此等同於return false\r\n let t = `\r\n <div onclick=\"event.stopPropagation();event.preventDefault();\" onmousedown=\"event.stopPropagation();event.preventDefault();\">\r\n <button style=\"width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;\" onclick=\"$vo.$dg.showVeCgrupsById('${id}')\">${vo.getCgrupsText(v)}</button>\r\n </div>\r\n `\r\n\r\n return t\r\n },\r\n 'isAdmin': (v, k, r) => {\r\n // console.log('kpCellRender isAdmin', v, k, r)\r\n\r\n //id\r\n let id = get(r, 'id', '')\r\n // console.log('id', id, k, r)\r\n\r\n let t = `\r\n <input type=\"checkbox\" ${v === 'y' ? 'checked' : ''} onclick=\"$vo.$dg.toggleItemIsAdminById('${id}')\" ${vo.isEditable ? '' : 'disabled'} />\r\n `\r\n\r\n return t\r\n },\r\n 'isActive': (v, k, r) => {\r\n // console.log('kpCellRender isActive', v, k, r)\r\n\r\n //id\r\n let id = get(r, 'id', '')\r\n // console.log('id', id, k, r)\r\n\r\n let t = `\r\n <input type=\"checkbox\" ${v === 'y' ? 'checked' : ''} onclick=\"$vo.$dg.toggleItemIsActiveById('${id}')\" ${vo.isEditable ? '' : 'disabled'} />\r\n `\r\n\r\n return t\r\n },\r\n },\r\n rowsChange: (rs) => {\r\n // console.log('rowsChange', rs)\r\n // console.log('rowsChange cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n rowChecked: (rs) => {\r\n // console.log('rowChecked', rs)\r\n // console.log('rowChecked cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\r\n\r\n //save itemsCheck\r\n vo.itemsCheck = cloneDeep(rs)\r\n\r\n },\r\n }\r\n // console.log('opt', opt)\r\n\r\n }\r\n\r\n //save\r\n vo.opt = opt\r\n\r\n },\r\n\r\n refresh: function() {\r\n let vo = this\r\n\r\n //cmp\r\n let cmp = get(vo, '$refs.rftable.$refs.$self')\r\n // console.log('cmp', cmp)\r\n\r\n //refresh, 因set不會觸發kpCellRender, 故須另外調用組件函數refresh, 進而觸發kpCellRender, 使能更新數據\r\n cmp.refresh()\r\n\r\n },\r\n\r\n toggleTabKeys: function() {\r\n let vo = this\r\n\r\n //cmp\r\n let cmp = get(vo, '$refs.rftable.$refs.$self')\r\n // console.log('cmp', cmp)\r\n\r\n //showKeys\r\n cmp.showKeys(vo.tabKeysShow)\r\n // console.log('tabKeysShow', vo.tabKeysShow)\r\n\r\n },\r\n\r\n toggleItemIsAdminById: function(id) {\r\n // console.log('toggleItemIsAdminById', id)\r\n\r\n let vo = this\r\n\r\n //k\r\n let k = 'isAdmin'\r\n\r\n //check\r\n if (!isestr(id)) {\r\n vo.$alert(`${vo.$t('userEditNoUserId')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //find\r\n let r = null\r\n let kr = null\r\n each(rows, (v, k) => {\r\n if (get(v, 'id', '') === id) {\r\n r = v\r\n kr = k\r\n return false //跳出\r\n }\r\n })\r\n\r\n //check\r\n if (!iseobj(r)) {\r\n vo.$alert(`${vo.$t('userEditNoUserData')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //v\r\n let _v = get(r, k, 'n')\r\n let v = _v === 'y' ? 'n' : 'y'\r\n // console.log(k, v)\r\n\r\n //set\r\n set(vo, `opt.rows[${kr}].${k}`, v)\r\n // console.log('vo.opt.rows[kr]', cloneDeep(vo.opt.rows[kr]))\r\n\r\n //refresh\r\n vo.refresh()\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n toggleItemIsActiveById: function(id) {\r\n // console.log('toggleItemIsActiveById', id)\r\n\r\n let vo = this\r\n\r\n //k\r\n let k = 'isActive'\r\n\r\n //check\r\n if (!isestr(id)) {\r\n vo.$alert(`${vo.$t('userEditNoUserId')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //find\r\n let r = null\r\n let kr = null\r\n each(rows, (v, k) => {\r\n if (get(v, 'id', '') === id) {\r\n r = v\r\n kr = k\r\n return false //跳出\r\n }\r\n })\r\n\r\n //check\r\n if (!iseobj(r)) {\r\n vo.$alert(`${vo.$t('userEditNoUserData')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //v\r\n let _v = get(r, k, 'n')\r\n let v = _v === 'y' ? 'n' : 'y'\r\n // console.log(k, v)\r\n\r\n //set\r\n set(vo, `opt.rows[${kr}].${k}`, v)\r\n // console.log('vo.opt.rows[kr]', cloneDeep(vo.opt.rows[kr]))\r\n\r\n //refresh\r\n vo.refresh()\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n addItem: function() {\r\n // console.log('method addItem')\r\n\r\n let vo = this\r\n\r\n //cloneDeep\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //cloneDeep\r\n rows = cloneDeep(rows)\r\n\r\n //r\r\n let r = vo.$ds.users.funNew()\r\n r.name = vo.$s.getNameNew(rows, 'name', '', vo.$t('userAddNameNew'))\r\n r.userId = `{${vo.$t('userAddIdNew')}}`\r\n r.timeCreate = `{${vo.$t('userAddIdNew')}}`\r\n r.userIdUpdate = `{${vo.$t('userAddIdNew')}}`\r\n r.timeUpdate = `{${vo.$t('userAddIdNew')}}`\r\n // console.log('r', r)\r\n\r\n //添加至最首\r\n rows = [\r\n r,\r\n ...rows,\r\n ]\r\n\r\n //save\r\n vo.opt.rows = rows\r\n // console.log('cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n copyItem: function() {\r\n // console.log('method copyItem')\r\n\r\n let vo = this\r\n\r\n //check\r\n if (size(vo.itemsCheck) !== 1) {\r\n console.log(`size(vo.itemsCheck) !== 1`, vo.itemsCheck)\r\n vo.$alert(`${vo.$t('anUnexpectedErrorOccurred')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //cloneDeep\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //cloneDeep\r\n rows = cloneDeep(rows)\r\n\r\n //find\r\n let tar = vo.itemsCheck[0]\r\n let tarId = get(tar, 'data.id', '')\r\n let row = null\r\n each(rows, (v) => {\r\n let id = get(v, 'id', '')\r\n if (id === tarId) {\r\n row = v\r\n return false //跳出\r\n }\r\n })\r\n // console.log('tar', tar)\r\n // console.log('row', row)\r\n\r\n //check\r\n if (!iseobj(row)) {\r\n console.log(`!iseobj(row)`, row)\r\n vo.$alert(`${vo.$t('anUnexpectedErrorOccurred')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //r\r\n let r = cloneDeep(row)\r\n let nameOld = r.name\r\n let _r = vo.$ds.users.funNew()\r\n r.id = _r.id //使用新建方式預先產生id避免重複\r\n r.name = vo.$s.getNameNew(rows, 'name', nameOld, vo.$t('userCopyNameNew'))\r\n r.userId = `{${vo.$t('userAddIdNew')}}`\r\n r.timeCreate = `{${vo.$t('userAddIdNew')}}`\r\n r.userIdUpdate = `{${vo.$t('userAddIdNew')}}`\r\n r.timeUpdate = `{${vo.$t('userAddIdNew')}}`\r\n // console.log('r', r)\r\n\r\n //添加至最首\r\n rows = [\r\n r,\r\n ...rows,\r\n ]\r\n\r\n //save\r\n vo.opt.rows = rows\r\n // console.log('cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n deleteItemsCheck: function() {\r\n // console.log('method deleteItemsCheck')\r\n\r\n let vo = this\r\n\r\n //check\r\n if (size(vo.itemsCheck) === 0) {\r\n console.log(`size(vo.itemsCheck) === 0`, vo.itemsCheck)\r\n vo.$alert(`${vo.$t('anUnexpectedErrorOccurred')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //cloneDeep\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //cloneDeep\r\n rows = cloneDeep(rows)\r\n\r\n //filter\r\n each(vo.itemsCheck, (v) => {\r\n // console.log('v', v)\r\n let id = get(v, 'data.id', '')\r\n if (!isestr(id)) {\r\n console.log(`invalid id`)\r\n return true //跳出換下一個\r\n }\r\n rows = filter(rows, (vv) => {\r\n return vv.id !== id\r\n })\r\n })\r\n\r\n //clear\r\n vo.itemsCheck = []\r\n\r\n //save\r\n vo.opt.rows = rows\r\n // console.log('deleteItemsCheck cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n getCgrupsText: function(cgrups) {\r\n // console.log('method getCgrupsText', cgrups)\r\n\r\n let vo = this\r\n\r\n //kpGrup\r\n let kpGrup = {}\r\n try {\r\n // console.log('cgrups', cgrups)\r\n kpGrup = JSON5.parse(cgrups)\r\n }\r\n catch (err) {}\r\n\r\n let vs = []\r\n each(kpGrup, (v, k) => {\r\n // console.log(k, 'v', v)\r\n\r\n //isActive\r\n let isActive = get(v, 'isActive', '')\r\n if (isActive !== 'y') {\r\n return true //跳出換下一個\r\n }\r\n // console.log(k, '_isActive', _isActive)\r\n\r\n //push\r\n vs.push(k)\r\n\r\n })\r\n\r\n //cgrupsText\r\n let cgrupsText = vo.$t('userRnderCgrupsNoGroup')\r\n let t = vo.$t('userRnderCgrupsHasNGroups')\r\n let n = size(vs)\r\n if (n > 0) {\r\n t = t.replace('{n}', n)\r\n if (n === 1) {\r\n t = t.replace('{nms}', `(${vs[0]})`)\r\n }\r\n else {\r\n t = t.replace('{nms}', '')\r\n }\r\n cgrupsText = t\r\n }\r\n\r\n return cgrupsText\r\n },\r\n\r\n showVeCgrupsById: function(id) {\r\n // console.log('method showVeCgrupsById', id)\r\n\r\n let vo = this\r\n\r\n //check\r\n if (!isestr(id)) {\r\n vo.$alert(`${vo.$t('userEditCgrupsNoUserId')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //find\r\n let r = null\r\n let kr = null\r\n each(rows, (v, k) => {\r\n if (get(v, 'id', '') === id) {\r\n r = v\r\n kr = k\r\n return false //跳出\r\n }\r\n })\r\n\r\n //check\r\n if (!iseobj(r)) {\r\n vo.$alert(`${vo.$t('userEditCgrupsNoUserData')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n // //getUserRules\r\n // let kur = vo.$s.getUserRules(r, vo.grups, vo.pemis, vo.targets)\r\n // // console.log('getUserRules kur', kur)\r\n\r\n //showVeCgrups\r\n vo.$dg.showVeCgrups({\r\n isEditable: vo.isEditable,\r\n user: r,\r\n })\r\n .then((cgrups) => {\r\n // console.log('cgrups', cgrups)\r\n\r\n //set\r\n set(vo, `opt.rows[${kr}].cgrups`, cgrups)\r\n // console.log('vo.opt.rows[kr]', cloneDeep(vo.opt.rows[kr]))\r\n\r\n //refresh\r\n vo.refresh()\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n })\r\n .catch(() => {})\r\n\r\n },\r\n\r\n saveUsers: function() {\r\n // console.log('method saveUsers')\r\n\r\n let vo = this\r\n\r\n async function core() {\r\n let errTemp = null\r\n\r\n //show loading\r\n vo.$ui.updateLoading(true)\r\n\r\n //check\r\n if (isestr(vo.isError)) {\r\n vo.$alert(`${vo.isError}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //check\r\n if (size(rows) === 0) {\r\n vo.$alert(`${vo.$t('userAddEmpty')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //updateUsers\r\n await vo.$fapi.updateUsers(rows)\r\n .catch((err) => {\r\n errTemp = err\r\n })\r\n\r\n //check\r\n if (errTemp !== null) {\r\n vo.$alert(`${vo.$t('userSaveUsersFail')}: ${errTemp}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //isModified\r\n vo.isModified = false\r\n\r\n //alert\r\n vo.$alert(vo.$t('userSaveUsersSuccess'))\r\n\r\n }\r\n\r\n //core\r\n core()\r\n // .then((res) => {\r\n // console.log('then', res)\r\n // })\r\n .catch((err) => {\r\n console.log('catch', err)\r\n vo.$alert(vo.$t('anUnexpectedErrorOccurred'), { type: 'error' })\r\n })\r\n .finally(() => {\r\n\r\n //hide loading\r\n vo.$ui.updateLoading(false)\r\n\r\n })\r\n\r\n },\r\n\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n</style>\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LayoutContentUsers.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LayoutContentUsers.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./LayoutContentUsers.vue?vue&type=template&id=6df9dbe2&scoped=true\"\nimport script from \"./LayoutContentUsers.vue?vue&type=script&lang=js\"\nexport * from \"./LayoutContentUsers.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6df9dbe2\",\n null\n \n)\n\nexport default component.exports","<template>\r\n <div\r\n style=\"height:100%; width:100%;\"\r\n v-domresize\r\n @domresize=\"resize\"\r\n >\r\n\r\n <template v-if=\"syncState\">\r\n\r\n <WDrawer\r\n :style=\"`height:${panelHeight}px; width:100%;`\"\r\n v-model=\"drawer\"\r\n :drawerWidth.sync=\"drawerWidth\"\r\n :drawerWidthMin=\"drawerWidthMin\"\r\n :drawerWidthMax=\"drawerWidthMax\"\r\n :mode=\"'from-left'\"\r\n :dragDrawerWidth=\"true\"\r\n :autoSwitchToHide=\"true\"\r\n :autoSwitchToShow=\"true\"\r\n :autoSwitchToFloat=\"true\"\r\n :switchWidth=\"drawerWidth*2.3\"\r\n >\r\n\r\n <template v-slot:drawer=\"props\">\r\n <div :style=\"`height:${props.height}px; background:#fff; position:relative;`\">\r\n\r\n <WListVertical\r\n style=\"height:100%;\"\r\n :items=\"menus\"\r\n :itemActive=\"menuActive\"\r\n :item-text-color=\"'#222'\"\r\n :item-text-color-hover=\"'#444'\"\r\n :item-text-color-active=\"'#E65100'\"\r\n :item-icon-color=\"'#222'\"\r\n :item-icon-color-hover=\"'#444'\"\r\n :item-icon-color-active=\"'#F57C00'\"\r\n :item-background-color=\"'#fff'\"\r\n :item-background-color-hover=\"'#f6f6f6'\"\r\n :item-background-color-active=\"'#fff3e0'\"\r\n :paddingStyle=\"{v:15,h:15}\"\r\n @click=\"(menu)=>{menuKey=menu.key}\"\r\n ></WListVertical>\r\n\r\n <div\r\n :style=\"`position:absolute; top:2px; right:4px;`\"\r\n v-if=\"drawer\"\r\n >\r\n <WButtonCircle\r\n :paddingStyle=\"{h:2,v:2}\"\r\n :icon=\"mdiArrowLeftBoldHexagonOutline\"\r\n :iconSize=\"20\"\r\n :backgroundColor=\"'rgba(255,255,255,0.1)'\"\r\n :backgroundColorHover=\"'rgba(255,255,255,0.4)'\"\r\n :backgroundColorFocus=\"'rgba(255,255,255,0.7)'\"\r\n :borderColor=\"'transparent'\"\r\n :borderColorHover=\"'transparent'\"\r\n :borderColorFocus=\"'transparent'\"\r\n _tooltip=\"$t('menuTreeHide')\"\r\n :shadow=\"false\"\r\n @click=\"drawer=false\"\r\n ></WButtonCircle>\r\n </div>\r\n\r\n </div>\r\n </template>\r\n\r\n <template v-slot:content=\"props\">\r\n <div :style=\"`height:${props.height}px; width:${props.width}px; position:relative;`\">\r\n\r\n <template>\r\n\r\n <LayoutContentTargets\r\n :drawer=\"drawer\"\r\n v-if=\"menuKey==='mmTargets'\"\r\n ></LayoutContentTargets>\r\n\r\n <LayoutContentPemis\r\n :drawer=\"drawer\"\r\n v-if=\"menuKey==='mmPemis'\"\r\n ></LayoutContentPemis>\r\n\r\n <LayoutContentGrups\r\n :drawer=\"drawer\"\r\n v-if=\"menuKey==='mmGrups'\"\r\n ></LayoutContentGrups>\r\n\r\n <LayoutContentUsers\r\n :drawer=\"drawer\"\r\n v-if=\"menuKey==='mmUsers'\"\r\n ></LayoutContentUsers>\r\n\r\n </template>\r\n\r\n <div\r\n :style=\"`position:absolute; top:3px; left:5px;`\"\r\n v-if=\"!drawer\"\r\n >\r\n <WButtonCircle\r\n :paddingStyle=\"{h:2,v:2}\"\r\n :icon=\"mdiArrowRightBoldHexagonOutline\"\r\n :iconSize=\"20\"\r\n :backgroundColor=\"'rgba(255,255,255,0.1)'\"\r\n :backgroundColorHover=\"'rgba(255,255,255,0.4)'\"\r\n :backgroundColorFocus=\"'rgba(255,255,255,0.7)'\"\r\n :borderColor=\"'transparent'\"\r\n :borderColorHover=\"'transparent'\"\r\n :borderColorFocus=\"'transparent'\"\r\n _tooltip=\"$t('menuTreeShow')\"\r\n :shadow=\"false\"\r\n @click=\"drawer=true\"\r\n ></WButtonCircle>\r\n </div>\r\n\r\n </div>\r\n </template>\r\n\r\n </WDrawer>\r\n\r\n </template>\r\n\r\n <div\r\n style=\"padding:20px; font-size:0.9rem;\"\r\n v-else\r\n >\r\n {{$t('waitingData')}}\r\n </div>\r\n\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport { mdiArrowLeftBoldHexagonOutline, mdiArrowRightBoldHexagonOutline, mdiGamepadCircle, mdiStackOverflow, mdiSelectGroup, mdiAccountGroupOutline } from '@mdi/js/mdi.js'\r\nimport get from 'lodash-es/get.js'\r\nimport find from 'lodash-es/find.js'\r\nimport WDrawer from 'w-component-vue/src/components/WDrawer.vue'\r\nimport WListVertical from 'w-component-vue/src/components/WListVertical.vue'\r\nimport WButtonCircle from 'w-component-vue/src/components/WButtonCircle.vue'\r\nimport LayoutContentTargets from './LayoutContentTargets.vue'\r\nimport LayoutContentPemis from './LayoutContentPemis.vue'\r\nimport LayoutContentGrups from './LayoutContentGrups.vue'\r\nimport LayoutContentUsers from './LayoutContentUsers.vue'\r\n\r\n\r\nexport default {\r\n components: {\r\n WDrawer,\r\n WListVertical,\r\n WButtonCircle,\r\n LayoutContentTargets,\r\n LayoutContentPemis,\r\n LayoutContentGrups,\r\n LayoutContentUsers,\r\n },\r\n props: {\r\n },\r\n data: function() {\r\n return {\r\n mdiArrowLeftBoldHexagonOutline,\r\n mdiArrowRightBoldHexagonOutline,\r\n\r\n menuKey: 'mmTargets',\r\n\r\n panelWidth: 0,\r\n panelHeight: 0,\r\n\r\n drawer: true,\r\n drawerWidth: 200,\r\n drawerWidthMin: 150,\r\n drawerWidthMax: 300,\r\n\r\n }\r\n },\r\n computed: {\r\n\r\n syncState: function() {\r\n let vo = this\r\n return get(vo, '$store.state.syncState')\r\n },\r\n\r\n menus: function() {\r\n let vo = this\r\n let ms = [\r\n {\r\n key: 'mmTargets',\r\n text: vo.$t('mmTargets'),\r\n icon: mdiGamepadCircle,\r\n },\r\n {\r\n key: 'mmPemis',\r\n text: vo.$t('mmPemis'),\r\n icon: mdiStackOverflow,\r\n },\r\n {\r\n key: 'mmGrups',\r\n text: vo.$t('mmGrups'),\r\n icon: mdiSelectGroup,\r\n },\r\n {\r\n key: 'mmUsers',\r\n text: vo.$t('mmUsers'),\r\n icon: mdiAccountGroupOutline,\r\n },\r\n ]\r\n return ms\r\n },\r\n\r\n menuActive: function() {\r\n let vo = this\r\n let r = find(vo.menus, { key: vo.menuKey })\r\n // console.log(r)\r\n return r\r\n },\r\n\r\n },\r\n methods: {\r\n\r\n resize: function(msg) {\r\n // console.log('methods resize', msg)\r\n\r\n let vo = this\r\n\r\n //save\r\n vo.panelWidth = msg.snew.clientWidth\r\n vo.panelHeight = msg.snew.clientHeight\r\n // console.log('vo.panelHeight', vo.panelHeight)\r\n\r\n },\r\n\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n</style>\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LayoutContent.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LayoutContent.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./LayoutContent.vue?vue&type=template&id=05bd29ce&scoped=true\"\nimport script from \"./LayoutContent.vue?vue&type=script&lang=js\"\nexport * from \"./LayoutContent.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"05bd29ce\",\n null\n \n)\n\nexport default component.exports","<template>\r\n <div style=\"height:100svh; background:#f5f5f5;\">\r\n\r\n <!-- menu top, 因窄版導致名稱換行故須使用overflow-y:hidden -->\r\n <div :style=\"`height:${heightToolbar}px; overflow-y:hidden; padding:0px 10px; background:#fff; border-bottom:1px solid #ccc; display:flex; align-items:center;`\">\r\n\r\n <div style=\"padding-left:5px; white-space:nowrap\">\r\n <div style=\"display:flex; align-items:center;\">\r\n\r\n <div style=\"padding-right:10px; display:flex; align-items:center;\" v-if=\"webLogo\">\r\n <img style=\"width:36px; _min-width:36px; height:36px;\" :src=\"webLogo\" />\r\n </div>\r\n\r\n <div>\r\n <div style=\"font-size:1.2rem; color:#000;\">{{webName}}</div>\r\n <div style=\"font-size:0.8rem; color:#666;\">{{$t('webDescription')}}</div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <div style=\"width:100%;\"></div>\r\n\r\n <div\r\n style=\"padding-right:10px; white-space:nowrap;\"\r\n v-if=\"showLangSelect\"\r\n >\r\n <WTextSelect\r\n style=\"width:100px;\"\r\n :items=\"keysLang\"\r\n :value=\"lang\"\r\n @input=\"toggleLang\"\r\n >\r\n <template v-slot:select=\"props\">\r\n {{getLangText(props.item)}}\r\n </template>\r\n <template v-slot:item=\"props\">\r\n {{getLangText(props.item)}}\r\n </template>\r\n </WTextSelect>\r\n </div>\r\n\r\n </div>\r\n\r\n <div :style=\"`height:calc( 100% - ${heightToolbar}px );`\">\r\n <LayoutContent\r\n ></LayoutContent>\r\n </div>\r\n\r\n\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport { mdiMenu } from '@mdi/js/mdi.js'\r\nimport get from 'lodash-es/get.js'\r\n// import cloneDeep from 'lodash-es/cloneDeep.js'\r\nimport isestr from 'wsemi/src/isestr.mjs'\r\nimport WTextSelect from 'w-component-vue/src/components/WTextSelect.vue'\r\nimport WButtonCircle from 'w-component-vue/src/components/WButtonCircle.vue'\r\nimport LayoutContent from './LayoutContent.vue'\r\n\r\n\r\nexport default {\r\n components: {\r\n WTextSelect,\r\n WButtonCircle,\r\n LayoutContent,\r\n },\r\n props: {\r\n },\r\n data: function() {\r\n return {\r\n mdiMenu,\r\n\r\n firstSetting: true,\r\n\r\n showLangSelect: false,\r\n\r\n keysLang: [\r\n 'eng',\r\n 'cht',\r\n ],\r\n kpLangSelect: {\r\n 'eng': 'English',\r\n 'cht': '中文',\r\n },\r\n\r\n }\r\n },\r\n mounted: function() {\r\n // console.log('mounted')\r\n\r\n let vo = this\r\n\r\n //firstSetting\r\n if (vo.firstSetting) {\r\n // console.log('webInfor', vo.webInfor)\r\n let showLanguage = get(vo, 'webInfor.showLanguage', '')\r\n // console.log('showLanguage', showLanguage)\r\n vo.showLangSelect = showLanguage === 'y'\r\n let language = get(vo, 'webInfor.language', '')\r\n // console.log('language', language)\r\n vo.$ui.setLang(language, 'layout mounted')\r\n vo.firstSetting = false\r\n }\r\n\r\n },\r\n computed: {\r\n\r\n // viewState: function() {\r\n // let vo = this\r\n // return get(vo, '$store.state.viewState', '')\r\n // },\r\n\r\n heightToolbar: function() {\r\n let vo = this\r\n return get(vo, `$store.state.heightToolbar`, 0)\r\n },\r\n\r\n webInfor: function() {\r\n let wi = get(this, `$store.state.webInfor`)\r\n return wi\r\n },\r\n\r\n webName: {\r\n get() {\r\n let vo = this\r\n let c = vo.$t('webName', '')\r\n // console.log('get webName1', c)\r\n if (!isestr(c)) {\r\n c = vo.$t('waitingData', '')\r\n }\r\n // console.log('get webName2', c)\r\n document.title = c //更換網頁title\r\n return c\r\n },\r\n // set(value) {\r\n // return value\r\n // },\r\n },\r\n\r\n webLogo: function() {\r\n let vo = this\r\n return get(vo, 'webInfor.webLogo', '')\r\n },\r\n\r\n lang: function() {\r\n let vo = this\r\n return get(vo, '$store.state.lang', '')\r\n },\r\n\r\n },\r\n methods: {\r\n\r\n getLangText: function(lang) {\r\n // console.log('methods getLangText', lang)\r\n\r\n let vo = this\r\n\r\n let t = get(vo, `kpLangSelect.${lang}`, '')\r\n\r\n return t\r\n },\r\n\r\n toggleLang: function(lang) {\r\n // console.log('methods toggleLang', lang)\r\n\r\n let vo = this\r\n\r\n //setLang\r\n vo.$ui.setLang(lang, 'toggle')\r\n\r\n },\r\n\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n</style>\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Layout.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Layout.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Layout.vue?vue&type=template&id=25c2d0b5&scoped=true\"\nimport script from \"./Layout.vue?vue&type=script&lang=js\"\nexport * from \"./Layout.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"25c2d0b5\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('WDialog',{attrs:{\"show\":_vm.bShow,\"title\":_vm.isEditable?_vm.$t('pemiEditCrules'):_vm.$t('pemiEditCrulesForDisplay'),\"icon\":_vm.mdiFormatListCheckbox,\"minWidth\":800,\"maxWidth\":800,\"fullscreen\":_vm.fullscreen,\"contentBackgroundColor\":'#fff',\"headerBtns\":_vm.useHeaderBtns,\"hasSaveBtn\":_vm.isEditable && _vm.isModified,\"save-btn-tooltip\":_vm.$t('save'),\"close-btn-tooltip\":_vm.$t('close')},on:{\"update:show\":function($event){_vm.bShow=$event},\"click-btns\":_vm.clickBtns,\"click-save\":_vm.clickSave,\"click-close\":_vm.clickClose,\"resize\":_vm.resizeDialog},scopedSlots:_vm._u([{key:\"content\",fn:function(){return [_c('div',[_c('div',{directives:[{name:\"domresize\",rawName:\"v-domresize\"}],staticStyle:{\"_border-bottom\":\"1px solid #ddd\",\"background\":\"#fff\"},on:{\"domresize\":_vm.resizeHead}},[(_vm.isEditable)?_c('div',{staticStyle:{\"padding\":\"5px\",\"background\":\"#fff\",\"display\":\"flex\",\"align-items\":\"center\"}},[[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('checkAllYes'),\"icon\":_vm.mdiCheckboxMultipleMarked,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"_textColor\":\"'#eee'\",\"_textColorHover\":\"'#fff'\",\"iconColor\":'#444',\"iconColorHover\":'#222',\"shadow\":false},on:{\"click\":_vm.toggleItemsEnableAllYes}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})],[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('checkAllNo'),\"icon\":_vm.mdiCheckboxMultipleBlankOutline,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"_textColor\":\"'#eee'\",\"_textColorHover\":\"'#fff'\",\"iconColor\":'#444',\"iconColorHover\":'#222',\"shadow\":false},on:{\"click\":_vm.toggleItemsEnableAllNo}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})],[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('checkAllInv'),\"icon\":_vm.mdiCodeTagsCheck,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"_textColor\":\"'#eee'\",\"_textColorHover\":\"'#fff'\",\"iconColor\":'#444',\"iconColorHover\":'#222',\"shadow\":false},on:{\"click\":_vm.toggleItemsEnableAllInv}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})],(_vm.hasItemsCheck)?[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('cruleDeleteCheckTargets'),\"icon\":_vm.mdiTrashCanOutline,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"_textColor\":\"'#eee'\",\"_textColorHover\":\"'#fff'\",\"iconColor\":'#444',\"iconColorHover\":'#222',\"shadow\":false},on:{\"click\":_vm.deleteItemsCheck}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})]:_vm._e()],2):_vm._e()]),(_vm.items)?[_c('WAggridVueDyn',{ref:\"rftable\",style:(`width:100%;`),attrs:{\"height\":_vm.contentHeight,\"opt\":_vm.opt}})]:_c('div',{staticStyle:{\"padding\":\"10px 15px\",\"font-size\":\"0.8rem\"}},[_vm._v(\" \"+_vm._s(_vm.$t('waitingData'))+\" \")])],2)]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <WDialog\r\n :show.sync=\"bShow\"\r\n :title=\"isEditable?$t('pemiEditCrules'):$t('pemiEditCrulesForDisplay')\"\r\n :icon=\"mdiFormatListCheckbox\"\r\n :minWidth=\"800\"\r\n :maxWidth=\"800\"\r\n :fullscreen=\"fullscreen\"\r\n :contentBackgroundColor=\"'#fff'\"\r\n :headerBtns=\"useHeaderBtns\"\r\n :hasSaveBtn=\"isEditable && isModified\"\r\n :save-btn-tooltip=\"$t('save')\"\r\n :close-btn-tooltip=\"$t('close')\"\r\n @click-btns=\"clickBtns\"\r\n @click-save=\"clickSave\"\r\n @click-close=\"clickClose\"\r\n @resize=\"resizeDialog\"\r\n >\r\n <template v-slot:content>\r\n <div>\r\n\r\n <div\r\n style=\"_border-bottom:1px solid #ddd; background:#fff;\"\r\n v-domresize\r\n @domresize=\"resizeHead\"\r\n >\r\n\r\n <!-- 功能區 -->\r\n <div\r\n style=\"padding:5px; background:#fff; display:flex; align-items:center;\"\r\n v-if=\"isEditable\"\r\n >\r\n\r\n <template>\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('checkAllYes')\"\r\n :icon=\"mdiCheckboxMultipleMarked\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n _textColor=\"'#eee'\"\r\n _textColorHover=\"'#fff'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :shadow=\"false\"\r\n @click=\"toggleItemsEnableAllYes\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n <template>\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('checkAllNo')\"\r\n :icon=\"mdiCheckboxMultipleBlankOutline\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n _textColor=\"'#eee'\"\r\n _textColorHover=\"'#fff'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :shadow=\"false\"\r\n @click=\"toggleItemsEnableAllNo\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n <template>\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('checkAllInv')\"\r\n :icon=\"mdiCodeTagsCheck\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n _textColor=\"'#eee'\"\r\n _textColorHover=\"'#fff'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :shadow=\"false\"\r\n @click=\"toggleItemsEnableAllInv\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n <template v-if=\"hasItemsCheck\">\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('cruleDeleteCheckTargets')\"\r\n :icon=\"mdiTrashCanOutline\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n _textColor=\"'#eee'\"\r\n _textColorHover=\"'#fff'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :shadow=\"false\"\r\n @click=\"deleteItemsCheck\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n <template v-if=\"items\">\r\n <WAggridVueDyn\r\n ref=\"rftable\"\r\n :style=\"`width:100%;`\"\r\n :height=\"contentHeight\"\r\n :opt=\"opt\"\r\n >\r\n </WAggridVueDyn>\r\n </template>\r\n\r\n <div\r\n style=\"padding:10px 15px; font-size:0.8rem;\"\r\n v-else\r\n >\r\n {{$t('waitingData')}}\r\n </div>\r\n\r\n </div>\r\n </template>\r\n </WDialog>\r\n</template>\r\n\r\n<script>\r\nimport { mdiDeleteForever, mdiFullscreen, mdiFullscreenExit, mdiFormatListCheckbox, mdiFileTree, mdiTrashCanOutline, mdiCheckboxMultipleBlankOutline, mdiCheckboxMultipleMarked, mdiCodeTagsCheck } from '@mdi/js/mdi.js'\r\nimport Vue from 'vue'\r\nimport JSON5 from 'json5'\r\nimport get from 'lodash-es/get.js'\r\nimport set from 'lodash-es/set.js'\r\nimport each from 'lodash-es/each.js'\r\nimport map from 'lodash-es/map.js'\r\nimport size from 'lodash-es/size.js'\r\nimport filter from 'lodash-es/filter.js'\r\nimport sortBy from 'lodash-es/sortBy.js'\r\nimport cloneDeep from 'lodash-es/cloneDeep.js'\r\nimport genPm from 'wsemi/src/genPm.mjs'\r\nimport delay from 'wsemi/src/delay.mjs'\r\nimport iseobj from 'wsemi/src/iseobj.mjs'\r\nimport isestr from 'wsemi/src/isestr.mjs'\r\nimport WDialog from 'w-component-vue/src/components/WDialog.vue'\r\nimport WButtonCircle from 'w-component-vue/src/components/WButtonCircle.vue'\r\nimport WAggridVueDyn from 'w-component-vue/src/components/WAggridVueDyn.vue'\r\n\r\n\r\nexport default {\r\n components: {\r\n WDialog,\r\n WButtonCircle,\r\n WAggridVueDyn,\r\n },\r\n props: {\r\n },\r\n data: function() {\r\n return {\r\n mdiDeleteForever,\r\n mdiFullscreen,\r\n mdiFullscreenExit,\r\n mdiFormatListCheckbox,\r\n mdiFileTree,\r\n mdiTrashCanOutline,\r\n mdiCheckboxMultipleBlankOutline,\r\n mdiCheckboxMultipleMarked,\r\n mdiCodeTagsCheck,\r\n\r\n bShow: false,\r\n pm: null,\r\n\r\n fullscreen: false,\r\n\r\n panelWidth: 100,\r\n panelHeight: 100,\r\n headHeight: 100,\r\n\r\n isEditable: false,\r\n isModified: false,\r\n\r\n pemi: null,\r\n\r\n items: [],\r\n itemsCheck: [],\r\n opt: null,\r\n\r\n }\r\n },\r\n mounted: function() {\r\n //console.log('mounted')\r\n\r\n let vo = this\r\n\r\n //set\r\n Vue.prototype.$dg.showVeCrules = vo.show\r\n Vue.prototype.$dg.toggleItemEnableById = vo.toggleItemEnableById\r\n\r\n },\r\n computed: {\r\n\r\n targets: function() {\r\n let rs = get(this, `$store.state.targets`)\r\n rs = sortBy(rs, 'order')\r\n return rs\r\n },\r\n\r\n pemis: function() {\r\n let rs = get(this, `$store.state.pemis`)\r\n rs = sortBy(rs, 'order')\r\n return rs\r\n },\r\n\r\n grups: function() {\r\n let rs = get(this, `$store.state.grups`)\r\n rs = sortBy(rs, 'order')\r\n return rs\r\n },\r\n\r\n users: function() {\r\n let rs = get(this, `$store.state.users`)\r\n rs = sortBy(rs, 'order')\r\n return rs\r\n },\r\n\r\n kpHeaderBtns: function() {\r\n let vo = this\r\n let kp = {\r\n // delete: {\r\n // icon: mdiDeleteForever,\r\n // tooltip: `${vo.$t('delete')}${vo.tableNameCht}`,\r\n // evName: 'delete'\r\n // },\r\n toFullscreen: {\r\n icon: mdiFullscreen,\r\n tooltip: vo.$t('screenFull'),\r\n evName: 'toFullscreen'\r\n },\r\n toNormalscreen: {\r\n icon: mdiFullscreenExit,\r\n tooltip: vo.$t('screenNormal'),\r\n evName: 'toNormalscreen'\r\n },\r\n }\r\n return kp\r\n },\r\n\r\n useHeaderBtns: function() {\r\n let vo = this\r\n let bts = []\r\n if (true) {\r\n let k = vo.fullscreen ? 'toNormalscreen' : 'toFullscreen'\r\n bts = [\r\n ...bts,\r\n vo.kpHeaderBtns[k]\r\n ]\r\n }\r\n // if (vo.useDelete) {\r\n // let k = 'delete'\r\n // bts = [\r\n // ...bts,\r\n // vo.kpHeaderBtns[k]\r\n // ]\r\n // }\r\n return bts\r\n },\r\n\r\n contentHeight: function() {\r\n let vo = this\r\n\r\n //h\r\n let h = vo.panelHeight - vo.headHeight\r\n h = Math.max(h, 0)\r\n\r\n return h\r\n },\r\n\r\n hasItemsCheck: function() {\r\n let vo = this\r\n\r\n //h\r\n let b = vo.itemsCheck.length > 0\r\n\r\n return b\r\n },\r\n\r\n },\r\n methods: {\r\n\r\n resizeDialog: function(msg) {\r\n // console.log('methods resizeDialog', msg)\r\n\r\n let vo = this\r\n\r\n //panelWidth, panelHeight\r\n vo.panelWidth = msg.panelWidth\r\n vo.panelHeight = msg.contentHeightMax\r\n\r\n },\r\n\r\n resizeHead: function(msg) {\r\n // console.log('methods resizeHead', msg)\r\n\r\n let vo = this\r\n\r\n //headHeight\r\n vo.headHeight = msg.snew.offsetHeight\r\n\r\n },\r\n\r\n genOpt: function() {\r\n // console.log('methods genOpt')\r\n\r\n let vo = this\r\n\r\n //default\r\n vo.itemsCheck = []\r\n\r\n //opt\r\n let opt = null\r\n if (size(vo.items) > 0) {\r\n\r\n //ks\r\n let ks = [\r\n 'id',\r\n 'enable',\r\n ]\r\n // console.log('ks', ks)\r\n\r\n //kpHead\r\n let kpHead = {\r\n 'id': vo.$t('targetId'),\r\n 'enable': vo.$t('targetEnable'),\r\n }\r\n\r\n //opt\r\n opt = {\r\n language: vo.$t('aggridLanguage'),\r\n rows: vo.items,\r\n keys: ks,\r\n kpHead,\r\n autoFitColumn: true,\r\n defCellEditable: false, //vo.isEditable,\r\n defHeadFilter: true,\r\n defCellAlignH: 'left',\r\n kpCellEditable: {\r\n 'id': vo.isEditable,\r\n 'enable': false,\r\n },\r\n kpHeadWidth: {\r\n 'enable': 50,\r\n },\r\n // kpRowDrag: {\r\n // 'id': true,\r\n // },\r\n // kpHeadFilter: {\r\n // 'enable': false,\r\n // },\r\n kpHeadFilterType: {\r\n 'id': 'text',\r\n 'enable': 'text',\r\n },\r\n // kpHeadCheckBox: {\r\n // 'id': true,\r\n // },\r\n kpCellRender: {\r\n 'id': (v, k, r) => {\r\n // console.log('kpCellRender id', v)\r\n\r\n return v\r\n },\r\n 'enable': (v, k, r) => {\r\n // console.log('kpCellRender enable', v, k, r)\r\n\r\n //id\r\n let id = get(r, 'id', '')\r\n // console.log('id', id, k, r)\r\n\r\n let t = `\r\n <input type=\"checkbox\" ${v === 'y' ? 'checked' : ''} onclick=\"$vo.$dg.toggleItemEnableById('${id}')\" ${vo.isEditable ? '' : 'disabled'} />\r\n `\r\n\r\n return t\r\n },\r\n },\r\n rowsChange: (rs) => {\r\n // console.log('rowsChange', rs)\r\n // console.log('rowsChange cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n rowChecked: (rs) => {\r\n // console.log('rowChecked', rs)\r\n // console.log('rowChecked cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\r\n\r\n //save itemsCheck\r\n vo.itemsCheck = cloneDeep(rs)\r\n\r\n },\r\n }\r\n // console.log('opt', opt)\r\n\r\n }\r\n\r\n //save\r\n vo.opt = opt\r\n\r\n },\r\n\r\n deleteItemsCheck: function() {\r\n // console.log('method deleteItemsCheck')\r\n\r\n let vo = this\r\n\r\n //check\r\n if (size(vo.itemsCheck) === 0) {\r\n return\r\n }\r\n\r\n //cloneDeep\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //cloneDeep\r\n rows = cloneDeep(rows)\r\n\r\n //filter\r\n each(vo.itemsCheck, (v) => {\r\n // console.log('v', v)\r\n let id = get(v, 'data.id', '')\r\n if (!isestr(id)) {\r\n console.log(`invalid id`)\r\n return true //跳出換下一個\r\n }\r\n rows = filter(rows, (vv) => {\r\n return vv.id !== id\r\n })\r\n })\r\n\r\n //clear\r\n vo.itemsCheck = []\r\n\r\n //save\r\n vo.opt.rows = rows\r\n // console.log('deleteItemsCheck cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n refresh: function() {\r\n let vo = this\r\n\r\n //cmp\r\n let cmp = get(vo, '$refs.rftable.$refs.$self')\r\n // console.log('cmp', cmp)\r\n\r\n //refresh, 因set不會觸發kpCellRender, 故須另外調用組件函數refresh, 進而觸發kpCellRender, 使能更新數據\r\n cmp.refresh()\r\n\r\n },\r\n\r\n getDisplayData: function() {\r\n let vo = this\r\n\r\n //cmp\r\n let cmp = get(vo, '$refs.rftable.$refs.$self')\r\n // console.log('cmp', cmp)\r\n\r\n //getDisplayData\r\n let rows = cmp.getDisplayData()\r\n\r\n return rows\r\n },\r\n\r\n toggleItemEnableById: function(id) {\r\n // console.log('toggleItemEnableById', id)\r\n\r\n let vo = this\r\n\r\n //check\r\n if (!isestr(id)) {\r\n vo.$alert(`${vo.$t('cruleEditNoTargetId')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //find\r\n let r = null\r\n let kr = null\r\n each(rows, (v, k) => {\r\n if (get(v, 'id', '') === id) {\r\n r = v\r\n kr = k\r\n return false //跳出\r\n }\r\n })\r\n\r\n //check\r\n if (!iseobj(r)) {\r\n vo.$alert(`${vo.$t('cruleEditNoTargetData')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //enable\r\n let _enable = get(r, 'enable', 'n')\r\n let enable = _enable === 'y' ? 'n' : 'y'\r\n // console.log('enable', enable)\r\n\r\n //set\r\n set(vo, `opt.rows[${kr}].enable`, enable)\r\n // console.log('vo.opt.rows[kr]', cloneDeep(vo.opt.rows[kr]))\r\n\r\n //refresh\r\n vo.refresh()\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n toggleItemsEnableAllYes: function() {\r\n // console.log('toggleItemsEnableAllYes')\r\n\r\n let vo = this\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n // console.log('rows', rows)\r\n\r\n //kpRow\r\n let kpRow = {}\r\n each(rows, (r, kr) => {\r\n kpRow[r.id] = kr\r\n })\r\n\r\n //rowsEff\r\n let rowsEff = vo.getDisplayData()\r\n // console.log('rowsEff', rowsEff)\r\n\r\n //toggle\r\n each(rowsEff, (r) => {\r\n\r\n //kr\r\n let kr = kpRow[r.id]\r\n\r\n //set\r\n set(vo, `opt.rows[${kr}].enable`, 'y')\r\n // console.log('vo.opt.rows[kr]', cloneDeep(vo.opt.rows[kr]))\r\n\r\n })\r\n\r\n //refresh\r\n vo.refresh()\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n toggleItemsEnableAllNo: function() {\r\n // console.log('toggleItemsEnableAllNo')\r\n\r\n let vo = this\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n // console.log('rows', rows)\r\n\r\n //kpRow\r\n let kpRow = {}\r\n each(rows, (r, kr) => {\r\n kpRow[r.id] = kr\r\n })\r\n\r\n //rowsEff\r\n let rowsEff = vo.getDisplayData()\r\n // console.log('rowsEff', rowsEff)\r\n\r\n //toggle\r\n each(rowsEff, (r) => {\r\n\r\n //kr\r\n let kr = kpRow[r.id]\r\n\r\n //set\r\n set(vo, `opt.rows[${kr}].enable`, 'n')\r\n // console.log('vo.opt.rows[kr]', cloneDeep(vo.opt.rows[kr]))\r\n\r\n })\r\n\r\n //refresh\r\n vo.refresh()\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n toggleItemsEnableAllInv: function() {\r\n // console.log('toggleItemsEnableAllInv')\r\n\r\n let vo = this\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n // console.log('rows', rows)\r\n\r\n //kpRow\r\n let kpRow = {}\r\n each(rows, (r, kr) => {\r\n kpRow[r.id] = kr\r\n })\r\n\r\n //rowsEff\r\n let rowsEff = vo.getDisplayData()\r\n // console.log('rowsEff', rowsEff)\r\n\r\n //toggle\r\n each(rowsEff, (r) => {\r\n\r\n //kr\r\n let kr = kpRow[r.id]\r\n\r\n //enable\r\n let _enable = get(r, 'enable', 'n')\r\n let enable = _enable === 'y' ? 'n' : 'y'\r\n\r\n //set\r\n set(vo, `opt.rows[${kr}].enable`, enable)\r\n // console.log('vo.opt.rows[kr]', cloneDeep(vo.opt.rows[kr]))\r\n\r\n })\r\n\r\n //refresh\r\n vo.refresh()\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n clickBtns: function(msg) {\r\n // console.log('clickBtns', msg)\r\n\r\n let vo = this\r\n\r\n //evName\r\n if (msg.evName === 'toFullscreen') {\r\n vo.fullscreen = true\r\n }\r\n else if (msg.evName === 'toNormalscreen') {\r\n vo.fullscreen = false\r\n }\r\n\r\n },\r\n\r\n clickSave: function(msg) {\r\n //console.log('methods clickSave', msg)\r\n\r\n let vo = this\r\n\r\n async function core() {\r\n\r\n //show loading\r\n vo.$ui.updateLoading(true)\r\n\r\n //delay\r\n await delay(300)\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n // console.log('rows', rows)\r\n\r\n //kpRule\r\n let kpRule = {}\r\n each(rows, (r) => {\r\n let id = get(r, 'id', '')\r\n let enable = get(r, 'enable', '')\r\n if (!isestr(id)) {\r\n console.log(`invalid id`)\r\n return true //跳出換下一個\r\n }\r\n if (!isestr(enable)) {\r\n console.log(`invalid enable`)\r\n return true //跳出換下一個\r\n }\r\n kpRule[id] = enable\r\n })\r\n // console.log('kpRule', kpRule)\r\n\r\n //crules\r\n let crules = JSON.stringify(kpRule)\r\n // console.log('crules', crules)\r\n\r\n return crules\r\n }\r\n\r\n //core\r\n core()\r\n .then((rows) => {\r\n\r\n //resolve\r\n vo.pm.resolve(rows)\r\n\r\n //hide\r\n vo.bShow = false\r\n\r\n })\r\n .catch(() => { })\r\n .finally(() => {\r\n\r\n //save按鈕解除loading\r\n msg.pm.resolve()\r\n\r\n //hide loading\r\n vo.$ui.updateLoading(false)\r\n\r\n })\r\n\r\n },\r\n\r\n clickClose: function() {\r\n //console.log('methods clickClose')\r\n\r\n let vo = this\r\n\r\n //reject\r\n vo.pm.reject('close window')\r\n\r\n //hide\r\n vo.bShow = false\r\n\r\n },\r\n\r\n show: function (msg) {\r\n // console.log('methods show', msg)\r\n\r\n let vo = this\r\n\r\n //pm\r\n vo.pm = genPm()\r\n\r\n //default\r\n vo.isModified = false\r\n\r\n //isEditable, pemi\r\n let isEditable = get(msg, 'isEditable', false)\r\n let pemi = get(msg, 'pemi', {})\r\n\r\n //cloneDeep\r\n pemi = cloneDeep(pemi)\r\n\r\n //crules\r\n let crules = get(pemi, 'crules', '')\r\n\r\n //kpRule\r\n let kpRule = {}\r\n if (isestr(crules)) {\r\n try {\r\n kpRule = JSON5.parse(crules)\r\n }\r\n catch (err) {\r\n console.log('crules', crules)\r\n console.log('err', err)\r\n }\r\n\r\n }\r\n // console.log('kpRule', kpRule)\r\n\r\n //items\r\n let items = map(vo.targets, (v) => {\r\n let enable = get(kpRule, v.id, '')\r\n enable = enable === 'y' ? 'y' : 'n'\r\n let r = {\r\n id: v.id,\r\n enable,\r\n }\r\n return r\r\n })\r\n // console.log('items', items)\r\n\r\n //save\r\n vo.isEditable = isEditable\r\n vo.pemi = pemi\r\n vo.items = items\r\n\r\n //genOpt\r\n vo.genOpt()\r\n\r\n //bShow\r\n vo.bShow = true\r\n\r\n return vo.pm\r\n },\r\n\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n</style>\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VeCrules.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VeCrules.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./VeCrules.vue?vue&type=template&id=714fd8f4&scoped=true\"\nimport script from \"./VeCrules.vue?vue&type=script&lang=js\"\nexport * from \"./VeCrules.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"714fd8f4\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('WDialog',{attrs:{\"show\":_vm.bShow,\"title\":_vm.isEditable?_vm.$t('grupEditCpemis'):_vm.$t('grupEditCpemisForDisplay'),\"icon\":_vm.mdiFormatListCheckbox,\"minWidth\":800,\"maxWidth\":800,\"fullscreen\":_vm.fullscreen,\"contentBackgroundColor\":'#fff',\"headerBtns\":_vm.useHeaderBtns,\"hasSaveBtn\":_vm.isEditable && _vm.isModified,\"save-btn-tooltip\":_vm.$t('save'),\"close-btn-tooltip\":_vm.$t('close')},on:{\"update:show\":function($event){_vm.bShow=$event},\"click-btns\":_vm.clickBtns,\"click-save\":_vm.clickSave,\"click-close\":_vm.clickClose,\"resize\":_vm.resizeDialog},scopedSlots:_vm._u([{key:\"content\",fn:function(){return [_c('div',[_c('div',{directives:[{name:\"domresize\",rawName:\"v-domresize\"}],staticStyle:{\"_border-bottom\":\"1px solid #ddd\",\"background\":\"#fff\"},on:{\"domresize\":_vm.resizeHead}},[(_vm.isEditable)?_c('div',{staticStyle:{\"padding\":\"5px\",\"background\":\"#fff\",\"display\":\"flex\",\"align-items\":\"center\"}},[[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('checkAllYes'),\"icon\":_vm.mdiCheckboxMultipleMarked,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"_textColor\":\"'#eee'\",\"_textColorHover\":\"'#fff'\",\"iconColor\":'#444',\"iconColorHover\":'#222',\"shadow\":false},on:{\"click\":_vm.showVeCpemisToggleItemsEnableAllYes}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})],[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('checkAllNo'),\"icon\":_vm.mdiCheckboxMultipleBlankOutline,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"_textColor\":\"'#eee'\",\"_textColorHover\":\"'#fff'\",\"iconColor\":'#444',\"iconColorHover\":'#222',\"shadow\":false},on:{\"click\":_vm.showVeCpemisToggleItemsEnableAllNo}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})],[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('checkAllInv'),\"icon\":_vm.mdiCodeTagsCheck,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"_textColor\":\"'#eee'\",\"_textColorHover\":\"'#fff'\",\"iconColor\":'#444',\"iconColorHover\":'#222',\"shadow\":false},on:{\"click\":_vm.showVeCpemisToggleItemsEnableAllInv}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})],(_vm.hasItemsCheck)?[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('cpemiDeleteCheckTargets'),\"icon\":_vm.mdiTrashCanOutline,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"_textColor\":\"'#eee'\",\"_textColorHover\":\"'#fff'\",\"iconColor\":'#444',\"iconColorHover\":'#222',\"shadow\":false},on:{\"click\":_vm.deleteItemsCheck}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})]:_vm._e()],2):_vm._e()]),(_vm.items)?[_c('WAggridVueDyn',{ref:\"rftable\",style:(`width:100%;`),attrs:{\"height\":_vm.contentHeight,\"opt\":_vm.opt}})]:_c('div',{staticStyle:{\"padding\":\"10px 15px\",\"font-size\":\"0.8rem\"}},[_vm._v(\" \"+_vm._s(_vm.$t('waitingData'))+\" \")])],2)]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <WDialog\r\n :show.sync=\"bShow\"\r\n :title=\"isEditable?$t('grupEditCpemis'):$t('grupEditCpemisForDisplay')\"\r\n :icon=\"mdiFormatListCheckbox\"\r\n :minWidth=\"800\"\r\n :maxWidth=\"800\"\r\n :fullscreen=\"fullscreen\"\r\n :contentBackgroundColor=\"'#fff'\"\r\n :headerBtns=\"useHeaderBtns\"\r\n :hasSaveBtn=\"isEditable && isModified\"\r\n :save-btn-tooltip=\"$t('save')\"\r\n :close-btn-tooltip=\"$t('close')\"\r\n @click-btns=\"clickBtns\"\r\n @click-save=\"clickSave\"\r\n @click-close=\"clickClose\"\r\n @resize=\"resizeDialog\"\r\n >\r\n <template v-slot:content>\r\n <div>\r\n\r\n <div\r\n style=\"_border-bottom:1px solid #ddd; background:#fff;\"\r\n v-domresize\r\n @domresize=\"resizeHead\"\r\n >\r\n\r\n <!-- 功能區 -->\r\n <div\r\n style=\"padding:5px; background:#fff; display:flex; align-items:center;\"\r\n v-if=\"isEditable\"\r\n >\r\n\r\n <template>\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('checkAllYes')\"\r\n :icon=\"mdiCheckboxMultipleMarked\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n _textColor=\"'#eee'\"\r\n _textColorHover=\"'#fff'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :shadow=\"false\"\r\n @click=\"showVeCpemisToggleItemsEnableAllYes\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n <template>\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('checkAllNo')\"\r\n :icon=\"mdiCheckboxMultipleBlankOutline\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n _textColor=\"'#eee'\"\r\n _textColorHover=\"'#fff'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :shadow=\"false\"\r\n @click=\"showVeCpemisToggleItemsEnableAllNo\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n <template>\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('checkAllInv')\"\r\n :icon=\"mdiCodeTagsCheck\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n _textColor=\"'#eee'\"\r\n _textColorHover=\"'#fff'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :shadow=\"false\"\r\n @click=\"showVeCpemisToggleItemsEnableAllInv\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n <template v-if=\"hasItemsCheck\">\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('cpemiDeleteCheckTargets')\"\r\n :icon=\"mdiTrashCanOutline\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n _textColor=\"'#eee'\"\r\n _textColorHover=\"'#fff'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :shadow=\"false\"\r\n @click=\"deleteItemsCheck\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n <template v-if=\"items\">\r\n <WAggridVueDyn\r\n ref=\"rftable\"\r\n :style=\"`width:100%;`\"\r\n :height=\"contentHeight\"\r\n :opt=\"opt\"\r\n >\r\n </WAggridVueDyn>\r\n </template>\r\n\r\n <div\r\n style=\"padding:10px 15px; font-size:0.8rem;\"\r\n v-else\r\n >\r\n {{$t('waitingData')}}\r\n </div>\r\n\r\n </div>\r\n </template>\r\n </WDialog>\r\n</template>\r\n\r\n<script>\r\nimport { mdiDeleteForever, mdiFullscreen, mdiFullscreenExit, mdiFormatListCheckbox, mdiFileTree, mdiTrashCanOutline, mdiCheckboxMultipleBlankOutline, mdiCheckboxMultipleMarked, mdiCodeTagsCheck } from '@mdi/js/mdi.js'\r\nimport Vue from 'vue'\r\nimport JSON5 from 'json5'\r\nimport get from 'lodash-es/get.js'\r\nimport set from 'lodash-es/set.js'\r\nimport each from 'lodash-es/each.js'\r\nimport map from 'lodash-es/map.js'\r\nimport size from 'lodash-es/size.js'\r\nimport filter from 'lodash-es/filter.js'\r\nimport sortBy from 'lodash-es/sortBy.js'\r\nimport cloneDeep from 'lodash-es/cloneDeep.js'\r\nimport genPm from 'wsemi/src/genPm.mjs'\r\nimport delay from 'wsemi/src/delay.mjs'\r\nimport iseobj from 'wsemi/src/iseobj.mjs'\r\nimport isestr from 'wsemi/src/isestr.mjs'\r\nimport WDialog from 'w-component-vue/src/components/WDialog.vue'\r\nimport WButtonCircle from 'w-component-vue/src/components/WButtonCircle.vue'\r\nimport WAggridVueDyn from 'w-component-vue/src/components/WAggridVueDyn.vue'\r\n\r\n\r\nexport default {\r\n components: {\r\n WDialog,\r\n WButtonCircle,\r\n WAggridVueDyn,\r\n },\r\n props: {\r\n },\r\n data: function() {\r\n return {\r\n mdiDeleteForever,\r\n mdiFullscreen,\r\n mdiFullscreenExit,\r\n mdiFormatListCheckbox,\r\n mdiFileTree,\r\n mdiTrashCanOutline,\r\n mdiCheckboxMultipleBlankOutline,\r\n mdiCheckboxMultipleMarked,\r\n mdiCodeTagsCheck,\r\n\r\n bShow: false,\r\n pm: null,\r\n\r\n fullscreen: false,\r\n\r\n panelWidth: 100,\r\n panelHeight: 100,\r\n headHeight: 100,\r\n\r\n isEditable: false,\r\n isModified: false,\r\n\r\n grup: null,\r\n\r\n items: [],\r\n itemsCheck: [],\r\n opt: null,\r\n\r\n }\r\n },\r\n mounted: function() {\r\n //console.log('mounted')\r\n\r\n let vo = this\r\n\r\n //set\r\n Vue.prototype.$dg.showVeCpemis = vo.show\r\n Vue.prototype.$dg.showVeCpemisToggleItemModeByName = vo.showVeCpemisToggleItemModeByName\r\n Vue.prototype.$dg.showVeCpemisToggleItemEnableByName = vo.showVeCpemisToggleItemEnableByName\r\n\r\n },\r\n computed: {\r\n\r\n targets: function() {\r\n let rs = get(this, `$store.state.targets`)\r\n rs = sortBy(rs, 'order')\r\n return rs\r\n },\r\n\r\n pemis: function() {\r\n let rs = get(this, `$store.state.pemis`)\r\n rs = sortBy(rs, 'order')\r\n return rs\r\n },\r\n\r\n grups: function() {\r\n let rs = get(this, `$store.state.grups`)\r\n rs = sortBy(rs, 'order')\r\n return rs\r\n },\r\n\r\n users: function() {\r\n let rs = get(this, `$store.state.users`)\r\n rs = sortBy(rs, 'order')\r\n return rs\r\n },\r\n\r\n kpHeaderBtns: function() {\r\n let vo = this\r\n let kp = {\r\n // delete: {\r\n // icon: mdiDeleteForever,\r\n // tooltip: `${vo.$t('delete')}${vo.tableNameCht}`,\r\n // evName: 'delete'\r\n // },\r\n toFullscreen: {\r\n icon: mdiFullscreen,\r\n tooltip: vo.$t('screenFull'),\r\n evName: 'toFullscreen'\r\n },\r\n toNormalscreen: {\r\n icon: mdiFullscreenExit,\r\n tooltip: vo.$t('screenNormal'),\r\n evName: 'toNormalscreen'\r\n },\r\n }\r\n return kp\r\n },\r\n\r\n useHeaderBtns: function() {\r\n let vo = this\r\n let bts = []\r\n if (true) {\r\n let k = vo.fullscreen ? 'toNormalscreen' : 'toFullscreen'\r\n bts = [\r\n ...bts,\r\n vo.kpHeaderBtns[k]\r\n ]\r\n }\r\n // if (vo.useDelete) {\r\n // let k = 'delete'\r\n // bts = [\r\n // ...bts,\r\n // vo.kpHeaderBtns[k]\r\n // ]\r\n // }\r\n return bts\r\n },\r\n\r\n contentHeight: function() {\r\n let vo = this\r\n\r\n //h\r\n let h = vo.panelHeight - vo.headHeight\r\n h = Math.max(h, 0)\r\n\r\n return h\r\n },\r\n\r\n hasItemsCheck: function() {\r\n let vo = this\r\n\r\n //h\r\n let b = vo.itemsCheck.length > 0\r\n\r\n return b\r\n },\r\n\r\n },\r\n methods: {\r\n\r\n resizeDialog: function(msg) {\r\n // console.log('methods resizeDialog', msg)\r\n\r\n let vo = this\r\n\r\n //panelWidth, panelHeight\r\n vo.panelWidth = msg.panelWidth\r\n vo.panelHeight = msg.contentHeightMax\r\n\r\n },\r\n\r\n resizeHead: function(msg) {\r\n // console.log('methods resizeHead', msg)\r\n\r\n let vo = this\r\n\r\n //headHeight\r\n vo.headHeight = msg.snew.offsetHeight\r\n\r\n },\r\n\r\n genOpt: function() {\r\n // console.log('methods genOpt')\r\n\r\n let vo = this\r\n\r\n //default\r\n vo.itemsCheck = []\r\n\r\n //opt\r\n let opt = null\r\n if (size(vo.items) > 0) {\r\n\r\n //ks\r\n let ks = [\r\n 'name',\r\n 'mode',\r\n 'enable',\r\n ]\r\n // console.log('ks', ks)\r\n\r\n //kpHead\r\n let kpHead = {\r\n 'name': vo.$t('pemiName'),\r\n 'mode': vo.$t('operPemiEnable'),\r\n 'enable': vo.$t('operMode'),\r\n }\r\n\r\n //opt\r\n opt = {\r\n language: vo.$t('aggridLanguage'),\r\n rows: vo.items,\r\n keys: ks,\r\n kpHead,\r\n autoFitColumn: true,\r\n defCellEditable: false, //vo.isEditable,\r\n defHeadFilter: true,\r\n defCellAlignH: 'left',\r\n kpCellEditable: {\r\n 'name': vo.isEditable,\r\n 'mode': false,\r\n 'enable': false,\r\n },\r\n kpHeadWidth: {\r\n 'mode': 100,\r\n 'enable': 100,\r\n },\r\n // kpRowDrag: {\r\n // 'name': true,\r\n // },\r\n // kpHeadFilter: {\r\n // 'enable': false,\r\n // },\r\n kpHeadFilterType: {\r\n 'name': 'text',\r\n 'mode': 'text',\r\n 'enable': 'text',\r\n },\r\n // kpHeadCheckBox: {\r\n // 'name': true,\r\n // },\r\n kpCellRender: {\r\n 'name': (v, k, r) => {\r\n // console.log('kpCellRender name', v)\r\n\r\n return v\r\n },\r\n 'mode': (v, k, r) => {\r\n // console.log('kpCellRender mode', v)\r\n\r\n //name\r\n let name = get(r, 'name', '')\r\n // console.log('name', name, k, r)\r\n\r\n //mode\r\n let mode = get(r, 'mode', '')\r\n // console.log('mode', mode, k, r)\r\n\r\n let t = `\r\n <select onchange=\"$vo.$dg.showVeCpemisToggleItemModeByName('${name}',this.value)\" ${vo.isEditable ? '' : 'disabled'}>\r\n <option value=\"OR\" ${mode === 'OR' ? 'selected' : ''}>OR</option>\r\n <option value=\"AND\" ${mode === 'AND' ? 'selected' : ''}>AND</option>\r\n </select>\r\n `\r\n\r\n return t\r\n },\r\n 'enable': (v, k, r) => {\r\n // console.log('kpCellRender enable', v, k, r)\r\n\r\n //name\r\n let name = get(r, 'name', '')\r\n // console.log('name', name, k, r)\r\n\r\n let t = `\r\n <input type=\"checkbox\" ${v === 'y' ? 'checked' : ''} onclick=\"$vo.$dg.showVeCpemisToggleItemEnableByName('${name}')\" ${vo.isEditable ? '' : 'disabled'} />\r\n `\r\n\r\n return t\r\n },\r\n },\r\n rowsChange: (rs) => {\r\n // console.log('rowsChange', rs)\r\n // console.log('rowsChange cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n rowChecked: (rs) => {\r\n // console.log('rowChecked', rs)\r\n // console.log('rowChecked cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\r\n\r\n //save itemsCheck\r\n vo.itemsCheck = cloneDeep(rs)\r\n\r\n },\r\n }\r\n // console.log('opt', opt)\r\n\r\n }\r\n\r\n //save\r\n vo.opt = opt\r\n\r\n },\r\n\r\n deleteItemsCheck: function() {\r\n // console.log('method deleteItemsCheck')\r\n\r\n let vo = this\r\n\r\n //check\r\n if (size(vo.itemsCheck) === 0) {\r\n return\r\n }\r\n\r\n //cloneDeep\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //cloneDeep\r\n rows = cloneDeep(rows)\r\n\r\n //filter\r\n each(vo.itemsCheck, (v) => {\r\n // console.log('v', v)\r\n let name = get(v, 'data.name', '')\r\n if (!isestr(name)) {\r\n console.log(`invalid name`)\r\n return true //跳出換下一個\r\n }\r\n rows = filter(rows, (vv) => {\r\n return vv.name !== name\r\n })\r\n })\r\n\r\n //clear\r\n vo.itemsCheck = []\r\n\r\n //save\r\n vo.opt.rows = rows\r\n // console.log('deleteItemsCheck cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n refresh: function() {\r\n let vo = this\r\n\r\n //cmp\r\n let cmp = get(vo, '$refs.rftable.$refs.$self')\r\n // console.log('cmp', cmp)\r\n\r\n //refresh, 因set不會觸發kpCellRender, 故須另外調用組件函數refresh, 進而觸發kpCellRender, 使能更新數據\r\n cmp.refresh()\r\n\r\n },\r\n\r\n getDisplayData: function() {\r\n let vo = this\r\n\r\n //cmp\r\n let cmp = get(vo, '$refs.rftable.$refs.$self')\r\n // console.log('cmp', cmp)\r\n\r\n //getDisplayData\r\n let rows = cmp.getDisplayData()\r\n\r\n return rows\r\n },\r\n\r\n showVeCpemisToggleItemModeByName: function(name, mode) {\r\n // console.log('showVeCpemisToggleItemModeByName', name, mode)\r\n\r\n let vo = this\r\n\r\n //check\r\n if (!isestr(name)) {\r\n vo.$alert(`${vo.$t('cpemiEditNoName')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //find\r\n let r = null\r\n let kr = null\r\n each(rows, (v, k) => {\r\n if (get(v, 'name', '') === name) {\r\n r = v\r\n kr = k\r\n return false //跳出\r\n }\r\n })\r\n\r\n //check\r\n if (!iseobj(r)) {\r\n vo.$alert(`${vo.$t('cpemiEditNoTarget')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //mode\r\n // let mode = th.value\r\n // console.log('mode', mode)\r\n\r\n //set\r\n set(vo, `opt.rows[${kr}].mode`, mode)\r\n // console.log('vo.opt.rows[kr]', cloneDeep(vo.opt.rows[kr]))\r\n\r\n //refresh\r\n vo.refresh()\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n showVeCpemisToggleItemEnableByName: function(name) {\r\n // console.log('showVeCpemisToggleItemEnableByName', name)\r\n\r\n let vo = this\r\n\r\n //check\r\n if (!isestr(name)) {\r\n vo.$alert(`${vo.$t('cpemiEditNoName')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //find\r\n let r = null\r\n let kr = null\r\n each(rows, (v, k) => {\r\n if (get(v, 'name', '') === name) {\r\n r = v\r\n kr = k\r\n return false //跳出\r\n }\r\n })\r\n\r\n //check\r\n if (!iseobj(r)) {\r\n vo.$alert(`${vo.$t('cpemiEditNoTarget')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //enable\r\n let _enable = get(r, 'enable', 'n')\r\n let enable = _enable === 'y' ? 'n' : 'y'\r\n // console.log('enable', enable)\r\n\r\n //set\r\n set(vo, `opt.rows[${kr}].enable`, enable)\r\n // console.log('vo.opt.rows[kr]', cloneDeep(vo.opt.rows[kr]))\r\n\r\n //refresh\r\n vo.refresh()\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n showVeCpemisToggleItemsEnableAllYes: function() {\r\n // console.log('showVeCpemisToggleItemsEnableAllYes')\r\n\r\n let vo = this\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n // console.log('rows', rows)\r\n\r\n //kpRow\r\n let kpRow = {}\r\n each(rows, (r, kr) => {\r\n kpRow[r.name] = kr\r\n })\r\n\r\n //rowsEff\r\n let rowsEff = vo.getDisplayData()\r\n // console.log('rowsEff', rowsEff)\r\n\r\n //toggle\r\n each(rowsEff, (r) => {\r\n\r\n //kr\r\n let kr = kpRow[r.name]\r\n\r\n //set\r\n set(vo, `opt.rows[${kr}].enable`, 'y')\r\n // console.log('vo.opt.rows[kr]', cloneDeep(vo.opt.rows[kr]))\r\n\r\n })\r\n\r\n //refresh\r\n vo.refresh()\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n showVeCpemisToggleItemsEnableAllNo: function() {\r\n // console.log('showVeCpemisToggleItemsEnableAllNo')\r\n\r\n let vo = this\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n // console.log('rows', rows)\r\n\r\n //kpRow\r\n let kpRow = {}\r\n each(rows, (r, kr) => {\r\n kpRow[r.name] = kr\r\n })\r\n\r\n //rowsEff\r\n let rowsEff = vo.getDisplayData()\r\n // console.log('rowsEff', rowsEff)\r\n\r\n //toggle\r\n each(rowsEff, (r) => {\r\n\r\n //kr\r\n let kr = kpRow[r.name]\r\n\r\n //set\r\n set(vo, `opt.rows[${kr}].enable`, 'n')\r\n // console.log('vo.opt.rows[kr]', cloneDeep(vo.opt.rows[kr]))\r\n\r\n })\r\n\r\n //refresh\r\n vo.refresh()\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n showVeCpemisToggleItemsEnableAllInv: function() {\r\n // console.log('showVeCpemisToggleItemsEnableAllInv')\r\n\r\n let vo = this\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n // console.log('rows', rows)\r\n\r\n //kpRow\r\n let kpRow = {}\r\n each(rows, (r, kr) => {\r\n kpRow[r.name] = kr\r\n })\r\n\r\n //rowsEff\r\n let rowsEff = vo.getDisplayData()\r\n // console.log('rowsEff', rowsEff)\r\n\r\n //toggle\r\n each(rowsEff, (r) => {\r\n\r\n //kr\r\n let kr = kpRow[r.name]\r\n\r\n //enable\r\n let _enable = get(r, 'enable', 'n')\r\n let enable = _enable === 'y' ? 'n' : 'y'\r\n\r\n //set\r\n set(vo, `opt.rows[${kr}].enable`, enable)\r\n // console.log('vo.opt.rows[kr]', cloneDeep(vo.opt.rows[kr]))\r\n\r\n })\r\n\r\n //refresh\r\n vo.refresh()\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n clickBtns: function(msg) {\r\n // console.log('clickBtns', msg)\r\n\r\n let vo = this\r\n\r\n //evName\r\n if (msg.evName === 'toFullscreen') {\r\n vo.fullscreen = true\r\n }\r\n else if (msg.evName === 'toNormalscreen') {\r\n vo.fullscreen = false\r\n }\r\n\r\n },\r\n\r\n clickSave: function(msg) {\r\n //console.log('methods clickSave', msg)\r\n\r\n let vo = this\r\n\r\n async function core() {\r\n\r\n //show loading\r\n vo.$ui.updateLoading(true)\r\n\r\n //delay\r\n await delay(300)\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n // console.log('rows', rows)\r\n\r\n //kpPemi\r\n let kpPemi = {}\r\n each(rows, (r) => {\r\n let name = get(r, 'name', '')\r\n let mode = get(r, 'mode', '')\r\n let enable = get(r, 'enable', '')\r\n if (!isestr(name)) {\r\n console.log(`invalid name`)\r\n return true //跳出換下一個\r\n }\r\n if (mode !== 'OR' && mode !== 'AND') {\r\n console.log(`invalid mode[${mode}]`)\r\n return true //跳出換下一個\r\n }\r\n if (!isestr(enable)) {\r\n console.log(`invalid enable`)\r\n return true //跳出換下一個\r\n }\r\n kpPemi[name] = {\r\n mode,\r\n isActive: enable,\r\n }\r\n })\r\n // console.log('kpPemi', kpPemi)\r\n\r\n //cpemis\r\n let cpemis = JSON.stringify(kpPemi)\r\n // console.log('cpemis', cpemis)\r\n\r\n return cpemis\r\n }\r\n\r\n //core\r\n core()\r\n .then((rows) => {\r\n\r\n //resolve\r\n vo.pm.resolve(rows)\r\n\r\n //hide\r\n vo.bShow = false\r\n\r\n })\r\n .catch(() => { })\r\n .finally(() => {\r\n\r\n //save按鈕解除loading\r\n msg.pm.resolve()\r\n\r\n //hide loading\r\n vo.$ui.updateLoading(false)\r\n\r\n })\r\n\r\n },\r\n\r\n clickClose: function() {\r\n //console.log('methods clickClose')\r\n\r\n let vo = this\r\n\r\n //reject\r\n vo.pm.reject('close window')\r\n\r\n //hide\r\n vo.bShow = false\r\n\r\n },\r\n\r\n show: function (msg) {\r\n // console.log('methods show', msg)\r\n\r\n let vo = this\r\n\r\n //pm\r\n vo.pm = genPm()\r\n\r\n //default\r\n vo.isModified = false\r\n\r\n //isEditable, grup\r\n let isEditable = get(msg, 'isEditable', false)\r\n let grup = get(msg, 'grup', {})\r\n\r\n //cloneDeep\r\n grup = cloneDeep(grup)\r\n\r\n //cpemis\r\n let cpemis = get(grup, 'cpemis', '')\r\n // console.log('cpemis', cpemis)\r\n\r\n //kpPemi\r\n let kpPemi = {}\r\n if (isestr(cpemis)) {\r\n try {\r\n kpPemi = JSON5.parse(cpemis)\r\n }\r\n catch (err) {\r\n console.log('cpemis', cpemis)\r\n console.log('err', err)\r\n }\r\n }\r\n // console.log('kpPemi', kpPemi)\r\n\r\n //items\r\n let items = map(vo.pemis, (v) => {\r\n // console.log('pemis v', v)\r\n\r\n //p\r\n let p = get(kpPemi, v.name, null)\r\n // console.log('p', p)\r\n\r\n //name\r\n let name = v.name\r\n // console.log('name', name)\r\n\r\n //mode\r\n let mode = get(p, 'mode', '')\r\n if (mode !== 'OR' && mode !== 'AND') {\r\n mode = 'OR'\r\n }\r\n // console.log('mode', mode)\r\n\r\n //enable\r\n let _enable = get(p, 'isActive', '')\r\n let enable = _enable === 'y' ? 'y' : 'n'\r\n // console.log('isActive', enable)\r\n\r\n //r\r\n let r = {\r\n name,\r\n mode,\r\n enable,\r\n }\r\n // console.log('r', r)\r\n\r\n return r\r\n })\r\n // console.log('items', items)\r\n\r\n //save\r\n vo.isEditable = isEditable\r\n vo.grup = grup\r\n vo.items = items\r\n\r\n //genOpt\r\n vo.genOpt()\r\n\r\n //bShow\r\n vo.bShow = true\r\n\r\n return vo.pm\r\n },\r\n\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n</style>\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VeCpemis.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VeCpemis.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./VeCpemis.vue?vue&type=template&id=8eab7996&scoped=true\"\nimport script from \"./VeCpemis.vue?vue&type=script&lang=js\"\nexport * from \"./VeCpemis.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"8eab7996\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('WDialog',{attrs:{\"show\":_vm.bShow,\"title\":_vm.isEditable?_vm.$t('userEditCgrups'):_vm.$t('userEditCgrupsForDisplay'),\"icon\":_vm.mdiFormatListCheckbox,\"minWidth\":800,\"maxWidth\":800,\"fullscreen\":_vm.fullscreen,\"contentBackgroundColor\":'#fff',\"headerBtns\":_vm.useHeaderBtns,\"hasSaveBtn\":_vm.isEditable && _vm.isModified,\"save-btn-tooltip\":_vm.$t('save'),\"close-btn-tooltip\":_vm.$t('close')},on:{\"update:show\":function($event){_vm.bShow=$event},\"click-btns\":_vm.clickBtns,\"click-save\":_vm.clickSave,\"click-close\":_vm.clickClose,\"resize\":_vm.resizeDialog},scopedSlots:_vm._u([{key:\"content\",fn:function(){return [_c('div',[_c('div',{directives:[{name:\"domresize\",rawName:\"v-domresize\"}],staticStyle:{\"_border-bottom\":\"1px solid #ddd\",\"background\":\"#fff\"},on:{\"domresize\":_vm.resizeHead}},[(_vm.isEditable)?_c('div',{staticStyle:{\"padding\":\"5px\",\"background\":\"#fff\",\"display\":\"flex\",\"align-items\":\"center\"}},[[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('checkAllYes'),\"icon\":_vm.mdiCheckboxMultipleMarked,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"_textColor\":\"'#eee'\",\"_textColorHover\":\"'#fff'\",\"iconColor\":'#444',\"iconColorHover\":'#222',\"shadow\":false},on:{\"click\":_vm.showVeCgrupsToggleItemsEnableAllYes}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})],[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('checkAllNo'),\"icon\":_vm.mdiCheckboxMultipleBlankOutline,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"_textColor\":\"'#eee'\",\"_textColorHover\":\"'#fff'\",\"iconColor\":'#444',\"iconColorHover\":'#222',\"shadow\":false},on:{\"click\":_vm.showVeCgrupsToggleItemsEnableAllNo}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})],[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('checkAllInv'),\"icon\":_vm.mdiCodeTagsCheck,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"_textColor\":\"'#eee'\",\"_textColorHover\":\"'#fff'\",\"iconColor\":'#444',\"iconColorHover\":'#222',\"shadow\":false},on:{\"click\":_vm.showVeCgrupsToggleItemsEnableAllInv}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})],(_vm.hasItemsCheck)?[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('cgrupDeleteCheckPemis'),\"icon\":_vm.mdiTrashCanOutline,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"_textColor\":\"'#eee'\",\"_textColorHover\":\"'#fff'\",\"iconColor\":'#444',\"iconColorHover\":'#222',\"shadow\":false},on:{\"click\":_vm.deleteItemsCheck}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})]:_vm._e()],2):_vm._e()]),(_vm.items)?[_c('WAggridVueDyn',{ref:\"rftable\",style:(`width:100%;`),attrs:{\"height\":_vm.contentHeight,\"opt\":_vm.opt}})]:_c('div',{staticStyle:{\"padding\":\"10px 15px\",\"font-size\":\"0.8rem\"}},[_vm._v(\" \"+_vm._s(_vm.$t('waitingData'))+\" \")])],2)]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <WDialog\r\n :show.sync=\"bShow\"\r\n :title=\"isEditable?$t('userEditCgrups'):$t('userEditCgrupsForDisplay')\"\r\n :icon=\"mdiFormatListCheckbox\"\r\n :minWidth=\"800\"\r\n :maxWidth=\"800\"\r\n :fullscreen=\"fullscreen\"\r\n :contentBackgroundColor=\"'#fff'\"\r\n :headerBtns=\"useHeaderBtns\"\r\n :hasSaveBtn=\"isEditable && isModified\"\r\n :save-btn-tooltip=\"$t('save')\"\r\n :close-btn-tooltip=\"$t('close')\"\r\n @click-btns=\"clickBtns\"\r\n @click-save=\"clickSave\"\r\n @click-close=\"clickClose\"\r\n @resize=\"resizeDialog\"\r\n >\r\n <template v-slot:content>\r\n <div>\r\n\r\n <div\r\n style=\"_border-bottom:1px solid #ddd; background:#fff;\"\r\n v-domresize\r\n @domresize=\"resizeHead\"\r\n >\r\n\r\n <!-- 功能區 -->\r\n <div\r\n style=\"padding:5px; background:#fff; display:flex; align-items:center;\"\r\n v-if=\"isEditable\"\r\n >\r\n\r\n <template>\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('checkAllYes')\"\r\n :icon=\"mdiCheckboxMultipleMarked\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n _textColor=\"'#eee'\"\r\n _textColorHover=\"'#fff'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :shadow=\"false\"\r\n @click=\"showVeCgrupsToggleItemsEnableAllYes\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n <template>\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('checkAllNo')\"\r\n :icon=\"mdiCheckboxMultipleBlankOutline\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n _textColor=\"'#eee'\"\r\n _textColorHover=\"'#fff'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :shadow=\"false\"\r\n @click=\"showVeCgrupsToggleItemsEnableAllNo\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n <template>\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('checkAllInv')\"\r\n :icon=\"mdiCodeTagsCheck\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n _textColor=\"'#eee'\"\r\n _textColorHover=\"'#fff'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :shadow=\"false\"\r\n @click=\"showVeCgrupsToggleItemsEnableAllInv\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n <template v-if=\"hasItemsCheck\">\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('cgrupDeleteCheckPemis')\"\r\n :icon=\"mdiTrashCanOutline\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n _textColor=\"'#eee'\"\r\n _textColorHover=\"'#fff'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :shadow=\"false\"\r\n @click=\"deleteItemsCheck\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n <template v-if=\"items\">\r\n <WAggridVueDyn\r\n ref=\"rftable\"\r\n :style=\"`width:100%;`\"\r\n :height=\"contentHeight\"\r\n :opt=\"opt\"\r\n >\r\n </WAggridVueDyn>\r\n </template>\r\n\r\n <div\r\n style=\"padding:10px 15px; font-size:0.8rem;\"\r\n v-else\r\n >\r\n {{$t('waitingData')}}\r\n </div>\r\n\r\n </div>\r\n </template>\r\n </WDialog>\r\n</template>\r\n\r\n<script>\r\nimport { mdiDeleteForever, mdiFullscreen, mdiFullscreenExit, mdiFormatListCheckbox, mdiFileTree, mdiTrashCanOutline, mdiCheckboxMultipleBlankOutline, mdiCheckboxMultipleMarked, mdiCodeTagsCheck } from '@mdi/js/mdi.js'\r\nimport Vue from 'vue'\r\nimport JSON5 from 'json5'\r\nimport get from 'lodash-es/get.js'\r\nimport set from 'lodash-es/set.js'\r\nimport each from 'lodash-es/each.js'\r\nimport map from 'lodash-es/map.js'\r\nimport size from 'lodash-es/size.js'\r\nimport filter from 'lodash-es/filter.js'\r\nimport sortBy from 'lodash-es/sortBy.js'\r\nimport cloneDeep from 'lodash-es/cloneDeep.js'\r\nimport genPm from 'wsemi/src/genPm.mjs'\r\nimport delay from 'wsemi/src/delay.mjs'\r\nimport iseobj from 'wsemi/src/iseobj.mjs'\r\nimport isestr from 'wsemi/src/isestr.mjs'\r\nimport WDialog from 'w-component-vue/src/components/WDialog.vue'\r\nimport WButtonCircle from 'w-component-vue/src/components/WButtonCircle.vue'\r\nimport WAggridVueDyn from 'w-component-vue/src/components/WAggridVueDyn.vue'\r\n\r\n\r\nexport default {\r\n components: {\r\n WDialog,\r\n WButtonCircle,\r\n WAggridVueDyn,\r\n },\r\n props: {\r\n },\r\n data: function() {\r\n return {\r\n mdiDeleteForever,\r\n mdiFullscreen,\r\n mdiFullscreenExit,\r\n mdiFormatListCheckbox,\r\n mdiFileTree,\r\n mdiTrashCanOutline,\r\n mdiCheckboxMultipleBlankOutline,\r\n mdiCheckboxMultipleMarked,\r\n mdiCodeTagsCheck,\r\n\r\n bShow: false,\r\n pm: null,\r\n\r\n fullscreen: false,\r\n\r\n panelWidth: 100,\r\n panelHeight: 100,\r\n headHeight: 100,\r\n\r\n isEditable: false,\r\n isModified: false,\r\n\r\n user: null,\r\n\r\n items: [],\r\n itemsCheck: [],\r\n opt: null,\r\n\r\n }\r\n },\r\n mounted: function() {\r\n //console.log('mounted')\r\n\r\n let vo = this\r\n\r\n //set\r\n Vue.prototype.$dg.showVeCgrups = vo.show\r\n Vue.prototype.$dg.showVeCgrupsToggleItemModeByName = vo.showVeCgrupsToggleItemModeByName\r\n Vue.prototype.$dg.showVeCgrupsToggleItemEnableByName = vo.showVeCgrupsToggleItemEnableByName\r\n\r\n },\r\n computed: {\r\n\r\n targets: function() {\r\n let rs = get(this, `$store.state.targets`)\r\n rs = sortBy(rs, 'order')\r\n return rs\r\n },\r\n\r\n pemis: function() {\r\n let rs = get(this, `$store.state.pemis`)\r\n rs = sortBy(rs, 'order')\r\n return rs\r\n },\r\n\r\n grups: function() {\r\n let rs = get(this, `$store.state.grups`)\r\n rs = sortBy(rs, 'order')\r\n return rs\r\n },\r\n\r\n users: function() {\r\n let rs = get(this, `$store.state.users`)\r\n rs = sortBy(rs, 'order')\r\n return rs\r\n },\r\n\r\n kpHeaderBtns: function() {\r\n let vo = this\r\n let kp = {\r\n // delete: {\r\n // icon: mdiDeleteForever,\r\n // tooltip: `${vo.$t('delete')}${vo.tableNameCht}`,\r\n // evName: 'delete'\r\n // },\r\n toFullscreen: {\r\n icon: mdiFullscreen,\r\n tooltip: vo.$t('screenFull'),\r\n evName: 'toFullscreen'\r\n },\r\n toNormalscreen: {\r\n icon: mdiFullscreenExit,\r\n tooltip: vo.$t('screenNormal'),\r\n evName: 'toNormalscreen'\r\n },\r\n }\r\n return kp\r\n },\r\n\r\n useHeaderBtns: function() {\r\n let vo = this\r\n let bts = []\r\n if (true) {\r\n let k = vo.fullscreen ? 'toNormalscreen' : 'toFullscreen'\r\n bts = [\r\n ...bts,\r\n vo.kpHeaderBtns[k]\r\n ]\r\n }\r\n // if (vo.useDelete) {\r\n // let k = 'delete'\r\n // bts = [\r\n // ...bts,\r\n // vo.kpHeaderBtns[k]\r\n // ]\r\n // }\r\n return bts\r\n },\r\n\r\n contentHeight: function() {\r\n let vo = this\r\n\r\n //h\r\n let h = vo.panelHeight - vo.headHeight\r\n h = Math.max(h, 0)\r\n\r\n return h\r\n },\r\n\r\n hasItemsCheck: function() {\r\n let vo = this\r\n\r\n //h\r\n let b = vo.itemsCheck.length > 0\r\n\r\n return b\r\n },\r\n\r\n },\r\n methods: {\r\n\r\n resizeDialog: function(msg) {\r\n // console.log('methods resizeDialog', msg)\r\n\r\n let vo = this\r\n\r\n //panelWidth, panelHeight\r\n vo.panelWidth = msg.panelWidth\r\n vo.panelHeight = msg.contentHeightMax\r\n\r\n },\r\n\r\n resizeHead: function(msg) {\r\n // console.log('methods resizeHead', msg)\r\n\r\n let vo = this\r\n\r\n //headHeight\r\n vo.headHeight = msg.snew.offsetHeight\r\n\r\n },\r\n\r\n genOpt: function() {\r\n // console.log('methods genOpt')\r\n\r\n let vo = this\r\n\r\n //default\r\n vo.itemsCheck = []\r\n\r\n //opt\r\n let opt = null\r\n if (size(vo.items) > 0) {\r\n\r\n //ks\r\n let ks = [\r\n 'name',\r\n 'mode',\r\n 'enable',\r\n ]\r\n // console.log('ks', ks)\r\n\r\n //kpHead\r\n let kpHead = {\r\n 'name': vo.$t('pemiName'),\r\n 'mode': vo.$t('operGrupEnable'),\r\n 'enable': vo.$t('operMode'),\r\n }\r\n\r\n //opt\r\n opt = {\r\n language: vo.$t('aggridLanguage'),\r\n rows: vo.items,\r\n keys: ks,\r\n kpHead,\r\n autoFitColumn: true,\r\n defCellEditable: false, //vo.isEditable,\r\n defHeadFilter: true,\r\n defCellAlignH: 'left',\r\n kpCellEditable: {\r\n 'name': vo.isEditable,\r\n 'mode': false,\r\n 'enable': false,\r\n },\r\n kpHeadWidth: {\r\n 'mode': 100,\r\n 'enable': 100,\r\n },\r\n // kpRowDrag: {\r\n // 'name': true,\r\n // },\r\n // kpHeadFilter: {\r\n // 'enable': false,\r\n // },\r\n kpHeadFilterType: {\r\n 'name': 'text',\r\n 'mode': 'text',\r\n 'enable': 'text',\r\n },\r\n // kpHeadCheckBox: {\r\n // 'name': true,\r\n // },\r\n kpCellRender: {\r\n 'name': (v, k, r) => {\r\n // console.log('kpCellRender name', v)\r\n\r\n return v\r\n },\r\n 'mode': (v, k, r) => {\r\n // console.log('kpCellRender mode', v)\r\n\r\n //name\r\n let name = get(r, 'name', '')\r\n // console.log('name', name, k, r)\r\n\r\n //mode\r\n let mode = get(r, 'mode', '')\r\n // console.log('mode', mode, k, r)\r\n\r\n let t = `\r\n <select onchange=\"$vo.$dg.showVeCgrupsToggleItemModeByName('${name}',this.value)\" ${vo.isEditable ? '' : 'disabled'}>\r\n <option value=\"OR\" ${mode === 'OR' ? 'selected' : ''}>OR</option>\r\n <option value=\"AND\" ${mode === 'AND' ? 'selected' : ''}>AND</option>\r\n </select>\r\n `\r\n\r\n return t\r\n },\r\n 'enable': (v, k, r) => {\r\n // console.log('kpCellRender enable', v, k, r)\r\n\r\n //name\r\n let name = get(r, 'name', '')\r\n // console.log('name', name, k, r)\r\n\r\n let t = `\r\n <input type=\"checkbox\" ${v === 'y' ? 'checked' : ''} onclick=\"$vo.$dg.showVeCgrupsToggleItemEnableByName('${name}')\" ${vo.isEditable ? '' : 'disabled'} />\r\n `\r\n\r\n return t\r\n },\r\n },\r\n rowsChange: (rs) => {\r\n // console.log('rowsChange', rs)\r\n // console.log('rowsChange cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n rowChecked: (rs) => {\r\n // console.log('rowChecked', rs)\r\n // console.log('rowChecked cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\r\n\r\n //save itemsCheck\r\n vo.itemsCheck = cloneDeep(rs)\r\n\r\n },\r\n }\r\n // console.log('opt', opt)\r\n\r\n }\r\n\r\n //save\r\n vo.opt = opt\r\n\r\n },\r\n\r\n deleteItemsCheck: function() {\r\n // console.log('method deleteItemsCheck')\r\n\r\n let vo = this\r\n\r\n //check\r\n if (size(vo.itemsCheck) === 0) {\r\n return\r\n }\r\n\r\n //cloneDeep\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //cloneDeep\r\n rows = cloneDeep(rows)\r\n\r\n //filter\r\n each(vo.itemsCheck, (v) => {\r\n // console.log('v', v)\r\n let name = get(v, 'data.name', '')\r\n if (!isestr(name)) {\r\n console.log(`invalid name`)\r\n return true //跳出換下一個\r\n }\r\n rows = filter(rows, (vv) => {\r\n return vv.name !== name\r\n })\r\n })\r\n\r\n //clear\r\n vo.itemsCheck = []\r\n\r\n //save\r\n vo.opt.rows = rows\r\n // console.log('deleteItemsCheck cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n refresh: function() {\r\n let vo = this\r\n\r\n //cmp\r\n let cmp = get(vo, '$refs.rftable.$refs.$self')\r\n // console.log('cmp', cmp)\r\n\r\n //refresh, 因set不會觸發kpCellRender, 故須另外調用組件函數refresh, 進而觸發kpCellRender, 使能更新數據\r\n cmp.refresh()\r\n\r\n },\r\n\r\n getDisplayData: function() {\r\n let vo = this\r\n\r\n //cmp\r\n let cmp = get(vo, '$refs.rftable.$refs.$self')\r\n // console.log('cmp', cmp)\r\n\r\n //getDisplayData\r\n let rows = cmp.getDisplayData()\r\n\r\n return rows\r\n },\r\n\r\n showVeCgrupsToggleItemModeByName: function(name, mode) {\r\n // console.log('showVeCgrupsToggleItemModeByName', name, mode)\r\n\r\n let vo = this\r\n\r\n //check\r\n if (!isestr(name)) {\r\n vo.$alert(`${vo.$t('cgrupEditNoName')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //find\r\n let r = null\r\n let kr = null\r\n each(rows, (v, k) => {\r\n if (get(v, 'name', '') === name) {\r\n r = v\r\n kr = k\r\n return false //跳出\r\n }\r\n })\r\n\r\n //check\r\n if (!iseobj(r)) {\r\n vo.$alert(`${vo.$t('cgrupEditNoPemi')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //mode\r\n // let mode = th.value\r\n // console.log('mode', mode)\r\n\r\n //set\r\n set(vo, `opt.rows[${kr}].mode`, mode)\r\n // console.log('vo.opt.rows[kr]', cloneDeep(vo.opt.rows[kr]))\r\n\r\n //refresh\r\n vo.refresh()\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n showVeCgrupsToggleItemEnableByName: function(name) {\r\n // console.log('showVeCgrupsToggleItemEnableByName', name)\r\n\r\n let vo = this\r\n\r\n //check\r\n if (!isestr(name)) {\r\n vo.$alert(`${vo.$t('cgrupEditNoName')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //find\r\n let r = null\r\n let kr = null\r\n each(rows, (v, k) => {\r\n if (get(v, 'name', '') === name) {\r\n r = v\r\n kr = k\r\n return false //跳出\r\n }\r\n })\r\n\r\n //check\r\n if (!iseobj(r)) {\r\n vo.$alert(`${vo.$t('cgrupEditNoPemi')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //enable\r\n let _enable = get(r, 'enable', 'n')\r\n let enable = _enable === 'y' ? 'n' : 'y'\r\n // console.log('enable', enable)\r\n\r\n //set\r\n set(vo, `opt.rows[${kr}].enable`, enable)\r\n // console.log('vo.opt.rows[kr]', cloneDeep(vo.opt.rows[kr]))\r\n\r\n //refresh\r\n vo.refresh()\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n showVeCgrupsToggleItemsEnableAllYes: function() {\r\n // console.log('showVeCgrupsToggleItemsEnableAllYes')\r\n\r\n let vo = this\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n // console.log('rows', rows)\r\n\r\n //kpRow\r\n let kpRow = {}\r\n each(rows, (r, kr) => {\r\n kpRow[r.name] = kr\r\n })\r\n\r\n //rowsEff\r\n let rowsEff = vo.getDisplayData()\r\n // console.log('rowsEff', rowsEff)\r\n\r\n //toggle\r\n each(rowsEff, (r) => {\r\n\r\n //kr\r\n let kr = kpRow[r.name]\r\n\r\n //set\r\n set(vo, `opt.rows[${kr}].enable`, 'y')\r\n // console.log('vo.opt.rows[kr]', cloneDeep(vo.opt.rows[kr]))\r\n\r\n })\r\n\r\n //refresh\r\n vo.refresh()\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n showVeCgrupsToggleItemsEnableAllNo: function() {\r\n // console.log('showVeCgrupsToggleItemsEnableAllNo')\r\n\r\n let vo = this\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n // console.log('rows', rows)\r\n\r\n //kpRow\r\n let kpRow = {}\r\n each(rows, (r, kr) => {\r\n kpRow[r.name] = kr\r\n })\r\n\r\n //rowsEff\r\n let rowsEff = vo.getDisplayData()\r\n // console.log('rowsEff', rowsEff)\r\n\r\n //toggle\r\n each(rowsEff, (r) => {\r\n\r\n //kr\r\n let kr = kpRow[r.name]\r\n\r\n //set\r\n set(vo, `opt.rows[${kr}].enable`, 'n')\r\n // console.log('vo.opt.rows[kr]', cloneDeep(vo.opt.rows[kr]))\r\n\r\n })\r\n\r\n //refresh\r\n vo.refresh()\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n showVeCgrupsToggleItemsEnableAllInv: function() {\r\n // console.log('showVeCgrupsToggleItemsEnableAllInv')\r\n\r\n let vo = this\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n // console.log('rows', rows)\r\n\r\n //kpRow\r\n let kpRow = {}\r\n each(rows, (r, kr) => {\r\n kpRow[r.name] = kr\r\n })\r\n\r\n //rowsEff\r\n let rowsEff = vo.getDisplayData()\r\n // console.log('rowsEff', rowsEff)\r\n\r\n //toggle\r\n each(rowsEff, (r) => {\r\n\r\n //kr\r\n let kr = kpRow[r.name]\r\n\r\n //enable\r\n let _enable = get(r, 'enable', 'n')\r\n let enable = _enable === 'y' ? 'n' : 'y'\r\n\r\n //set\r\n set(vo, `opt.rows[${kr}].enable`, enable)\r\n // console.log('vo.opt.rows[kr]', cloneDeep(vo.opt.rows[kr]))\r\n\r\n })\r\n\r\n //refresh\r\n vo.refresh()\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n clickBtns: function(msg) {\r\n // console.log('clickBtns', msg)\r\n\r\n let vo = this\r\n\r\n //evName\r\n if (msg.evName === 'toFullscreen') {\r\n vo.fullscreen = true\r\n }\r\n else if (msg.evName === 'toNormalscreen') {\r\n vo.fullscreen = false\r\n }\r\n\r\n },\r\n\r\n clickSave: function(msg) {\r\n //console.log('methods clickSave', msg)\r\n\r\n let vo = this\r\n\r\n async function core() {\r\n\r\n //show loading\r\n vo.$ui.updateLoading(true)\r\n\r\n //delay\r\n await delay(300)\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n // console.log('rows', rows)\r\n\r\n //kpGrup\r\n let kpGrup = {}\r\n each(rows, (r) => {\r\n let name = get(r, 'name', '')\r\n let mode = get(r, 'mode', '')\r\n let enable = get(r, 'enable', '')\r\n if (!isestr(name)) {\r\n console.log(`invalid name`)\r\n return true //跳出換下一個\r\n }\r\n if (mode !== 'OR' && mode !== 'AND') {\r\n console.log(`invalid mode[${mode}]`)\r\n return true //跳出換下一個\r\n }\r\n if (!isestr(enable)) {\r\n console.log(`invalid enable`)\r\n return true //跳出換下一個\r\n }\r\n kpGrup[name] = {\r\n mode,\r\n isActive: enable,\r\n }\r\n })\r\n // console.log('kpGrup', kpGrup)\r\n\r\n //cgrups\r\n let cgrups = JSON.stringify(kpGrup)\r\n // console.log('cgrups', cgrups)\r\n\r\n return cgrups\r\n }\r\n\r\n //core\r\n core()\r\n .then((rows) => {\r\n\r\n //resolve\r\n vo.pm.resolve(rows)\r\n\r\n //hide\r\n vo.bShow = false\r\n\r\n })\r\n .catch(() => { })\r\n .finally(() => {\r\n\r\n //save按鈕解除loading\r\n msg.pm.resolve()\r\n\r\n //hide loading\r\n vo.$ui.updateLoading(false)\r\n\r\n })\r\n\r\n },\r\n\r\n clickClose: function() {\r\n //console.log('methods clickClose')\r\n\r\n let vo = this\r\n\r\n //reject\r\n vo.pm.reject('close window')\r\n\r\n //hide\r\n vo.bShow = false\r\n\r\n },\r\n\r\n show: function (msg) {\r\n // console.log('methods show', msg)\r\n\r\n let vo = this\r\n\r\n //pm\r\n vo.pm = genPm()\r\n\r\n //default\r\n vo.isModified = false\r\n\r\n //isEditable, user\r\n let isEditable = get(msg, 'isEditable', false)\r\n let user = get(msg, 'user', {})\r\n\r\n //cloneDeep\r\n user = cloneDeep(user)\r\n\r\n //cgrups\r\n let cgrups = get(user, 'cgrups', '')\r\n // console.log('cgrups', cgrups)\r\n\r\n //kpGrup\r\n let kpGrup = {}\r\n if (isestr(cgrups)) {\r\n try {\r\n kpGrup = JSON5.parse(cgrups)\r\n }\r\n catch (err) {\r\n console.log('cgrups', cgrups)\r\n console.log('err', err)\r\n }\r\n }\r\n // console.log('kpGrup', kpGrup)\r\n\r\n //items\r\n let items = map(vo.grups, (v) => {\r\n // console.log('grups v', v)\r\n\r\n //p\r\n let p = get(kpGrup, v.name, null)\r\n // console.log('p', p)\r\n\r\n //name\r\n let name = v.name\r\n // console.log('name', name)\r\n\r\n //mode\r\n let mode = get(p, 'mode', '')\r\n if (mode !== 'OR' && mode !== 'AND') {\r\n mode = 'OR'\r\n }\r\n // console.log('mode', mode)\r\n\r\n //enable\r\n let _enable = get(p, 'isActive', '')\r\n let enable = _enable === 'y' ? 'y' : 'n'\r\n // console.log('isActive', enable)\r\n\r\n //r\r\n let r = {\r\n name,\r\n mode,\r\n enable,\r\n }\r\n // console.log('r', r)\r\n\r\n return r\r\n })\r\n // console.log('items', items)\r\n\r\n //save\r\n vo.isEditable = isEditable\r\n vo.user = user\r\n vo.items = items\r\n\r\n //genOpt\r\n vo.genOpt()\r\n\r\n //bShow\r\n vo.bShow = true\r\n\r\n return vo.pm\r\n },\r\n\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n</style>\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VeCgrups.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VeCgrups.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./VeCgrups.vue?vue&type=template&id=6aa8ed92&scoped=true\"\nimport script from \"./VeCgrups.vue?vue&type=script&lang=js\"\nexport * from \"./VeCgrups.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6aa8ed92\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('WDialog',{attrs:{\"show\":_vm.bShow,\"title\":_vm.isEditable?_vm.$t('grupBlngEditUsers'):_vm.$t('grupBlngEditUsersForDisplay'),\"icon\":_vm.mdiFormatListCheckbox,\"minWidth\":800,\"maxWidth\":800,\"fullscreen\":_vm.fullscreen,\"contentBackgroundColor\":'#fff',\"headerBtns\":_vm.useHeaderBtns,\"hasSaveBtn\":_vm.isEditable && _vm.isModified,\"save-btn-tooltip\":_vm.$t('save'),\"close-btn-tooltip\":_vm.$t('close')},on:{\"update:show\":function($event){_vm.bShow=$event},\"click-btns\":_vm.clickBtns,\"click-save\":_vm.clickSave,\"click-close\":_vm.clickClose,\"resize\":_vm.resizeDialog},scopedSlots:_vm._u([{key:\"content\",fn:function(){return [_c('div',[_c('div',{directives:[{name:\"domresize\",rawName:\"v-domresize\"}],staticStyle:{\"_border-bottom\":\"1px solid #ddd\",\"background\":\"#fff\"},on:{\"domresize\":_vm.resizeHead}},[_c('div',{staticStyle:{\"padding\":\"18px 12px\",\"background\":\"#fff\",\"border-bottom\":\"1px solid #ddd\"}},[_c('div',{staticStyle:{\"font-size\":\"0.75rem\",\"color\":\"#999\",\"padding-bottom\":\"2px\"}},[_vm._v(\" \"+_vm._s(_vm.$t('grupBlngGrupNow'))+\" \")]),_c('div',{staticStyle:{\"font-size\":\"1.3rem\"}},[_vm._v(\" \"+_vm._s(_vm.grupName)+\" \")])]),(_vm.isEditable)?_c('div',{staticStyle:{\"padding\":\"5px\",\"background\":\"#fff\",\"display\":\"flex\",\"align-items\":\"center\"}},[[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('checkAllYes'),\"icon\":_vm.mdiCheckboxMultipleMarked,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"_textColor\":\"'#eee'\",\"_textColorHover\":\"'#fff'\",\"iconColor\":'#444',\"iconColorHover\":'#222',\"shadow\":false},on:{\"click\":_vm.showVeGrupBlngUsersToggleItemsEnableAllYes}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})],[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('checkAllNo'),\"icon\":_vm.mdiCheckboxMultipleBlankOutline,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"_textColor\":\"'#eee'\",\"_textColorHover\":\"'#fff'\",\"iconColor\":'#444',\"iconColorHover\":'#222',\"shadow\":false},on:{\"click\":_vm.showVeGrupBlngUsersToggleItemsEnableAllNo}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})],[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('checkAllInv'),\"icon\":_vm.mdiCodeTagsCheck,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"_textColor\":\"'#eee'\",\"_textColorHover\":\"'#fff'\",\"iconColor\":'#444',\"iconColorHover\":'#222',\"shadow\":false},on:{\"click\":_vm.showVeGrupBlngUsersToggleItemsEnableAllInv}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})],(_vm.hasItemsCheck)?[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('grupBlngDeleteCheckGrups'),\"icon\":_vm.mdiTrashCanOutline,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"_textColor\":\"'#eee'\",\"_textColorHover\":\"'#fff'\",\"iconColor\":'#444',\"iconColorHover\":'#222',\"shadow\":false},on:{\"click\":_vm.deleteItemsCheck}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})]:_vm._e()],2):_vm._e()]),(_vm.items)?[_c('WAggridVueDyn',{ref:\"rftable\",style:(`width:100%;`),attrs:{\"height\":_vm.contentHeight,\"opt\":_vm.opt}})]:_c('div',{staticStyle:{\"padding\":\"10px 15px\",\"font-size\":\"0.8rem\"}},[_vm._v(\" \"+_vm._s(_vm.$t('waitingData'))+\" \")])],2)]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <WDialog\r\n :show.sync=\"bShow\"\r\n :title=\"isEditable?$t('grupBlngEditUsers'):$t('grupBlngEditUsersForDisplay')\"\r\n :icon=\"mdiFormatListCheckbox\"\r\n :minWidth=\"800\"\r\n :maxWidth=\"800\"\r\n :fullscreen=\"fullscreen\"\r\n :contentBackgroundColor=\"'#fff'\"\r\n :headerBtns=\"useHeaderBtns\"\r\n :hasSaveBtn=\"isEditable && isModified\"\r\n :save-btn-tooltip=\"$t('save')\"\r\n :close-btn-tooltip=\"$t('close')\"\r\n @click-btns=\"clickBtns\"\r\n @click-save=\"clickSave\"\r\n @click-close=\"clickClose\"\r\n @resize=\"resizeDialog\"\r\n >\r\n <template v-slot:content>\r\n <div>\r\n\r\n <div\r\n style=\"_border-bottom:1px solid #ddd; background:#fff;\"\r\n v-domresize\r\n @domresize=\"resizeHead\"\r\n >\r\n\r\n <!-- 當前權限群組名稱 -->\r\n <div style=\"padding:18px 12px; background:#fff; border-bottom:1px solid #ddd;\">\r\n\r\n <div style=\"font-size:0.75rem; color:#999; padding-bottom:2px;\">\r\n {{$t('grupBlngGrupNow')}}\r\n </div>\r\n\r\n <div style=\"font-size:1.3rem;\">\r\n {{grupName}}\r\n </div>\r\n\r\n </div>\r\n\r\n <!-- 功能區 -->\r\n <div\r\n style=\"padding:5px; background:#fff; display:flex; align-items:center;\"\r\n v-if=\"isEditable\"\r\n >\r\n\r\n <template>\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('checkAllYes')\"\r\n :icon=\"mdiCheckboxMultipleMarked\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n _textColor=\"'#eee'\"\r\n _textColorHover=\"'#fff'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :shadow=\"false\"\r\n @click=\"showVeGrupBlngUsersToggleItemsEnableAllYes\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n <template>\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('checkAllNo')\"\r\n :icon=\"mdiCheckboxMultipleBlankOutline\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n _textColor=\"'#eee'\"\r\n _textColorHover=\"'#fff'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :shadow=\"false\"\r\n @click=\"showVeGrupBlngUsersToggleItemsEnableAllNo\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n <template>\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('checkAllInv')\"\r\n :icon=\"mdiCodeTagsCheck\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n _textColor=\"'#eee'\"\r\n _textColorHover=\"'#fff'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :shadow=\"false\"\r\n @click=\"showVeGrupBlngUsersToggleItemsEnableAllInv\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n <template v-if=\"hasItemsCheck\">\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('grupBlngDeleteCheckGrups')\"\r\n :icon=\"mdiTrashCanOutline\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n _textColor=\"'#eee'\"\r\n _textColorHover=\"'#fff'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :shadow=\"false\"\r\n @click=\"deleteItemsCheck\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n <template v-if=\"items\">\r\n <WAggridVueDyn\r\n ref=\"rftable\"\r\n :style=\"`width:100%;`\"\r\n :height=\"contentHeight\"\r\n :opt=\"opt\"\r\n >\r\n </WAggridVueDyn>\r\n </template>\r\n\r\n <div\r\n style=\"padding:10px 15px; font-size:0.8rem;\"\r\n v-else\r\n >\r\n {{$t('waitingData')}}\r\n </div>\r\n\r\n </div>\r\n </template>\r\n </WDialog>\r\n</template>\r\n\r\n<script>\r\nimport { mdiDeleteForever, mdiFullscreen, mdiFullscreenExit, mdiFormatListCheckbox, mdiFileTree, mdiTrashCanOutline, mdiCheckboxMultipleBlankOutline, mdiCheckboxMultipleMarked, mdiCodeTagsCheck } from '@mdi/js/mdi.js'\r\nimport Vue from 'vue'\r\nimport JSON5 from 'json5'\r\nimport get from 'lodash-es/get.js'\r\nimport set from 'lodash-es/set.js'\r\nimport each from 'lodash-es/each.js'\r\nimport map from 'lodash-es/map.js'\r\nimport size from 'lodash-es/size.js'\r\nimport filter from 'lodash-es/filter.js'\r\nimport join from 'lodash-es/join.js'\r\nimport sortBy from 'lodash-es/sortBy.js'\r\nimport isEqual from 'lodash-es/isEqual.js'\r\nimport cloneDeep from 'lodash-es/cloneDeep.js'\r\nimport genPm from 'wsemi/src/genPm.mjs'\r\nimport haskey from 'wsemi/src/haskey.mjs'\r\nimport delay from 'wsemi/src/delay.mjs'\r\nimport iseobj from 'wsemi/src/iseobj.mjs'\r\nimport isestr from 'wsemi/src/isestr.mjs'\r\nimport WDialog from 'w-component-vue/src/components/WDialog.vue'\r\nimport WButtonCircle from 'w-component-vue/src/components/WButtonCircle.vue'\r\nimport WAggridVueDyn from 'w-component-vue/src/components/WAggridVueDyn.vue'\r\n\r\n\r\nexport default {\r\n components: {\r\n WDialog,\r\n WButtonCircle,\r\n WAggridVueDyn,\r\n },\r\n props: {\r\n },\r\n data: function() {\r\n return {\r\n mdiDeleteForever,\r\n mdiFullscreen,\r\n mdiFullscreenExit,\r\n mdiFormatListCheckbox,\r\n mdiFileTree,\r\n mdiTrashCanOutline,\r\n mdiCheckboxMultipleBlankOutline,\r\n mdiCheckboxMultipleMarked,\r\n mdiCodeTagsCheck,\r\n\r\n bShow: false,\r\n pm: null,\r\n\r\n fullscreen: false,\r\n\r\n panelWidth: 100,\r\n panelHeight: 100,\r\n headHeight: 100,\r\n\r\n isEditable: false,\r\n isModified: false,\r\n\r\n grup: null,\r\n\r\n items: [],\r\n itemsCheck: [],\r\n opt: null,\r\n\r\n }\r\n },\r\n mounted: function() {\r\n //console.log('mounted')\r\n\r\n let vo = this\r\n\r\n //set\r\n Vue.prototype.$dg.showVeGrupBlngUsers = vo.show\r\n Vue.prototype.$dg.showVeGrupBlngUsersToggleItemModeByName = vo.showVeGrupBlngUsersToggleItemModeByName\r\n Vue.prototype.$dg.showVeGrupBlngUsersToggleItemEnableByName = vo.showVeGrupBlngUsersToggleItemEnableByName\r\n\r\n },\r\n computed: {\r\n\r\n targets: function() {\r\n let rs = get(this, `$store.state.targets`)\r\n rs = sortBy(rs, 'order')\r\n return rs\r\n },\r\n\r\n pemis: function() {\r\n let rs = get(this, `$store.state.pemis`)\r\n rs = sortBy(rs, 'order')\r\n return rs\r\n },\r\n\r\n grups: function() {\r\n let rs = get(this, `$store.state.grups`)\r\n rs = sortBy(rs, 'order')\r\n return rs\r\n },\r\n\r\n users: function() {\r\n let rs = get(this, `$store.state.users`)\r\n rs = sortBy(rs, 'order')\r\n return rs\r\n },\r\n\r\n kpHeaderBtns: function() {\r\n let vo = this\r\n let kp = {\r\n // delete: {\r\n // icon: mdiDeleteForever,\r\n // tooltip: `${vo.$t('delete')}${vo.tableNameCht}`,\r\n // evName: 'delete'\r\n // },\r\n toFullscreen: {\r\n icon: mdiFullscreen,\r\n tooltip: vo.$t('screenFull'),\r\n evName: 'toFullscreen'\r\n },\r\n toNormalscreen: {\r\n icon: mdiFullscreenExit,\r\n tooltip: vo.$t('screenNormal'),\r\n evName: 'toNormalscreen'\r\n },\r\n }\r\n return kp\r\n },\r\n\r\n useHeaderBtns: function() {\r\n let vo = this\r\n let bts = []\r\n if (true) {\r\n let k = vo.fullscreen ? 'toNormalscreen' : 'toFullscreen'\r\n bts = [\r\n ...bts,\r\n vo.kpHeaderBtns[k]\r\n ]\r\n }\r\n // if (vo.useDelete) {\r\n // let k = 'delete'\r\n // bts = [\r\n // ...bts,\r\n // vo.kpHeaderBtns[k]\r\n // ]\r\n // }\r\n return bts\r\n },\r\n\r\n contentHeight: function() {\r\n let vo = this\r\n\r\n //h\r\n let h = vo.panelHeight - vo.headHeight\r\n h = Math.max(h, 0)\r\n\r\n return h\r\n },\r\n\r\n hasItemsCheck: function() {\r\n let vo = this\r\n\r\n //h\r\n let b = vo.itemsCheck.length > 0\r\n\r\n return b\r\n },\r\n\r\n grupName: function() {\r\n let vo = this\r\n\r\n let c = get(vo, 'grup.name', '')\r\n\r\n return c\r\n },\r\n\r\n },\r\n methods: {\r\n\r\n resizeDialog: function(msg) {\r\n // console.log('methods resizeDialog', msg)\r\n\r\n let vo = this\r\n\r\n //panelWidth, panelHeight\r\n vo.panelWidth = msg.panelWidth\r\n vo.panelHeight = msg.contentHeightMax\r\n\r\n },\r\n\r\n resizeHead: function(msg) {\r\n // console.log('methods resizeHead', msg)\r\n\r\n let vo = this\r\n\r\n //headHeight\r\n vo.headHeight = msg.snew.offsetHeight\r\n\r\n },\r\n\r\n genOpt: function() {\r\n // console.log('methods genOpt')\r\n\r\n let vo = this\r\n\r\n //default\r\n vo.itemsCheck = []\r\n\r\n //opt\r\n let opt = null\r\n if (size(vo.items) > 0) {\r\n\r\n //ks\r\n let ks = [\r\n 'name',\r\n 'grupsNames',\r\n 'mode',\r\n 'enable',\r\n ]\r\n // console.log('ks', ks)\r\n\r\n //kpHead\r\n let kpHead = {\r\n 'name': vo.$t('userName'),\r\n 'grupsNames': vo.$t('belongGrupsNames'),\r\n 'mode': vo.$t('operGrupEnable'),\r\n 'enable': vo.$t('operMode'),\r\n }\r\n\r\n //opt\r\n opt = {\r\n language: vo.$t('aggridLanguage'),\r\n rows: vo.items,\r\n keys: ks,\r\n kpHead,\r\n autoFitColumn: true,\r\n defCellEditable: false, //vo.isEditable,\r\n defHeadFilter: true,\r\n defCellAlignH: 'left',\r\n kpCellEditable: {\r\n 'name': vo.isEditable,\r\n 'mode': false,\r\n 'enable': false,\r\n },\r\n kpHeadWidth: {\r\n 'mode': 100,\r\n 'enable': 100,\r\n },\r\n // kpRowDrag: {\r\n // 'name': true,\r\n // },\r\n // kpHeadFilter: {\r\n // 'enable': false,\r\n // },\r\n kpHeadFilterType: {\r\n 'name': 'text',\r\n 'grupsNames': 'text',\r\n 'mode': 'text',\r\n 'enable': 'text',\r\n },\r\n // kpHeadCheckBox: {\r\n // 'name': true,\r\n // },\r\n kpHeadFocusHighlight: { //雖然效果不完全, 但因按鈕與cell有padding可被點擊, 故還是需要開啟\r\n 'grupsNames': false,\r\n },\r\n kpCellRender: {\r\n 'grupsNames': (v, k, r) => {\r\n // console.log('kpCellRender grupsNames', v, k, r)\r\n\r\n let csp = `border-top-left-radius:4px; border-bottom-left-radius:4px;`\r\n let csnp = `border-left:1px solid #aaaaaa; border-right:1px solid #aaaaaa; border-top:1px solid #aaaaaa; border-bottom:1px solid #aaaaaa; background:#ffffff; color:#555;`\r\n let csep = `border-left:1px solid #ac2451; border-right:1px solid #9e2149; border-top:1px solid #ac2451; border-bottom:1px solid #ac2451; background:#be295a; color:#fff;`\r\n\r\n let csa = `border-top-right-radius:4px; border-bottom-right-radius:4px;`\r\n let csna = `_border-left:1px solid #aaaaaa; border-right:1px solid #aaaaaa; border-top:1px solid #aaaaaa; border-bottom:1px solid #aaaaaa; background:#eeeeee; color:#555;`\r\n let csea = `_border-left:1px solid #ac2451; border-right:1px solid #ac2451; border-top:1px solid #ac2451; border-bottom:1px solid #ac2451; background:#d22f64; color:#fff;`\r\n\r\n let vs = r.grups\r\n\r\n let t = ''\r\n each(vs, (v) => {\r\n t += `\r\n <span style=\"display:inline-block; line-height:20px; height:20px;\">\r\n <div style=\"display:flex;\">\r\n <div style=\"padding:0px 5px; ${csp} ${v.enable === 'y' ? csep : csnp}\">\r\n ${v.mode}\r\n </div>\r\n <div style=\"padding:0px 5px; ${csa} ${v.enable === 'y' ? csea : csna}\">\r\n ${v.name}\r\n </div>\r\n </div>\r\n </span>\r\n `\r\n })\r\n\r\n return t\r\n },\r\n 'mode': (v, k, r) => {\r\n // console.log('kpCellRender mode', v)\r\n\r\n //name\r\n let name = get(r, 'name', '')\r\n // console.log('name', name, k, r)\r\n\r\n //mode\r\n let mode = get(r, 'mode', '')\r\n // console.log('mode', mode, k, r)\r\n\r\n let t = `\r\n <select onchange=\"$vo.$dg.showVeGrupBlngUsersToggleItemModeByName('${name}',this.value)\" ${vo.isEditable ? '' : 'disabled'}>\r\n <option value=\"OR\" ${mode === 'OR' ? 'selected' : ''}>OR</option>\r\n <option value=\"AND\" ${mode === 'AND' ? 'selected' : ''}>AND</option>\r\n </select>\r\n `\r\n\r\n return t\r\n },\r\n 'enable': (v, k, r) => {\r\n // console.log('kpCellRender enable', v, k, r)\r\n\r\n //name\r\n let name = get(r, 'name', '')\r\n // console.log('name', name, k, r)\r\n\r\n let t = `\r\n <input type=\"checkbox\" ${v === 'y' ? 'checked' : ''} onclick=\"$vo.$dg.showVeGrupBlngUsersToggleItemEnableByName('${name}')\" ${vo.isEditable ? '' : 'disabled'} />\r\n `\r\n\r\n return t\r\n },\r\n },\r\n rowsChange: (rs) => {\r\n // console.log('rowsChange', rs)\r\n // console.log('rowsChange cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n rowChecked: (rs) => {\r\n // console.log('rowChecked', rs)\r\n // console.log('rowChecked cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\r\n\r\n //save itemsCheck\r\n vo.itemsCheck = cloneDeep(rs)\r\n\r\n },\r\n }\r\n // console.log('opt', opt)\r\n\r\n }\r\n\r\n //save\r\n vo.opt = opt\r\n\r\n },\r\n\r\n deleteItemsCheck: function() {\r\n // console.log('method deleteItemsCheck')\r\n\r\n let vo = this\r\n\r\n //check\r\n if (size(vo.itemsCheck) === 0) {\r\n return\r\n }\r\n\r\n //cloneDeep\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //cloneDeep\r\n rows = cloneDeep(rows)\r\n\r\n //filter\r\n each(vo.itemsCheck, (v) => {\r\n // console.log('v', v)\r\n let name = get(v, 'data.name', '')\r\n if (!isestr(name)) {\r\n console.log(`invalid name`)\r\n return true //跳出換下一個\r\n }\r\n rows = filter(rows, (vv) => {\r\n return vv.name !== name\r\n })\r\n })\r\n\r\n //clear\r\n vo.itemsCheck = []\r\n\r\n //save\r\n vo.opt.rows = rows\r\n // console.log('deleteItemsCheck cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n refresh: function() {\r\n let vo = this\r\n\r\n //cmp\r\n let cmp = get(vo, '$refs.rftable.$refs.$self')\r\n // console.log('cmp', cmp)\r\n\r\n //refresh, 因set不會觸發kpCellRender, 故須另外調用組件函數refresh, 進而觸發kpCellRender, 使能更新數據\r\n cmp.refresh()\r\n\r\n },\r\n\r\n getDisplayData: function() {\r\n let vo = this\r\n\r\n //cmp\r\n let cmp = get(vo, '$refs.rftable.$refs.$self')\r\n // console.log('cmp', cmp)\r\n\r\n //getDisplayData\r\n let rows = cmp.getDisplayData()\r\n\r\n return rows\r\n },\r\n\r\n fltKpGrup: function(kp) {\r\n // console.log('fltKpGrup', kp)\r\n\r\n let vo = this\r\n\r\n //_kp\r\n let _kp = {}\r\n each(vo.grups, (v, k) => {\r\n _kp[v.name] = true\r\n })\r\n // console.log('_kp', _kp)\r\n\r\n //kpt\r\n let kpt = {}\r\n each(kp, (v, k) => {\r\n if (haskey(_kp, k)) {\r\n kpt[k] = v\r\n }\r\n })\r\n\r\n return kpt\r\n },\r\n\r\n genItems: function(grup, users) {\r\n // console.log('genItems', grup, users)\r\n\r\n let vo = this\r\n\r\n //items\r\n let items = map(users, (u) => {\r\n\r\n //kpGrup\r\n let kpGrup = JSON5.parse(u.cgrups)\r\n // console.log(u.name, 'kpGrup', kpGrup)\r\n\r\n //fltKpGrup\r\n kpGrup = vo.fltKpGrup(kpGrup)\r\n // console.log(u.name, 'kpGrup(fltKpGrup)', kpGrup)\r\n\r\n //mode, enable, grups\r\n let mode = 'OR'\r\n let enable = 'n'\r\n let grups = []\r\n each(kpGrup, (v, k) => {\r\n // console.log(k, 'v', v)\r\n\r\n //_isActive, 此為使用者cgrups內設定, 可為y或n, 僅提取y, 再判斷此使用者是否有使用此grup\r\n let _isActive = get(v, 'isActive', '')\r\n if (_isActive !== 'y') {\r\n return true //跳出換下一個\r\n }\r\n // console.log(k, '_isActive', _isActive)\r\n\r\n //_mode\r\n let _mode = get(v, 'mode', '')\r\n // console.log(k, '_mode', _mode)\r\n\r\n //b, 使用者是否擁有指定權限群組\r\n let b = k === grup.name\r\n // console.log(k, 'b', b)\r\n\r\n //mode, isActive\r\n if (b) {\r\n enable = 'y'\r\n mode = _mode //使用使用者給予cgrups內指定權限群組之合併權限模式\r\n // console.log('使用使用者給予cgrups內指定權限群組之合併權限模式 grup', grup)\r\n }\r\n\r\n //push\r\n grups.push({\r\n name: k,\r\n ...v,\r\n enable: b ? 'y' : 'n', //給render使用\r\n })\r\n\r\n })\r\n // console.log(u.name, 'grups', grups)\r\n\r\n //grupsNames\r\n let grupsNames = map(grups, 'name')\r\n grupsNames = join(grupsNames, ' ')\r\n // console.log(u.name, 'grupsNames', grupsNames)\r\n\r\n return {\r\n name: u.name,\r\n grupsNames,\r\n mode,\r\n enable,\r\n // kpGrup,\r\n grups,\r\n }\r\n })\r\n // console.log(u.name, 'items', items)\r\n\r\n return items\r\n },\r\n\r\n revRows: function() {\r\n // console.log('revRows')\r\n\r\n let vo = this\r\n\r\n //grup\r\n let grup = cloneDeep(vo.grup)\r\n // console.log('grup', grup)\r\n\r\n //users\r\n let users = cloneDeep(vo.users)\r\n // console.log('users', users)\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n // console.log('rows', rows)\r\n\r\n //users\r\n users = map(users, (u, ku) => {\r\n\r\n //kpGrup\r\n let kpGrup = JSON5.parse(u.cgrups)\r\n // console.log(u.name, 'kpGrup', kpGrup)\r\n\r\n //fltKpGrup\r\n kpGrup = vo.fltKpGrup(kpGrup)\r\n // console.log(u.name, 'kpGrup(fltKpGrup)', kpGrup)\r\n\r\n //mode\r\n let mode = get(rows, `${ku}.mode`, '')\r\n if (mode !== 'OR' && mode !== 'AND') {\r\n console.log(`非預期: mode應該皆已指定不應觸發`, mode)\r\n mode = 'OR'\r\n }\r\n // console.log(u.name, 'mode', mode)\r\n\r\n //enable\r\n let enable = get(rows, `${ku}.enable`, '')\r\n if (enable !== 'y' && enable !== 'n') {\r\n console.log(`非預期: enable應該皆已指定不應觸發`, enable)\r\n enable = 'n'\r\n }\r\n // console.log(u.name, 'enable', enable)\r\n\r\n //kpGrup\r\n if (enable === 'y') {\r\n kpGrup[grup.name] = {\r\n mode,\r\n isActive: 'y',\r\n }\r\n }\r\n else {\r\n if (haskey(kpGrup, grup.name)) {\r\n delete kpGrup[grup.name]\r\n }\r\n }\r\n // console.log(u.name, 'kpGrup', kpGrup)\r\n\r\n //update cgrups\r\n let cgrups = JSON.stringify(kpGrup)\r\n u.cgrups = cgrups\r\n // console.log(u.name, 'cgrups', cgrups)\r\n\r\n return u\r\n })\r\n\r\n //items\r\n let items = vo.genItems(grup, users)\r\n // console.log('items', items)\r\n\r\n //update grupsNames, grups\r\n each(items, (r, kr) => {\r\n // name: u.name,\r\n // grupsNames,\r\n // mode,\r\n // enable,\r\n // grups,\r\n\r\n //set\r\n set(vo, `opt.rows[${kr}].grupsNames`, r.grupsNames)\r\n set(vo, `opt.rows[${kr}].grups`, r.grups)\r\n // console.log('vo.opt.rows[kr]', cloneDeep(vo.opt.rows[kr]))\r\n\r\n })\r\n\r\n //refresh\r\n vo.refresh()\r\n\r\n },\r\n\r\n showVeGrupBlngUsersToggleItemModeByName: function(name, mode) {\r\n // console.log('showVeGrupBlngUsersToggleItemModeByName', name, mode)\r\n\r\n let vo = this\r\n\r\n //check\r\n if (!isestr(name)) {\r\n vo.$alert(`${vo.$t('grupBlngEditNoGrupName')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //find\r\n let r = null\r\n let kr = null\r\n each(rows, (v, k) => {\r\n if (get(v, 'name', '') === name) {\r\n r = v\r\n kr = k\r\n return false //跳出\r\n }\r\n })\r\n\r\n //check\r\n if (!iseobj(r)) {\r\n vo.$alert(`${vo.$t('grupBlngEditNoGrupData')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //mode\r\n // let mode = th.value\r\n // console.log('mode', mode)\r\n\r\n //set\r\n set(vo, `opt.rows[${kr}].mode`, mode)\r\n // console.log('vo.opt.rows[kr]', cloneDeep(vo.opt.rows[kr]))\r\n\r\n //revRows, 已含refresh\r\n vo.revRows()\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n showVeGrupBlngUsersToggleItemEnableByName: function(name) {\r\n // console.log('showVeGrupBlngUsersToggleItemEnableByName', name)\r\n\r\n let vo = this\r\n\r\n //check\r\n if (!isestr(name)) {\r\n vo.$alert(`${vo.$t('grupBlngEditNoGrupName')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //find\r\n let r = null\r\n let kr = null\r\n each(rows, (v, k) => {\r\n if (get(v, 'name', '') === name) {\r\n r = v\r\n kr = k\r\n return false //跳出\r\n }\r\n })\r\n\r\n //check\r\n if (!iseobj(r)) {\r\n vo.$alert(`${vo.$t('grupBlngEditNoGrupData')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //enable\r\n let _enable = get(r, 'enable', 'n')\r\n let enable = _enable === 'y' ? 'n' : 'y'\r\n // console.log('enable', enable)\r\n\r\n //set\r\n set(vo, `opt.rows[${kr}].enable`, enable)\r\n // console.log('vo.opt.rows[kr]', cloneDeep(vo.opt.rows[kr]))\r\n\r\n //revRows, 已含refresh\r\n vo.revRows()\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n showVeGrupBlngUsersToggleItemsEnableAllYes: function() {\r\n // console.log('showVeGrupBlngUsersToggleItemsEnableAllYes')\r\n\r\n let vo = this\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n // console.log('rows', rows)\r\n\r\n //kpRow\r\n let kpRow = {}\r\n each(rows, (r, kr) => {\r\n kpRow[r.name] = kr\r\n })\r\n\r\n //rowsEff\r\n let rowsEff = vo.getDisplayData()\r\n // console.log('rowsEff', rowsEff)\r\n\r\n //toggle\r\n each(rowsEff, (r) => {\r\n\r\n //kr\r\n let kr = kpRow[r.name]\r\n\r\n //set\r\n set(vo, `opt.rows[${kr}].enable`, 'y')\r\n // console.log('vo.opt.rows[kr]', cloneDeep(vo.opt.rows[kr]))\r\n\r\n })\r\n\r\n //revRows, 已含refresh\r\n vo.revRows()\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n showVeGrupBlngUsersToggleItemsEnableAllNo: function() {\r\n // console.log('showVeGrupBlngUsersToggleItemsEnableAllNo')\r\n\r\n let vo = this\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n // console.log('rows', rows)\r\n\r\n //kpRow\r\n let kpRow = {}\r\n each(rows, (r, kr) => {\r\n kpRow[r.name] = kr\r\n })\r\n\r\n //rowsEff\r\n let rowsEff = vo.getDisplayData()\r\n // console.log('rowsEff', rowsEff)\r\n\r\n //toggle\r\n each(rowsEff, (r) => {\r\n\r\n //kr\r\n let kr = kpRow[r.name]\r\n\r\n //set\r\n set(vo, `opt.rows[${kr}].enable`, 'n')\r\n // console.log('vo.opt.rows[kr]', cloneDeep(vo.opt.rows[kr]))\r\n\r\n })\r\n\r\n //revRows, 已含refresh\r\n vo.revRows()\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n showVeGrupBlngUsersToggleItemsEnableAllInv: function() {\r\n // console.log('showVeGrupBlngUsersToggleItemsEnableAllInv')\r\n\r\n let vo = this\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n // console.log('rows', rows)\r\n\r\n //kpRow\r\n let kpRow = {}\r\n each(rows, (r, kr) => {\r\n kpRow[r.name] = kr\r\n })\r\n\r\n //rowsEff\r\n let rowsEff = vo.getDisplayData()\r\n // console.log('rowsEff', rowsEff)\r\n\r\n //toggle\r\n each(rowsEff, (r) => {\r\n\r\n //kr\r\n let kr = kpRow[r.name]\r\n\r\n //enable\r\n let _enable = get(r, 'enable', 'n')\r\n let enable = _enable === 'y' ? 'n' : 'y'\r\n\r\n //set\r\n set(vo, `opt.rows[${kr}].enable`, enable)\r\n // console.log('vo.opt.rows[kr]', cloneDeep(vo.opt.rows[kr]))\r\n\r\n })\r\n\r\n //revRows, 已含refresh\r\n vo.revRows()\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n saveUsers: async function(rows) {\r\n // console.log('method saveUsers', rows)\r\n\r\n let vo = this\r\n\r\n //errTemp\r\n let errTemp = null\r\n\r\n //check\r\n if (size(rows) === 0) {\r\n vo.$alert(`${vo.$t('userSaveUsersEmpty')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //updateUsers\r\n await vo.$fapi.updateUsers(rows)\r\n .catch((err) => {\r\n errTemp = err\r\n })\r\n\r\n //check\r\n if (errTemp !== null) {\r\n vo.$alert(`${vo.$t('userSaveUsersFail')}: ${errTemp}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //alert\r\n vo.$alert(vo.$t('userSaveUsersSuccess'))\r\n\r\n },\r\n\r\n clickBtns: function(msg) {\r\n // console.log('clickBtns', msg)\r\n\r\n let vo = this\r\n\r\n //evName\r\n if (msg.evName === 'toFullscreen') {\r\n vo.fullscreen = true\r\n }\r\n else if (msg.evName === 'toNormalscreen') {\r\n vo.fullscreen = false\r\n }\r\n\r\n },\r\n\r\n clickSave: function(msg) {\r\n //console.log('methods clickSave', msg)\r\n\r\n let vo = this\r\n\r\n async function core() {\r\n\r\n //show loading\r\n vo.$ui.updateLoading(true)\r\n\r\n //delay\r\n await delay(300)\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n // console.log('rows', rows)\r\n\r\n //users\r\n let users = cloneDeep(vo.users)\r\n // console.log('users', users)\r\n\r\n //usersNew\r\n let usersNew = map(rows, (r, kr) => {\r\n\r\n //u\r\n let u = get(users, kr, {})\r\n\r\n //cgrups\r\n let cgrups = get(u, 'cgrups', '')\r\n\r\n //kpGrup\r\n let kpGrup = JSON5.parse(cgrups)\r\n // console.log('kpGrup', kpGrup)\r\n\r\n //grups\r\n let grups = get(r, 'grups', [])\r\n\r\n //kpGrupNew\r\n let kpGrupNew = {}\r\n if (true) {\r\n each(grups, (g) => {\r\n if (g.isActive === 'y') {\r\n kpGrupNew[g.name] = {\r\n mode: g.mode,\r\n isActive: g.isActive,\r\n }\r\n }\r\n })\r\n }\r\n\r\n //check\r\n if (!isEqual(kpGrup, kpGrupNew)) {\r\n\r\n //cgrups\r\n u.cgrups = JSON.stringify(kpGrupNew)\r\n\r\n }\r\n\r\n return u\r\n })\r\n console.log('usersNew', usersNew)\r\n\r\n // //check\r\n // if (size(usersNew) === 0) {\r\n // return\r\n // }\r\n\r\n //saveUsers\r\n await vo.saveUsers(usersNew)\r\n\r\n }\r\n\r\n //core\r\n core()\r\n .then((rows) => {\r\n\r\n //resolve\r\n vo.pm.resolve(rows)\r\n\r\n //hide\r\n vo.bShow = false\r\n\r\n })\r\n .catch(() => { })\r\n .finally(() => {\r\n\r\n //save按鈕解除loading\r\n msg.pm.resolve()\r\n\r\n //hide loading\r\n vo.$ui.updateLoading(false)\r\n\r\n })\r\n\r\n },\r\n\r\n clickClose: function() {\r\n //console.log('methods clickClose')\r\n\r\n let vo = this\r\n\r\n //reject\r\n vo.pm.reject('close window')\r\n\r\n //hide\r\n vo.bShow = false\r\n\r\n },\r\n\r\n show: function (msg) {\r\n // console.log('methods show', msg)\r\n\r\n let vo = this\r\n\r\n //pm\r\n vo.pm = genPm()\r\n\r\n //default\r\n vo.isModified = false\r\n\r\n //isEditable, grup\r\n let isEditable = get(msg, 'isEditable', false)\r\n let grup = get(msg, 'grup', {})\r\n\r\n //grup\r\n grup = cloneDeep(grup)\r\n\r\n //users\r\n let users = cloneDeep(vo.users)\r\n\r\n //items\r\n let items = vo.genItems(grup, users)\r\n\r\n //save\r\n vo.isEditable = isEditable\r\n vo.grup = grup\r\n vo.items = items\r\n\r\n //genOpt\r\n vo.genOpt()\r\n\r\n //bShow\r\n vo.bShow = true\r\n\r\n return vo.pm\r\n },\r\n\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n</style>\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VeGrupBlngUsers.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VeGrupBlngUsers.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./VeGrupBlngUsers.vue?vue&type=template&id=d175979c&scoped=true\"\nimport script from \"./VeGrupBlngUsers.vue?vue&type=script&lang=js\"\nexport * from \"./VeGrupBlngUsers.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d175979c\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('WDialog',{attrs:{\"show\":_vm.bShow,\"title\":_vm.isEditable?_vm.$t('pemiBlngEditGrups'):_vm.$t('pemiBlngEditGrupsForDisplay'),\"icon\":_vm.mdiFormatListCheckbox,\"minWidth\":800,\"maxWidth\":800,\"fullscreen\":_vm.fullscreen,\"contentBackgroundColor\":'#fff',\"headerBtns\":_vm.useHeaderBtns,\"hasSaveBtn\":_vm.isEditable && _vm.isModified,\"save-btn-tooltip\":_vm.$t('save'),\"close-btn-tooltip\":_vm.$t('close')},on:{\"update:show\":function($event){_vm.bShow=$event},\"click-btns\":_vm.clickBtns,\"click-save\":_vm.clickSave,\"click-close\":_vm.clickClose,\"resize\":_vm.resizeDialog},scopedSlots:_vm._u([{key:\"content\",fn:function(){return [_c('div',[_c('div',{directives:[{name:\"domresize\",rawName:\"v-domresize\"}],staticStyle:{\"_border-bottom\":\"1px solid #ddd\",\"background\":\"#fff\"},on:{\"domresize\":_vm.resizeHead}},[_c('div',{staticStyle:{\"padding\":\"18px 12px\",\"background\":\"#fff\",\"border-bottom\":\"1px solid #ddd\"}},[_c('div',{staticStyle:{\"font-size\":\"0.75rem\",\"color\":\"#999\",\"padding-bottom\":\"2px\"}},[_vm._v(\" \"+_vm._s(_vm.$t('pemiBlngPemiNow'))+\" \")]),_c('div',{staticStyle:{\"font-size\":\"1.3rem\"}},[_vm._v(\" \"+_vm._s(_vm.pemiName)+\" \")])]),(_vm.isEditable)?_c('div',{staticStyle:{\"padding\":\"5px\",\"background\":\"#fff\",\"display\":\"flex\",\"align-items\":\"center\"}},[[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('checkAllYes'),\"icon\":_vm.mdiCheckboxMultipleMarked,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"_textColor\":\"'#eee'\",\"_textColorHover\":\"'#fff'\",\"iconColor\":'#444',\"iconColorHover\":'#222',\"shadow\":false},on:{\"click\":_vm.showVePemiBlngGrupsToggleItemsEnableAllYes}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})],[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('checkAllNo'),\"icon\":_vm.mdiCheckboxMultipleBlankOutline,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"_textColor\":\"'#eee'\",\"_textColorHover\":\"'#fff'\",\"iconColor\":'#444',\"iconColorHover\":'#222',\"shadow\":false},on:{\"click\":_vm.showVePemiBlngGrupsToggleItemsEnableAllNo}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})],[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('checkAllInv'),\"icon\":_vm.mdiCodeTagsCheck,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"_textColor\":\"'#eee'\",\"_textColorHover\":\"'#fff'\",\"iconColor\":'#444',\"iconColorHover\":'#222',\"shadow\":false},on:{\"click\":_vm.showVePemiBlngGrupsToggleItemsEnableAllInv}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})],(_vm.hasItemsCheck)?[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('pemiBlngDeleteCheckPemis'),\"icon\":_vm.mdiTrashCanOutline,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"_textColor\":\"'#eee'\",\"_textColorHover\":\"'#fff'\",\"iconColor\":'#444',\"iconColorHover\":'#222',\"shadow\":false},on:{\"click\":_vm.deleteItemsCheck}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})]:_vm._e()],2):_vm._e()]),(_vm.items)?[_c('WAggridVueDyn',{ref:\"rftable\",style:(`width:100%;`),attrs:{\"height\":_vm.contentHeight,\"opt\":_vm.opt}})]:_c('div',{staticStyle:{\"padding\":\"10px 15px\",\"font-size\":\"0.8rem\"}},[_vm._v(\" \"+_vm._s(_vm.$t('waitingData'))+\" \")])],2)]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <WDialog\r\n :show.sync=\"bShow\"\r\n :title=\"isEditable?$t('pemiBlngEditGrups'):$t('pemiBlngEditGrupsForDisplay')\"\r\n :icon=\"mdiFormatListCheckbox\"\r\n :minWidth=\"800\"\r\n :maxWidth=\"800\"\r\n :fullscreen=\"fullscreen\"\r\n :contentBackgroundColor=\"'#fff'\"\r\n :headerBtns=\"useHeaderBtns\"\r\n :hasSaveBtn=\"isEditable && isModified\"\r\n :save-btn-tooltip=\"$t('save')\"\r\n :close-btn-tooltip=\"$t('close')\"\r\n @click-btns=\"clickBtns\"\r\n @click-save=\"clickSave\"\r\n @click-close=\"clickClose\"\r\n @resize=\"resizeDialog\"\r\n >\r\n <template v-slot:content>\r\n <div>\r\n\r\n <div\r\n style=\"_border-bottom:1px solid #ddd; background:#fff;\"\r\n v-domresize\r\n @domresize=\"resizeHead\"\r\n >\r\n\r\n <!-- 當前權限群組名稱 -->\r\n <div style=\"padding:18px 12px; background:#fff; border-bottom:1px solid #ddd;\">\r\n\r\n <div style=\"font-size:0.75rem; color:#999; padding-bottom:2px;\">\r\n {{$t('pemiBlngPemiNow')}}\r\n </div>\r\n\r\n <div style=\"font-size:1.3rem;\">\r\n {{pemiName}}\r\n </div>\r\n\r\n </div>\r\n\r\n <!-- 功能區 -->\r\n <div\r\n style=\"padding:5px; background:#fff; display:flex; align-items:center;\"\r\n v-if=\"isEditable\"\r\n >\r\n\r\n <template>\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('checkAllYes')\"\r\n :icon=\"mdiCheckboxMultipleMarked\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n _textColor=\"'#eee'\"\r\n _textColorHover=\"'#fff'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :shadow=\"false\"\r\n @click=\"showVePemiBlngGrupsToggleItemsEnableAllYes\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n <template>\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('checkAllNo')\"\r\n :icon=\"mdiCheckboxMultipleBlankOutline\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n _textColor=\"'#eee'\"\r\n _textColorHover=\"'#fff'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :shadow=\"false\"\r\n @click=\"showVePemiBlngGrupsToggleItemsEnableAllNo\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n <template>\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('checkAllInv')\"\r\n :icon=\"mdiCodeTagsCheck\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n _textColor=\"'#eee'\"\r\n _textColorHover=\"'#fff'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :shadow=\"false\"\r\n @click=\"showVePemiBlngGrupsToggleItemsEnableAllInv\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n <template v-if=\"hasItemsCheck\">\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('pemiBlngDeleteCheckPemis')\"\r\n :icon=\"mdiTrashCanOutline\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n _textColor=\"'#eee'\"\r\n _textColorHover=\"'#fff'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :shadow=\"false\"\r\n @click=\"deleteItemsCheck\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n <template v-if=\"items\">\r\n <WAggridVueDyn\r\n ref=\"rftable\"\r\n :style=\"`width:100%;`\"\r\n :height=\"contentHeight\"\r\n :opt=\"opt\"\r\n >\r\n </WAggridVueDyn>\r\n </template>\r\n\r\n <div\r\n style=\"padding:10px 15px; font-size:0.8rem;\"\r\n v-else\r\n >\r\n {{$t('waitingData')}}\r\n </div>\r\n\r\n </div>\r\n </template>\r\n </WDialog>\r\n</template>\r\n\r\n<script>\r\nimport { mdiDeleteForever, mdiFullscreen, mdiFullscreenExit, mdiFormatListCheckbox, mdiFileTree, mdiTrashCanOutline, mdiCheckboxMultipleBlankOutline, mdiCheckboxMultipleMarked, mdiCodeTagsCheck } from '@mdi/js/mdi.js'\r\nimport Vue from 'vue'\r\nimport JSON5 from 'json5'\r\nimport get from 'lodash-es/get.js'\r\nimport set from 'lodash-es/set.js'\r\nimport each from 'lodash-es/each.js'\r\nimport map from 'lodash-es/map.js'\r\nimport size from 'lodash-es/size.js'\r\nimport filter from 'lodash-es/filter.js'\r\nimport join from 'lodash-es/join.js'\r\nimport sortBy from 'lodash-es/sortBy.js'\r\nimport isEqual from 'lodash-es/isEqual.js'\r\nimport cloneDeep from 'lodash-es/cloneDeep.js'\r\nimport genPm from 'wsemi/src/genPm.mjs'\r\nimport haskey from 'wsemi/src/haskey.mjs'\r\nimport delay from 'wsemi/src/delay.mjs'\r\nimport iseobj from 'wsemi/src/iseobj.mjs'\r\nimport isestr from 'wsemi/src/isestr.mjs'\r\nimport WDialog from 'w-component-vue/src/components/WDialog.vue'\r\nimport WButtonCircle from 'w-component-vue/src/components/WButtonCircle.vue'\r\nimport WAggridVueDyn from 'w-component-vue/src/components/WAggridVueDyn.vue'\r\n\r\n\r\nexport default {\r\n components: {\r\n WDialog,\r\n WButtonCircle,\r\n WAggridVueDyn,\r\n },\r\n props: {\r\n },\r\n data: function() {\r\n return {\r\n mdiDeleteForever,\r\n mdiFullscreen,\r\n mdiFullscreenExit,\r\n mdiFormatListCheckbox,\r\n mdiFileTree,\r\n mdiTrashCanOutline,\r\n mdiCheckboxMultipleBlankOutline,\r\n mdiCheckboxMultipleMarked,\r\n mdiCodeTagsCheck,\r\n\r\n bShow: false,\r\n pm: null,\r\n\r\n fullscreen: false,\r\n\r\n panelWidth: 100,\r\n panelHeight: 100,\r\n headHeight: 100,\r\n\r\n isEditable: false,\r\n isModified: false,\r\n\r\n pemi: null,\r\n\r\n items: [],\r\n itemsCheck: [],\r\n opt: null,\r\n\r\n }\r\n },\r\n mounted: function() {\r\n //console.log('mounted')\r\n\r\n let vo = this\r\n\r\n //set\r\n Vue.prototype.$dg.showVePemiBlngGrups = vo.show\r\n Vue.prototype.$dg.showVePemiBlngGrupsToggleItemModeByName = vo.showVePemiBlngGrupsToggleItemModeByName\r\n Vue.prototype.$dg.showVePemiBlngGrupsToggleItemEnableByName = vo.showVePemiBlngGrupsToggleItemEnableByName\r\n\r\n },\r\n computed: {\r\n\r\n targets: function() {\r\n let rs = get(this, `$store.state.targets`)\r\n rs = sortBy(rs, 'order')\r\n return rs\r\n },\r\n\r\n pemis: function() {\r\n let rs = get(this, `$store.state.pemis`)\r\n rs = sortBy(rs, 'order')\r\n return rs\r\n },\r\n\r\n grups: function() {\r\n let rs = get(this, `$store.state.grups`)\r\n rs = sortBy(rs, 'order')\r\n return rs\r\n },\r\n\r\n users: function() {\r\n let rs = get(this, `$store.state.users`)\r\n rs = sortBy(rs, 'order')\r\n return rs\r\n },\r\n\r\n kpHeaderBtns: function() {\r\n let vo = this\r\n let kp = {\r\n // delete: {\r\n // icon: mdiDeleteForever,\r\n // tooltip: `${vo.$t('delete')}${vo.tableNameCht}`,\r\n // evName: 'delete'\r\n // },\r\n toFullscreen: {\r\n icon: mdiFullscreen,\r\n tooltip: vo.$t('screenFull'),\r\n evName: 'toFullscreen'\r\n },\r\n toNormalscreen: {\r\n icon: mdiFullscreenExit,\r\n tooltip: vo.$t('screenNormal'),\r\n evName: 'toNormalscreen'\r\n },\r\n }\r\n return kp\r\n },\r\n\r\n useHeaderBtns: function() {\r\n let vo = this\r\n let bts = []\r\n if (true) {\r\n let k = vo.fullscreen ? 'toNormalscreen' : 'toFullscreen'\r\n bts = [\r\n ...bts,\r\n vo.kpHeaderBtns[k]\r\n ]\r\n }\r\n // if (vo.useDelete) {\r\n // let k = 'delete'\r\n // bts = [\r\n // ...bts,\r\n // vo.kpHeaderBtns[k]\r\n // ]\r\n // }\r\n return bts\r\n },\r\n\r\n contentHeight: function() {\r\n let vo = this\r\n\r\n //h\r\n let h = vo.panelHeight - vo.headHeight\r\n h = Math.max(h, 0)\r\n\r\n return h\r\n },\r\n\r\n hasItemsCheck: function() {\r\n let vo = this\r\n\r\n //h\r\n let b = vo.itemsCheck.length > 0\r\n\r\n return b\r\n },\r\n\r\n pemiName: function() {\r\n let vo = this\r\n\r\n let c = get(vo, 'pemi.name', '')\r\n\r\n return c\r\n },\r\n\r\n },\r\n methods: {\r\n\r\n resizeDialog: function(msg) {\r\n // console.log('methods resizeDialog', msg)\r\n\r\n let vo = this\r\n\r\n //panelWidth, panelHeight\r\n vo.panelWidth = msg.panelWidth\r\n vo.panelHeight = msg.contentHeightMax\r\n\r\n },\r\n\r\n resizeHead: function(msg) {\r\n // console.log('methods resizeHead', msg)\r\n\r\n let vo = this\r\n\r\n //headHeight\r\n vo.headHeight = msg.snew.offsetHeight\r\n\r\n },\r\n\r\n genOpt: function() {\r\n // console.log('methods genOpt')\r\n\r\n let vo = this\r\n\r\n //default\r\n vo.itemsCheck = []\r\n\r\n //opt\r\n let opt = null\r\n if (size(vo.items) > 0) {\r\n\r\n //ks\r\n let ks = [\r\n 'name',\r\n 'pemisNames',\r\n 'mode',\r\n 'enable',\r\n ]\r\n // console.log('ks', ks)\r\n\r\n //kpHead\r\n let kpHead = {\r\n 'name': vo.$t('grupName'),\r\n 'pemisNames': vo.$t('belongPemisNames'),\r\n 'mode': vo.$t('operPemiEnable'),\r\n 'enable': vo.$t('operMode'),\r\n }\r\n\r\n //opt\r\n opt = {\r\n language: vo.$t('aggridLanguage'),\r\n rows: vo.items,\r\n keys: ks,\r\n kpHead,\r\n autoFitColumn: true,\r\n defCellEditable: false, //vo.isEditable,\r\n defHeadFilter: true,\r\n defCellAlignH: 'left',\r\n kpCellEditable: {\r\n 'name': vo.isEditable,\r\n 'mode': false,\r\n 'enable': false,\r\n },\r\n kpHeadWidth: {\r\n 'mode': 100,\r\n 'enable': 100,\r\n },\r\n // kpRowDrag: {\r\n // 'name': true,\r\n // },\r\n // kpHeadFilter: {\r\n // 'enable': false,\r\n // },\r\n kpHeadFilterType: {\r\n 'name': 'text',\r\n 'pemisNames': 'text',\r\n 'mode': 'text',\r\n 'enable': 'text',\r\n },\r\n // kpHeadCheckBox: {\r\n // 'name': true,\r\n // },\r\n kpHeadFocusHighlight: { //雖然效果不完全, 但因按鈕與cell有padding可被點擊, 故還是需要開啟\r\n 'pemisNames': false,\r\n },\r\n kpCellRender: {\r\n 'pemisNames': (v, k, r) => {\r\n // console.log('kpCellRender pemisNames', v, k, r)\r\n\r\n let csp = `border-top-left-radius:4px; border-bottom-left-radius:4px;`\r\n let csnp = `border-left:1px solid #aaaaaa; border-right:1px solid #aaaaaa; border-top:1px solid #aaaaaa; border-bottom:1px solid #aaaaaa; background:#ffffff; color:#555;`\r\n let csep = `border-left:1px solid #ac2451; border-right:1px solid #9e2149; border-top:1px solid #ac2451; border-bottom:1px solid #ac2451; background:#be295a; color:#fff;`\r\n\r\n let csa = `border-top-right-radius:4px; border-bottom-right-radius:4px;`\r\n let csna = `_border-left:1px solid #aaaaaa; border-right:1px solid #aaaaaa; border-top:1px solid #aaaaaa; border-bottom:1px solid #aaaaaa; background:#eeeeee; color:#555;`\r\n let csea = `_border-left:1px solid #ac2451; border-right:1px solid #ac2451; border-top:1px solid #ac2451; border-bottom:1px solid #ac2451; background:#d22f64; color:#fff;`\r\n\r\n let vs = r.pemis\r\n\r\n let t = ''\r\n each(vs, (v) => {\r\n t += `\r\n <span style=\"display:inline-block; line-height:20px; height:20px;\">\r\n <div style=\"display:flex;\">\r\n <div style=\"padding:0px 5px; ${csp} ${v.enable === 'y' ? csep : csnp}\">\r\n ${v.mode}\r\n </div>\r\n <div style=\"padding:0px 5px; ${csa} ${v.enable === 'y' ? csea : csna}\">\r\n ${v.name}\r\n </div>\r\n </div>\r\n </span>\r\n `\r\n })\r\n\r\n return t\r\n },\r\n 'mode': (v, k, r) => {\r\n // console.log('kpCellRender mode', v)\r\n\r\n //name\r\n let name = get(r, 'name', '')\r\n // console.log('name', name, k, r)\r\n\r\n //mode\r\n let mode = get(r, 'mode', '')\r\n // console.log('mode', mode, k, r)\r\n\r\n let t = `\r\n <select onchange=\"$vo.$dg.showVePemiBlngGrupsToggleItemModeByName('${name}',this.value)\" ${vo.isEditable ? '' : 'disabled'}>\r\n <option value=\"OR\" ${mode === 'OR' ? 'selected' : ''}>OR</option>\r\n <option value=\"AND\" ${mode === 'AND' ? 'selected' : ''}>AND</option>\r\n </select>\r\n `\r\n\r\n return t\r\n },\r\n 'enable': (v, k, r) => {\r\n // console.log('kpCellRender enable', v, k, r)\r\n\r\n //name\r\n let name = get(r, 'name', '')\r\n // console.log('name', name, k, r)\r\n\r\n let t = `\r\n <input type=\"checkbox\" ${v === 'y' ? 'checked' : ''} onclick=\"$vo.$dg.showVePemiBlngGrupsToggleItemEnableByName('${name}')\" ${vo.isEditable ? '' : 'disabled'} />\r\n `\r\n\r\n return t\r\n },\r\n },\r\n rowsChange: (rs) => {\r\n // console.log('rowsChange', rs)\r\n // console.log('rowsChange cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n rowChecked: (rs) => {\r\n // console.log('rowChecked', rs)\r\n // console.log('rowChecked cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\r\n\r\n //save itemsCheck\r\n vo.itemsCheck = cloneDeep(rs)\r\n\r\n },\r\n }\r\n // console.log('opt', opt)\r\n\r\n }\r\n\r\n //save\r\n vo.opt = opt\r\n\r\n },\r\n\r\n deleteItemsCheck: function() {\r\n // console.log('method deleteItemsCheck')\r\n\r\n let vo = this\r\n\r\n //check\r\n if (size(vo.itemsCheck) === 0) {\r\n return\r\n }\r\n\r\n //cloneDeep\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //cloneDeep\r\n rows = cloneDeep(rows)\r\n\r\n //filter\r\n each(vo.itemsCheck, (v) => {\r\n // console.log('v', v)\r\n let name = get(v, 'data.name', '')\r\n if (!isestr(name)) {\r\n console.log(`invalid name`)\r\n return true //跳出換下一個\r\n }\r\n rows = filter(rows, (vv) => {\r\n return vv.name !== name\r\n })\r\n })\r\n\r\n //clear\r\n vo.itemsCheck = []\r\n\r\n //save\r\n vo.opt.rows = rows\r\n // console.log('deleteItemsCheck cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n refresh: function() {\r\n let vo = this\r\n\r\n //cmp\r\n let cmp = get(vo, '$refs.rftable.$refs.$self')\r\n // console.log('cmp', cmp)\r\n\r\n //refresh, 因set不會觸發kpCellRender, 故須另外調用組件函數refresh, 進而觸發kpCellRender, 使能更新數據\r\n cmp.refresh()\r\n\r\n },\r\n\r\n getDisplayData: function() {\r\n let vo = this\r\n\r\n //cmp\r\n let cmp = get(vo, '$refs.rftable.$refs.$self')\r\n // console.log('cmp', cmp)\r\n\r\n //getDisplayData\r\n let rows = cmp.getDisplayData()\r\n\r\n return rows\r\n },\r\n\r\n fltKpPemi: function(kp) {\r\n // console.log('fltKpPemi', kp)\r\n\r\n let vo = this\r\n\r\n //_kp\r\n let _kp = {}\r\n each(vo.pemis, (v, k) => {\r\n _kp[v.name] = true\r\n })\r\n // console.log('_kp', _kp)\r\n\r\n //kpt\r\n let kpt = {}\r\n each(kp, (v, k) => {\r\n if (haskey(_kp, k)) {\r\n kpt[k] = v\r\n }\r\n })\r\n\r\n return kpt\r\n },\r\n\r\n genItems: function(pemi, grups) {\r\n // console.log('genItems', pemi, grups)\r\n\r\n let vo = this\r\n\r\n //items\r\n let items = map(grups, (g) => {\r\n\r\n //kpPemi\r\n let kpPemi = JSON5.parse(g.cpemis)\r\n // console.log(g.name, 'kpPemi', kpPemi)\r\n\r\n //fltKpPemi\r\n kpPemi = vo.fltKpPemi(kpPemi)\r\n // console.log(g.name, 'kpPemi(fltKpPemi)', kpPemi)\r\n\r\n //mode, enable, pemis\r\n let mode = 'OR'\r\n let enable = 'n'\r\n let pemis = []\r\n each(kpPemi, (v, k) => {\r\n // console.log(k, 'v', v)\r\n\r\n //_isActive, 此為使用者cpemis內設定, 可為y或n, 僅提取y, 再判斷此使用者是否有使用此pemi\r\n let _isActive = get(v, 'isActive', '')\r\n if (_isActive !== 'y') {\r\n return true //跳出換下一個\r\n }\r\n // console.log(k, '_isActive', _isActive)\r\n\r\n //_mode\r\n let _mode = get(v, 'mode', '')\r\n // console.log(k, '_mode', _mode)\r\n\r\n //b, 使用者是否擁有指定權限群組\r\n let b = k === pemi.name\r\n // console.log(k, 'b', b)\r\n\r\n //mode, isActive\r\n if (b) {\r\n enable = 'y'\r\n mode = _mode //使用使用者給予cpemis內指定權限群組之合併權限模式\r\n // console.log('使用使用者給予cpemis內指定權限群組之合併權限模式 pemi', pemi)\r\n }\r\n\r\n //push\r\n pemis.push({\r\n name: k,\r\n ...v,\r\n enable: b ? 'y' : 'n', //給render使用\r\n })\r\n\r\n })\r\n // console.log(g.name, 'pemis', pemis)\r\n\r\n //pemisNames\r\n let pemisNames = map(pemis, 'name')\r\n pemisNames = join(pemisNames, ' ')\r\n // console.log(g.name, 'pemisNames', pemisNames)\r\n\r\n return {\r\n name: g.name,\r\n pemisNames,\r\n mode,\r\n enable,\r\n // kpPemi,\r\n pemis,\r\n }\r\n })\r\n // console.log(g.name, 'items', items)\r\n\r\n return items\r\n },\r\n\r\n revRows: function() {\r\n // console.log('revRows')\r\n\r\n let vo = this\r\n\r\n //pemi\r\n let pemi = cloneDeep(vo.pemi)\r\n // console.log('pemi', pemi)\r\n\r\n //grups\r\n let grups = cloneDeep(vo.grups)\r\n // console.log('grups', grups)\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n // console.log('rows', rows)\r\n\r\n //grups\r\n grups = map(grups, (g, kg) => {\r\n\r\n //kpPemi\r\n let kpPemi = JSON5.parse(g.cpemis)\r\n // console.log(g.name, 'kpPemi', kpPemi)\r\n\r\n //fltKpPemi\r\n kpPemi = vo.fltKpPemi(kpPemi)\r\n // console.log(g.name, 'kpPemi(fltKpPemi)', kpPemi)\r\n\r\n //mode\r\n let mode = get(rows, `${kg}.mode`, '')\r\n if (mode !== 'OR' && mode !== 'AND') {\r\n console.log(`非預期: mode應該皆已指定不應觸發`, mode)\r\n mode = 'OR'\r\n }\r\n // console.log(g.name, 'mode', mode)\r\n\r\n //enable\r\n let enable = get(rows, `${kg}.enable`, '')\r\n if (enable !== 'y' && enable !== 'n') {\r\n console.log(`非預期: enable應該皆已指定不應觸發`, enable)\r\n enable = 'n'\r\n }\r\n // console.log(g.name, 'enable', enable)\r\n\r\n //kpPemi\r\n if (enable === 'y') {\r\n kpPemi[pemi.name] = {\r\n mode,\r\n isActive: 'y',\r\n }\r\n }\r\n else {\r\n if (haskey(kpPemi, pemi.name)) {\r\n delete kpPemi[pemi.name]\r\n }\r\n }\r\n // console.log(g.name, 'kpPemi', kpPemi)\r\n\r\n //update cpemis\r\n let cpemis = JSON.stringify(kpPemi)\r\n g.cpemis = cpemis\r\n // console.log(g.name, 'cpemis', cpemis)\r\n\r\n return g\r\n })\r\n\r\n //items\r\n let items = vo.genItems(pemi, grups)\r\n // console.log('items', items)\r\n\r\n //update pemisNames, pemis\r\n each(items, (r, kr) => {\r\n // name: g.name,\r\n // pemisNames,\r\n // mode,\r\n // enable,\r\n // pemis,\r\n\r\n //set\r\n set(vo, `opt.rows[${kr}].pemisNames`, r.pemisNames)\r\n set(vo, `opt.rows[${kr}].pemis`, r.pemis)\r\n // console.log('vo.opt.rows[kr]', cloneDeep(vo.opt.rows[kr]))\r\n\r\n })\r\n\r\n //refresh\r\n vo.refresh()\r\n\r\n },\r\n\r\n showVePemiBlngGrupsToggleItemModeByName: function(name, mode) {\r\n // console.log('showVePemiBlngGrupsToggleItemModeByName', name, mode)\r\n\r\n let vo = this\r\n\r\n //check\r\n if (!isestr(name)) {\r\n vo.$alert(`${vo.$t('pemiBlngEditNoName')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //find\r\n let r = null\r\n let kr = null\r\n each(rows, (v, k) => {\r\n if (get(v, 'name', '') === name) {\r\n r = v\r\n kr = k\r\n return false //跳出\r\n }\r\n })\r\n\r\n //check\r\n if (!iseobj(r)) {\r\n vo.$alert(`${vo.$t('pemiBlngEditNoPemi')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //mode\r\n // let mode = th.value\r\n // console.log('mode', mode)\r\n\r\n //set\r\n set(vo, `opt.rows[${kr}].mode`, mode)\r\n // console.log('vo.opt.rows[kr]', cloneDeep(vo.opt.rows[kr]))\r\n\r\n //revRows, 已含refresh\r\n vo.revRows()\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n showVePemiBlngGrupsToggleItemEnableByName: function(name) {\r\n // console.log('showVePemiBlngGrupsToggleItemEnableByName', name)\r\n\r\n let vo = this\r\n\r\n //check\r\n if (!isestr(name)) {\r\n vo.$alert(`${vo.$t('pemiBlngEditNoName')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //find\r\n let r = null\r\n let kr = null\r\n each(rows, (v, k) => {\r\n if (get(v, 'name', '') === name) {\r\n r = v\r\n kr = k\r\n return false //跳出\r\n }\r\n })\r\n\r\n //check\r\n if (!iseobj(r)) {\r\n vo.$alert(`${vo.$t('pemiBlngEditNoPemi')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //enable\r\n let _enable = get(r, 'enable', 'n')\r\n let enable = _enable === 'y' ? 'n' : 'y'\r\n // console.log('enable', enable)\r\n\r\n //set\r\n set(vo, `opt.rows[${kr}].enable`, enable)\r\n // console.log('vo.opt.rows[kr]', cloneDeep(vo.opt.rows[kr]))\r\n\r\n //revRows, 已含refresh\r\n vo.revRows()\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n showVePemiBlngGrupsToggleItemsEnableAllYes: function() {\r\n // console.log('showVePemiBlngGrupsToggleItemsEnableAllYes')\r\n\r\n let vo = this\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n // console.log('rows', rows)\r\n\r\n //kpRow\r\n let kpRow = {}\r\n each(rows, (r, kr) => {\r\n kpRow[r.name] = kr\r\n })\r\n\r\n //rowsEff\r\n let rowsEff = vo.getDisplayData()\r\n // console.log('rowsEff', rowsEff)\r\n\r\n //toggle\r\n each(rowsEff, (r) => {\r\n\r\n //kr\r\n let kr = kpRow[r.name]\r\n\r\n //set\r\n set(vo, `opt.rows[${kr}].enable`, 'y')\r\n // console.log('vo.opt.rows[kr]', cloneDeep(vo.opt.rows[kr]))\r\n\r\n })\r\n\r\n //revRows, 已含refresh\r\n vo.revRows()\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n showVePemiBlngGrupsToggleItemsEnableAllNo: function() {\r\n // console.log('showVePemiBlngGrupsToggleItemsEnableAllNo')\r\n\r\n let vo = this\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n // console.log('rows', rows)\r\n\r\n //kpRow\r\n let kpRow = {}\r\n each(rows, (r, kr) => {\r\n kpRow[r.name] = kr\r\n })\r\n\r\n //rowsEff\r\n let rowsEff = vo.getDisplayData()\r\n // console.log('rowsEff', rowsEff)\r\n\r\n //toggle\r\n each(rowsEff, (r) => {\r\n\r\n //kr\r\n let kr = kpRow[r.name]\r\n\r\n //set\r\n set(vo, `opt.rows[${kr}].enable`, 'n')\r\n // console.log('vo.opt.rows[kr]', cloneDeep(vo.opt.rows[kr]))\r\n\r\n })\r\n\r\n //revRows, 已含refresh\r\n vo.revRows()\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n showVePemiBlngGrupsToggleItemsEnableAllInv: function() {\r\n // console.log('showVePemiBlngGrupsToggleItemsEnableAllInv')\r\n\r\n let vo = this\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n // console.log('rows', rows)\r\n\r\n //kpRow\r\n let kpRow = {}\r\n each(rows, (r, kr) => {\r\n kpRow[r.name] = kr\r\n })\r\n\r\n //rowsEff\r\n let rowsEff = vo.getDisplayData()\r\n // console.log('rowsEff', rowsEff)\r\n\r\n //toggle\r\n each(rowsEff, (r) => {\r\n\r\n //kr\r\n let kr = kpRow[r.name]\r\n\r\n //enable\r\n let _enable = get(r, 'enable', 'n')\r\n let enable = _enable === 'y' ? 'n' : 'y'\r\n\r\n //set\r\n set(vo, `opt.rows[${kr}].enable`, enable)\r\n // console.log('vo.opt.rows[kr]', cloneDeep(vo.opt.rows[kr]))\r\n\r\n })\r\n\r\n //revRows, 已含refresh\r\n vo.revRows()\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n saveGrups: async function(rows) {\r\n // console.log('method saveGrups', rows)\r\n\r\n let vo = this\r\n\r\n //errTemp\r\n let errTemp = null\r\n\r\n //check\r\n if (size(rows) === 0) {\r\n vo.$alert(`${vo.$t('grupSaveGrupsEmpty')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //updateGrups\r\n await vo.$fapi.updateGrups(rows)\r\n .catch((err) => {\r\n errTemp = err\r\n })\r\n\r\n //check\r\n if (errTemp !== null) {\r\n vo.$alert(`${vo.$t('grupSaveGrupsFail')}: ${errTemp}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //alert\r\n vo.$alert(vo.$t('grupSaveGrupsSuccess'))\r\n\r\n },\r\n\r\n clickBtns: function(msg) {\r\n // console.log('clickBtns', msg)\r\n\r\n let vo = this\r\n\r\n //evName\r\n if (msg.evName === 'toFullscreen') {\r\n vo.fullscreen = true\r\n }\r\n else if (msg.evName === 'toNormalscreen') {\r\n vo.fullscreen = false\r\n }\r\n\r\n },\r\n\r\n clickSave: function(msg) {\r\n //console.log('methods clickSave', msg)\r\n\r\n let vo = this\r\n\r\n async function core() {\r\n\r\n //show loading\r\n vo.$ui.updateLoading(true)\r\n\r\n //delay\r\n await delay(300)\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n // console.log('rows', rows)\r\n\r\n //grups\r\n let grups = cloneDeep(vo.grups)\r\n // console.log('grups', grups)\r\n\r\n //grupsNew\r\n let grupsNew = map(rows, (r, kr) => {\r\n\r\n //g\r\n let g = get(grups, kr, {})\r\n\r\n //cpemis\r\n let cpemis = get(g, 'cpemis', '')\r\n\r\n //kpPemi\r\n let kpPemi = JSON5.parse(cpemis)\r\n // console.log('kpGrup', kpGrup)\r\n\r\n //pemis\r\n let pemis = get(r, 'pemis', [])\r\n\r\n //kpPemiNew\r\n let kpPemiNew = {}\r\n if (true) {\r\n each(pemis, (p) => {\r\n if (p.isActive === 'y') {\r\n kpPemiNew[p.name] = {\r\n mode: p.mode,\r\n isActive: p.isActive,\r\n }\r\n }\r\n })\r\n }\r\n\r\n //check\r\n if (!isEqual(kpPemi, kpPemiNew)) {\r\n\r\n //cpemis\r\n g.cpemis = JSON.stringify(kpPemiNew)\r\n\r\n }\r\n\r\n return g\r\n })\r\n console.log('grupsNew', grupsNew)\r\n\r\n // //check\r\n // if (size(grupsNew) === 0) {\r\n // return\r\n // }\r\n\r\n //saveGrups\r\n await vo.saveGrups(grupsNew)\r\n\r\n }\r\n\r\n //core\r\n core()\r\n .then((rows) => {\r\n\r\n //resolve\r\n vo.pm.resolve(rows)\r\n\r\n //hide\r\n vo.bShow = false\r\n\r\n })\r\n .catch(() => { })\r\n .finally(() => {\r\n\r\n //save按鈕解除loading\r\n msg.pm.resolve()\r\n\r\n //hide loading\r\n vo.$ui.updateLoading(false)\r\n\r\n })\r\n\r\n },\r\n\r\n clickClose: function() {\r\n //console.log('methods clickClose')\r\n\r\n let vo = this\r\n\r\n //reject\r\n vo.pm.reject('close window')\r\n\r\n //hide\r\n vo.bShow = false\r\n\r\n },\r\n\r\n show: function (msg) {\r\n // console.log('methods show', msg)\r\n\r\n let vo = this\r\n\r\n //pm\r\n vo.pm = genPm()\r\n\r\n //default\r\n vo.isModified = false\r\n\r\n //isEditable, pemi\r\n let isEditable = get(msg, 'isEditable', false)\r\n let pemi = get(msg, 'pemi', {})\r\n\r\n //grup\r\n pemi = cloneDeep(pemi)\r\n\r\n //grups\r\n let grups = cloneDeep(vo.grups)\r\n\r\n //items\r\n let items = vo.genItems(pemi, grups)\r\n\r\n //save\r\n vo.isEditable = isEditable\r\n vo.pemi = pemi\r\n vo.items = items\r\n\r\n //genOpt\r\n vo.genOpt()\r\n\r\n //bShow\r\n vo.bShow = true\r\n\r\n return vo.pm\r\n },\r\n\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n</style>\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VePemiBlngGrups.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VePemiBlngGrups.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./VePemiBlngGrups.vue?vue&type=template&id=19bf7c1f&scoped=true\"\nimport script from \"./VePemiBlngGrups.vue?vue&type=script&lang=js\"\nexport * from \"./VePemiBlngGrups.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"19bf7c1f\",\n null\n \n)\n\nexport default component.exports","<template>\n <div\n v-domresize\n @domresize=\"resize\"\n >\n\n <LayoutState :style=\"`opacity:${ready?0:1};`\" v-if=\"!ready\"></LayoutState>\n\n <transition enter-active-class=\"fade-enter-active\" leave-active-class=\"fade-leave-active\">\n <Layout v-if=\"ready\"></Layout>\n </transition>\n\n <LoadingWinBar></LoadingWinBar>\n <CheckYesNo></CheckYesNo>\n <CheckYes></CheckYes>\n\n <VeCrules></VeCrules>\n <VeCpemis></VeCpemis>\n <VeCgrups></VeCgrups>\n\n <VeGrupBlngUsers></VeGrupBlngUsers>\n <VePemiBlngGrups></VePemiBlngGrups>\n\n </div>\n</template>\n\n<script>\nimport get from 'lodash-es/get.js'\nimport cloneDeep from 'lodash-es/cloneDeep.js'\nimport isestr from 'wsemi/src/isestr.mjs'\nimport iseobj from 'wsemi/src/iseobj.mjs'\nimport isDev from 'wsemi/src/isDev.mjs'\nimport wui from 'w-ui-loginout/src/WUiLoginout.mjs'\nimport LoadingWinBar from './components/Common/LoadingWinBar.vue'\nimport CheckYesNo from './components/Common/CheckYesNo.vue'\nimport CheckYes from './components/Common/CheckYes.vue'\nimport LayoutState from './components/LayoutState.vue'\nimport Layout from './components/Layout.vue'\nimport VeCrules from './components/VeCrules.vue'\nimport VeCpemis from './components/VeCpemis.vue'\nimport VeCgrups from './components/VeCgrups.vue'\nimport VeGrupBlngUsers from './components/VeGrupBlngUsers.vue'\nimport VePemiBlngGrups from './components/VePemiBlngGrups.vue'\n\n\nexport default {\n components: {\n LoadingWinBar,\n CheckYesNo,\n CheckYes,\n LayoutState,\n Layout,\n VeCrules,\n VeCpemis,\n VeCgrups,\n VeGrupBlngUsers,\n VePemiBlngGrups,\n },\n data: function() {\n return {\n ll: null,\n }\n },\n beforeMount: function() {\n // console.log('methods beforeMount')\n\n let vo = this\n\n //setVo, 更換ui內vo, 才能使用廣播技術, 更換語系才能用廣播通知全部組件forceUpdate\n vo.$ui.setVo(vo)\n\n //setLang\n let lang = get(window, '___pmwperm___.language', '')\n vo.$ui.setLang(lang, 'app init') //初始化先讀取html內語系設定進行變更\n // console.log('lang', lang)\n\n function loginSuccess(data) {\n console.log('login success', cloneDeep(data.user))\n vo.$ui.updateConnState('csLogin')\n vo.$ui.updateUserToken(data.token)\n vo.$ui.updateUserSelf(data.user)\n }\n\n function loginError(data) {\n console.log('login error', cloneDeep(data))\n vo.$ui.updateConnState('csErrLogin')\n vo.$ui.updateUserToken('')\n let urlRedirect = get(window, '___pmwperm___.urlRedirect', '')\n if (!isestr(urlRedirect)) {\n console.log('urlRedirect', urlRedirect)\n throw new Error(`invalid urlRedirect`)\n }\n if (isDev()) {\n console.log('60s redirect to:', urlRedirect)\n setTimeout(() => {\n window.location.href = urlRedirect\n }, 60 * 1000)\n }\n else {\n window.location.href = urlRedirect\n }\n }\n\n //login\n console.log('login...')\n let ll = wui('wperm', {\n timeWaitAnimation: 2000,\n params: {},\n })\n ll.login({\n afterGetUser: null,\n afterLogin: null,\n loginSuccess,\n loginError,\n })\n vo.ll = ll\n\n },\n mounted: function() {\n let vo = this\n\n //set, 把目前vo儲存至window供外部非vue環境使用\n window.$vo = vo\n\n },\n computed: {\n\n ready: function() {\n //console.log('computed ready')\n\n let vo = this\n\n let connState = get(vo, `$store.state.connState`)\n let webInfor = get(vo, `$store.state.webInfor`)\n\n let b1 = connState === 'csLogin'\n let b2 = iseobj(webInfor)\n let b = b1 && b2\n\n return b\n },\n\n },\n methods: {\n\n resize: function(msg) {\n // console.log('methods resize', msg)\n\n let vo = this\n\n //syncHeight\n vo.$ui.syncHeight()\n\n },\n\n },\n}\n</script>\n\n<style>\nhtml,\nbody {\n font-family: '微軟正黑體', 'Microsoft JhengHei', 'MicrosoftJhengHeiRegular', 'Avenir', Helvetica, Arial, sans-serif;\n overflow-y: hidden;\n}\n\ndiv,\np,\nspan,\na,\npre,\ninput,\ntextarea,\nbutton {\n font-family: inherit;\n}\n\n.fade-enter-active {\n animation: go 1s;\n}\n\n.fade-leave-active {\n animation: back 1s;\n}\n\n@keyframes go {\n from { opacity: 0; }\n to {opacity: 1;}\n}\n\n@keyframes back {\n from { opacity: 1; }\n to { opacity: 0; }\n}\n\n</style>\n","import mod from \"-!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=0c8193c2\"\nimport script from \"./App.vue?vue&type=script&lang=js\"\nexport * from \"./App.vue?vue&type=script&lang=js\"\nimport style0 from \"./App.vue?vue&type=style&index=0&id=0c8193c2&prod&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","export const UpdateWebInfor = 'UpdateWebInfor'\r\nexport const UpdateLang = 'UpdateLang'\r\nexport const UpdateKpText = 'UpdateKpText'\r\nexport const UpdateConnState = 'UpdateConnState'\r\nexport const UpdateSyncState = 'UpdateSyncState'\r\nexport const UpdateLoading = 'UpdateLoading'\r\n// export const UpdateViewState = 'UpdateViewState'\r\nexport const UpdateTableData = 'UpdateTableData'\r\nexport const UpdateData = 'UpdateData'\r\nexport const UpdateHeightApp = 'UpdateHeightApp'\r\nexport const UpdateHeightAppEff = 'UpdateHeightAppEff'\r\nexport const UpdateHeightToolbar = 'UpdateHeightToolbar'\r\nexport const UpdateMenu = 'UpdateMenu'\r\nexport const UpdateUserToken = 'UpdateUserToken'\r\nexport const UpdateUserSelf = 'UpdateUserSelf'\r\n","import map from 'lodash-es/map.js'\r\nimport keys from 'lodash-es/keys.js'\r\nimport genIDSeq from 'wsemi/src/genIDSeq.mjs'\r\nimport dtmapping from 'wsemi/src/dtmapping.mjs'\r\nimport dtpick from 'wsemi/src/dtpick.mjs'\r\nimport nowms2str from 'wsemi/src/nowms2str.mjs'\r\n\r\n\r\nlet keyTable = 'grups'\r\nlet tableNameCht = '權限群組設定'\r\nlet tableNameEng = 'Permission groups'\r\n\r\n\r\nlet settings = {\r\n id: {\r\n pk: true,\r\n name: '主鍵',\r\n type: 'STRING',\r\n },\r\n order: {\r\n name: '順序',\r\n type: 'INTEGER',\r\n },\r\n name: {\r\n name: '名稱',\r\n type: 'STRING',\r\n },\r\n description: {\r\n name: '說明',\r\n type: 'TEXT',\r\n },\r\n from: {\r\n name: '來源', //供外部批次變更使用\r\n type: 'STRING',\r\n },\r\n cpemis: {\r\n name: '權限清單', //為json字串\r\n type: 'TEXT',\r\n },\r\n userId: {\r\n name: '創建使用者主鍵',\r\n type: 'STRING',\r\n },\r\n timeCreate: {\r\n name: '創建時間',\r\n type: 'STRING',\r\n },\r\n userIdUpdate: {\r\n name: '最新變更使用者主鍵',\r\n type: 'STRING',\r\n },\r\n timeUpdate: {\r\n name: '更新時間',\r\n type: 'STRING',\r\n },\r\n // isActive: {\r\n // name: '是否有效',\r\n // type: 'STRING',\r\n // },\r\n}\r\n\r\nlet funNew = (ndata = {}) => {\r\n let o = dtmapping(ndata, keys(settings))\r\n o.id = `${genIDSeq()}`\r\n o.userIdUpdate = o.userId\r\n o.timeCreate = nowms2str()\r\n o.userIdUpdate = o.userId\r\n o.timeUpdate = o.timeCreate\r\n // o.isActive = 'y'\r\n return o\r\n}\r\n\r\nlet funTest = () => {\r\n let rs = [\r\n\r\n ['權限群組M1', `\r\n {\r\n '權限P1': {\r\n 'mode': 'OR',\r\n 'isActive': 'y',\r\n },\r\n '權限P2': {\r\n 'mode': 'OR',\r\n 'isActive': 'y',\r\n },\r\n }\r\n `],\r\n ['權限群組M2', `\r\n {\r\n '權限P2': {\r\n 'mode': 'OR',\r\n 'isActive': 'y',\r\n },\r\n '權限P3': {\r\n 'mode': 'OR',\r\n 'isActive': 'y',\r\n },\r\n }\r\n `],\r\n ['權限群組M3', `\r\n {\r\n '權限P2': {\r\n 'mode': 'OR',\r\n 'isActive': 'y',\r\n },\r\n '權限P3': {\r\n 'mode': 'AND',\r\n 'isActive': 'y',\r\n },\r\n }\r\n `],\r\n ['權限群組M4', `\r\n {\r\n '權限P3': {\r\n 'mode': 'OR',\r\n 'isActive': 'y',\r\n },\r\n '權限P4': {\r\n 'mode': 'OR',\r\n 'isActive': 'y',\r\n },\r\n }\r\n `],\r\n\r\n ]\r\n rs = map(rs, ([name, cpemis], k) => {\r\n let v = funNew({\r\n userId: 'id-for-admin',\r\n order: k,\r\n name,\r\n description: `${name}的說明`,\r\n cpemis,\r\n })\r\n v.id = `id-for-${name}`\r\n v = dtpick(v, keys(settings))\r\n return v\r\n })\r\n console.log(`已產生: ${keyTable} 測試資料`, rs)\r\n return rs\r\n}\r\n\r\nlet tab = {\r\n keyTable,\r\n tableNameCht,\r\n tableNameEng,\r\n settings,\r\n funNew,\r\n funTest,\r\n}\r\n\r\n\r\nexport default tab\r\n\r\n","import map from 'lodash-es/map.js'\r\nimport keys from 'lodash-es/keys.js'\r\nimport genIDSeq from 'wsemi/src/genIDSeq.mjs'\r\nimport dtmapping from 'wsemi/src/dtmapping.mjs'\r\nimport dtpick from 'wsemi/src/dtpick.mjs'\r\nimport nowms2str from 'wsemi/src/nowms2str.mjs'\r\n\r\n\r\nlet keyTable = 'pemis'\r\nlet tableNameCht = '權限設定'\r\nlet tableNameEng = 'Permissions'\r\n\r\n\r\nlet settings = {\r\n id: {\r\n pk: true,\r\n name: '主鍵',\r\n type: 'STRING',\r\n },\r\n order: {\r\n name: '順序',\r\n type: 'INTEGER',\r\n },\r\n name: {\r\n name: '名稱',\r\n type: 'STRING',\r\n },\r\n description: {\r\n name: '說明',\r\n type: 'TEXT',\r\n },\r\n from: {\r\n name: '來源', //供外部批次變更使用\r\n type: 'STRING',\r\n },\r\n crules: {\r\n name: '管控對象清單', //為json字串\r\n type: 'TEXT',\r\n },\r\n userId: {\r\n name: '創建使用者主鍵',\r\n type: 'STRING',\r\n },\r\n timeCreate: {\r\n name: '創建時間',\r\n type: 'STRING',\r\n },\r\n userIdUpdate: {\r\n name: '最新變更使用者主鍵',\r\n type: 'STRING',\r\n },\r\n timeUpdate: {\r\n name: '更新時間',\r\n type: 'STRING',\r\n },\r\n // isActive: {\r\n // name: '是否有效',\r\n // type: 'STRING',\r\n // },\r\n}\r\n\r\nlet funNew = (ndata = {}) => {\r\n let o = dtmapping(ndata, keys(settings))\r\n o.id = `${genIDSeq()}`\r\n o.userIdUpdate = o.userId\r\n o.timeCreate = nowms2str()\r\n o.userIdUpdate = o.userId\r\n o.timeUpdate = o.timeCreate\r\n // o.isActive = 'y'\r\n return o\r\n}\r\n\r\nlet funTest = () => {\r\n let rs = [\r\n\r\n ['權限P1', `{ \"專案A/頁A/區塊A\": 'y', \"專案A/頁B/區塊A\": 'n', \"專案A/頁C\": 'n' }`],\r\n ['權限P2', `{ \"專案A/頁C\": 'y', \"專案B/頁A/區塊A\": 'y', \"專案B/頁A/區塊B\": 'y' }`],\r\n ['權限P3', `{ \"專案A/頁C\": 'y', \"專案B/頁A/區塊A\": 'n', \"專案B/頁A/區塊B\": 'y', \"專案B/頁A/區塊C\": 'y' }`],\r\n ['權限P4', `{ \"專案B/頁B/區塊A/待辦事項清單\": 'y', \"專案B/頁B/區塊B/顯示後台按鈕\": 'n' }`],\r\n\r\n ]\r\n rs = map(rs, ([name, crules], k) => {\r\n let v = funNew({\r\n userId: 'id-for-admin',\r\n order: k,\r\n name,\r\n description: `${name}的說明`,\r\n crules,\r\n })\r\n v.id = `id-for-${name}`\r\n v = dtpick(v, keys(settings))\r\n return v\r\n })\r\n console.log(`已產生: ${keyTable} 測試資料`, rs)\r\n return rs\r\n}\r\n\r\nlet tab = {\r\n keyTable,\r\n tableNameCht,\r\n tableNameEng,\r\n settings,\r\n funNew,\r\n funTest,\r\n}\r\n\r\n\r\nexport default tab\r\n\r\n","import map from 'lodash-es/map.js'\r\nimport keys from 'lodash-es/keys.js'\r\nimport genIDSeq from 'wsemi/src/genIDSeq.mjs'\r\nimport dtmapping from 'wsemi/src/dtmapping.mjs'\r\nimport dtpick from 'wsemi/src/dtpick.mjs'\r\nimport nowms2str from 'wsemi/src/nowms2str.mjs'\r\n\r\n\r\nlet keyTable = 'targets'\r\nlet tableNameCht = '管控對象'\r\nlet tableNameEng = 'Targets'\r\n\r\n\r\nlet settings = {\r\n id: {\r\n pk: true,\r\n name: '主鍵', //儲存對象路徑, 不同階層用句點「.」分開, 可用unicode\r\n type: 'STRING',\r\n },\r\n order: {\r\n name: '順序',\r\n type: 'INTEGER',\r\n },\r\n description: {\r\n name: '說明',\r\n type: 'TEXT',\r\n },\r\n from: {\r\n name: '來源', //供外部批次變更使用\r\n type: 'STRING',\r\n },\r\n userId: {\r\n name: '創建使用者主鍵',\r\n type: 'STRING',\r\n },\r\n timeCreate: {\r\n name: '創建時間',\r\n type: 'STRING',\r\n },\r\n userIdUpdate: {\r\n name: '最新變更使用者主鍵',\r\n type: 'STRING',\r\n },\r\n timeUpdate: {\r\n name: '更新時間',\r\n type: 'STRING',\r\n },\r\n // isActive: {\r\n // name: '是否有效',\r\n // type: 'STRING',\r\n // },\r\n}\r\n\r\nlet funNew = (ndata = {}) => {\r\n let o = dtmapping(ndata, keys(settings))\r\n o.id = `${genIDSeq()}`\r\n o.userIdUpdate = o.userId\r\n o.timeCreate = nowms2str()\r\n o.userIdUpdate = o.userId\r\n o.timeUpdate = o.timeCreate\r\n // o.isActive = 'y'\r\n return o\r\n}\r\n\r\nlet funTest = () => {\r\n let rs = [\r\n\r\n '專案A/頁A/區塊A',\r\n '專案A/頁A/區塊A/執行按鈕',\r\n '專案A/頁A/區塊A/分析按鈕',\r\n\r\n '專案A/頁B/區塊A',\r\n '專案A/頁B/區塊A/執行按鈕',\r\n '專案A/頁B/區塊A/分析按鈕',\r\n\r\n '專案A/頁B/區塊B/展開按鈕',\r\n '專案A/頁B/區塊B/下載按鈕',\r\n\r\n '專案A/頁C',\r\n\r\n '專案B/頁A/區塊A',\r\n '專案B/頁A/區塊A/顯示綜合報表',\r\n '專案B/頁A/區塊A/顯示當前數據',\r\n '專案B/頁A/區塊B',\r\n '專案B/頁A/區塊B/下載報表按鈕',\r\n '專案B/頁A/區塊B/下載數據按鈕',\r\n '專案B/頁A/區塊C',\r\n\r\n '專案B/頁B/區塊A',\r\n '專案B/頁B/區塊A/待辦事項清單',\r\n '專案B/頁B/區塊A/相關資源清單',\r\n '專案B/頁B/區塊B',\r\n '專案B/頁B/區塊B/顯示後台按鈕',\r\n '專案B/頁B/區塊B/轉跳主站按鈕',\r\n\r\n ]\r\n rs = map(rs, (key, k) => {\r\n let v = funNew({\r\n userId: 'id-for-admin',\r\n order: k,\r\n description: `${key}的說明`,\r\n })\r\n v.id = key\r\n v = dtpick(v, keys(settings))\r\n return v\r\n })\r\n console.log(`已產生: ${keyTable} 測試資料`, rs)\r\n return rs\r\n}\r\n\r\nlet tab = {\r\n keyTable,\r\n tableNameCht,\r\n tableNameEng,\r\n settings,\r\n funNew,\r\n funTest,\r\n}\r\n\r\n\r\nexport default tab\r\n\r\n","import map from 'lodash-es/map.js'\r\nimport keys from 'lodash-es/keys.js'\r\nimport genIDSeq from 'wsemi/src/genIDSeq.mjs'\r\nimport dtmapping from 'wsemi/src/dtmapping.mjs'\r\nimport dtpick from 'wsemi/src/dtpick.mjs'\r\nimport nowms2str from 'wsemi/src/nowms2str.mjs'\r\n\r\n\r\nlet keyTable = 'users'\r\nlet tableNameCht = '使用者'\r\nlet tableNameEng = 'Users'\r\n\r\n\r\nlet settings = {\r\n id: {\r\n pk: true,\r\n name: '主鍵',\r\n type: 'STRING',\r\n },\r\n order: {\r\n name: '順序',\r\n type: 'INTEGER',\r\n },\r\n name: {\r\n name: '姓名',\r\n type: 'STRING',\r\n },\r\n email: {\r\n name: '電子郵件',\r\n type: 'STRING',\r\n },\r\n description: {\r\n name: '描述',\r\n type: 'TEXT',\r\n },\r\n from: {\r\n name: '來源', //標注使用者來源, 亦供外部批次變更使用\r\n type: 'STRING',\r\n },\r\n cgrups: {\r\n name: '權限群組清單', //為json字串\r\n type: 'TEXT',\r\n },\r\n isAdmin: {\r\n name: '是否為系統管理員',\r\n type: 'STRING',\r\n },\r\n userId: {\r\n name: '創建使用者主鍵',\r\n type: 'STRING',\r\n },\r\n timeCreate: {\r\n name: '創建時間',\r\n type: 'STRING',\r\n },\r\n userIdUpdate: {\r\n name: '最新變更使用者主鍵',\r\n type: 'STRING',\r\n },\r\n timeUpdate: {\r\n name: '更新時間',\r\n type: 'STRING',\r\n },\r\n isActive: {\r\n name: '是否有效',\r\n type: 'STRING',\r\n },\r\n}\r\n\r\nlet funNew = (ndata = {}) => {\r\n let o = dtmapping(ndata, keys(settings))\r\n o.id = `${genIDSeq()}`\r\n o.isAdmin = 'n'\r\n o.userIdUpdate = o.userId\r\n o.timeCreate = nowms2str()\r\n o.userIdUpdate = o.userId\r\n o.timeUpdate = o.timeCreate\r\n o.isActive = 'y'\r\n return o\r\n}\r\n\r\nlet funTest = () => {\r\n let rs = [\r\n\r\n ['peter', 'teamA', `\r\n { \r\n '權限群組M1': {\r\n 'mode': 'OR',\r\n 'isActive': 'y',\r\n }\r\n }\r\n `, 'n'],\r\n ['mary', 'teamA', `\r\n { \r\n '權限群組M2': {\r\n 'mode': 'OR',\r\n 'isActive': 'y',\r\n }\r\n }\r\n `, 'n'],\r\n ['john', 'teamA', `\r\n { \r\n '權限群組M3': {\r\n 'mode': 'OR',\r\n 'isActive': 'y',\r\n }\r\n }\r\n `, 'n'],\r\n ['admin', '', `\r\n { \r\n '權限群組M4': {\r\n 'mode': 'OR',\r\n 'isActive': 'y',\r\n }\r\n }\r\n `, 'y'],\r\n\r\n ]\r\n rs = map(rs, ([name, from, cgrups, isAdmin], k) => {\r\n let v = funNew({\r\n userId: 'id-for-admin',\r\n order: k,\r\n name,\r\n email: `${name}@example.com`,\r\n from,\r\n cgrups,\r\n isAdmin,\r\n })\r\n v.id = `id-for-${name}`\r\n if (name === 'john') {\r\n v.email = `${v.email};john@test.com`\r\n }\r\n v.isAdmin = isAdmin\r\n v = dtpick(v, keys(settings))\r\n return v\r\n })\r\n console.log(`已產生: ${keyTable} 測試資料`, rs)\r\n return rs\r\n}\r\n\r\nlet tab = {\r\n keyTable,\r\n tableNameCht,\r\n tableNameEng,\r\n settings,\r\n funNew,\r\n funTest,\r\n}\r\n\r\n\r\nexport default tab\r\n\r\n","import grups from './tables/grups.mjs'\nimport pemis from './tables/pemis.mjs'\nimport targets from './tables/targets.mjs'\nimport users from './tables/users.mjs'\nimport build from 'w-data-collector/src/build.mjs'\n\n\nlet cs = {\n grups,\n pemis,\n targets,\n users,\n}\n\n//ds\nlet ds = {}\nfor (let k in cs) {\n ds[k] = build(cs[k], { useCreateStorage: false })\n}\n\n\nexport default ds\n","import each from 'lodash-es/each.js'\r\nimport set from 'lodash-es/set.js'\r\nimport * as types from './types.mjs'\r\nimport ds from '../schema/index.mjs'\r\n\r\n\r\n//state, 全域狀態\r\nlet state = {\r\n\r\n hostname: `${window.location.origin}`,\r\n webInfor: {},\r\n connState: 'csIng', //'csIng', 'csLogin', 'csLogout', 'csErrConn', 'csErrLogin'\r\n syncState: false,\r\n // viewState: 'lists',\r\n loading: false,\r\n settings: {\r\n leftDrawerWidth: 200,\r\n },\r\n\r\n heightApp: 0,\r\n heightAppEff: 0,\r\n heightToolbar: 60,\r\n\r\n menu: {}, //初始值需為物件, 否則LayoutContent會取menu.key出錯\r\n\r\n userToken: '',\r\n userSelf: {},\r\n\r\n lang: 'cht', //'eng', 'cht'\r\n kpText: {}, //一定要放在vuex內, 否則無法用broadcast驅動變更語系文字\r\n\r\n}\r\n\r\n//添加各資料表\r\neach(ds, (v, k) => {\r\n state[k] = null //初始化null\r\n})\r\n\r\n//儲存至state\r\nexport { state }\r\n\r\n//mutations, 同步執行\r\nexport let mutations = {\r\n\r\n [types.UpdateWebInfor] (state, webInfor) {\r\n state.webInfor = webInfor\r\n },\r\n\r\n [types.UpdateLang] (state, lang) {\r\n state.lang = lang\r\n },\r\n\r\n [types.UpdateKpText] (state, kpText) {\r\n state.kpText = kpText\r\n },\r\n\r\n [types.UpdateConnState] (state, connState) {\r\n state.connState = connState\r\n },\r\n\r\n [types.UpdateSyncState] (state, syncState) {\r\n state.syncState = syncState\r\n },\r\n\r\n [types.UpdateLoading] (state, loading) {\r\n state.loading = loading\r\n },\r\n\r\n // [types.UpdateViewState] (state, viewState) {\r\n // state.viewState = viewState\r\n // },\r\n\r\n [types.UpdateTableData] (state, msg) {\r\n state[msg.tableName] = msg.data\r\n },\r\n\r\n [types.UpdateData] (state, msg) {\r\n //msg.path內為存取路徑, 需使用set處理\r\n // console.log('UpdateData msg', msg)\r\n set(state, msg.path, msg.data)\r\n },\r\n\r\n [types.UpdateHeightApp] (state, heightApp) {\r\n state.heightApp = heightApp\r\n },\r\n\r\n [types.UpdateHeightAppEff] (state, heightAppEff) {\r\n state.heightAppEff = heightAppEff\r\n },\r\n\r\n [types.UpdateHeightToolbar] (state, heightToolbar) {\r\n state.heightToolbar = heightToolbar\r\n },\r\n\r\n [types.UpdateMenu] (state, menu) {\r\n state.menu = menu\r\n },\r\n\r\n [types.UpdateUserToken] (state, userToken) {\r\n state.userToken = userToken\r\n },\r\n\r\n [types.UpdateUserSelf] (state, userSelf) {\r\n state.userSelf = userSelf\r\n },\r\n\r\n}\r\n\r\n","import Vue from 'vue'\r\nimport Vuex from 'vuex'\r\nimport { state, mutations } from './mutations.mjs'\r\nimport * as getters from './getters.mjs'\r\nimport * as actions from './actions.mjs'\r\nimport * as types from './types.mjs'\r\n\r\n\r\n//use\r\nVue.use(Vuex)\r\n\r\nlet st = new Vuex.Store({\r\n state,\r\n mutations,\r\n getters,\r\n actions,\r\n strict: true, //嚴格模式禁止修改state\r\n})\r\n\r\n//save to $store\r\nst.types = types\r\nVue.prototype.$store = st\r\n// console.log('$store', st)\r\n\r\nexport default st\r\n","\r\n\r\nlet kpLang = {\r\n\r\n csIng: {\r\n eng: 'Connecting...',\r\n cht: '連線中...',\r\n },\r\n csLogin: {\r\n eng: 'Logged in',\r\n cht: '已登入',\r\n },\r\n csLogout: {\r\n eng: 'Logged out',\r\n cht: '已登出',\r\n },\r\n csErrConn: {\r\n eng: 'Unable to connect',\r\n cht: '無法連線',\r\n },\r\n csErrLogin: {\r\n eng: 'Login denied',\r\n cht: '拒絕登入',\r\n },\r\n\r\n aggridLanguage: {\r\n eng: 'en',\r\n cht: 'zh-tw',\r\n },\r\n\r\n systemMessage: {\r\n eng: 'System message',\r\n cht: '系統確認訊息',\r\n },\r\n ok: {\r\n eng: 'OK',\r\n cht: '確認',\r\n },\r\n no: {\r\n eng: 'No',\r\n cht: '取消',\r\n },\r\n yes: {\r\n eng: 'Yes',\r\n cht: '確定',\r\n },\r\n\r\n empty: {\r\n eng: 'Empty',\r\n cht: '無',\r\n },\r\n waitingData: {\r\n eng: 'Waiting data...',\r\n cht: '等待數據中...',\r\n },\r\n\r\n isEditabled: {\r\n eng: 'Editable',\r\n cht: '是否編輯',\r\n },\r\n saveChanges: {\r\n eng: `Save changes`,\r\n cht: `儲存變更`,\r\n },\r\n id: {\r\n eng: `Id`,\r\n cht: `主鍵`,\r\n },\r\n from: {\r\n eng: `From`,\r\n cht: `來源`,\r\n },\r\n save: {\r\n eng: `Save`,\r\n cht: `儲存`,\r\n },\r\n close: {\r\n eng: `Close`,\r\n cht: `關閉`,\r\n },\r\n delete: {\r\n eng: `Delete`,\r\n cht: `刪除`,\r\n },\r\n cancel: {\r\n eng: `Cancel`,\r\n cht: `取消`,\r\n },\r\n screenFull: {\r\n eng: `Max size`,\r\n cht: `最大化尺寸`,\r\n },\r\n screenNormal: {\r\n eng: `Normal size`,\r\n cht: `預設尺寸`,\r\n },\r\n checkAllYes: {\r\n eng: `Check all`,\r\n cht: `全選使用`,\r\n },\r\n checkAllNo: {\r\n eng: `Uncheck all`,\r\n cht: `全不選使用`,\r\n },\r\n checkAllInv: {\r\n eng: `Reverse all`,\r\n cht: `全反選使用`,\r\n },\r\n operMode: {\r\n eng: `Enable`,\r\n cht: `是否使用`,\r\n },\r\n operPemiEnable: {\r\n eng: `Operator`,\r\n cht: `合併權限模式`,\r\n },\r\n operGrupEnable: {\r\n eng: `Operator`,\r\n cht: `合併權限群組模式`,\r\n },\r\n\r\n processing: {\r\n eng: `Processing...`,\r\n cht: `處理中請稍後...`,\r\n },\r\n anUnexpectedErrorOccurred: {\r\n eng: `An unexpected error occurred, please contact the administrator`,\r\n cht: `發生非預期錯誤,請洽管理員`,\r\n },\r\n unknow: {\r\n eng: `Unknow`,\r\n cht: `未知`,\r\n },\r\n\r\n username: {\r\n eng: `Username`,\r\n cht: `使用者姓名`,\r\n },\r\n email: {\r\n eng: `Email`,\r\n cht: `電子郵件`,\r\n },\r\n name: {\r\n eng: `Name`,\r\n cht: `名稱`,\r\n },\r\n description: {\r\n eng: `Description`,\r\n cht: `說明`,\r\n },\r\n // noDescription: {\r\n // eng: `No description`,\r\n // cht: `無說明`,\r\n // },\r\n modeEdit: {\r\n eng: `Edit mode`,\r\n cht: `編輯模式`,\r\n },\r\n showTabCols: {\r\n eng: `Show columns`,\r\n cht: `顯示欄位`,\r\n },\r\n\r\n belongUsers: {\r\n eng: `Use users`,\r\n cht: `管控所屬使用者`,\r\n },\r\n belongGrups: {\r\n eng: `Use groups`,\r\n cht: `所屬權限群組`,\r\n },\r\n belongPemis: {\r\n eng: `Use permissions`,\r\n cht: `所屬權限`,\r\n },\r\n belongGrupsNames: {\r\n eng: `Use permission groups`,\r\n cht: `所屬權限群組名稱`,\r\n },\r\n belongPemisNames: {\r\n eng: `Use permissions`,\r\n cht: `所屬權限名稱`,\r\n },\r\n\r\n isAdmin: {\r\n eng: `Administrator`,\r\n cht: `是否為系統管理員`,\r\n },\r\n isActive: {\r\n eng: `Active`,\r\n cht: `是否有效`,\r\n },\r\n\r\n errInNames: {\r\n eng: `Name errors`,\r\n cht: `名稱出現錯誤待修復`,\r\n },\r\n errInEmails: {\r\n eng: `Email errors`,\r\n cht: `Email出現錯誤待修復`,\r\n },\r\n\r\n menuTreeShow: {\r\n eng: `Show menu`,\r\n cht: `顯示選單`,\r\n },\r\n menuTreeHide: {\r\n eng: `Hide menu`,\r\n cht: `隱藏選單`,\r\n },\r\n\r\n mmTargets: {\r\n eng: `Targets`,\r\n cht: `管理對象`,\r\n },\r\n mmTargetsMsg: {\r\n eng: `Targets generally refer to entities such as pages, data, etc., and can also include features or services.`,\r\n cht: `對象泛指實體的頁面、數據等,亦可為的功能或服務。`,\r\n },\r\n\r\n mmPemis: {\r\n eng: `Permissions`,\r\n cht: `管理權限`,\r\n },\r\n mmPemisMsg: {\r\n eng: `Permissions are primarily used to set rules for enabling or disabling various objects.`,\r\n cht: `權限主要為用來設定各種對象之使用或禁用規則。`,\r\n },\r\n\r\n mmGrups: {\r\n eng: `Permission groups`,\r\n cht: `管理權限群組`,\r\n },\r\n mmGrupsMsg: {\r\n eng: `Permission groups are primarily used to configure combinations of different permissions.`,\r\n cht: `權限群組主要為用來設定組合各種權限。`,\r\n },\r\n\r\n mmUsers: {\r\n eng: `Users`,\r\n cht: `管理使用者`,\r\n },\r\n mmUsersMsg: {\r\n eng: `Users are primarily for providing or extending user information and can be configured with combinations of various permission groups.`,\r\n cht: `使用者主要為提供或擴充使用者資訊,並可設定組合各種權限群組。`,\r\n },\r\n\r\n targetId: {\r\n eng: `Target`,\r\n cht: `對象名稱`,\r\n },\r\n targetIdEmpty: {\r\n eng: `Invalid name`,\r\n cht: `尚未給予有效對象名稱`,\r\n },\r\n targetIdDuplicate: {\r\n eng: `Duplicate target`,\r\n cht: `對象名稱出現重複`,\r\n },\r\n targetAddEmpty: {\r\n eng: `No target`,\r\n cht: `尚未新增管理資料`,\r\n },\r\n targetAdd: {\r\n eng: `Add target`,\r\n cht: `新增對象`,\r\n },\r\n targetAddNameNew: {\r\n eng: `New target`,\r\n cht: `新對象`,\r\n },\r\n targetAddIdNew: {\r\n eng: `Waiting generation`,\r\n cht: `待自動給予`,\r\n },\r\n targetCopy: {\r\n eng: `Copy target`,\r\n cht: `複製對象`,\r\n },\r\n targetCopyNameNew: {\r\n eng: `copy`,\r\n cht: `複製`,\r\n },\r\n targetDeleteCheckTargets: {\r\n eng: `Delete target(s)`,\r\n cht: `刪除勾選對象`,\r\n },\r\n targetEnable: {\r\n eng: `Enable`,\r\n cht: `是否使用`,\r\n },\r\n targetClearTargetsFail: {\r\n eng: `Failed to clear existing targets`,\r\n cht: `清除既有對象數據失敗`,\r\n },\r\n targetSaveTargetsFail: {\r\n eng: `Failed to save targets`,\r\n cht: `儲存對象數據失敗`,\r\n },\r\n targetSaveTargetsSuccess: {\r\n eng: `Save targets successfully`,\r\n cht: `儲存對象數據成功`,\r\n },\r\n\r\n pemiName: {\r\n eng: `Name of permission`,\r\n cht: `權限名稱`,\r\n },\r\n pemiNameEmpty: {\r\n eng: `Invalid name of permission`,\r\n cht: `尚未給予有效權限名稱`,\r\n },\r\n pemiNameDuplicate: {\r\n eng: `Duplicate name of permission`,\r\n cht: `權限名稱出現重複`,\r\n },\r\n pemiAddEmpty: {\r\n eng: `No permission`,\r\n cht: `尚未新增權限資料`,\r\n },\r\n pemiAdd: {\r\n eng: `Add permission`,\r\n cht: `新增權限`,\r\n },\r\n pemiAddNameNew: {\r\n eng: `New permission`,\r\n cht: `新權限`,\r\n },\r\n pemiAddIdNew: {\r\n eng: `Waiting generation`,\r\n cht: `待自動給予`,\r\n },\r\n pemiCopy: {\r\n eng: `Copy permission`,\r\n cht: `複製權限`,\r\n },\r\n pemiCopyNameNew: {\r\n eng: `copy`,\r\n cht: `複製`,\r\n },\r\n pemiDeleteCheckPemis: {\r\n eng: `Delete permission(s)`,\r\n cht: `刪除勾選權限`,\r\n },\r\n pemiCrules: {\r\n eng: `Rules of permission`,\r\n cht: `管控對象`,\r\n },\r\n pemiEditBlngGrupsNoPemiId: {\r\n eng: `Can not find the id of permission`,\r\n cht: `無法找到權限Id`,\r\n },\r\n pemiEditBlngGrupsNoPemiData: {\r\n eng: `Can not find the data of permission`,\r\n cht: `無法找到權限資料`,\r\n },\r\n pemiEditCrules: {\r\n eng: `Edit rules of permission`,\r\n cht: `編輯使用對象`,\r\n },\r\n pemiEditCrulesForDisplay: {\r\n eng: `Rules of permission`,\r\n cht: `展示使用對象`,\r\n },\r\n // pemiEditCrulesSimple: {\r\n // eng: `Edit rules`,\r\n // cht: `編輯對象`,\r\n // },\r\n pemiEditCrulesNoPemiId: {\r\n eng: `Can not find the id of permission`,\r\n cht: `無法找到權限Id`,\r\n },\r\n pemiEditCrulesNoPemiData: {\r\n eng: `Can not find the data of permission`,\r\n cht: `無法找到權限資料`,\r\n },\r\n pemiRnderCrulesNoRule: {\r\n eng: `No rule`,\r\n cht: `無使用任何對象`,\r\n },\r\n pemiRnderCrulesHasNRule: {\r\n eng: `Has {n} rule(s){nms}`,\r\n cht: `使用共 {n} 項對象{nms}`,\r\n },\r\n pemiClearPemisFail: {\r\n eng: `Failed to clear existing permissions`,\r\n cht: `清除既有權限數據失敗`,\r\n },\r\n pemiSavePemisFail: {\r\n eng: `Failed to save permissions`,\r\n cht: `儲存權限數據失敗`,\r\n },\r\n pemiSavePemisSuccess: {\r\n eng: `Save permissions successfully`,\r\n cht: `儲存權限數據成功`,\r\n },\r\n\r\n pemiBlngEditGrups: {\r\n eng: `Edit permission groups`,\r\n cht: `編輯所屬權限群組`,\r\n },\r\n pemiBlngEditGrupsForDisplay: {\r\n eng: `Permission groups`,\r\n cht: `展示所屬權限群組`,\r\n },\r\n pemiBlngRnderNoGrup: {\r\n eng: `No users`,\r\n cht: `無所屬權限群組`,\r\n },\r\n pemiBlngRnderGrups: {\r\n eng: `Has {n} permission group(s){nms}`,\r\n cht: `共被 {n} 個權限群組{nms}使用`,\r\n },\r\n pemiBlngPemiNow: {\r\n eng: `Now permission`,\r\n cht: `目前權限`,\r\n },\r\n pemiBlngEditNoName: {\r\n eng: `Can not find the name of permission`,\r\n cht: `無法找到權限名稱`,\r\n },\r\n pemiBlngEditNoPemi: {\r\n eng: `Can not find the data of permission`,\r\n cht: `無法找到權限資料`,\r\n },\r\n pemiBlngDeleteCheckPemis: {\r\n eng: `Delete permission(s)`,\r\n cht: `刪除勾選權限`,\r\n },\r\n\r\n cruleEditNoTargetId: {\r\n eng: `Can not find the id of target`,\r\n cht: `無法找到對象Id`,\r\n },\r\n cruleEditNoTargetData: {\r\n eng: `Can not find the data of target`,\r\n cht: `無法找到對象資料`,\r\n },\r\n cruleDeleteCheckTargets: {\r\n eng: `Delete target(s)`,\r\n cht: `刪除勾選對象`,\r\n },\r\n\r\n grupName: {\r\n eng: `Name of permission group`,\r\n cht: `權限群組名稱`,\r\n },\r\n grupNameEmpty: {\r\n eng: `Invalid name of permission group`,\r\n cht: `尚未給予有效權限群組名稱`,\r\n },\r\n grupNameDuplicate: {\r\n eng: `Duplicate name of permission group`,\r\n cht: `權限群組名稱出現重複`,\r\n },\r\n grupAddEmpty: {\r\n eng: `No permission group`,\r\n cht: `尚未新增權限群組資料`,\r\n },\r\n grupAdd: {\r\n eng: `Add permission group`,\r\n cht: `新增權限群組`,\r\n },\r\n grupAddNameNew: {\r\n eng: `New permission group`,\r\n cht: `新權限群組`,\r\n },\r\n grupAddIdNew: {\r\n eng: `Waiting generation`,\r\n cht: `待自動給予`,\r\n },\r\n grupCopy: {\r\n eng: `Copy permission group`,\r\n cht: `複製權限群組`,\r\n },\r\n grupCopyNameNew: {\r\n eng: `copy`,\r\n cht: `複製`,\r\n },\r\n grupDeleteCheckGrups: {\r\n eng: `Delete permission group(s)`,\r\n cht: `刪除勾選權限群組`,\r\n },\r\n grupCpemis: {\r\n eng: `Permissions`,\r\n cht: `管控使用權限`,\r\n },\r\n grupEditBlngNoGrupId: {\r\n eng: `Can not find the id of permission group`,\r\n cht: `無法找到權限群組Id`,\r\n },\r\n grupEditBlngNoGrupData: {\r\n eng: `Can not find the data of permission group`,\r\n cht: `無法找到權限群組資料`,\r\n },\r\n grupEditCpemis: {\r\n eng: `Edit list of permission group`,\r\n cht: `編輯使用權限`,\r\n },\r\n grupEditCpemisForDisplay: {\r\n eng: `List of permission group`,\r\n cht: `展示使用權限`,\r\n },\r\n grupRnderCpemisNoPermission: {\r\n eng: `No permission`,\r\n cht: `無使用任何權限`,\r\n },\r\n grupRnderCpemisHasNPermissions: {\r\n eng: `Has {n} permission(s){nms}`,\r\n cht: `使用 {n} 項權限{nms}`,\r\n },\r\n grupClearGrupsFail: {\r\n eng: `Failed to clear existing permission groups`,\r\n cht: `清除既有權限群組數據失敗`,\r\n },\r\n grupSaveGrupsEmpty: {\r\n eng: `No user`,\r\n cht: `未有變更權限群組資料`,\r\n },\r\n grupSaveGrupsFail: {\r\n eng: `Failed to save permission groups`,\r\n cht: `儲存權限群組數據失敗`,\r\n },\r\n grupSaveGrupsSuccess: {\r\n eng: `Save permission groups successfully`,\r\n cht: `儲存權限群組數據成功`,\r\n },\r\n\r\n grupBlngEditUsers: {\r\n eng: `Edit permission group of users`,\r\n cht: `編輯所屬使用者`,\r\n },\r\n grupBlngEditUsersForDisplay: {\r\n eng: `Permission group of users`,\r\n cht: `展示所屬使用者`,\r\n },\r\n grupBlngRnderNoUser: {\r\n eng: `No users`,\r\n cht: `無所屬使用者`,\r\n },\r\n grupBlngRnderUsers: {\r\n eng: `Has {n} user(s){nms}`,\r\n cht: `共被 {n} 位使用者{nms}使用`,\r\n },\r\n grupBlngGrupNow: {\r\n eng: `Now permission group`,\r\n cht: `目前權限群組`,\r\n },\r\n grupBlngEditNoGrupName: {\r\n eng: `Can not find the name of permission group`,\r\n cht: `無法找到權限群組名稱`,\r\n },\r\n grupBlngEditNoGrupData: {\r\n eng: `Can not find the data of permission group`,\r\n cht: `無法找到權限群組資料`,\r\n },\r\n grupBlngDeleteCheckGrups: {\r\n eng: `Delete permission group(s)`,\r\n cht: `刪除勾選權限群組`,\r\n },\r\n\r\n cpemiEditNoName: {\r\n eng: `Can not find the name of target`,\r\n cht: `無法找到對象名稱`,\r\n },\r\n cpemiEditNoTarget: {\r\n eng: `Can not find the data of target`,\r\n cht: `無法找到對象資料`,\r\n },\r\n cpemiDeleteCheckTargets: {\r\n eng: `Delete targets(s)`,\r\n cht: `刪除勾選對象`,\r\n },\r\n\r\n userName: {\r\n eng: `Name of user`,\r\n cht: `使用者名稱`,\r\n },\r\n userNameEmpty: {\r\n eng: `Invalid name of user`,\r\n cht: `尚未給予有效使用者名稱`,\r\n },\r\n userNameDuplicate: {\r\n eng: `Duplicate name of user`,\r\n cht: `使用者名稱出現重複`,\r\n },\r\n userEmailEmpty: {\r\n eng: `Empty email of user`,\r\n cht: `尚未給予使用者Email`,\r\n },\r\n userEmailError: {\r\n eng: `Invalid email of user`,\r\n cht: `使用者Email格式錯誤`,\r\n },\r\n userEmailDuplicate: {\r\n eng: `Duplicate email of user`,\r\n cht: `使用者Email出現重複`,\r\n },\r\n userAddEmpty: {\r\n eng: `No user`,\r\n cht: `尚未新增使用者資料`,\r\n },\r\n userAdd: {\r\n eng: `Add user`,\r\n cht: `新增使用者`,\r\n },\r\n userAddNameNew: {\r\n eng: `New user`,\r\n cht: `新使用者`,\r\n },\r\n userAddIdNew: {\r\n eng: `Waiting generation`,\r\n cht: `待自動給予`,\r\n },\r\n userCopy: {\r\n eng: `Copy user`,\r\n cht: `複製使用者`,\r\n },\r\n userCopyNameNew: {\r\n eng: `copy`,\r\n cht: `複製`,\r\n },\r\n userDeleteCheckUsers: {\r\n eng: `Delete user(s)`,\r\n cht: `刪除勾選使用者`,\r\n },\r\n userCgrups: {\r\n eng: `Permission groups`,\r\n cht: `管控使用權限群組`,\r\n },\r\n userEditCgrups: {\r\n eng: `Edit list of user`,\r\n cht: `編輯使用權限群組`,\r\n },\r\n userEditCgrupsForDisplay: {\r\n eng: `Edit list of user`,\r\n cht: `展示使用權限群組`,\r\n },\r\n userEditCgrupsNoUserId: {\r\n eng: `Can not find the id of user`,\r\n cht: `無法找到使用者Id`,\r\n },\r\n userEditCgrupsNoUserData: {\r\n eng: `Can not find the data of user`,\r\n cht: `無法找到使用者資料`,\r\n },\r\n // userClearUsersFail: {\r\n // eng: `Failed to clear existing users`,\r\n // cht: `清除既有使用者數據失敗`,\r\n // },\r\n userSaveUsersEmpty: {\r\n eng: `No user`,\r\n cht: `未有變更使用者資料`,\r\n },\r\n userSaveUsersFail: {\r\n eng: `Failed to save users`,\r\n cht: `儲存使用者數據失敗`,\r\n },\r\n userSaveUsersSuccess: {\r\n eng: `Save users successfully`,\r\n cht: `儲存使用者數據成功`,\r\n },\r\n userEditNoUserId: {\r\n eng: `Can not find the id of user`,\r\n cht: `無法找到使用者Id`,\r\n },\r\n userEditNoUserData: {\r\n eng: `Can not find the data of user`,\r\n cht: `無法找到使用者數據`,\r\n },\r\n userRnderCgrupsNoGroup: {\r\n eng: `No permission group`,\r\n cht: `無使用任何權限群組`,\r\n },\r\n userRnderCgrupsHasNGroups: {\r\n eng: `Has {n} permission group(s){nms}`,\r\n cht: `使用 {n} 項權限群組{nms}`,\r\n },\r\n\r\n cgrupEditNoName: {\r\n eng: `Can not find the name of permission`,\r\n cht: `無法找到權限名稱`,\r\n },\r\n cgrupEditNoPemi: {\r\n eng: `Can not find the data of permission`,\r\n cht: `無法找到權限資料`,\r\n },\r\n cgrupDeleteCheckPemis: {\r\n eng: `Delete permission(s)`,\r\n cht: `刪除勾選權限`,\r\n },\r\n\r\n allDefaults: {\r\n eng: `All defaults`,\r\n cht: `全部項目預設值`,\r\n },\r\n show: {\r\n eng: `Show`,\r\n cht: `顯示`,\r\n },\r\n active: {\r\n eng: `Active`,\r\n cht: `啟用`,\r\n },\r\n showChildren: {\r\n eng: `Show children`,\r\n cht: `所屬顯示`,\r\n },\r\n hideChildren: {\r\n eng: `Hide children`,\r\n cht: `所屬不顯示`,\r\n },\r\n activateChildren: {\r\n eng: `Activate children`,\r\n cht: `所屬啟用`,\r\n },\r\n deactivateChildren: {\r\n eng: `Deactivate children`,\r\n cht: `所屬不啟用`,\r\n },\r\n isUsernameEmpty: {\r\n eng: `Username is empty`,\r\n cht: `使用者名稱不得為空`,\r\n },\r\n failedToSaveUser: {\r\n eng: `Failed to save the user`,\r\n cht: `變更使用者失敗`,\r\n },\r\n successfulToSaveUser: {\r\n eng: `Save the user successfully`,\r\n cht: `變更使用者成功`,\r\n },\r\n\r\n userId: {\r\n eng: `ID of the created user`,\r\n cht: '創建使用者主鍵',\r\n },\r\n timeCreate: {\r\n eng: `Created time`,\r\n cht: '創建時間',\r\n },\r\n userIdUpdate: {\r\n eng: `ID of the updated user`,\r\n cht: '最新變更使用者主鍵',\r\n },\r\n timeUpdate: {\r\n eng: `Updated time`,\r\n cht: '更新時間',\r\n },\r\n\r\n}\r\n\r\n\r\nexport default kpLang\r\n","import Vue from 'vue'\r\nimport min from 'lodash-es/min.js'\r\nimport size from 'lodash-es/size.js'\r\nimport take from 'lodash-es/take.js'\r\nimport isEqual from 'lodash-es/isEqual.js'\r\nimport uniq from 'lodash-es/uniq.js'\r\nimport set from 'lodash-es/set.js'\r\nimport get from 'lodash-es/get.js'\r\nimport each from 'lodash-es/each.js'\r\nimport map from 'lodash-es/map.js'\r\nimport filter from 'lodash-es/filter.js'\r\nimport last from 'lodash-es/last.js'\r\nimport split from 'lodash-es/split.js'\r\nimport join from 'lodash-es/join.js'\r\nimport drop from 'lodash-es/drop.js'\r\nimport dropRight from 'lodash-es/dropRight.js'\r\nimport groupBy from 'lodash-es/groupBy.js'\r\nimport sortBy from 'lodash-es/sortBy.js'\r\nimport cloneDeep from 'lodash-es/cloneDeep.js'\r\nimport cint from 'wsemi/src/cint.mjs'\r\nimport delay from 'wsemi/src/delay.mjs'\r\nimport isarr from 'wsemi/src/isarr.mjs'\r\nimport isestr from 'wsemi/src/isestr.mjs'\r\nimport isfun from 'wsemi/src/isfun.mjs'\r\nimport iseobj from 'wsemi/src/iseobj.mjs'\r\nimport isearr from 'wsemi/src/isearr.mjs'\r\nimport isEle from 'wsemi/src/isEle.mjs'\r\nimport strleft from 'wsemi/src/strleft.mjs'\r\nimport strdelleft from 'wsemi/src/strdelleft.mjs'\r\nimport sep from 'wsemi/src/sep.mjs'\r\nimport aes2str from 'wsemi/src/aes2str.mjs'\r\nimport str2aes from 'wsemi/src/str2aes.mjs'\r\nimport haskey from 'wsemi/src/haskey.mjs'\r\nimport genPm from 'wsemi/src/genPm.mjs'\r\nimport pmSeries from 'wsemi/src/pmSeries.mjs'\r\nimport waitFun from 'wsemi/src/waitFun.mjs'\r\nimport browserView from 'wsemi/src/browserView.mjs'\r\nimport arrHas from 'wsemi/src/arrHas.mjs'\r\nimport arrSort from 'wsemi/src/arrSort.mjs'\r\nimport arrInsert from 'wsemi/src/arrInsert.mjs'\r\nimport replace from 'wsemi/src/replace.mjs'\r\nimport timemsTZ2past from 'wsemi/src/timemsTZ2past.mjs'\r\nimport convertToTree from 'wsemi/src/convertToTree.mjs'\r\n// import WUiDwload from 'w-ui-dwload/src/WUiDwload.mjs'\r\nimport kpLang from './mLang.mjs'\r\n\r\n\r\nlet vo = Vue.prototype\r\n\r\n\r\nfunction setVo(vObj) {\r\n vo = vObj\r\n}\r\n\r\n\r\nfunction updateConnState(connState) {\r\n vo.$store.commit(vo.$store.types.UpdateConnState, connState)\r\n}\r\n\r\n\r\nfunction updateLoading(loading) {\r\n vo.$store.commit(vo.$store.types.UpdateLoading, loading)\r\n}\r\n\r\n\r\n// function updateViewState(viewState) {\r\n// vo.$store.commit(vo.$store.types.UpdateViewState, viewState)\r\n// }\r\n\r\n\r\nfunction updateUserToken(userToken) {\r\n vo.$store.commit(vo.$store.types.UpdateUserToken, userToken)\r\n}\r\n\r\n\r\nfunction updateUserSelf(userSelf) {\r\n vo.$store.commit(vo.$store.types.UpdateUserSelf, userSelf)\r\n}\r\n\r\n\r\nfunction forceUpdate() {\r\n // console.log('forceUpdate')\r\n\r\n function broadcast(chs) {\r\n each(chs, (v) => {\r\n // console.log(v.$el)\r\n v.$forceUpdate()\r\n if (v.$children) {\r\n broadcast(v.$children)\r\n }\r\n })\r\n }\r\n\r\n //broadcast, 注意此處需使用更換ui內vo為mounted後的vo, 也就是含元素, 才能使用廣播技術\r\n broadcast(vo.$children)\r\n\r\n}\r\n\r\n\r\nfunction validLang(lang) {\r\n if (lang !== 'eng' && lang !== 'cht') {\r\n // console.log(`invalid lang[${lang}]`)\r\n lang = 'eng'\r\n }\r\n return lang\r\n}\r\n\r\n\r\nfunction getLang() {\r\n let lang = ''\r\n\r\n //from window\r\n if (!isestr(lang)) {\r\n let _lang = get(window, '___pmwperm___.language', '')\r\n // console.log('_lang(from window)', _lang)\r\n if (isestr(_lang)) {\r\n lang = validLang(_lang) //有可能取到未取代前模板符號\r\n }\r\n }\r\n\r\n //from store\r\n if (!isestr(lang)) {\r\n let _lang = get(vo, '$store.state.lang', '')\r\n // console.log('_lang(from store)', _lang)\r\n if (isestr(_lang)) {\r\n lang = validLang(_lang) //有可能給予非預期lang\r\n }\r\n }\r\n\r\n //return\r\n if (!isestr(lang)) {\r\n return 'eng'\r\n }\r\n return lang\r\n}\r\n\r\n\r\nfunction setLang(lang = null, from = '') {\r\n // console.log('setLang', lang, from)\r\n\r\n //check\r\n if (!isestr(lang)) {\r\n lang = getLang()\r\n }\r\n else {\r\n lang = validLang(lang)\r\n }\r\n // console.log('get lang', lang)\r\n\r\n //check, 若有變更才commit\r\n if (true) {\r\n let _lang = get(vo, '$store.state.lang')\r\n if (lang !== _lang) {\r\n vo.$store.commit(vo.$store.types.UpdateLang, lang)\r\n // console.log('commit lang', lang)\r\n }\r\n }\r\n\r\n //genKpText, 切換lang得調用getKpLang重算kpText\r\n genKpText(lang)\r\n\r\n //forceUpdate\r\n forceUpdate()\r\n\r\n}\r\n\r\n\r\nfunction genKpText(lang) {\r\n // console.log('genKpText', lang)\r\n\r\n //kp\r\n let kp = {}\r\n\r\n //kpLang\r\n kp = {\r\n ...kp,\r\n ...kpLang,\r\n }\r\n\r\n //kpLangExt\r\n let kpLangExt = get(vo, '$store.state.webInfor.kpLangExt', {})\r\n // console.log('kpLangExt', kpLangExt)\r\n if (iseobj(kpLangExt)) {\r\n kp = {\r\n ...kp,\r\n ...kpLangExt,\r\n }\r\n }\r\n\r\n //webName\r\n let webName = get(vo, '$store.state.webInfor.webName', {})\r\n // console.log('webName', webName)\r\n if (iseobj(webName)) {\r\n kp = {\r\n ...kp,\r\n webName: {\r\n ...webName,\r\n },\r\n }\r\n }\r\n\r\n //webDescription\r\n let webDescription = get(vo, '$store.state.webInfor.webDescription', {})\r\n // console.log('webDescription', webDescription)\r\n if (iseobj(webDescription)) {\r\n kp = {\r\n ...kp,\r\n webDescription: {\r\n ...webDescription,\r\n },\r\n }\r\n }\r\n\r\n //kpText\r\n let kpText = {}\r\n each(kp, (v, k) => {\r\n kpText[k] = v[lang]\r\n })\r\n // console.log('kp', kp)\r\n // console.log('kpText', kpText)\r\n\r\n //commit\r\n vo.$store.commit(vo.$store.types.UpdateKpText, kpText)\r\n // console.log('commit kpText', kpText)\r\n\r\n}\r\n\r\n\r\nfunction getKpText(key) {\r\n // console.log('getKpText', key)\r\n\r\n //kpText\r\n let kpText = get(vo, '$store.state.kpText')\r\n // console.log('kpText', cloneDeep(kpText))\r\n\r\n //t\r\n let t = get(kpText, key, '')\r\n if (!isestr(t)) {\r\n t = key\r\n }\r\n\r\n return t\r\n}\r\n\r\n\r\nfunction gv(o, k, cv = null) {\r\n let r = get(o, k, '')\r\n if (!isestr(r)) {\r\n let def = getKpText('empty')\r\n return def\r\n }\r\n if (isfun(cv)) {\r\n r = cv(r)\r\n }\r\n return r\r\n}\r\n\r\n\r\nfunction syncHeight() {\r\n\r\n //heightToolbar\r\n let heightToolbar = get(vo, '$store.state.heightToolbar')\r\n\r\n //heightAppEff\r\n let heightAppEff = window.innerHeight - heightToolbar\r\n\r\n //commit\r\n // vo.$store.commit(vo.$store.types.UpdateHeightToolbar, heightToolbar)\r\n vo.$store.commit(vo.$store.types.UpdateHeightApp, window.innerHeight)\r\n vo.$store.commit(vo.$store.types.UpdateHeightAppEff, heightAppEff)\r\n\r\n return ''\r\n}\r\n\r\n\r\n// async function waitData(t = 0) {\r\n\r\n// //delay\r\n// if (t > 0) {\r\n// await delay(t)\r\n// }\r\n\r\n// //waitFun, 等待dsrl模組掛載\r\n// await waitFun(() => {\r\n// return iseobj(get(vo, '$dsrl'))\r\n// })\r\n\r\n// //等待前端第一次同步完畢數據\r\n// await waitFun(() => {\r\n// return get(vo, '$store.state.syncState')\r\n// })\r\n\r\n// }\r\n\r\n\r\nlet kpIcon = {\r\n warning: `data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAhCAYAAACxzQkrAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOwwAADsMBx2+oZAAAABZ0RVh0Q3JlYXRpb24gVGltZQAwOS8xOS8yNP52YhIAAAAcdEVYdFNvZnR3YXJlAEFkb2JlIEZpcmV3b3JrcyBDUzbovLKMAAADMklEQVRYha2WTWgTQRiGn0k2SU2KNQjmoiL+gGAVD/5gEelAkSKOiILei+hBRAQv/tBDsQiK1CJFDz331tNePAjRm60eBL0pXsSDF+dimmzbZDzsRJNmm+xPXliyOzP7zrNfvpn5hDGGJNJSHQJmAQHcLpbdL0n8RBIgLdVhYBHYb5u+AZeLZfdzXM9UbBpfC8AB/OgIe7+QxDA2kJZqAhgO6Bq2fbEU6y/TUuWB70BpkyG/gL3FsrsS1TtuhO53gcH23Y9jHDlCWqqd+Mmb6zHUA/YVy+7PKP5xIvQkBAx2zNOo5pEipKU6Bnzo6Kg3/N904PcdL5bdj2HniBqh2bYnITDVGmQcyDj+vRDd3+kXkJbqEjDS2mYqK2THTjO0MMfQwhzZsdOYSsfCGrHv9g9IS+UAz9oajUFkHPITV0mVSqRKJfITVxAZBzrT4Jn16A8QcBvY0w4EZDL+/mw8/xIpv60zLfdYj+RAWqrtwGRgpzHQaJm90QiKTlOT1isZEPAI2BpiXC9ttV5d1RVIS3UQuN4HmKZuWM94QMBMiDFRJKznptp0Mi3VGDDeR5imxq13eCB95iz0+JKEmtFj58IDkc5dI7jWaZcQ7cdFOhW0UwdpmHr6WiggLVUBmO4NA6bmYSpVEIMgBjGVKqbm+ZnSW9N2ru5AwANgR28gf9bKzDxry+9ZW35PZWa+ra+Hdti52m1bT3st1S7gK+HKi/+Ha73uP6fTiC0D3TbHjfKAA8Wy+6PZsDFCT0PDAGAQ2Qys12G97t8HnBtd1FEz/YuQluoEsBTFjXoDnDQ5u4o9940PF1wXddPJYtldBmg9gZ9HdTG1GoMPb5G9cBEAZ+9u/ky/QBTyUa2eY0ubFICWSgGnotEYxEAO59gRoAJUcI4fQQzkouRQU6csAykt1TZgKqqDn9Aeq6/fAQWgwOrrt5iqF3aVbdSUlmpI/B49vwiErujaZAxmbZ3syaMArC598gu0eEAAi+L36PkakVZWANRKFQCR35IEBqCaAl4mcUAIRCHvJ3IyGIBXjhHcEYYGcJMkkUomD5gziLut+9Bj4DKQJeLulkACWAUWi2X3HsBfLU4ARuGaUEMAAAAASUVORK5CYII=`,\r\n}\r\nfunction getIcon(icon) {\r\n let c = get(kpIcon, icon, '')\r\n if (!isestr(c)) {\r\n console.log(`invalid icon[${icon}]`)\r\n }\r\n return c\r\n}\r\n\r\n\r\nlet mUI = {\r\n\r\n setVo,\r\n\r\n updateConnState,\r\n updateLoading,\r\n // updateViewState,\r\n updateUserToken,\r\n updateUserSelf,\r\n forceUpdate,\r\n\r\n setLang,\r\n getKpText,\r\n\r\n gv,\r\n syncHeight,\r\n\r\n // waitData,\r\n\r\n getIcon,\r\n\r\n}\r\n\r\n\r\nexport default mUI\r\n","import get from 'lodash-es/get.js'\nimport find from 'lodash-es/find.js'\nimport isestr from 'wsemi/src/isestr.mjs'\r\n\r\n\r\nfunction mDataSelectorSchema(ds, opt = {}) {\r\n\r\n function getTableInforBy(keyFind, valueFind, keyPick) {\r\n let r = find(ds, { [keyFind]: valueFind })\r\n if (!r) {\r\n r = ''\r\n }\r\n if (isestr(keyPick)) {\r\n r = get(r, keyPick, '')\r\n }\r\n return r\r\n }\r\n\r\n function getTableChtByKey(valueFind) {\r\n return getTableInforBy('keyTable', valueFind, 'tableNameCht')\r\n }\r\n\r\n return {\r\n getTableInforBy,\r\n getTableChtByKey,\r\n }\r\n}\r\n\r\n\r\nexport default mDataSelectorSchema\r\n","//前後端共用函數區\r\nimport JSON5 from 'json5'\r\nimport get from 'lodash-es/get.js'\r\nimport each from 'lodash-es/each.js'\r\nimport map from 'lodash-es/map.js'\r\nimport join from 'lodash-es/join.js'\r\nimport size from 'lodash-es/size.js'\r\nimport find from 'lodash-es/find.js'\r\nimport filter from 'lodash-es/filter.js'\r\nimport cloneDeep from 'lodash-es/cloneDeep.js'\r\nimport takeRight from 'lodash-es/takeRight.js'\r\nimport dropRight from 'lodash-es/dropRight.js'\r\nimport sortBy from 'lodash-es/sortBy.js'\r\nimport sep from 'wsemi/src/sep.mjs'\r\nimport iseobj from 'wsemi/src/iseobj.mjs'\r\nimport isestr from 'wsemi/src/isestr.mjs'\r\nimport haskey from 'wsemi/src/haskey.mjs'\r\n\r\n\r\n// //dlm\r\n// let dlm = '/'\r\n\r\n\r\nfunction getNameNew(rows, key = 'name', nameBase = '', nameExt = '') {\r\n\r\n //hasName\r\n let hasName = (name) => {\r\n let b = false\r\n each(rows, (r) => {\r\n let _name = get(r, key, '')\r\n if (_name === name) {\r\n b = true\r\n return false //跳出\r\n }\r\n })\r\n return b\r\n }\r\n\r\n //nameNew\r\n let nameNew = ''\r\n let b = true\r\n let i = 0\r\n while (b) {\r\n i++\r\n let pre = ''\r\n if (isestr(nameBase)) {\r\n pre = `${nameBase} - `\r\n }\r\n nameNew = `${pre}${nameExt}(${i})` //vo.$t('pemiAddNameNew') vo.$t('pemiCopyNameNew')\r\n b = hasName(nameNew)\r\n }\r\n\r\n return nameNew\r\n}\r\n\r\n\r\n// function getAllBlocks(targets) {\r\n\r\n// //rs\r\n// let rs = map(targets, (v) => {\r\n\r\n// //text, parentId\r\n// let s = sep(v.id, dlm) //[tag:dlm]\r\n// let text = get(takeRight(s), 0) //取最後節點\r\n// s = dropRight(s, 1)\r\n// let parentId = join(s, dlm) //[tag:dlm] 取父節點\r\n\r\n// return {\r\n// ...v,\r\n// idTemp: v.id,\r\n// parentId,\r\n// text,\r\n// }\r\n// })\r\n// // console.log('rs', rs)\r\n\r\n// //sortBy\r\n// rs = sortBy(rs, 'order')\r\n// // console.log('rs sortBy', rs)\r\n\r\n// return rs\r\n// }\r\n\r\n\r\n// function getTreeBlocks(targets) {\r\n\r\n// //getAllBlocks\r\n// let blocks = getAllBlocks(targets)\r\n// // console.log('blocks', blocks)\r\n\r\n// //opt\r\n// let opt = {\r\n// bindKey: 'id',\r\n// bindParent: 'parentId',\r\n// bindChildren: 'children',\r\n// saveExtProps: true,\r\n// }\r\n\r\n// //composeToTree\r\n// let r\r\n// try {\r\n// r = composeToTree(blocks, opt)\r\n// }\r\n// catch (err) {\r\n// console.log(err)\r\n// }\r\n// // console.log('treeBlocks', cloneDeep(r))\r\n\r\n// return r\r\n// }\r\n\r\n\r\n// function getUserGroups(user, pemis) {\r\n\r\n// //userGroups\r\n// let ruleGroupsIds = get(user, 'ruleGroupsIds', '')\r\n\r\n// //sep\r\n// let s = sep(ruleGroupsIds, ';')\r\n\r\n// //gs\r\n// let gs = []\r\n// each(s, (id) => {\r\n// let g = find(pemis, { id })\r\n// if (iseobj(g)) {\r\n// gs.push(g)\r\n// }\r\n// })\r\n\r\n// //add pemis\r\n// gs = map(gs, (g) => {\r\n// let pemis = JSON5.parse(g.crules)\r\n// g.pemis = pemis\r\n// return g\r\n// })\r\n\r\n// return gs\r\n// }\r\n\r\n\r\n// function getTargetsByGroup(targets, group) {\r\n\r\n// //cloneDeep\r\n// targets = cloneDeep(targets)\r\n\r\n// //sortBy\r\n// targets = sortBy(targets, 'order')\r\n\r\n// //cloneDeep\r\n// group = cloneDeep(group)\r\n\r\n// //pemis\r\n// let pemis = JSON5.parse(group.crules)\r\n\r\n// //rulesDisplay\r\n// let rulesDisplay = {}\r\n// let ks = ['show', 'active']\r\n// each(ks, (k) => {\r\n\r\n// //___all___\r\n// let def = get(pemis, `___all___.${k}`)\r\n// def = (def === 'y') ? 'y' : 'n'\r\n\r\n// //other props\r\n// each(targets, (v) => {\r\n\r\n// //krule\r\n// let krule = v.id\r\n\r\n// //check\r\n// if (!rulesDisplay[krule]) {\r\n// rulesDisplay[krule] = {}\r\n// }\r\n\r\n// //rule\r\n// let rule = pemis[krule]\r\n\r\n// //r\r\n// let r = null\r\n\r\n// //b\r\n// let b = get(rule, `${k}`)\r\n// if (b === 'y' || b === 'n') {\r\n// r = b\r\n// }\r\n// else {\r\n// r = def\r\n// }\r\n\r\n// //save\r\n// rulesDisplay[krule][k] = r //因krule內含有「.」故不能用set\r\n\r\n// })\r\n\r\n// })\r\n// // console.log('rulesDisplay', rulesDisplay)\r\n\r\n// return rulesDisplay\r\n// }\r\n\r\n\r\nfunction getUserRules(user, grups, pemis, targets) {\r\n\r\n let cvKpToArr = (kp) => {\r\n let rs = []\r\n each(kp, (v, k) => {\r\n // console.log(k, v)\r\n let r = {\r\n name: k,\r\n }\r\n if (iseobj(v)) {\r\n r = {\r\n ...r,\r\n ...v,\r\n }\r\n }\r\n else {\r\n r = {\r\n ...r,\r\n isActive: v,\r\n }\r\n }\r\n rs.push(r)\r\n })\r\n return rs\r\n }\r\n\r\n let cvStrToArr = (c) => {\r\n\r\n //kp\r\n let kp = {}\r\n try {\r\n kp = JSON5.parse(c)\r\n // console.log('kp', kp)\r\n }\r\n catch (err) {\r\n console.log('c', c)\r\n console.log(err)\r\n }\r\n\r\n //arr\r\n let arr = []\r\n try {\r\n arr = cvKpToArr(kp)\r\n // console.log('arr', arr)\r\n }\r\n catch (err) {\r\n console.log('c', c)\r\n console.log('kp', kp)\r\n console.log(err)\r\n }\r\n\r\n return arr\r\n }\r\n\r\n let arrFinder = (arrSrc, arrPks, key) => {\r\n let rs = []\r\n each(arrSrc, (v) => {\r\n let tSrc = get(v, key, '')\r\n each(arrPks, (vv) => {\r\n let tPks = get(vv, key, '')\r\n if (tSrc === tPks) {\r\n rs.push({\r\n ...v,\r\n data: vv,\r\n })\r\n return false //跳出\r\n }\r\n })\r\n })\r\n return rs\r\n }\r\n\r\n let mergeRules = (rs) => {\r\n\r\n //ts\r\n let ts = []\r\n each(rs, (v) => {\r\n\r\n //mode\r\n let mode = get(v, 'mode', '')\r\n\r\n //check\r\n if (mode !== 'OR' && mode !== 'AND') {\r\n return true //跳出換下一個\r\n }\r\n\r\n //kpRule\r\n let rules = get(v, 'rules', [])\r\n let kpRule = {}\r\n each(rules, (vv) => {\r\n kpRule[vv.name] = vv.isActive\r\n })\r\n\r\n //push\r\n ts.push({\r\n mode,\r\n kpRule,\r\n })\r\n\r\n })\r\n\r\n //check\r\n if (size(ts) === 0) {\r\n return []\r\n }\r\n\r\n let objOR = (obj1, obj2) => {\r\n let kp = {}\r\n let objs = [obj1, obj2]\r\n each(objs, (obj) => {\r\n each(obj, (v, k) => {\r\n if (!haskey(kp, k)) {\r\n kp[k] = 'n'\r\n }\r\n if (kp[k] === 'y' || v === 'y') {\r\n kp[k] = 'y'\r\n }\r\n else {\r\n kp[k] = 'n'\r\n }\r\n })\r\n })\r\n return kp\r\n }\r\n\r\n let objAND = (obj1, obj2) => {\r\n let kp = cloneDeep(obj1)\r\n let objs = [obj2]\r\n each(objs, (obj) => {\r\n each(obj, (v, k) => {\r\n if (!haskey(kp, k)) {\r\n kp[k] = 'n'\r\n }\r\n if (kp[k] === 'y' && v === 'y') {\r\n kp[k] = 'y'\r\n }\r\n else {\r\n kp[k] = 'n'\r\n }\r\n })\r\n })\r\n return kp\r\n }\r\n\r\n let tsOR = filter(ts, { mode: 'OR' })\r\n let tsAND = filter(ts, { mode: 'AND' })\r\n // console.log('tsOR', tsOR)\r\n // console.log('tsAND', tsAND)\r\n\r\n //kpRuleFin\r\n let kpRuleFin = null\r\n if (size(tsOR) > 0) {\r\n kpRuleFin = get(tsOR, `0.kpRule`)\r\n }\r\n else if (size(tsAND) > 0) {\r\n kpRuleFin = get(tsAND, `0.kpRule`)\r\n }\r\n // console.log('kpRuleFin(0)', kpRuleFin)\r\n\r\n //or\r\n each(tsOR, (t) => {\r\n let kpRule = get(t, 'kpRule', {})\r\n kpRuleFin = objOR(kpRuleFin, kpRule)\r\n })\r\n // console.log('kpRuleFin(or)', kpRuleFin)\r\n\r\n //and\r\n each(tsAND, (t, kt) => {\r\n let kpRule = get(t, 'kpRule', {})\r\n // console.log(kt, '(and)(in) kpRule', kpRule)\r\n // console.log(kt, '(and)(in) kpRuleFin', kpRuleFin)\r\n kpRuleFin = objAND(kpRuleFin, kpRule)\r\n // console.log(kt, '(and)(out) kpRuleFin', kpRuleFin)\r\n })\r\n // console.log('kpRuleFin(and)', kpRuleFin)\r\n\r\n //rulesFin\r\n let rulesFin = []\r\n each(kpRuleFin, (v, k) => {\r\n rulesFin.push({\r\n name: k,\r\n isActive: v,\r\n })\r\n })\r\n // console.log('rulesFin', rulesFin)\r\n\r\n return rulesFin\r\n }\r\n\r\n //cgrups\r\n let cgrups = get(user, 'cgrups', '')\r\n // console.log('cgrups', cgrups)\r\n\r\n //cvStrToArr\r\n let _grups = cvStrToArr(cgrups)\r\n // console.log('cvStrToArr _grups', _grups)\r\n\r\n //_grups\r\n _grups = arrFinder(_grups, grups, 'name')\r\n // console.log('arrFinder _grups', cloneDeep(_grups))\r\n\r\n //filter\r\n _grups = filter(_grups, { isActive: 'y' })\r\n // console.log('filter _grups', cloneDeep(_grups))\r\n\r\n //proc _pemis\r\n _grups = map(_grups, (v) => {\r\n let cpemis = get(v, 'data.cpemis', '')\r\n let _pemis = cvStrToArr(cpemis)\r\n _pemis = filter(_pemis, { isActive: 'y' })\r\n _pemis = arrFinder(_pemis, pemis, 'name')\r\n v.data._pemis = _pemis\r\n return v\r\n })\r\n // console.log('proc _pemis _grups', cloneDeep(_grups))\r\n\r\n //proc _rules\r\n _grups = map(_grups, (v) => {\r\n let _pemis = get(v, 'data._pemis', [])\r\n _pemis = map(_pemis, (vv) => {\r\n let crules = get(vv, 'data.crules', '')\r\n let _rules = cvStrToArr(crules)\r\n vv.data._rules = _rules\r\n return vv\r\n })\r\n v.data._pemis = _pemis\r\n return v\r\n })\r\n // console.log('proc _rules _grups', cloneDeep(_grups))\r\n\r\n //merge _rules\r\n let _rules = []\r\n if (true) {\r\n\r\n //rrs\r\n let rrs = []\r\n each(_grups, (v) => {\r\n\r\n let modeG = v.mode\r\n let _pemis = v.data._pemis\r\n\r\n //rs\r\n let rs = []\r\n each(_pemis, (vv) => {\r\n let modeP = vv.mode\r\n let _rules = vv.data._rules\r\n rs.push({\r\n mode: modeP,\r\n rules: _rules,\r\n })\r\n\r\n })\r\n // console.log('rs', rs)\r\n\r\n //mergeRules\r\n let rulesP = mergeRules(rs)\r\n // console.log('rulesP', rulesP)\r\n\r\n //t\r\n let t = {\r\n mode: modeG,\r\n rules: rulesP,\r\n }\r\n\r\n //push\r\n rrs.push(t)\r\n\r\n })\r\n // console.log('rrs', rrs)\r\n\r\n //mergeRules\r\n let rulesG = mergeRules(rrs)\r\n // console.log('rulesG', rulesG)\r\n\r\n //save\r\n _rules = rulesG\r\n\r\n }\r\n // console.log('merge _rules', cloneDeep(_rules))\r\n\r\n //expand _rules\r\n if (true) {\r\n let kp = {}\r\n each(_rules, (v) => {\r\n kp[v.name] = v.isActive\r\n })\r\n each(targets, (t) => {\r\n // console.log('t', t)\r\n if (!haskey(kp, t.id)) {\r\n kp[t.id] = 'n'\r\n }\r\n })\r\n let rs = []\r\n each(kp, (v, k) => {\r\n let r = {\r\n name: k,\r\n isActive: v,\r\n }\r\n rs.push(r)\r\n })\r\n _rules = rs\r\n }\r\n // console.log('expand _rules', cloneDeep(_rules))\r\n\r\n return {\r\n grups: _grups,\r\n rules: _rules,\r\n }\r\n}\r\n\r\n\r\nexport {\r\n // atSep,\r\n // atJoin,\r\n // atParse,\r\n // atMerge,\r\n // atRemove,\r\n getNameNew,\r\n // getAllBlocks,\r\n // getTreeBlocks,\r\n // getUserGroups,\r\n // getTargetsByGroup,\r\n getUserRules\r\n}\r\n","import Vue from 'vue'\r\nimport get from 'lodash-es/get.js'\r\nimport WServHapiClient from 'w-serv-hapi/src/WServHapiClient.mjs'\r\nimport WAlert from 'w-component-vue/src/components/WAlert.mjs'\r\nimport domMutation from 'w-component-vue/src/js/domMutation.mjs'\r\nimport domResize from 'w-component-vue/src/js/domResize.mjs'\r\nimport domDragDrop from 'w-component-vue/src/js/domDragDrop.mjs'\r\nimport App from './App.vue'\r\nimport store from './store/index.mjs'\r\nimport ui from './plugins/mUI.mjs'\r\nimport mDataSelectorSchema from './plugins/mDataSelectorSchema.mjs'\r\nimport * as s from './plugins/mShare.mjs'\r\nimport ds from './schema/index.mjs'\r\n// console.log('ds', ds)\r\n\r\n\r\n//不提示vue產品\r\nVue.config.productionTip = false\r\n\r\n//$alert\r\nVue.prototype.$alert = function() {\r\n let [msg, type] = arguments\r\n console.log(msg, type)\r\n if (msg !== 'close') {\r\n WAlert(msg, type)\r\n }\r\n}\r\n\r\n//dssm\r\nlet dssm = mDataSelectorSchema(ds)\r\n\r\n//prototype\r\nVue.prototype.$ui = ui\r\nVue.prototype.$t = ui.getKpText\r\nVue.prototype.$s = s\r\nVue.prototype.$dssm = dssm\r\nVue.prototype.$ds = ds\r\nVue.prototype.$dg = {}\r\n\r\n//directive\r\nVue.directive('domresize', domResize())\r\nVue.directive('dommutation', domMutation())\r\nVue.directive('domdragdrop', domDragDrop())\r\n\r\n//WServHapiClient\r\n// let bFirstSync = false //不需要bFirstSync, 由getWebInfor結束代表第1次完成同步\r\nWServHapiClient({\r\n showLog: false,\r\n url: window.location.origin + window.location.pathname,\r\n useWaitToken: true,\r\n apiName: 'api',\r\n tokenType: 'Bearer',\r\n getToken: () => {\r\n let token = get(Vue.prototype, `$store.state.userToken`, '')\r\n // console.log('getToken', token)\r\n return token\r\n },\r\n getServerMethods: (_fapi) => {\r\n // console.log('$fapi', _fapi)\r\n\r\n //save $fapi\r\n Vue.prototype.$fapi = _fapi\r\n\r\n //getWebInfor\r\n _fapi.getWebInfor() //已有fapi時優先取得web資訊\r\n .then((wi) => {\r\n // console.log('$fapi getWebInfor', wi)\r\n\r\n Vue.prototype.$store.commit(Vue.prototype.$store.types.UpdateWebInfor, wi)\r\n ui.setLang(null, 'get webInfor') //因更新webInfor可取得webName與webDescription, 得要重刷語系才能依照語言取得顯示文字\r\n\r\n //commit syncState\r\n Vue.prototype.$store.commit(Vue.prototype.$store.types.UpdateSyncState, true)\r\n\r\n })\r\n .catch((err) => {\r\n console.log(err)\r\n })\r\n\r\n },\r\n recvData: (r) => {\r\n // console.log('sync data', r.tableName, r.data)\r\n Vue.prototype.$store.commit(Vue.prototype.$store.types.UpdateTableData, r)\r\n },\r\n})\r\n\r\n//new\r\nnew Vue({\r\n store,\r\n render: h => h(App)\r\n}).$mount('#app')\r\n\r\n","function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = 9297;\nmodule.exports = webpackEmptyAsyncContext;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t524: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkw_web_perm\"] = self[\"webpackChunkw_web_perm\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [504], function() { return __webpack_require__(186); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["render","_vm","this","_c","_self","directives","name","rawName","on","resize","ready","_e","style","concat","attrs","staticRenderFns","loading","dialogWidth","$event","resizeDialog","scopedSlots","_u","key","fn","barPadding","staticStyle","msg","_v","_s","$t","barWidth","proxy","components","WDialog","WProgressBar","props","data","dialogWidthMax","mounted","vo","Vue","prototype","$dg","setLoadingWinBarMessage","setMessage","computed","b","get","methods","w","window","innerWidth","Math","max","min","component","bShow","content","clickBtn","WConfirm","pm","showCheckYesNo","show","genPm","mode","resolve","reject","clickUnit","showCheckYes","connState","img_connection","img_logout","img_dissconnection","img_deny","heightToolbar","webLogo","webName","showLangSelect","keysLang","lang","toggleLang","getLangText","item","syncState","panelHeight","drawerWidth","drawerWidthMin","drawerWidthMax","height","menus","menuActive","v","h","menu","menuKey","drawer","mdiArrowLeftBoldHexagonOutline","width","mdiArrowRightBoldHexagonOutline","model","value","callback","$$v","expression","changeParams","resizePanel","resizeHead","mdiGamepadCircle","showIsEditable","isEditable","mdiTableHeadersEye","tabKeysPick","toggleTabKeys","getHead","tabKeysShow","mdiPlus","addItem","hasItemCheckOne","mdiContentCopy","copyItem","hasItemsCheck","mdiTrashCanOutline","deleteItemsCheck","isModified","mdiCloudUploadOutline","saveTargets","firstLoading","items","ref","contentHeight","opt","WIcon","WSwitch","WButtonCircle","WPopup","WInputCheckbox","WAggridVueDyn","type","Boolean","default","mdiStackOverflow","mdiAccountGroupOutline","mdiBallotRecountOutline","mdiPencilOutline","panelWidth","headHeight","firstSetting","tabKeys","widthTargetId","widthTargetDescription","itemsCheck","showModeEditTargets","modeEditTargets","webInfor","wi","targets","rs","sortBy","pemis","grups","users","cloneDeep","genOpt","length","size","errItemsById","rows","kpErr","kpId","each","k","id","isestr","haskey","isError","c","iseobj","errItemsByName","kpHead","kp","snew","offsetWidth","offsetHeight","head","ks","kpCellEditable","kpRowDrag","kpHeadCheckBox","kpHeadHide","tabKeysHide","arrPull","language","keys","defCellEditable","defHeadFilter","defCellAlignH","kpHeadFixLeft","defHeadMinWidth","kpHeadWidth","isnum","cdbl","kpHeadFilterType","kpCellRender","err","cstr","$ui","getIcon","rowsChange","rowChecked","refresh","cmp","showKeys","r","$ds","funNew","$s","getNameNew","userId","timeCreate","userIdUpdate","timeUpdate","_toConsumableArray","console","log","$alert","tar","tarId","row","nameOld","_r","filter","vv","core","_core","apply","arguments","_asyncToGenerator","_regeneratorRuntime","_callee","errTemp","_context","prev","next","updateLoading","abrupt","$fapi","updateTargets","catch","stop","finally","savePemis","mdiVectorPolylinePlus","mdiCheckboxMarkedCircle","widthPemisName","widthPemisDescription","showVePemiBlngGrupsById","showVeCrulesById","showModeEditPemis","modeEditPemis","useGrups","map","g","kpPemi","JSON5","cpemis","kpPemiGrup","isActive","push","grup","pemi","kpUsePemiGrup","_kp","genItems","kpName","kpHeadFilter","kpHeadSort","kpHeadFocusHighlight","t","getCrulesText","p","gs","belongGrups","n","replace","fltKpRule","kpt","crules","kpRule","vs","crulesText","showVePemiBlngGrups","then","kr","showVeCrules","set","updatePemis","mdiSelectGroup","saveGrups","widthGrupsName","widthGrupsDescription","showVeGrupBlngUsersById","showVeCpemisById","showModeEditGrups","modeEditGrups","useUsers","u","kpGrup","cgrups","kpGrupUser","user","kpUseGrupUser","getCpemisText","us","belongUsers","fltKpPemi","cpemisText","showVeGrupBlngUsers","showVeCpemis","updateGrups","saveUsers","widthUsersName","widthUsersEmail","widthUsersDescription","showVeCgrupsById","toggleItemIsAdminById","toggleItemIsActiveById","showModeEditUsers","modeEditUsers","errItemsByEmail","kpEmail","email","isEmail","getCgrupsText","cgrupsText","showVeCgrups","updateUsers","WDrawer","WListVertical","LayoutContentTargets","LayoutContentPemis","LayoutContentGrups","LayoutContentUsers","ms","text","icon","find","clientWidth","clientHeight","WTextSelect","LayoutContent","mdiMenu","kpLangSelect","showLanguage","setLang","document","title","mdiFormatListCheckbox","fullscreen","useHeaderBtns","clickBtns","clickSave","clickClose","mdiCheckboxMultipleMarked","toggleItemsEnableAllYes","mdiCheckboxMultipleBlankOutline","toggleItemsEnableAllNo","mdiCodeTagsCheck","toggleItemsEnableAllInv","mdiDeleteForever","mdiFullscreen","mdiFullscreenExit","mdiFileTree","toggleItemEnableById","kpHeaderBtns","toFullscreen","tooltip","evName","toNormalscreen","bts","contentHeightMax","autoFitColumn","getDisplayData","_enable","enable","kpRow","rowsEff","delay","JSON","stringify","showVeCpemisToggleItemsEnableAllYes","showVeCpemisToggleItemsEnableAllNo","showVeCpemisToggleItemsEnableAllInv","showVeCpemisToggleItemModeByName","showVeCpemisToggleItemEnableByName","showVeCgrupsToggleItemsEnableAllYes","showVeCgrupsToggleItemsEnableAllNo","showVeCgrupsToggleItemsEnableAllInv","showVeCgrupsToggleItemModeByName","showVeCgrupsToggleItemEnableByName","grupName","showVeGrupBlngUsersToggleItemsEnableAllYes","showVeGrupBlngUsersToggleItemsEnableAllNo","showVeGrupBlngUsersToggleItemsEnableAllInv","showVeGrupBlngUsersToggleItemModeByName","showVeGrupBlngUsersToggleItemEnableByName","csp","csnp","csep","csa","csna","csea","fltKpGrup","_isActive","_mode","_objectSpread","grupsNames","join","revRows","ku","_saveUsers","_x","_callee2","usersNew","_context2","kpGrupNew","isEqual","pemiName","showVePemiBlngGrupsToggleItemsEnableAllYes","showVePemiBlngGrupsToggleItemsEnableAllNo","showVePemiBlngGrupsToggleItemsEnableAllInv","showVePemiBlngGrupsToggleItemModeByName","showVePemiBlngGrupsToggleItemEnableByName","pemisNames","kg","_saveGrups","grupsNew","kpPemiNew","LoadingWinBar","CheckYesNo","CheckYes","LayoutState","Layout","VeCrules","VeCpemis","VeCgrups","VeGrupBlngUsers","VePemiBlngGrups","ll","beforeMount","setVo","loginSuccess","updateConnState","updateUserToken","token","updateUserSelf","loginError","urlRedirect","Error","isDev","setTimeout","location","href","wui","timeWaitAnimation","params","login","afterGetUser","afterLogin","$vo","b1","b2","syncHeight","UpdateWebInfor","UpdateLang","UpdateKpText","UpdateConnState","UpdateSyncState","UpdateLoading","UpdateTableData","UpdateData","UpdateHeightApp","UpdateHeightAppEff","UpdateHeightToolbar","UpdateMenu","UpdateUserToken","UpdateUserSelf","keyTable","tableNameCht","tableNameEng","settings","pk","order","description","from","ndata","undefined","o","dtmapping","genIDSeq","nowms2str","funTest","_ref","_ref2","_slicedToArray","dtpick","tab","isAdmin","cs","ds","build","useCreateStorage","state","hostname","origin","leftDrawerWidth","heightApp","heightAppEff","userToken","userSelf","kpText","mutations","_mutations","_defineProperty","types","tableName","path","use","Vuex","st","getters","actions","strict","$store","kpLang","csIng","eng","cht","csLogin","csLogout","csErrConn","csErrLogin","aggridLanguage","systemMessage","ok","no","yes","empty","waitingData","isEditabled","saveChanges","save","close","delete","cancel","screenFull","screenNormal","checkAllYes","checkAllNo","checkAllInv","operMode","operPemiEnable","operGrupEnable","processing","anUnexpectedErrorOccurred","unknow","username","modeEdit","showTabCols","belongPemis","belongGrupsNames","belongPemisNames","errInNames","errInEmails","menuTreeShow","menuTreeHide","mmTargets","mmTargetsMsg","mmPemis","mmPemisMsg","mmGrups","mmGrupsMsg","mmUsers","mmUsersMsg","targetId","targetIdEmpty","targetIdDuplicate","targetAddEmpty","targetAdd","targetAddNameNew","targetAddIdNew","targetCopy","targetCopyNameNew","targetDeleteCheckTargets","targetEnable","targetClearTargetsFail","targetSaveTargetsFail","targetSaveTargetsSuccess","pemiNameEmpty","pemiNameDuplicate","pemiAddEmpty","pemiAdd","pemiAddNameNew","pemiAddIdNew","pemiCopy","pemiCopyNameNew","pemiDeleteCheckPemis","pemiCrules","pemiEditBlngGrupsNoPemiId","pemiEditBlngGrupsNoPemiData","pemiEditCrules","pemiEditCrulesForDisplay","pemiEditCrulesNoPemiId","pemiEditCrulesNoPemiData","pemiRnderCrulesNoRule","pemiRnderCrulesHasNRule","pemiClearPemisFail","pemiSavePemisFail","pemiSavePemisSuccess","pemiBlngEditGrups","pemiBlngEditGrupsForDisplay","pemiBlngRnderNoGrup","pemiBlngRnderGrups","pemiBlngPemiNow","pemiBlngEditNoName","pemiBlngEditNoPemi","pemiBlngDeleteCheckPemis","cruleEditNoTargetId","cruleEditNoTargetData","cruleDeleteCheckTargets","grupNameEmpty","grupNameDuplicate","grupAddEmpty","grupAdd","grupAddNameNew","grupAddIdNew","grupCopy","grupCopyNameNew","grupDeleteCheckGrups","grupCpemis","grupEditBlngNoGrupId","grupEditBlngNoGrupData","grupEditCpemis","grupEditCpemisForDisplay","grupRnderCpemisNoPermission","grupRnderCpemisHasNPermissions","grupClearGrupsFail","grupSaveGrupsEmpty","grupSaveGrupsFail","grupSaveGrupsSuccess","grupBlngEditUsers","grupBlngEditUsersForDisplay","grupBlngRnderNoUser","grupBlngRnderUsers","grupBlngGrupNow","grupBlngEditNoGrupName","grupBlngEditNoGrupData","grupBlngDeleteCheckGrups","cpemiEditNoName","cpemiEditNoTarget","cpemiDeleteCheckTargets","userName","userNameEmpty","userNameDuplicate","userEmailEmpty","userEmailError","userEmailDuplicate","userAddEmpty","userAdd","userAddNameNew","userAddIdNew","userCopy","userCopyNameNew","userDeleteCheckUsers","userCgrups","userEditCgrups","userEditCgrupsForDisplay","userEditCgrupsNoUserId","userEditCgrupsNoUserData","userSaveUsersEmpty","userSaveUsersFail","userSaveUsersSuccess","userEditNoUserId","userEditNoUserData","userRnderCgrupsNoGroup","userRnderCgrupsHasNGroups","cgrupEditNoName","cgrupEditNoPemi","cgrupDeleteCheckPemis","allDefaults","active","showChildren","hideChildren","activateChildren","deactivateChildren","isUsernameEmpty","failedToSaveUser","successfulToSaveUser","vObj","commit","forceUpdate","broadcast","chs","$forceUpdate","$children","validLang","getLang","_lang","genKpText","kpLangExt","webDescription","getKpText","gv","cv","def","isfun","innerHeight","kpIcon","warning","mUI","mDataSelectorSchema","getTableInforBy","keyFind","valueFind","keyPick","getTableChtByKey","nameBase","nameExt","hasName","_name","nameNew","i","pre","getUserRules","cvKpToArr","cvStrToArr","arr","arrFinder","arrSrc","arrPks","tSrc","tPks","mergeRules","ts","rules","objOR","obj1","obj2","objs","obj","objAND","tsOR","tsAND","kpRuleFin","kt","rulesFin","_grups","_pemis","_rules","rrs","modeG","modeP","rulesP","rulesG","config","productionTip","_arguments","Array","slice","call","WAlert","dssm","ui","s","$dssm","directive","domResize","domMutation","domDragDrop","WServHapiClient","showLog","url","pathname","useWaitToken","apiName","tokenType","getToken","getServerMethods","_fapi","getWebInfor","recvData","store","App","$mount","webpackEmptyAsyncContext","req","Promise","e","code","module","exports","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","m","deferred","O","result","chunkIds","priority","notFulfilled","Infinity","fulfilled","j","Object","every","splice","getter","__esModule","d","a","definition","defineProperty","enumerable","globalThis","Function","prop","hasOwnProperty","Symbol","toStringTag","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","self","forEach","bind","__webpack_exports__"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"js/app-legacy.54c06748.js","mappings":"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","sources":["webpack://w-web-perm/./src/App.vue","webpack://w-web-perm/./src/components/Common/LoadingWinBar.vue","webpack://w-web-perm/src/components/Common/LoadingWinBar.vue","webpack://w-web-perm/./src/components/Common/LoadingWinBar.vue?20f2","webpack://w-web-perm/./src/components/Common/LoadingWinBar.vue?0bae","webpack://w-web-perm/./src/components/Common/CheckYesNo.vue","webpack://w-web-perm/src/components/Common/CheckYesNo.vue","webpack://w-web-perm/./src/components/Common/CheckYesNo.vue?0786","webpack://w-web-perm/./src/components/Common/CheckYesNo.vue?5d88","webpack://w-web-perm/./src/components/Common/CheckYes.vue","webpack://w-web-perm/src/components/Common/CheckYes.vue","webpack://w-web-perm/./src/components/Common/CheckYes.vue?6829","webpack://w-web-perm/./src/components/Common/CheckYes.vue?d003","webpack://w-web-perm/./src/components/LayoutState.vue","webpack://w-web-perm/src/components/LayoutState.vue","webpack://w-web-perm/./src/components/LayoutState.vue?4eb5","webpack://w-web-perm/./src/components/LayoutState.vue?272c","webpack://w-web-perm/./src/components/Layout.vue","webpack://w-web-perm/./src/components/LayoutContent.vue","webpack://w-web-perm/./src/components/LayoutContentTargets.vue","webpack://w-web-perm/src/components/LayoutContentTargets.vue","webpack://w-web-perm/./src/components/LayoutContentTargets.vue?8196","webpack://w-web-perm/./src/components/LayoutContentTargets.vue?1e0d","webpack://w-web-perm/./src/components/LayoutContentPemis.vue","webpack://w-web-perm/src/components/LayoutContentPemis.vue","webpack://w-web-perm/./src/components/LayoutContentPemis.vue?2db1","webpack://w-web-perm/./src/components/LayoutContentPemis.vue?628d","webpack://w-web-perm/./src/components/LayoutContentGrups.vue","webpack://w-web-perm/src/components/LayoutContentGrups.vue","webpack://w-web-perm/./src/components/LayoutContentGrups.vue?378c","webpack://w-web-perm/./src/components/LayoutContentGrups.vue?82ba","webpack://w-web-perm/./src/components/LayoutContentUsers.vue","webpack://w-web-perm/src/components/LayoutContentUsers.vue","webpack://w-web-perm/./src/components/LayoutContentUsers.vue?6395","webpack://w-web-perm/./src/components/LayoutContentUsers.vue?9c9b","webpack://w-web-perm/src/components/LayoutContent.vue","webpack://w-web-perm/./src/components/LayoutContent.vue?07f8","webpack://w-web-perm/./src/components/LayoutContent.vue?a8dd","webpack://w-web-perm/src/components/Layout.vue","webpack://w-web-perm/./src/components/Layout.vue?620d","webpack://w-web-perm/./src/components/Layout.vue?6d15","webpack://w-web-perm/./src/components/VeCrules.vue","webpack://w-web-perm/src/components/VeCrules.vue","webpack://w-web-perm/./src/components/VeCrules.vue?f8db","webpack://w-web-perm/./src/components/VeCrules.vue?a6fe","webpack://w-web-perm/./src/components/VeCpemis.vue","webpack://w-web-perm/src/components/VeCpemis.vue","webpack://w-web-perm/./src/components/VeCpemis.vue?6066","webpack://w-web-perm/./src/components/VeCpemis.vue?5c83","webpack://w-web-perm/./src/components/VeCgrups.vue","webpack://w-web-perm/src/components/VeCgrups.vue","webpack://w-web-perm/./src/components/VeCgrups.vue?74e5","webpack://w-web-perm/./src/components/VeCgrups.vue?50c0","webpack://w-web-perm/./src/components/VeGrupBlngUsers.vue","webpack://w-web-perm/src/components/VeGrupBlngUsers.vue","webpack://w-web-perm/./src/components/VeGrupBlngUsers.vue?16e5","webpack://w-web-perm/./src/components/VeGrupBlngUsers.vue?b8b8","webpack://w-web-perm/./src/components/VePemiBlngGrups.vue","webpack://w-web-perm/src/components/VePemiBlngGrups.vue","webpack://w-web-perm/./src/components/VePemiBlngGrups.vue?349f","webpack://w-web-perm/./src/components/VePemiBlngGrups.vue?f761","webpack://w-web-perm/src/App.vue","webpack://w-web-perm/./src/App.vue?c036","webpack://w-web-perm/./src/App.vue?0e40","webpack://w-web-perm/./src/store/types.mjs","webpack://w-web-perm/./src/schema/tables/grups.mjs","webpack://w-web-perm/./src/schema/tables/pemis.mjs","webpack://w-web-perm/./src/schema/tables/targets.mjs","webpack://w-web-perm/./src/schema/tables/users.mjs","webpack://w-web-perm/./src/schema/index.mjs","webpack://w-web-perm/./src/store/mutations.mjs","webpack://w-web-perm/./src/store/index.mjs","webpack://w-web-perm/./src/plugins/mLang.mjs","webpack://w-web-perm/./src/plugins/mUI.mjs","webpack://w-web-perm/./src/plugins/mDataSelectorSchema.mjs","webpack://w-web-perm/./src/plugins/mShare.mjs","webpack://w-web-perm/./src/main.js","webpack://w-web-perm/./node_modules/w-converhp/src/ lazy strict namespace object","webpack://w-web-perm/webpack/bootstrap","webpack://w-web-perm/webpack/runtime/chunk loaded","webpack://w-web-perm/webpack/runtime/compat get default export","webpack://w-web-perm/webpack/runtime/define property getters","webpack://w-web-perm/webpack/runtime/global","webpack://w-web-perm/webpack/runtime/hasOwnProperty shorthand","webpack://w-web-perm/webpack/runtime/make namespace object","webpack://w-web-perm/webpack/runtime/jsonp chunk loading","webpack://w-web-perm/webpack/startup"],"sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{directives:[{name:\"domresize\",rawName:\"v-domresize\"}],on:{\"domresize\":_vm.resize}},[(!_vm.ready)?_c('LayoutState',{style:(`opacity:${_vm.ready?0:1};`)}):_vm._e(),_c('transition',{attrs:{\"enter-active-class\":\"fade-enter-active\",\"leave-active-class\":\"fade-leave-active\"}},[(_vm.ready)?_c('Layout'):_vm._e()],1),_c('LoadingWinBar'),_c('CheckYesNo'),_c('CheckYes'),_c('VeCrules'),_c('VeCpemis'),_c('VeCgrups'),_c('VeGrupBlngUsers'),_c('VePemiBlngGrups')],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('WDialog',{attrs:{\"show\":_vm.loading,\"maxWidth\":_vm.dialogWidth},on:{\"update:show\":function($event){_vm.loading=$event},\"resize\":_vm.resizeDialog},scopedSlots:_vm._u([{key:\"panel\",fn:function(){return [_c('div',{style:(`padding:${_vm.barPadding-5}px ${_vm.barPadding}px ${_vm.barPadding}px ${_vm.barPadding}px;`)},[_c('div',{staticStyle:{\"padding-bottom\":\"3px\",\"font-size\":\"0.9rem\",\"color\":\"#666\"}},[(_vm.msg!=='')?_c('span',[_vm._v(_vm._s(_vm.msg))]):_c('span',[_vm._v(_vm._s(_vm.$t('processing')))])]),_c('WProgressBar',{style:(`width:${_vm.barWidth}px;`),attrs:{\"height\":3,\"enableContinuous\":true,\"progColor\":'deep-purple lighten-1',\"progBackgroundColor\":'deep-purple lighten-4'}})],1)]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <WDialog\r\n :show.sync=\"loading\"\r\n :maxWidth=\"dialogWidth\"\r\n @resize=\"resizeDialog\"\r\n >\r\n\r\n <template v-slot:panel>\r\n\r\n <div :style=\"`padding:${barPadding-5}px ${barPadding}px ${barPadding}px ${barPadding}px;`\">\r\n\r\n\r\n <div style=\"padding-bottom:3px; font-size:0.9rem; color:#666;\">\r\n\r\n <span v-if=\"msg!==''\">{{msg}}</span>\r\n\r\n <span v-else>{{$t('processing')}}</span>\r\n\r\n </div>\r\n\r\n <WProgressBar\r\n :style=\"`width:${barWidth}px;`\"\r\n :height=\"3\"\r\n :enableContinuous=\"true\"\r\n :progColor=\"'deep-purple lighten-1'\"\r\n :progBackgroundColor=\"'deep-purple lighten-4'\"\r\n ></WProgressBar>\r\n\r\n </div>\r\n\r\n </template>\r\n\r\n </WDialog>\r\n</template>\r\n\r\n<script>\r\nimport Vue from 'vue'\r\nimport get from 'lodash-es/get.js'\r\nimport WDialog from 'w-component-vue/src/components/WDialog.vue'\r\nimport WProgressBar from 'w-component-vue/src/components/WProgressBar.vue'\r\n\r\n\r\nexport default {\r\n components: {\r\n WDialog,\r\n WProgressBar,\r\n },\r\n props: {\r\n },\r\n data: function() {\r\n return {\r\n\r\n dialogWidth: 0,\r\n dialogWidthMax: 600,\r\n\r\n barPadding: 20,\r\n barWidth: 0,\r\n msg: '',\r\n\r\n }\r\n },\r\n mounted: function() {\r\n //console.log('mounted')\r\n\r\n let vo = this\r\n\r\n //set\r\n Vue.prototype.$dg.setLoadingWinBarMessage = vo.setMessage\r\n\r\n },\r\n computed: {\r\n\r\n loading: function() {\r\n let vo = this\r\n let b = get(vo, `$store.state.loading`)\r\n // console.log('loading', b)\r\n return b\r\n },\r\n\r\n },\r\n methods: {\r\n\r\n setMessage: function(msg) {\r\n this.msg = msg\r\n },\r\n\r\n resizeDialog: function(msg) {\r\n // console.log('methods resizeDialog', msg)\r\n\r\n let vo = this\r\n\r\n let w = window.innerWidth\r\n // console.log('window.innerWidth', window.innerWidth)\r\n\r\n //dialogWidth\r\n let dialogWidth = w - vo.barPadding * 2\r\n dialogWidth = Math.max(dialogWidth, 0)\r\n dialogWidth = Math.min(dialogWidth, vo.dialogWidthMax)\r\n vo.dialogWidth = dialogWidth\r\n // console.log('dialogWidth', dialogWidth)\r\n\r\n //barWidth\r\n let barWidth = dialogWidth - vo.barPadding * 2\r\n barWidth = Math.max(barWidth, 0)\r\n vo.barWidth = barWidth\r\n // console.log('barWidth', barWidth)\r\n\r\n },\r\n\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LoadingWinBar.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LoadingWinBar.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./LoadingWinBar.vue?vue&type=template&id=9bcb4aee&scoped=true\"\nimport script from \"./LoadingWinBar.vue?vue&type=script&lang=js\"\nexport * from \"./LoadingWinBar.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"9bcb4aee\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('WConfirm',{attrs:{\"show\":_vm.bShow,\"title\":_vm.$t('systemMessage'),\"content\":_vm.content,\"_contentColor\":'white',\"_contentIconColor\":'white',\"_contentBackgroundColor\":'orange lighten-5',\"_titleColor\":'white',\"headerBackgroundColor\":'grey lighten-3',\"noBtnText\":_vm.$t('no'),\"yesBtnText\":_vm.$t('yes')},on:{\"update:show\":function($event){_vm.bShow=$event},\"click-no\":function($event){return _vm.clickBtn(false)},\"click-yes\":function($event){return _vm.clickBtn(true)}}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <WConfirm\r\n :show.sync=\"bShow\"\r\n :title=\"$t('systemMessage')\"\r\n :content=\"content\"\r\n :_contentColor=\"'white'\"\r\n :_contentIconColor=\"'white'\"\r\n :_contentBackgroundColor=\"'orange lighten-5'\"\r\n :_titleColor=\"'white'\"\r\n :headerBackgroundColor=\"'grey lighten-3'\"\r\n :noBtnText=\"$t('no')\"\r\n :yesBtnText=\"$t('yes')\"\r\n @click-no=\"clickBtn(false)\"\r\n @click-yes=\"clickBtn(true)\"\r\n ></WConfirm>\r\n</template>\r\n\r\n<script>\r\nimport Vue from 'vue'\r\nimport genPm from 'wsemi/src/genPm.mjs'\r\nimport WConfirm from 'w-component-vue/src/components/WConfirm.vue'\r\n\r\nexport default {\r\n components: {\r\n WConfirm,\r\n },\r\n props: {\r\n },\r\n data: function() {\r\n return {\r\n\r\n bShow: false,\r\n pm: null,\r\n\r\n content: '',\r\n\r\n }\r\n },\r\n mounted: function() {\r\n //console.log('mounted')\r\n\r\n let vo = this\r\n\r\n //set\r\n Vue.prototype.$dg.showCheckYesNo = vo.show\r\n\r\n },\r\n computed: {\r\n },\r\n methods: {\r\n\r\n show: function (content) {\r\n //console.log('methods show', content)\r\n\r\n let vo = this\r\n\r\n //pm\r\n vo.pm = genPm()\r\n\r\n //save\r\n vo.content = content\r\n\r\n //show\r\n vo.bShow = true\r\n\r\n return vo.pm\r\n },\r\n\r\n clickBtn: function(mode) {\r\n //console.log('methods clickBtn', mode)\r\n\r\n let vo = this\r\n\r\n if (mode) {\r\n vo.pm.resolve()\r\n }\r\n else {\r\n vo.pm.reject('close')\r\n }\r\n\r\n //hide\r\n vo.bShow = false\r\n\r\n },\r\n\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CheckYesNo.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CheckYesNo.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./CheckYesNo.vue?vue&type=template&id=cfad0048&scoped=true\"\nimport script from \"./CheckYesNo.vue?vue&type=script&lang=js\"\nexport * from \"./CheckYesNo.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"cfad0048\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('WConfirm',{attrs:{\"show\":_vm.bShow,\"title\":_vm.$t('systemMessage'),\"content\":_vm.content,\"_contentColor\":'white',\"_contentIconColor\":'white',\"_contentBackgroundColor\":'orange lighten-5',\"headerBackgroundColor\":'grey lighten-3',\"hasNoBtn\":false,\"yesBtnText\":_vm.$t('ok')},on:{\"update:show\":function($event){_vm.bShow=$event},\"click-yes\":function($event){return _vm.clickUnit()}}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <WConfirm\r\n :show.sync=\"bShow\"\r\n :title=\"$t('systemMessage')\"\r\n :content=\"content\"\r\n :_contentColor=\"'white'\"\r\n :_contentIconColor=\"'white'\"\r\n :_contentBackgroundColor=\"'orange lighten-5'\"\r\n :headerBackgroundColor=\"'grey lighten-3'\"\r\n :hasNoBtn=\"false\"\r\n :yesBtnText=\"$t('ok')\"\r\n @click-yes=\"clickUnit()\"\r\n ></WConfirm>\r\n</template>\r\n\r\n<script>\r\nimport Vue from 'vue'\r\nimport genPm from 'wsemi/src/genPm.mjs'\r\nimport WConfirm from 'w-component-vue/src/components/WConfirm.vue'\r\n\r\nexport default {\r\n components: {\r\n WConfirm,\r\n },\r\n props: {\r\n },\r\n data: function() {\r\n return {\r\n\r\n bShow: false,\r\n pm: null,\r\n\r\n content: '',\r\n\r\n }\r\n },\r\n mounted: function() {\r\n //console.log('mounted')\r\n\r\n let vo = this\r\n\r\n //set\r\n Vue.prototype.$dg.showCheckYes = vo.show\r\n\r\n },\r\n computed: {\r\n },\r\n methods: {\r\n\r\n show: function (content) {\r\n //console.log('methods show', content)\r\n\r\n let vo = this\r\n\r\n //pm\r\n vo.pm = genPm()\r\n\r\n //save\r\n vo.content = content\r\n\r\n //show\r\n vo.bShow = true\r\n\r\n return vo.pm\r\n },\r\n\r\n clickUnit: function() {\r\n //console.log('methods clickUnit')\r\n\r\n let vo = this\r\n\r\n //resolve\r\n vo.pm.resolve()\r\n\r\n //hide\r\n vo.bShow = false\r\n\r\n },\r\n\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CheckYes.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CheckYes.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./CheckYes.vue?vue&type=template&id=9943c370&scoped=true\"\nimport script from \"./CheckYes.vue?vue&type=script&lang=js\"\nexport * from \"./CheckYes.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"9943c370\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{style:(`position:absolute; top:0px; left:0px; width:100%; height:100%; transition:all 0.5s linear; display:flex; align-items:center; justify-content:center;`)},[(_vm.connState==='csIng')?[_c('img',{staticStyle:{\"width\":\"100px\",\"height\":\"100px\"},attrs:{\"src\":_vm.img_connection}}),_c('div',{staticStyle:{\"margin-left\":\"10px\"}},[_c('div',{staticStyle:{\"color\":\"#aaa\"}},[_vm._v(\" \"+_vm._s(_vm.$t('csIng'))+\" \")])])]:(_vm.connState==='csLogin')?[_c('img',{staticStyle:{\"width\":\"100px\",\"height\":\"100px\"},attrs:{\"src\":_vm.img_connection}}),_c('div',{staticStyle:{\"margin-left\":\"10px\"}},[_c('div',{staticStyle:{\"color\":\"#aaa\"}},[_vm._v(\" \"+_vm._s(_vm.$t('csLogin'))+\" \")])])]:(_vm.connState==='csLogout')?[_c('img',{staticStyle:{\"width\":\"75px\",\"height\":\"75px\"},attrs:{\"src\":_vm.img_logout}}),_c('div',{staticStyle:{\"margin-left\":\"10px\"}},[_c('div',{staticStyle:{\"color\":\"#aaa\"}},[_vm._v(\" \"+_vm._s(_vm.$t('csLogout'))+\" \")])])]:(_vm.connState==='csErrConn')?[_c('img',{staticStyle:{\"width\":\"75px\",\"height\":\"75px\"},attrs:{\"src\":_vm.img_dissconnection}}),_c('div',{staticStyle:{\"margin-left\":\"10px\"}},[_c('div',{staticStyle:{\"color\":\"#aaa\"}},[_vm._v(\" \"+_vm._s(_vm.$t('csErrConn'))+\" \")])])]:[_c('img',{staticStyle:{\"width\":\"75px\",\"height\":\"75px\"},attrs:{\"src\":_vm.img_deny}}),_c('div',{staticStyle:{\"margin-left\":\"10px\"}},[_c('div',{staticStyle:{\"color\":\"#aaa\"}},[_vm._v(\" \"+_vm._s(_vm.$t('csErrLogin'))+\" \")])])]],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div\r\n :style=\"`position:absolute; top:0px; left:0px; width:100%; height:100%; transition:all 0.5s linear; display:flex; align-items:center; justify-content:center;`\"\r\n >\r\n\r\n <template v-if=\"connState==='csIng'\">\r\n\r\n <img style=\"width:100px; height:100px;\" :src=\"img_connection\">\r\n\r\n <div style=\"margin-left:10px;\">\r\n <div style=\"color:#aaa;\">\r\n {{$t('csIng')}}\r\n </div>\r\n </div>\r\n\r\n </template>\r\n\r\n <template v-else-if=\"connState==='csLogin'\">\r\n\r\n <img style=\"width:100px; height:100px;\" :src=\"img_connection\">\r\n\r\n <div style=\"margin-left:10px;\">\r\n <div style=\"color:#aaa;\">\r\n {{$t('csLogin')}}\r\n </div>\r\n </div>\r\n\r\n </template>\r\n\r\n <template v-else-if=\"connState==='csLogout'\">\r\n\r\n <img style=\"width:75px; height:75px;\" :src=\"img_logout\">\r\n\r\n <div style=\"margin-left:10px;\">\r\n <div style=\"color:#aaa;\">\r\n {{$t('csLogout')}}\r\n </div>\r\n </div>\r\n\r\n </template>\r\n\r\n <template v-else-if=\"connState==='csErrConn'\">\r\n\r\n <img style=\"width:75px; height:75px;\" :src=\"img_dissconnection\">\r\n\r\n <div style=\"margin-left:10px;\">\r\n <div style=\"color:#aaa;\">\r\n {{$t('csErrConn')}}\r\n </div>\r\n </div>\r\n\r\n </template>\r\n\r\n <template v-else>\r\n\r\n <img style=\"width:75px; height:75px;\" :src=\"img_deny\">\r\n\r\n <div style=\"margin-left:10px;\">\r\n <div style=\"color:#aaa;\">\r\n {{$t('csErrLogin')}}\r\n </div>\r\n </div>\r\n\r\n </template>\r\n\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport get from 'lodash-es/get.js'\r\n\r\n\r\nexport default {\r\n components: {\r\n },\r\n props: {\r\n },\r\n data: function() {\r\n return {\r\n img_connection: `data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTAwcHgiIGhlaWdodD0iMTAwcHgiIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCI+DQo8Y2lyY2xlIGN4PSI1MCIgY3k9IjUwIiByPSIxMy44MTkzIiBmaWxsPSJub25lIiBzdHJva2U9IiM1ZjJhNjIiIHN0cm9rZS13aWR0aD0iMiI+DQogIDxhbmltYXRlIGF0dHJpYnV0ZU5hbWU9InIiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjEuMjY1ODIyNzg0ODEwMTI2NHMiIHZhbHVlcz0iMDs0NCIga2V5VGltZXM9IjA7MSIga2V5U3BsaW5lcz0iMCAwLjIgMC44IDEiIGNhbGNNb2RlPSJzcGxpbmUiIGJlZ2luPSItMC42MzI5MTEzOTI0MDUwNjMycyI+PC9hbmltYXRlPg0KICA8YW5pbWF0ZSBhdHRyaWJ1dGVOYW1lPSJvcGFjaXR5IiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgZHVyPSIxLjI2NTgyMjc4NDgxMDEyNjRzIiB2YWx1ZXM9IjE7MCIga2V5VGltZXM9IjA7MSIga2V5U3BsaW5lcz0iMC4yIDAgMC44IDEiIGNhbGNNb2RlPSJzcGxpbmUiIGJlZ2luPSItMC42MzI5MTEzOTI0MDUwNjMycyI+PC9hbmltYXRlPg0KPC9jaXJjbGU+DQo8Y2lyY2xlIGN4PSI1MCIgY3k9IjUwIiByPSIzNS44MTY1IiBmaWxsPSJub25lIiBzdHJva2U9IiNhOTc2YzMiIHN0cm9rZS13aWR0aD0iMiI+DQogIDxhbmltYXRlIGF0dHJpYnV0ZU5hbWU9InIiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjEuMjY1ODIyNzg0ODEwMTI2NHMiIHZhbHVlcz0iMDs0NCIga2V5VGltZXM9IjA7MSIga2V5U3BsaW5lcz0iMCAwLjIgMC44IDEiIGNhbGNNb2RlPSJzcGxpbmUiPjwvYW5pbWF0ZT4NCiAgPGFuaW1hdGUgYXR0cmlidXRlTmFtZT0ib3BhY2l0eSIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGR1cj0iMS4yNjU4MjI3ODQ4MTAxMjY0cyIgdmFsdWVzPSIxOzAiIGtleVRpbWVzPSIwOzEiIGtleVNwbGluZXM9IjAuMiAwIDAuOCAxIiBjYWxjTW9kZT0ic3BsaW5lIj48L2FuaW1hdGU+DQo8L2NpcmNsZT4NCjwvc3ZnPg==`,\r\n img_logout: `data:image/png;base64,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`,\r\n img_dissconnection: `data:image/png;base64,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`,\r\n img_deny: `data:image/png;base64,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`,\r\n }\r\n },\r\n computed: {\r\n\r\n connState: function() {\r\n //console.log('computed loading')\r\n\r\n let vo = this\r\n\r\n return get(vo, `$store.state.connState`)\r\n },\r\n\r\n },\r\n methods: {\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n</style>\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LayoutState.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LayoutState.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./LayoutState.vue?vue&type=template&id=7f6340a0&scoped=true\"\nimport script from \"./LayoutState.vue?vue&type=script&lang=js\"\nexport * from \"./LayoutState.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7f6340a0\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticStyle:{\"height\":\"100svh\",\"background\":\"#f5f5f5\"}},[_c('div',{style:(`height:${_vm.heightToolbar}px; overflow-y:hidden; padding:0px 10px; background:#fff; border-bottom:1px solid #ccc; display:flex; align-items:center;`)},[_c('div',{staticStyle:{\"padding-left\":\"5px\",\"white-space\":\"nowrap\"}},[_c('div',{staticStyle:{\"display\":\"flex\",\"align-items\":\"center\"}},[(_vm.webLogo)?_c('div',{staticStyle:{\"padding-right\":\"10px\",\"display\":\"flex\",\"align-items\":\"center\"}},[_c('img',{staticStyle:{\"width\":\"36px\",\"_min-width\":\"36px\",\"height\":\"36px\"},attrs:{\"src\":_vm.webLogo}})]):_vm._e(),_c('div',[_c('div',{staticStyle:{\"font-size\":\"1.2rem\",\"color\":\"#000\"}},[_vm._v(_vm._s(_vm.webName))]),_c('div',{staticStyle:{\"font-size\":\"0.8rem\",\"color\":\"#666\"}},[_vm._v(_vm._s(_vm.$t('webDescription')))])])])]),_c('div',{staticStyle:{\"width\":\"100%\"}}),(_vm.showLangSelect)?_c('div',{staticStyle:{\"padding-right\":\"10px\",\"white-space\":\"nowrap\"}},[_c('WTextSelect',{staticStyle:{\"width\":\"100px\"},attrs:{\"items\":_vm.keysLang,\"value\":_vm.lang},on:{\"input\":_vm.toggleLang},scopedSlots:_vm._u([{key:\"select\",fn:function(props){return [_vm._v(\" \"+_vm._s(_vm.getLangText(props.item))+\" \")]}},{key:\"item\",fn:function(props){return [_vm._v(\" \"+_vm._s(_vm.getLangText(props.item))+\" \")]}}],null,false,2218956916)})],1):_vm._e()]),_c('div',{style:(`height:calc( 100% - ${_vm.heightToolbar}px );`)},[_c('LayoutContent')],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{directives:[{name:\"domresize\",rawName:\"v-domresize\"}],staticStyle:{\"height\":\"100%\",\"width\":\"100%\"},on:{\"domresize\":_vm.resize}},[(_vm.syncState)?[_c('WDrawer',{style:(`height:${_vm.panelHeight}px; width:100%;`),attrs:{\"drawerWidth\":_vm.drawerWidth,\"drawerWidthMin\":_vm.drawerWidthMin,\"drawerWidthMax\":_vm.drawerWidthMax,\"mode\":'from-left',\"dragDrawerWidth\":true,\"autoSwitchToHide\":true,\"autoSwitchToShow\":true,\"autoSwitchToFloat\":true,\"switchWidth\":_vm.drawerWidth*2.3},on:{\"update:drawerWidth\":function($event){_vm.drawerWidth=$event},\"update:drawer-width\":function($event){_vm.drawerWidth=$event}},scopedSlots:_vm._u([{key:\"drawer\",fn:function(props){return [_c('div',{style:(`height:${props.height}px; background:#fff; position:relative;`)},[_c('WListVertical',{staticStyle:{\"height\":\"100%\"},attrs:{\"items\":_vm.menus,\"itemActive\":_vm.menuActive,\"item-text-color\":'#222',\"item-text-color-hover\":'#444',\"item-text-color-active\":'#E65100',\"item-icon-color\":'#222',\"item-icon-color-hover\":'#444',\"item-icon-color-active\":'#F57C00',\"item-background-color\":'#fff',\"item-background-color-hover\":'#f6f6f6',\"item-background-color-active\":'#fff3e0',\"paddingStyle\":{v:15,h:15}},on:{\"click\":(menu)=>{_vm.menuKey=menu.key}}}),(_vm.drawer)?_c('div',{style:(`position:absolute; top:2px; right:4px;`)},[_c('WButtonCircle',{attrs:{\"paddingStyle\":{h:2,v:2},\"icon\":_vm.mdiArrowLeftBoldHexagonOutline,\"iconSize\":20,\"backgroundColor\":'rgba(255,255,255,0.1)',\"backgroundColorHover\":'rgba(255,255,255,0.4)',\"backgroundColorFocus\":'rgba(255,255,255,0.7)',\"borderColor\":'transparent',\"borderColorHover\":'transparent',\"borderColorFocus\":'transparent',\"_tooltip\":\"$t('menuTreeHide')\",\"shadow\":false},on:{\"click\":function($event){_vm.drawer=false}}})],1):_vm._e()],1)]}},{key:\"content\",fn:function(props){return [_c('div',{style:(`height:${props.height}px; width:${props.width}px; position:relative;`)},[[(_vm.menuKey==='mmTargets')?_c('LayoutContentTargets',{attrs:{\"drawer\":_vm.drawer}}):_vm._e(),(_vm.menuKey==='mmPemis')?_c('LayoutContentPemis',{attrs:{\"drawer\":_vm.drawer}}):_vm._e(),(_vm.menuKey==='mmGrups')?_c('LayoutContentGrups',{attrs:{\"drawer\":_vm.drawer}}):_vm._e(),(_vm.menuKey==='mmUsers')?_c('LayoutContentUsers',{attrs:{\"drawer\":_vm.drawer}}):_vm._e()],(!_vm.drawer)?_c('div',{style:(`position:absolute; top:3px; left:5px;`)},[_c('WButtonCircle',{attrs:{\"paddingStyle\":{h:2,v:2},\"icon\":_vm.mdiArrowRightBoldHexagonOutline,\"iconSize\":20,\"backgroundColor\":'rgba(255,255,255,0.1)',\"backgroundColorHover\":'rgba(255,255,255,0.4)',\"backgroundColorFocus\":'rgba(255,255,255,0.7)',\"borderColor\":'transparent',\"borderColorHover\":'transparent',\"borderColorFocus\":'transparent',\"_tooltip\":\"$t('menuTreeShow')\",\"shadow\":false},on:{\"click\":function($event){_vm.drawer=true}}})],1):_vm._e()],2)]}}],null,false,879892180),model:{value:(_vm.drawer),callback:function ($$v) {_vm.drawer=$$v},expression:\"drawer\"}})]:_c('div',{staticStyle:{\"padding\":\"20px\",\"font-size\":\"0.9rem\"}},[_vm._v(\" \"+_vm._s(_vm.$t('waitingData'))+\" \")])],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{directives:[{name:\"domresize\",rawName:\"v-domresize\"}],staticStyle:{\"height\":\"100%\"},attrs:{\"changeParams\":_vm.changeParams},on:{\"domresize\":_vm.resizePanel}},[_c('div',{directives:[{name:\"domresize\",rawName:\"v-domresize\"}],staticStyle:{\"_border-bottom\":\"1px solid #ddd\",\"background\":\"#fff\"},on:{\"domresize\":_vm.resizeHead}},[_c('div',{staticStyle:{\"padding\":\"10px 10px 10px 20px\"}},[_c('div',{style:(`display:flex; align-items:center; padding:${_vm.drawer?'5px':'5px 5px 5px 20px'};`)},[_c('WIcon',{attrs:{\"icon\":_vm.mdiGamepadCircle,\"color\":'#000',\"size\":32}}),_c('div',{staticStyle:{\"padding-left\":\"12px\"}},[_c('div',{staticStyle:{\"font-size\":\"1.4rem\",\"color\":\"#000\"}},[_vm._v(\" \"+_vm._s(_vm.$t('mmTargets'))+\" \")]),_c('div',{staticStyle:{\"padding-top\":\"2px\",\"font-size\":\"0.8rem\",\"color\":\"#666\"}},[_vm._v(\" \"+_vm._s(_vm.$t('mmTargetsMsg'))+\" \")])])],1)]),_c('div',{staticStyle:{\"padding\":\"5px\",\"border-top\":\"1px solid #ddd\",\"display\":\"flex\",\"align-items\":\"center\"},attrs:{\"_v-if\":\"showIsEditable || isEditable\"}},[(_vm.showIsEditable)?[_c('div',{staticStyle:{\"padding\":\"6px 0px 4px 4px\"}},[_c('WSwitch',{attrs:{\"checkedSwitchCircleColor\":'#F68200',\"checkedSwitchCircleColorHover\":'#FB8C00',\"checkedSwitchBarColor\":'#FFE0B2',\"checkedSwitchBarColorHover\":'#FFE6B8',\"text\":_vm.$t('modeEdit')},model:{value:(_vm.isEditable),callback:function ($$v) {_vm.isEditable=$$v},expression:\"isEditable\"}})],1),_c('div',{staticStyle:{\"padding-left\":\"10px\"}})]:_vm._e(),(true)?[_c('WPopup',{attrs:{\"isolated\":true,\"_show\":\"\",\"_hide\":\"\"},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('showTabCols'),\"icon\":_vm.mdiTableHeadersEye,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"_textColor\":\"'#eee'\",\"_textColorHover\":\"'#fff'\",\"iconColor\":'#444',\"iconColorHover\":'#222',\"shadow\":false,\"_click\":\"\"}})]},proxy:true},{key:\"content\",fn:function(){return [_c('div',{staticStyle:{\"padding\":\"10px 0px 10px 0px\"}},[_c('div',{staticStyle:{\"padding\":\"7px 10px\",\"font-size\":\"0.85rem\",\"color\":\"#222\",\"background\":\"#f2f2f2\"}},[_vm._v(\" \"+_vm._s(_vm.$t('showTabCols'))+\" \")]),_c('div',{staticStyle:{\"padding\":\"7px 9px 0px 7px\"}},[_c('WInputCheckbox',{attrs:{\"items\":_vm.tabKeysPick},on:{\"input\":_vm.toggleTabKeys},scopedSlots:_vm._u([{key:\"default\",fn:function(props){return [_c('div',{staticStyle:{\"padding-left\":\"3px\",\"display\":\"flex\",\"align-items\":\"center\",\"font-size\":\"0.85rem\",\"height\":\"24px\",\"cursor\":\"pointer\"}},[_vm._v(\" \"+_vm._s(_vm.getHead(props.item.data))+\" \")])]}}],null,false,286315898),model:{value:(_vm.tabKeysShow),callback:function ($$v) {_vm.tabKeysShow=$$v},expression:\"tabKeysShow\"}})],1)])]},proxy:true}],null,false,1031542656)}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})]:_vm._e(),(_vm.isEditable)?[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('targetAdd'),\"icon\":_vm.mdiPlus,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"_textColor\":\"'#eee'\",\"_textColorHover\":\"'#fff'\",\"iconColor\":'#444',\"iconColorHover\":'#222',\"shadow\":false},on:{\"click\":_vm.addItem}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})]:_vm._e(),(_vm.isEditable && _vm.hasItemCheckOne)?[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('targetCopy'),\"icon\":_vm.mdiContentCopy,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"_textColor\":\"'#eee'\",\"_textColorHover\":\"'#fff'\",\"iconColor\":'#444',\"iconColorHover\":'#222',\"shadow\":false},on:{\"click\":_vm.copyItem}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})]:_vm._e(),(_vm.isEditable && _vm.hasItemsCheck)?[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('targetDeleteCheckTargets'),\"icon\":_vm.mdiTrashCanOutline,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"_textColor\":\"'#eee'\",\"_textColorHover\":\"'#fff'\",\"iconColor\":'#444',\"iconColorHover\":'#222',\"shadow\":false},on:{\"click\":_vm.deleteItemsCheck}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})]:_vm._e(),(_vm.isEditable && _vm.isModified)?[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('saveChanges'),\"icon\":_vm.mdiCloudUploadOutline,\"backgroundColor\":'rgba(255,0,50,0.7)',\"backgroundColorHover\":'rgba(255,0,50,0.8)',\"textColor\":'#eee',\"textColorHover\":'#fff',\"iconColor\":'#eee',\"iconColorHover\":'#fff',\"shadow\":false},on:{\"click\":_vm.saveTargets}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})]:_vm._e()],2)]),(!_vm.firstLoading)?[(_vm.items)?[_c('WAggridVueDyn',{ref:\"rftable\",style:(`width:100%;`),attrs:{\"height\":_vm.contentHeight,\"opt\":_vm.opt}})]:_vm._e()]:_c('div',{staticStyle:{\"padding\":\"10px 15px\",\"font-size\":\"0.8rem\"}},[_vm._v(\" \"+_vm._s(_vm.$t('waitingData'))+\" \")])],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div\r\n style=\"height:100%;\"\r\n v-domresize\r\n @domresize=\"resizePanel\"\r\n :changeParams=\"changeParams\"\r\n >\r\n\r\n <div\r\n style=\"_border-bottom:1px solid #ddd; background:#fff;\"\r\n v-domresize\r\n @domresize=\"resizeHead\"\r\n >\r\n\r\n <!-- 標題區 -->\r\n <div style=\"padding:10px 10px 10px 20px;\">\r\n <div :style=\"`display:flex; align-items:center; padding:${drawer?'5px':'5px 5px 5px 20px'};`\">\r\n\r\n <WIcon\r\n :icon=\"mdiGamepadCircle\"\r\n :color=\"'#000'\"\r\n :size=\"32\"\r\n ></WIcon>\r\n\r\n <div style=\"padding-left:12px;\">\r\n\r\n <div style=\"font-size:1.4rem; color:#000;\">\r\n {{$t('mmTargets')}}\r\n </div>\r\n\r\n <div style=\"padding-top:2px; font-size:0.8rem; color:#666;\">\r\n {{$t('mmTargetsMsg')}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <!-- 功能區 -->\r\n <div\r\n style=\"padding:5px; border-top:1px solid #ddd; display:flex; align-items:center;\"\r\n _v-if=\"showIsEditable || isEditable\"\r\n >\r\n\r\n <template v-if=\"showIsEditable\">\r\n\r\n <div style=\"padding:6px 0px 4px 4px;\">\r\n <WSwitch\r\n :checkedSwitchCircleColor=\"'#F68200'\"\r\n :checkedSwitchCircleColorHover=\"'#FB8C00'\"\r\n :checkedSwitchBarColor=\"'#FFE0B2'\"\r\n :checkedSwitchBarColorHover=\"'#FFE6B8'\"\r\n v-model=\"isEditable\"\r\n :text=\"$t('modeEdit')\"\r\n ></WSwitch>\r\n </div>\r\n\r\n <div style=\"padding-left:10px;\"></div>\r\n\r\n </template>\r\n\r\n <template v-if=\"true\">\r\n\r\n <WPopup\r\n :isolated=\"true\"\r\n _show=\"\"\r\n _hide=\"\"\r\n >\r\n <template v-slot:trigger>\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('showTabCols')\"\r\n :icon=\"mdiTableHeadersEye\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n _textColor=\"'#eee'\"\r\n _textColorHover=\"'#fff'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :shadow=\"false\"\r\n _click=\"\"\r\n ></WButtonCircle>\r\n </template>\r\n\r\n <template v-slot:content>\r\n <div style=\"padding:10px 0px 10px 0px;\">\r\n\r\n <div style=\"padding:7px 10px; font-size:0.85rem; color:#222; background:#f2f2f2;\">\r\n {{$t('showTabCols')}}\r\n </div>\r\n\r\n <div style=\"padding:7px 9px 0px 7px;\">\r\n <WInputCheckbox\r\n :items=\"tabKeysPick\"\r\n v-model=\"tabKeysShow\"\r\n @input=\"toggleTabKeys\"\r\n >\r\n <template v-slot=\"props\">\r\n <div style=\"padding-left:3px; display:flex; align-items:center; font-size:0.85rem; height:24px; cursor:pointer;\">\r\n {{getHead(props.item.data)}}\r\n </div>\r\n </template>\r\n </WInputCheckbox>\r\n </div>\r\n\r\n </div>\r\n </template>\r\n </WPopup>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n <template v-if=\"isEditable\">\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('targetAdd')\"\r\n :icon=\"mdiPlus\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n _textColor=\"'#eee'\"\r\n _textColorHover=\"'#fff'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :shadow=\"false\"\r\n @click=\"addItem\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n <template v-if=\"isEditable && hasItemCheckOne\">\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('targetCopy')\"\r\n :icon=\"mdiContentCopy\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n _textColor=\"'#eee'\"\r\n _textColorHover=\"'#fff'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :shadow=\"false\"\r\n @click=\"copyItem\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n <template v-if=\"isEditable && hasItemsCheck\">\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('targetDeleteCheckTargets')\"\r\n :icon=\"mdiTrashCanOutline\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n _textColor=\"'#eee'\"\r\n _textColorHover=\"'#fff'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :shadow=\"false\"\r\n @click=\"deleteItemsCheck\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n <template v-if=\"isEditable && isModified\">\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('saveChanges')\"\r\n :icon=\"mdiCloudUploadOutline\"\r\n :backgroundColor=\"'rgba(255,0,50,0.7)'\"\r\n :backgroundColorHover=\"'rgba(255,0,50,0.8)'\"\r\n :textColor=\"'#eee'\"\r\n :textColorHover=\"'#fff'\"\r\n :iconColor=\"'#eee'\"\r\n :iconColorHover=\"'#fff'\"\r\n :shadow=\"false\"\r\n @click=\"saveTargets\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n <template\r\n v-if=\"!firstLoading\"\r\n >\r\n\r\n <template v-if=\"items\">\r\n <WAggridVueDyn\r\n ref=\"rftable\"\r\n :style=\"`width:100%;`\"\r\n :height=\"contentHeight\"\r\n :opt=\"opt\"\r\n >\r\n </WAggridVueDyn>\r\n </template>\r\n\r\n </template>\r\n\r\n <div\r\n style=\"padding:10px 15px; font-size:0.8rem;\"\r\n v-else\r\n >\r\n {{$t('waitingData')}}\r\n </div>\r\n\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport { mdiGamepadCircle, mdiStackOverflow, mdiAccountGroupOutline, mdiBallotRecountOutline, mdiCloudUploadOutline, mdiTrashCanOutline, mdiTableHeadersEye, mdiPlus, mdiPencilOutline, mdiContentCopy } from '@mdi/js/mdi.js'\r\nimport get from 'lodash-es/get.js'\r\nimport each from 'lodash-es/each.js'\r\nimport size from 'lodash-es/size.js'\r\nimport filter from 'lodash-es/filter.js'\r\nimport sortBy from 'lodash-es/sortBy.js'\r\nimport cloneDeep from 'lodash-es/cloneDeep.js'\r\nimport haskey from 'wsemi/src/haskey.mjs'\r\nimport isestr from 'wsemi/src/isestr.mjs'\r\nimport iseobj from 'wsemi/src/iseobj.mjs'\r\nimport isnum from 'wsemi/src/isnum.mjs'\r\nimport cdbl from 'wsemi/src/cdbl.mjs'\r\nimport cstr from 'wsemi/src/cstr.mjs'\r\nimport arrPull from 'wsemi/src/arrPull.mjs'\r\nimport WIcon from 'w-component-vue/src/components/WIcon.vue'\r\nimport WSwitch from 'w-component-vue/src/components/WSwitch.vue'\r\nimport WButtonCircle from 'w-component-vue/src/components/WButtonCircle.vue'\r\nimport WPopup from 'w-component-vue/src/components/WPopup.vue'\r\nimport WInputCheckbox from 'w-component-vue/src/components/WInputCheckbox.vue'\r\nimport WAggridVueDyn from 'w-component-vue/src/components/WAggridVueDyn.vue'\r\n\r\n\r\nexport default {\r\n components: {\r\n WIcon,\r\n WSwitch,\r\n WButtonCircle,\r\n WPopup,\r\n WInputCheckbox,\r\n WAggridVueDyn,\r\n },\r\n props: {\r\n drawer: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n data: function() {\r\n return {\r\n mdiGamepadCircle,\r\n mdiStackOverflow,\r\n mdiAccountGroupOutline,\r\n mdiBallotRecountOutline,\r\n mdiCloudUploadOutline,\r\n mdiTrashCanOutline,\r\n mdiTableHeadersEye,\r\n mdiPlus,\r\n mdiPencilOutline,\r\n mdiContentCopy,\r\n\r\n panelWidth: 100,\r\n panelHeight: 100,\r\n headHeight: 100,\r\n\r\n firstLoading: true,\r\n firstSetting: true,\r\n showIsEditable: false,\r\n isEditable: false,\r\n isModified: false,\r\n\r\n tabKeys: [\r\n 'id',\r\n 'description',\r\n 'from',\r\n 'userId',\r\n 'timeCreate',\r\n 'userIdUpdate',\r\n 'timeUpdate',\r\n ],\r\n tabKeysPick: [\r\n 'id',\r\n 'description',\r\n 'from',\r\n 'userId',\r\n 'timeCreate',\r\n 'userIdUpdate',\r\n 'timeUpdate',\r\n ],\r\n tabKeysShow: [\r\n 'id',\r\n 'description',\r\n // 'from',\r\n // 'userId',\r\n // 'timeCreate',\r\n // 'userIdUpdate',\r\n // 'timeUpdate',\r\n ],\r\n\r\n widthTargetId: null,\r\n widthTargetDescription: null,\r\n\r\n items: [],\r\n itemsCheck: [],\r\n opt: null,\r\n\r\n }\r\n },\r\n mounted: function() {\r\n // console.log('mounted')\r\n\r\n let vo = this\r\n\r\n //firstSetting\r\n if (vo.firstSetting) {\r\n // console.log('webInfor', vo.webInfor)\r\n\r\n let showModeEditTargets = get(vo, 'webInfor.showModeEditTargets', '')\r\n vo.showIsEditable = showModeEditTargets === 'y'\r\n let modeEditTargets = get(vo, 'webInfor.modeEditTargets', '')\r\n vo.isEditable = modeEditTargets === 'y'\r\n\r\n vo.widthTargetId = get(vo, 'webInfor.widthTargetId', '')\r\n vo.widthTargetDescription = get(vo, 'webInfor.widthTargetDescription', '')\r\n\r\n vo.firstSetting = false\r\n }\r\n\r\n },\r\n computed: {\r\n\r\n webInfor: function() {\r\n let wi = get(this, `$store.state.webInfor`)\r\n return wi\r\n },\r\n\r\n targets: function() {\r\n let rs = get(this, `$store.state.targets`)\r\n rs = sortBy(rs, 'order')\r\n return rs\r\n },\r\n\r\n pemis: function() {\r\n let rs = get(this, `$store.state.pemis`)\r\n rs = sortBy(rs, 'order')\r\n return rs\r\n },\r\n\r\n grups: function() {\r\n let rs = get(this, `$store.state.grups`)\r\n rs = sortBy(rs, 'order')\r\n return rs\r\n },\r\n\r\n users: function() {\r\n let rs = get(this, `$store.state.users`)\r\n rs = sortBy(rs, 'order')\r\n return rs\r\n },\r\n\r\n changeParams: function() {\r\n // console.log('computed changeParams')\r\n\r\n let vo = this\r\n\r\n //trigger\r\n let isEditable = vo.isEditable\r\n\r\n //items\r\n let items = cloneDeep(vo.targets)\r\n\r\n //save\r\n vo.items = items\r\n\r\n //genOpt\r\n vo.genOpt({ isEditable })\r\n\r\n //firstLoading\r\n vo.firstLoading = false\r\n\r\n return ''\r\n },\r\n\r\n contentHeight: function() {\r\n let vo = this\r\n\r\n //h\r\n let h = vo.panelHeight - vo.headHeight\r\n h = Math.max(h, 0)\r\n\r\n return h\r\n },\r\n\r\n hasItemsCheck: function() {\r\n let vo = this\r\n\r\n //h\r\n let b = vo.itemsCheck.length > 0\r\n\r\n return b\r\n },\r\n\r\n hasItemCheckOne: function() {\r\n let vo = this\r\n\r\n //h\r\n let b = size(vo.itemsCheck) === 1\r\n\r\n return b\r\n },\r\n\r\n errItemsById: function() {\r\n let vo = this\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //kpErr\r\n let kpErr = {}\r\n let kpId = {}\r\n each(rows, (v, k) => {\r\n\r\n //id\r\n let id = get(v, 'id', '')\r\n\r\n //check\r\n if (!isestr(id)) {\r\n\r\n //kpErr\r\n kpErr[id] = vo.$t(`targetIdEmpty`)\r\n\r\n return true //跳出換下一個\r\n }\r\n\r\n //check\r\n if (haskey(kpId, id)) {\r\n\r\n //kpErr\r\n kpErr[id] = vo.$t(`targetIdDuplicate`)\r\n\r\n return true //跳出換下一個\r\n }\r\n\r\n //kpId\r\n kpId[id] = true\r\n\r\n })\r\n\r\n return kpErr\r\n },\r\n\r\n isError: function() {\r\n let vo = this\r\n\r\n let c = ''\r\n let b = false\r\n b = iseobj(vo.errItemsByName)\r\n if (b) {\r\n c = vo.$t('errInNames')\r\n }\r\n\r\n return c\r\n },\r\n\r\n kpHead: function() {\r\n let vo = this\r\n\r\n let kp = {\r\n 'id': vo.$t('targetId'),\r\n 'description': vo.$t('description'),\r\n 'from': vo.$t('from'),\r\n 'userId': vo.$t('userId'),\r\n 'timeCreate': vo.$t('timeCreate'),\r\n 'userIdUpdate': vo.$t('userIdUpdate'),\r\n 'timeUpdate': vo.$t('timeUpdate'),\r\n }\r\n\r\n return kp\r\n },\r\n\r\n },\r\n methods: {\r\n\r\n resizePanel: function(msg) {\r\n // console.log('methods resizePanel', msg)\r\n\r\n let vo = this\r\n\r\n //panelWidth, panelHeight\r\n vo.panelWidth = msg.snew.offsetWidth\r\n vo.panelHeight = msg.snew.offsetHeight\r\n\r\n },\r\n\r\n resizeHead: function(msg) {\r\n // console.log('methods resizeHead', msg)\r\n\r\n let vo = this\r\n\r\n //headHeight\r\n vo.headHeight = msg.snew.offsetHeight\r\n\r\n },\r\n\r\n getHead: function(key) {\r\n // console.log('methods getHead', key)\r\n\r\n let vo = this\r\n\r\n let head = get(vo, `kpHead.${key}`, '')\r\n\r\n return head\r\n },\r\n\r\n genOpt: function() {\r\n // console.log('methods genOpt')\r\n\r\n let vo = this\r\n\r\n //default\r\n vo.itemsCheck = []\r\n\r\n //opt\r\n let opt = null\r\n if (size(vo.items) > 0) {\r\n\r\n //ks\r\n let ks = vo.tabKeys\r\n // console.log('ks', ks)\r\n\r\n //kpHead\r\n let kpHead = vo.kpHead\r\n\r\n //kpCellEditable, kpRowDrag, kpHeadCheckBox\r\n let kpCellEditable = {}\r\n let kpRowDrag = {}\r\n let kpHeadCheckBox = {}\r\n if (vo.isEditable) {\r\n kpCellEditable = {\r\n 'id': true,\r\n 'description': true,\r\n 'from': true,\r\n }\r\n kpRowDrag = {\r\n 'id': true,\r\n }\r\n kpHeadCheckBox = {\r\n 'id': true,\r\n }\r\n }\r\n\r\n //kpHeadHide\r\n let kpHeadHide = {}\r\n if (true) {\r\n let tabKeysHide = arrPull(vo.tabKeysPick, vo.tabKeysShow)\r\n each(tabKeysHide, (k) => {\r\n kpHeadHide[k] = true\r\n })\r\n }\r\n\r\n //opt\r\n opt = {\r\n language: vo.$t('aggridLanguage'),\r\n rows: vo.items,\r\n keys: ks,\r\n kpHead,\r\n // autoFitColumn: true,\r\n defCellEditable: false, //vo.isEditable,\r\n defHeadFilter: true,\r\n defCellAlignH: 'left',\r\n kpHeadHide,\r\n kpHeadFixLeft: {\r\n 'id': true,\r\n },\r\n defHeadMinWidth: 150,\r\n kpHeadWidth: {\r\n 'id': isnum(vo.widthTargetId) ? cdbl(vo.widthTargetId) : 600,\r\n 'description': isnum(vo.widthTargetId) ? cdbl(vo.widthTargetId) : 600,\r\n 'timeCreate': 220,\r\n 'timeUpdate': 220,\r\n },\r\n kpHeadFilterType: {\r\n 'id': 'text',\r\n 'description': 'text',\r\n 'from': 'text',\r\n 'userId': 'text',\r\n 'timeCreate': 'text',\r\n 'userIdUpdate': 'text',\r\n 'timeUpdate': 'text',\r\n },\r\n kpCellEditable,\r\n kpRowDrag,\r\n kpHeadCheckBox,\r\n kpCellRender: {\r\n 'id': (v) => {\r\n // console.log('kpCellRender', v)\r\n\r\n //err\r\n let err = get(vo.errItemsById, v, '')\r\n // console.log(v, err)\r\n\r\n //check\r\n if (isestr(err)) {\r\n v = `\r\n <span title=\"${err}\">\r\n <span style=\"color:#F57C00;\">${cstr(v)}</span>\r\n <img style=\"vertical-align:sub; width:16px; height:16px;\" src=\"${vo.$ui.getIcon('warning')}\" />\r\n </span>\r\n `\r\n }\r\n\r\n return v\r\n },\r\n },\r\n // kpCellTooltip: {\r\n // 'id': (v) => {\r\n // // console.log('kpCellTooltip', v)\r\n\r\n // //err\r\n // let err = get(vo.errItemsById, v, '')\r\n // // console.log(v, err)\r\n\r\n // //check\r\n // let t = ''\r\n // if (isestr(err)) {\r\n // t = err\r\n // }\r\n\r\n // return t\r\n // },\r\n // },\r\n rowsChange: (rs) => {\r\n // console.log('rowsChange', rs)\r\n // console.log('rowsChange cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n rowChecked: (rs) => {\r\n // console.log('rowChecked', rs)\r\n // console.log('rowChecked cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\r\n\r\n //save itemsCheck\r\n vo.itemsCheck = cloneDeep(rs)\r\n\r\n },\r\n }\r\n // console.log('opt', opt)\r\n\r\n }\r\n\r\n //save\r\n vo.opt = opt\r\n\r\n },\r\n\r\n refresh: function() {\r\n let vo = this\r\n\r\n //cmp\r\n let cmp = get(vo, '$refs.rftable.$refs.$self')\r\n // console.log('cmp', cmp)\r\n\r\n //refresh, 因set不會觸發kpCellRender, 故須另外調用組件函數refresh, 進而觸發kpCellRender, 使能更新數據\r\n cmp.refresh()\r\n\r\n },\r\n\r\n toggleTabKeys: function() {\r\n let vo = this\r\n\r\n //cmp\r\n let cmp = get(vo, '$refs.rftable.$refs.$self')\r\n // console.log('cmp', cmp)\r\n\r\n //showKeys\r\n cmp.showKeys(vo.tabKeysShow)\r\n // console.log('tabKeysShow', vo.tabKeysShow)\r\n\r\n },\r\n\r\n addItem: function() {\r\n // console.log('method addItem')\r\n\r\n let vo = this\r\n\r\n //cloneDeep\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //cloneDeep\r\n rows = cloneDeep(rows)\r\n\r\n //r\r\n let r = vo.$ds.targets.funNew()\r\n r.id = vo.$s.getNameNew(rows, 'id', '', vo.$t('targetAddNameNew'))\r\n r.userId = `{${vo.$t('targetAddIdNew')}}`\r\n r.timeCreate = `{${vo.$t('targetAddIdNew')}}`\r\n r.userIdUpdate = `{${vo.$t('targetAddIdNew')}}`\r\n r.timeUpdate = `{${vo.$t('targetAddIdNew')}}`\r\n // console.log('r', r)\r\n\r\n //添加至最首\r\n rows = [\r\n r,\r\n ...rows,\r\n ]\r\n\r\n //save\r\n vo.opt.rows = rows\r\n // console.log('cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n copyItem: function() {\r\n // console.log('method copyItem')\r\n\r\n let vo = this\r\n\r\n //check\r\n if (size(vo.itemsCheck) !== 1) {\r\n console.log(`size(vo.itemsCheck) !== 1`, vo.itemsCheck)\r\n vo.$alert(`${vo.$t('anUnexpectedErrorOccurred')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //cloneDeep\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //cloneDeep\r\n rows = cloneDeep(rows)\r\n\r\n //find\r\n let tar = vo.itemsCheck[0]\r\n let tarId = get(tar, 'data.id', '')\r\n let row = null\r\n each(rows, (v) => {\r\n let id = get(v, 'id', '')\r\n if (id === tarId) {\r\n row = v\r\n return false //跳出\r\n }\r\n })\r\n // console.log('tar', tar)\r\n // console.log('row', row)\r\n\r\n //check\r\n if (!iseobj(row)) {\r\n console.log(`!iseobj(row)`, row)\r\n vo.$alert(`${vo.$t('anUnexpectedErrorOccurred')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //r\r\n let r = cloneDeep(row)\r\n let nameOld = r.id\r\n let _r = vo.$ds.targets.funNew()\r\n r.id = _r.id //使用新建方式預先產生id避免重複\r\n r.id = vo.$s.getNameNew(rows, 'id', nameOld, vo.$t('targetCopyNameNew'))\r\n r.userId = `{${vo.$t('targetAddIdNew')}}`\r\n r.timeCreate = `{${vo.$t('targetAddIdNew')}}`\r\n r.userIdUpdate = `{${vo.$t('targetAddIdNew')}}`\r\n r.timeUpdate = `{${vo.$t('targetAddIdNew')}}`\r\n // console.log('r', r)\r\n\r\n //添加至最首\r\n rows = [\r\n r,\r\n ...rows,\r\n ]\r\n\r\n //save\r\n vo.opt.rows = rows\r\n // console.log('cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n deleteItemsCheck: function() {\r\n // console.log('method deleteItemsCheck')\r\n\r\n let vo = this\r\n\r\n //check\r\n if (size(vo.itemsCheck) === 0) {\r\n return\r\n }\r\n\r\n //cloneDeep\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //cloneDeep\r\n rows = cloneDeep(rows)\r\n\r\n //filter\r\n each(vo.itemsCheck, (v) => {\r\n // console.log('v', v)\r\n let id = get(v, 'data.id', '')\r\n if (!isestr(id)) {\r\n console.log(`invalid id`)\r\n return true //跳出換下一個\r\n }\r\n rows = filter(rows, (vv) => {\r\n return vv.id !== id\r\n })\r\n })\r\n\r\n //clear\r\n vo.itemsCheck = []\r\n\r\n //save\r\n vo.opt.rows = rows\r\n // console.log('deleteItemsCheck cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n saveTargets: function() {\r\n // console.log('method saveTargets')\r\n\r\n let vo = this\r\n\r\n async function core() {\r\n let errTemp = null\r\n\r\n //show loading\r\n vo.$ui.updateLoading(true)\r\n\r\n //check\r\n if (isestr(vo.isError)) {\r\n vo.$alert(`${vo.isError}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //check\r\n if (size(rows) === 0) {\r\n vo.$alert(`${vo.$t('targetAddEmpty')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //updateTargets\r\n await vo.$fapi.updateTargets(rows)\r\n .catch((err) => {\r\n errTemp = err\r\n })\r\n\r\n //check\r\n if (errTemp !== null) {\r\n vo.$alert(`${vo.$t('targetSaveTargetsFail')}: ${errTemp}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //isModified\r\n vo.isModified = false\r\n\r\n //alert\r\n vo.$alert(vo.$t('targetSaveTargetsSuccess'))\r\n\r\n }\r\n\r\n //core\r\n core()\r\n // .then((res) => {\r\n // console.log('then', res)\r\n // })\r\n .catch((err) => {\r\n console.log('catch', err)\r\n vo.$alert(vo.$t('anUnexpectedErrorOccurred'), { type: 'error' })\r\n })\r\n .finally(() => {\r\n\r\n //hide loading\r\n vo.$ui.updateLoading(false)\r\n\r\n })\r\n\r\n },\r\n\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n</style>\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LayoutContentTargets.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LayoutContentTargets.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./LayoutContentTargets.vue?vue&type=template&id=9e00f8d6&scoped=true\"\nimport script from \"./LayoutContentTargets.vue?vue&type=script&lang=js\"\nexport * from \"./LayoutContentTargets.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"9e00f8d6\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{directives:[{name:\"domresize\",rawName:\"v-domresize\"}],staticStyle:{\"height\":\"100%\"},attrs:{\"changeParams\":_vm.changeParams},on:{\"domresize\":_vm.resizePanel}},[_c('div',{directives:[{name:\"domresize\",rawName:\"v-domresize\"}],staticStyle:{\"_border-bottom\":\"1px solid #ddd\",\"background\":\"#fff\"},on:{\"domresize\":_vm.resizeHead}},[_c('div',{staticStyle:{\"padding\":\"10px 10px 10px 20px\"}},[_c('div',{style:(`display:flex; align-items:center; padding:${_vm.drawer?'5px':'5px 5px 5px 20px'};`)},[_c('WIcon',{attrs:{\"icon\":_vm.mdiStackOverflow,\"color\":'#000',\"size\":32}}),_c('div',{staticStyle:{\"padding-left\":\"12px\"}},[_c('div',{staticStyle:{\"font-size\":\"1.4rem\",\"color\":\"#000\"}},[_vm._v(\" \"+_vm._s(_vm.$t('mmPemis'))+\" \")]),_c('div',{staticStyle:{\"padding-top\":\"2px\",\"font-size\":\"0.8rem\",\"color\":\"#666\"}},[_vm._v(\" \"+_vm._s(_vm.$t('mmPemisMsg'))+\" \")])])],1)]),_c('div',{staticStyle:{\"padding\":\"5px\",\"border-top\":\"1px solid #ddd\",\"display\":\"flex\",\"align-items\":\"center\"},attrs:{\"_v-if\":\"showIsEditable || isEditable\"}},[(_vm.showIsEditable)?[_c('div',{staticStyle:{\"padding\":\"6px 0px 4px 4px\"}},[_c('WSwitch',{attrs:{\"checkedSwitchCircleColor\":'#F68200',\"checkedSwitchCircleColorHover\":'#FB8C00',\"checkedSwitchBarColor\":'#FFE0B2',\"checkedSwitchBarColorHover\":'#FFE6B8',\"text\":_vm.$t('modeEdit')},model:{value:(_vm.isEditable),callback:function ($$v) {_vm.isEditable=$$v},expression:\"isEditable\"}})],1),_c('div',{staticStyle:{\"padding-left\":\"10px\"}})]:_vm._e(),(true)?[_c('WPopup',{attrs:{\"isolated\":true,\"_show\":\"\",\"_hide\":\"\"},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('showTabCols'),\"icon\":_vm.mdiTableHeadersEye,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"_textColor\":\"'#eee'\",\"_textColorHover\":\"'#fff'\",\"iconColor\":'#444',\"iconColorHover\":'#222',\"shadow\":false,\"_click\":\"\"}})]},proxy:true},{key:\"content\",fn:function(){return [_c('div',{staticStyle:{\"padding\":\"10px 0px 10px 0px\"}},[_c('div',{staticStyle:{\"padding\":\"7px 10px\",\"font-size\":\"0.85rem\",\"color\":\"#222\",\"background\":\"#f2f2f2\"}},[_vm._v(\" \"+_vm._s(_vm.$t('showTabCols'))+\" \")]),_c('div',{staticStyle:{\"padding\":\"7px 9px 0px 7px\"}},[_c('WInputCheckbox',{attrs:{\"items\":_vm.tabKeysPick},on:{\"input\":_vm.toggleTabKeys},scopedSlots:_vm._u([{key:\"default\",fn:function(props){return [_c('div',{staticStyle:{\"padding-left\":\"3px\",\"display\":\"flex\",\"align-items\":\"center\",\"font-size\":\"0.85rem\",\"height\":\"24px\",\"cursor\":\"pointer\"}},[_vm._v(\" \"+_vm._s(_vm.getHead(props.item.data))+\" \")])]}}],null,false,286315898),model:{value:(_vm.tabKeysShow),callback:function ($$v) {_vm.tabKeysShow=$$v},expression:\"tabKeysShow\"}})],1)])]},proxy:true}],null,false,1031542656)}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})]:_vm._e(),(_vm.isEditable)?[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('pemiAdd'),\"icon\":_vm.mdiPlus,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"_textColor\":\"'#eee'\",\"_textColorHover\":\"'#fff'\",\"iconColor\":'#444',\"iconColorHover\":'#222',\"shadow\":false},on:{\"click\":_vm.addItem}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})]:_vm._e(),(_vm.isEditable && _vm.hasItemCheckOne)?[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('pemiCopy'),\"icon\":_vm.mdiContentCopy,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"_textColor\":\"'#eee'\",\"_textColorHover\":\"'#fff'\",\"iconColor\":'#444',\"iconColorHover\":'#222',\"shadow\":false},on:{\"click\":_vm.copyItem}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})]:_vm._e(),(_vm.isEditable && _vm.hasItemsCheck)?[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('pemiDeleteCheckPemis'),\"icon\":_vm.mdiTrashCanOutline,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"_textColor\":\"'#eee'\",\"_textColorHover\":\"'#fff'\",\"iconColor\":'#444',\"iconColorHover\":'#222',\"shadow\":false},on:{\"click\":_vm.deleteItemsCheck}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})]:_vm._e(),(_vm.isEditable && _vm.isModified)?[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('saveChanges'),\"icon\":_vm.mdiCloudUploadOutline,\"backgroundColor\":'rgba(255,0,50,0.7)',\"backgroundColorHover\":'rgba(255,0,50,0.8)',\"textColor\":'#eee',\"textColorHover\":'#fff',\"iconColor\":'#eee',\"iconColorHover\":'#fff',\"shadow\":false},on:{\"click\":_vm.savePemis}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})]:_vm._e()],2)]),(!_vm.firstLoading)?[(_vm.items)?[_c('WAggridVueDyn',{ref:\"rftable\",style:(`width:100%;`),attrs:{\"height\":_vm.contentHeight,\"opt\":_vm.opt}})]:_vm._e()]:_c('div',{staticStyle:{\"padding\":\"10px 15px\",\"font-size\":\"0.8rem\"}},[_vm._v(\" \"+_vm._s(_vm.$t('waitingData'))+\" \")])],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div\r\n style=\"height:100%;\"\r\n v-domresize\r\n @domresize=\"resizePanel\"\r\n :changeParams=\"changeParams\"\r\n >\r\n\r\n <div\r\n style=\"_border-bottom:1px solid #ddd; background:#fff;\"\r\n v-domresize\r\n @domresize=\"resizeHead\"\r\n >\r\n\r\n <!-- 標題區 -->\r\n <div style=\"padding:10px 10px 10px 20px;\">\r\n <div :style=\"`display:flex; align-items:center; padding:${drawer?'5px':'5px 5px 5px 20px'};`\">\r\n\r\n <WIcon\r\n :icon=\"mdiStackOverflow\"\r\n :color=\"'#000'\"\r\n :size=\"32\"\r\n ></WIcon>\r\n\r\n <div style=\"padding-left:12px;\">\r\n\r\n <div style=\"font-size:1.4rem; color:#000;\">\r\n {{$t('mmPemis')}}\r\n </div>\r\n\r\n <div style=\"padding-top:2px; font-size:0.8rem; color:#666;\">\r\n {{$t('mmPemisMsg')}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <!-- 功能區 -->\r\n <div\r\n style=\"padding:5px; border-top:1px solid #ddd; display:flex; align-items:center;\"\r\n _v-if=\"showIsEditable || isEditable\"\r\n >\r\n\r\n <template v-if=\"showIsEditable\">\r\n\r\n <div style=\"padding:6px 0px 4px 4px;\">\r\n <WSwitch\r\n :checkedSwitchCircleColor=\"'#F68200'\"\r\n :checkedSwitchCircleColorHover=\"'#FB8C00'\"\r\n :checkedSwitchBarColor=\"'#FFE0B2'\"\r\n :checkedSwitchBarColorHover=\"'#FFE6B8'\"\r\n v-model=\"isEditable\"\r\n :text=\"$t('modeEdit')\"\r\n ></WSwitch>\r\n </div>\r\n\r\n <div style=\"padding-left:10px;\"></div>\r\n\r\n </template>\r\n\r\n <template v-if=\"true\">\r\n\r\n <WPopup\r\n :isolated=\"true\"\r\n _show=\"\"\r\n _hide=\"\"\r\n >\r\n <template v-slot:trigger>\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('showTabCols')\"\r\n :icon=\"mdiTableHeadersEye\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n _textColor=\"'#eee'\"\r\n _textColorHover=\"'#fff'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :shadow=\"false\"\r\n _click=\"\"\r\n ></WButtonCircle>\r\n </template>\r\n\r\n <template v-slot:content>\r\n <div style=\"padding:10px 0px 10px 0px;\">\r\n\r\n <div style=\"padding:7px 10px; font-size:0.85rem; color:#222; background:#f2f2f2;\">\r\n {{$t('showTabCols')}}\r\n </div>\r\n\r\n <div style=\"padding:7px 9px 0px 7px;\">\r\n <WInputCheckbox\r\n :items=\"tabKeysPick\"\r\n v-model=\"tabKeysShow\"\r\n @input=\"toggleTabKeys\"\r\n >\r\n <template v-slot=\"props\">\r\n <div style=\"padding-left:3px; display:flex; align-items:center; font-size:0.85rem; height:24px; cursor:pointer;\">\r\n {{getHead(props.item.data)}}\r\n </div>\r\n </template>\r\n </WInputCheckbox>\r\n </div>\r\n\r\n </div>\r\n </template>\r\n </WPopup>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n <template v-if=\"isEditable\">\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('pemiAdd')\"\r\n :icon=\"mdiPlus\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n _textColor=\"'#eee'\"\r\n _textColorHover=\"'#fff'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :shadow=\"false\"\r\n @click=\"addItem\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n <template v-if=\"isEditable && hasItemCheckOne\">\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('pemiCopy')\"\r\n :icon=\"mdiContentCopy\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n _textColor=\"'#eee'\"\r\n _textColorHover=\"'#fff'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :shadow=\"false\"\r\n @click=\"copyItem\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n <template v-if=\"isEditable && hasItemsCheck\">\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('pemiDeleteCheckPemis')\"\r\n :icon=\"mdiTrashCanOutline\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n _textColor=\"'#eee'\"\r\n _textColorHover=\"'#fff'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :shadow=\"false\"\r\n @click=\"deleteItemsCheck\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n <template v-if=\"isEditable && isModified\">\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('saveChanges')\"\r\n :icon=\"mdiCloudUploadOutline\"\r\n :backgroundColor=\"'rgba(255,0,50,0.7)'\"\r\n :backgroundColorHover=\"'rgba(255,0,50,0.8)'\"\r\n :textColor=\"'#eee'\"\r\n :textColorHover=\"'#fff'\"\r\n :iconColor=\"'#eee'\"\r\n :iconColorHover=\"'#fff'\"\r\n :shadow=\"false\"\r\n @click=\"savePemis\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n <template\r\n v-if=\"!firstLoading\"\r\n >\r\n\r\n <template v-if=\"items\">\r\n <WAggridVueDyn\r\n ref=\"rftable\"\r\n :style=\"`width:100%;`\"\r\n :height=\"contentHeight\"\r\n :opt=\"opt\"\r\n >\r\n </WAggridVueDyn>\r\n </template>\r\n\r\n </template>\r\n\r\n <div\r\n style=\"padding:10px 15px; font-size:0.8rem;\"\r\n v-else\r\n >\r\n {{$t('waitingData')}}\r\n </div>\r\n\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport { mdiStackOverflow, mdiVectorPolylinePlus, mdiCheckboxMarkedCircle, mdiCloudUploadOutline, mdiTrashCanOutline, mdiTableHeadersEye, mdiPlus, mdiPencilOutline, mdiContentCopy } from '@mdi/js/mdi.js'\r\nimport JSON5 from 'json5'\r\nimport get from 'lodash-es/get.js'\r\nimport set from 'lodash-es/set.js'\r\nimport each from 'lodash-es/each.js'\r\nimport map from 'lodash-es/map.js'\r\nimport size from 'lodash-es/size.js'\r\nimport filter from 'lodash-es/filter.js'\r\nimport sortBy from 'lodash-es/sortBy.js'\r\nimport cloneDeep from 'lodash-es/cloneDeep.js'\r\nimport haskey from 'wsemi/src/haskey.mjs'\r\nimport isestr from 'wsemi/src/isestr.mjs'\r\nimport iseobj from 'wsemi/src/iseobj.mjs'\r\nimport isnum from 'wsemi/src/isnum.mjs'\r\nimport cdbl from 'wsemi/src/cdbl.mjs'\r\nimport cstr from 'wsemi/src/cstr.mjs'\r\nimport arrPull from 'wsemi/src/arrPull.mjs'\r\nimport WIcon from 'w-component-vue/src/components/WIcon.vue'\r\nimport WSwitch from 'w-component-vue/src/components/WSwitch.vue'\r\nimport WButtonCircle from 'w-component-vue/src/components/WButtonCircle.vue'\r\nimport WPopup from 'w-component-vue/src/components/WPopup.vue'\r\nimport WInputCheckbox from 'w-component-vue/src/components/WInputCheckbox.vue'\r\nimport WAggridVueDyn from 'w-component-vue/src/components/WAggridVueDyn.vue'\r\n\r\n\r\nexport default {\r\n components: {\r\n WIcon,\r\n WSwitch,\r\n WButtonCircle,\r\n WPopup,\r\n WInputCheckbox,\r\n WAggridVueDyn,\r\n },\r\n props: {\r\n drawer: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n data: function() {\r\n return {\r\n mdiStackOverflow,\r\n mdiVectorPolylinePlus,\r\n mdiCheckboxMarkedCircle,\r\n mdiCloudUploadOutline,\r\n mdiTrashCanOutline,\r\n mdiTableHeadersEye,\r\n mdiPlus,\r\n mdiPencilOutline,\r\n mdiContentCopy,\r\n\r\n panelWidth: 100,\r\n panelHeight: 100,\r\n headHeight: 100,\r\n\r\n firstLoading: true,\r\n firstSetting: true,\r\n showIsEditable: false,\r\n isEditable: false,\r\n isModified: false,\r\n\r\n tabKeys: [\r\n 'id',\r\n 'name',\r\n 'description',\r\n 'from',\r\n 'belongGrups',\r\n 'crules',\r\n 'userId',\r\n 'timeCreate',\r\n 'userIdUpdate',\r\n 'timeUpdate',\r\n ],\r\n tabKeysPick: [\r\n 'name',\r\n 'description',\r\n 'from',\r\n 'belongGrups',\r\n 'crules',\r\n 'userId',\r\n 'timeCreate',\r\n 'userIdUpdate',\r\n 'timeUpdate',\r\n ],\r\n tabKeysShow: [\r\n 'name',\r\n 'description',\r\n // 'from',\r\n 'belongGrups',\r\n 'crules',\r\n // 'userId',\r\n // 'timeCreate',\r\n // 'userIdUpdate',\r\n // 'timeUpdate',\r\n ],\r\n\r\n widthPemisName: null,\r\n widthPemisDescription: null,\r\n\r\n items: [],\r\n itemsCheck: [],\r\n opt: null,\r\n\r\n }\r\n },\r\n mounted: function() {\r\n // console.log('mounted')\r\n\r\n let vo = this\r\n\r\n //註冊至$dg供使用\r\n vo.$dg.showVePemiBlngGrupsById = vo.showVePemiBlngGrupsById\r\n vo.$dg.showVeCrulesById = vo.showVeCrulesById\r\n\r\n //firstSetting\r\n if (vo.firstSetting) {\r\n // console.log('webInfor', vo.webInfor)\r\n\r\n let showModeEditPemis = get(vo, 'webInfor.showModeEditPemis', '')\r\n vo.showIsEditable = showModeEditPemis === 'y'\r\n let modeEditPemis = get(vo, 'webInfor.modeEditPemis', '')\r\n vo.isEditable = modeEditPemis === 'y'\r\n\r\n vo.widthPemisName = get(vo, 'webInfor.widthPemisName', '')\r\n vo.widthPemisDescription = get(vo, 'webInfor.widthPemisDescription', '')\r\n\r\n vo.firstSetting = false\r\n }\r\n\r\n },\r\n computed: {\r\n\r\n webInfor: function() {\r\n let wi = get(this, `$store.state.webInfor`)\r\n return wi\r\n },\r\n\r\n targets: function() {\r\n let rs = get(this, `$store.state.targets`)\r\n rs = sortBy(rs, 'order')\r\n return rs\r\n },\r\n\r\n pemis: function() {\r\n let rs = get(this, `$store.state.pemis`)\r\n rs = sortBy(rs, 'order')\r\n return rs\r\n },\r\n\r\n grups: function() {\r\n let rs = get(this, `$store.state.grups`)\r\n rs = sortBy(rs, 'order')\r\n return rs\r\n },\r\n\r\n users: function() {\r\n let rs = get(this, `$store.state.users`)\r\n rs = sortBy(rs, 'order')\r\n return rs\r\n },\r\n\r\n useGrups: function() {\r\n let vo = this\r\n\r\n //parse cpemis\r\n let grups = map(vo.grups, (g) => {\r\n\r\n //cloneDeep\r\n g = cloneDeep(g)\r\n\r\n //kpPemi\r\n let kpPemi = {}\r\n try {\r\n // console.log('g.cpemis', g.cpemis)\r\n kpPemi = JSON5.parse(g.cpemis)\r\n }\r\n catch (err) {}\r\n\r\n //save kpPemi\r\n g.kpPemi = kpPemi\r\n\r\n return g\r\n })\r\n // console.log('grups', grups)\r\n\r\n return grups\r\n },\r\n\r\n kpPemiGrup: function() {\r\n let vo = this\r\n\r\n //kp\r\n let kp = {}\r\n each(vo.useGrups, (g) => {\r\n each(g.kpPemi, (v, k) => {\r\n let isActive = get(v, 'isActive', '')\r\n if (isActive !== 'y') {\r\n return true //跳出換下一個\r\n }\r\n if (!haskey(kp, k)) {\r\n kp[k] = []\r\n }\r\n kp[k].push({\r\n grup: g,\r\n pemi: v,\r\n })\r\n })\r\n })\r\n // console.log('kp', kp)\r\n\r\n return kp\r\n },\r\n\r\n kpUsePemiGrup: function() {\r\n let vo = this\r\n\r\n //_kp\r\n let _kp = {}\r\n each(vo.pemis, (v, k) => {\r\n _kp[v.name] = true\r\n })\r\n // console.log('_kp', _kp)\r\n\r\n //kp\r\n let kp = {}\r\n each(vo.kpPemiGrup, (v, k) => {\r\n if (haskey(_kp, k)) {\r\n kp[k] = v\r\n }\r\n })\r\n // console.log('kp', kp)\r\n\r\n return kp\r\n },\r\n\r\n changeParams: function() {\r\n // console.log('computed changeParams')\r\n\r\n let vo = this\r\n\r\n //trigger\r\n let isEditable = vo.isEditable\r\n let pemis = cloneDeep(vo.pemis)\r\n let kpUsePemiGrup = cloneDeep(vo.kpUsePemiGrup)\r\n\r\n //items\r\n let items = vo.genItems(pemis, kpUsePemiGrup)\r\n\r\n //save\r\n vo.items = items\r\n\r\n //genOpt\r\n vo.genOpt({ isEditable })\r\n\r\n //firstLoading\r\n vo.firstLoading = false\r\n\r\n return ''\r\n },\r\n\r\n contentHeight: function() {\r\n let vo = this\r\n\r\n //h\r\n let h = vo.panelHeight - vo.headHeight\r\n h = Math.max(h, 0)\r\n\r\n return h\r\n },\r\n\r\n hasItemsCheck: function() {\r\n let vo = this\r\n\r\n //h\r\n let b = size(vo.itemsCheck) > 0\r\n\r\n return b\r\n },\r\n\r\n hasItemCheckOne: function() {\r\n let vo = this\r\n\r\n //h\r\n let b = size(vo.itemsCheck) === 1\r\n\r\n return b\r\n },\r\n\r\n errItemsByName: function() {\r\n let vo = this\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //kpErr\r\n let kpErr = {}\r\n let kpName = {}\r\n each(rows, (v, k) => {\r\n\r\n //name\r\n let name = get(v, 'name', '')\r\n\r\n //check\r\n if (!isestr(name)) {\r\n\r\n //kpErr\r\n kpErr[name] = vo.$t(`pemiNameEmpty`)\r\n\r\n return true //跳出換下一個\r\n }\r\n\r\n //check\r\n if (haskey(kpName, name)) {\r\n\r\n //kpErr\r\n kpErr[name] = vo.$t(`pemiNameDuplicate`)\r\n\r\n return true //跳出換下一個\r\n }\r\n\r\n //kpName\r\n kpName[name] = true\r\n\r\n })\r\n\r\n return kpErr\r\n },\r\n\r\n isError: function() {\r\n let vo = this\r\n\r\n let c = ''\r\n let b = false\r\n b = iseobj(vo.errItemsByName)\r\n if (b) {\r\n c = vo.$t('errInNames')\r\n }\r\n\r\n return c\r\n },\r\n\r\n kpHead: function() {\r\n let vo = this\r\n\r\n let kp = {\r\n 'id': vo.$t('id'),\r\n 'name': vo.$t('name'),\r\n 'description': vo.$t('description'),\r\n 'from': vo.$t('from'),\r\n 'belongGrups': vo.$t('belongGrups'),\r\n 'crules': vo.$t('pemiCrules'),\r\n 'userId': vo.$t('userId'),\r\n 'timeCreate': vo.$t('timeCreate'),\r\n 'userIdUpdate': vo.$t('userIdUpdate'),\r\n 'timeUpdate': vo.$t('timeUpdate'),\r\n }\r\n\r\n return kp\r\n },\r\n\r\n },\r\n methods: {\r\n\r\n resizePanel: function(msg) {\r\n // console.log('methods resizePanel', msg)\r\n\r\n let vo = this\r\n\r\n //panelWidth, panelHeight\r\n vo.panelWidth = msg.snew.offsetWidth\r\n vo.panelHeight = msg.snew.offsetHeight\r\n\r\n },\r\n\r\n resizeHead: function(msg) {\r\n // console.log('methods resizeHead', msg)\r\n\r\n let vo = this\r\n\r\n //headHeight\r\n vo.headHeight = msg.snew.offsetHeight\r\n\r\n },\r\n\r\n getHead: function(key) {\r\n // console.log('methods getHead', key)\r\n\r\n let vo = this\r\n\r\n let head = get(vo, `kpHead.${key}`, '')\r\n\r\n return head\r\n },\r\n\r\n genOpt: function() {\r\n // console.log('methods genOpt')\r\n\r\n let vo = this\r\n\r\n //default\r\n vo.itemsCheck = []\r\n\r\n //opt\r\n let opt = null\r\n if (size(vo.items) > 0) {\r\n\r\n //ks\r\n let ks = vo.tabKeys\r\n // console.log('ks', ks)\r\n\r\n //kpHead\r\n let kpHead = vo.kpHead\r\n\r\n //kpCellEditable, kpRowDrag, kpHeadCheckBox\r\n let kpCellEditable = {}\r\n let kpRowDrag = {}\r\n let kpHeadCheckBox = {}\r\n if (vo.isEditable) {\r\n kpCellEditable = {\r\n 'name': true,\r\n 'description': true,\r\n 'from': true,\r\n }\r\n kpRowDrag = {\r\n 'name': true,\r\n }\r\n kpHeadCheckBox = {\r\n 'name': true,\r\n }\r\n }\r\n\r\n //kpHeadHide\r\n let kpHeadHide = {\r\n 'id': true,\r\n }\r\n if (true) {\r\n let tabKeysHide = arrPull(vo.tabKeysPick, vo.tabKeysShow)\r\n each(tabKeysHide, (k) => {\r\n kpHeadHide[k] = true\r\n })\r\n }\r\n\r\n //opt\r\n opt = {\r\n language: vo.$t('aggridLanguage'),\r\n rows: vo.items,\r\n keys: ks,\r\n kpHead,\r\n // autoFitColumn: true,\r\n defCellEditable: false, //vo.isEditable,\r\n defHeadFilter: true,\r\n defCellAlignH: 'left',\r\n kpHeadHide,\r\n kpHeadFixLeft: {\r\n 'name': true,\r\n },\r\n defHeadMinWidth: 150,\r\n kpHeadWidth: {\r\n 'name': isnum(vo.widthPemisName) ? cdbl(vo.widthPemisName) : 300,\r\n 'description': isnum(vo.widthPemisDescription) ? cdbl(vo.widthPemisDescription) : 300,\r\n 'belongGrups': 300,\r\n 'crules': 300,\r\n 'timeCreate': 220,\r\n 'timeUpdate': 220,\r\n },\r\n kpHeadFilterType: {\r\n 'id': 'text',\r\n 'name': 'text',\r\n 'description': 'text',\r\n 'from': 'text',\r\n 'belongGrups': 'text',\r\n 'crules': 'text',\r\n 'userId': 'text',\r\n 'timeCreate': 'text',\r\n 'userIdUpdate': 'text',\r\n 'timeUpdate': 'text',\r\n },\r\n kpCellEditable,\r\n kpRowDrag,\r\n kpHeadCheckBox,\r\n kpHeadFilter: {\r\n 'belongGrups': false,\r\n 'crules': false,\r\n },\r\n kpHeadSort: {\r\n 'belongGrups': false,\r\n 'crules': false,\r\n },\r\n kpHeadFocusHighlight: { //雖然效果不完全, 但因按鈕與cell有padding可被點擊, 故還是需要開啟\r\n 'belongGrups': false,\r\n 'crules': false,\r\n },\r\n kpCellRender: {\r\n 'name': (v) => {\r\n // console.log('kpCellRender name', v)\r\n\r\n //err\r\n let err = get(vo.errItemsByName, v, '')\r\n // console.log(v, err)\r\n\r\n //check\r\n if (isestr(err)) {\r\n v = `\r\n <span title=\"${err}\">\r\n <span style=\"color:#F57C00;\">${cstr(v)}</span>\r\n <img style=\"vertical-align:sub; width:16px; height:16px;\" src=\"${vo.$ui.getIcon('warning')}\" />\r\n </span>\r\n `\r\n }\r\n\r\n return v\r\n },\r\n 'belongGrups': (v, k, r) => {\r\n // console.log('kpCellRender belongGrups', v, k, r)\r\n\r\n //id\r\n let id = get(r, 'id', '')\r\n // console.log('id', id, k, r)\r\n\r\n //因kpHeadFocusHighlight設定false時, 仍會於點擊其他可focus的cell, 再點回時依然出現highlight的focus邊框, 故改使用stopPropagation強制吃掉點擊訊息\r\n //因stopPropagation只吃掉訊息, 原本focus會處於原本可focus的cell, 再重複點時會於前個focus的cell出現highlight邊框, 故再多使用preventDefault阻止瀏覽器預設行為, 此等同於return false\r\n let t = `\r\n <div onclick=\"event.stopPropagation();event.preventDefault();\" onmousedown=\"event.stopPropagation();event.preventDefault();\">\r\n <button style=\"width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;\" onclick=\"$vo.$dg.showVePemiBlngGrupsById('${id}')\">${v}</button>\r\n </div>\r\n `\r\n\r\n return t\r\n },\r\n 'crules': (v, k, r) => {\r\n // console.log('kpCellRender crules', v, k, r)\r\n\r\n //id\r\n let id = get(r, 'id', '')\r\n // console.log('id', id, k, r)\r\n\r\n //因kpHeadFocusHighlight設定false時, 仍會於點擊其他可focus的cell, 再點回時依然出現highlight的focus邊框, 故改使用stopPropagation強制吃掉點擊訊息\r\n //因stopPropagation只吃掉訊息, 原本focus會處於原本可focus的cell, 再重複點時會於前個focus的cell出現highlight邊框, 故再多使用preventDefault阻止瀏覽器預設行為, 此等同於return false\r\n let t = `\r\n <div onclick=\"event.stopPropagation();event.preventDefault();\" onmousedown=\"event.stopPropagation();event.preventDefault();\">\r\n <button style=\"width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;\" onclick=\"$vo.$dg.showVeCrulesById('${id}')\">${vo.getCrulesText(v)}</button>\r\n </div>\r\n `\r\n\r\n return t\r\n },\r\n },\r\n rowsChange: (rs) => {\r\n // console.log('rowsChange', rs)\r\n // console.log('rowsChange cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n rowChecked: (rs) => {\r\n // console.log('rowChecked', rs)\r\n // console.log('rowChecked cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\r\n\r\n //save itemsCheck\r\n vo.itemsCheck = cloneDeep(rs)\r\n\r\n },\r\n }\r\n // console.log('opt', opt)\r\n\r\n }\r\n\r\n //save\r\n vo.opt = opt\r\n\r\n },\r\n\r\n refresh: function() {\r\n let vo = this\r\n\r\n //cmp\r\n let cmp = get(vo, '$refs.rftable.$refs.$self')\r\n // console.log('cmp', cmp)\r\n\r\n //refresh, 因set不會觸發kpCellRender, 故須另外調用組件函數refresh, 進而觸發kpCellRender, 使能更新數據\r\n cmp.refresh()\r\n\r\n },\r\n\r\n toggleTabKeys: function() {\r\n let vo = this\r\n\r\n //cmp\r\n let cmp = get(vo, '$refs.rftable.$refs.$self')\r\n // console.log('cmp', cmp)\r\n\r\n //showKeys\r\n cmp.showKeys(vo.tabKeysShow)\r\n // console.log('tabKeysShow', vo.tabKeysShow)\r\n\r\n },\r\n\r\n genItems: function(pemis, kpUsePemiGrup) {\r\n // console.log('method genItems', pemis, kpUsePemiGrup)\r\n\r\n let vo = this\r\n\r\n //items\r\n let items = map(pemis, (p) => {\r\n\r\n //gs\r\n let gs = []\r\n if (haskey(kpUsePemiGrup, p.name)) {\r\n gs = kpUsePemiGrup[p.name]\r\n }\r\n // console.log('gs', gs)\r\n\r\n //belongGrups\r\n let belongGrups = vo.$t('pemiBlngRnderNoGrup')\r\n let t = vo.$t('pemiBlngRnderGrups')\r\n let n = size(gs)\r\n if (n > 0) {\r\n t = t.replace('{n}', n)\r\n if (n === 1) {\r\n t = t.replace('{nms}', `(${gs[0].grup.name})`)\r\n }\r\n else {\r\n t = t.replace('{nms}', '')\r\n }\r\n belongGrups = t\r\n }\r\n\r\n //save belongGrups, gs\r\n p.belongGrups = belongGrups\r\n p.gs = gs\r\n // console.log('p', p)\r\n\r\n return p\r\n })\r\n // console.log('items', items)\r\n\r\n return items\r\n },\r\n\r\n addItem: function() {\r\n // console.log('method addItem')\r\n\r\n let vo = this\r\n\r\n //cloneDeep\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //cloneDeep\r\n rows = cloneDeep(rows)\r\n\r\n //r\r\n let r = vo.$ds.pemis.funNew()\r\n r.name = vo.$s.getNameNew(rows, 'name', '', vo.$t('pemiAddNameNew'))\r\n // r.crules = ''\r\n r.userId = `{${vo.$t('pemiAddIdNew')}}`\r\n r.timeCreate = `{${vo.$t('pemiAddIdNew')}}`\r\n r.userIdUpdate = `{${vo.$t('pemiAddIdNew')}}`\r\n r.timeUpdate = `{${vo.$t('pemiAddIdNew')}}`\r\n // console.log('r', r)\r\n\r\n //belongGrups, gs\r\n let gs = []\r\n let belongGrups = vo.$t('pemiBlngRnderNoGrup')\r\n\r\n //save belongGrups, gs\r\n r.belongGrups = belongGrups\r\n r.gs = gs\r\n // console.log('r', r)\r\n\r\n //添加至最首\r\n rows = [\r\n r,\r\n ...rows,\r\n ]\r\n\r\n //save\r\n vo.opt.rows = rows\r\n // console.log('cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n copyItem: function() {\r\n // console.log('method copyItem')\r\n\r\n let vo = this\r\n\r\n //check\r\n if (size(vo.itemsCheck) !== 1) {\r\n console.log(`size(vo.itemsCheck) !== 1`, vo.itemsCheck)\r\n vo.$alert(`${vo.$t('anUnexpectedErrorOccurred')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //cloneDeep\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //cloneDeep\r\n rows = cloneDeep(rows)\r\n\r\n //find\r\n let tar = vo.itemsCheck[0]\r\n let tarId = get(tar, 'data.id', '')\r\n let row = null\r\n each(rows, (v) => {\r\n let id = get(v, 'id', '')\r\n if (id === tarId) {\r\n row = v\r\n return false //跳出\r\n }\r\n })\r\n // console.log('tar', tar)\r\n // console.log('row', row)\r\n\r\n //check\r\n if (!iseobj(row)) {\r\n console.log(`!iseobj(row)`, row)\r\n vo.$alert(`${vo.$t('anUnexpectedErrorOccurred')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //r\r\n let r = cloneDeep(row)\r\n let nameOld = r.name\r\n let _r = vo.$ds.pemis.funNew()\r\n r.id = _r.id //使用新建方式預先產生id避免重複\r\n r.name = vo.$s.getNameNew(rows, 'name', nameOld, vo.$t('pemiCopyNameNew'))\r\n r.userId = `{${vo.$t('pemiAddIdNew')}}`\r\n r.timeCreate = `{${vo.$t('pemiAddIdNew')}}`\r\n r.userIdUpdate = `{${vo.$t('pemiAddIdNew')}}`\r\n r.timeUpdate = `{${vo.$t('pemiAddIdNew')}}`\r\n // console.log('r', r)\r\n\r\n //belongGrups, gs\r\n let gs = []\r\n let belongGrups = vo.$t('pemiBlngRnderNoGrup')\r\n\r\n //save belongGrups, gs\r\n r.belongGrups = belongGrups\r\n r.gs = gs\r\n // console.log('r', r)\r\n\r\n //添加至最首\r\n rows = [\r\n r,\r\n ...rows,\r\n ]\r\n\r\n //save\r\n vo.opt.rows = rows\r\n // console.log('cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n deleteItemsCheck: function() {\r\n // console.log('method deleteItemsCheck')\r\n\r\n let vo = this\r\n\r\n //check\r\n if (size(vo.itemsCheck) === 0) {\r\n console.log(`size(vo.itemsCheck) === 0`, vo.itemsCheck)\r\n vo.$alert(`${vo.$t('anUnexpectedErrorOccurred')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //cloneDeep\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //cloneDeep\r\n rows = cloneDeep(rows)\r\n\r\n //filter\r\n each(vo.itemsCheck, (v) => {\r\n // console.log('v', v)\r\n let id = get(v, 'data.id', '')\r\n if (!isestr(id)) {\r\n console.log(`invalid id`)\r\n return true //跳出換下一個\r\n }\r\n rows = filter(rows, (vv) => {\r\n return vv.id !== id\r\n })\r\n })\r\n\r\n //clear\r\n vo.itemsCheck = []\r\n\r\n //save\r\n vo.opt.rows = rows\r\n // console.log('deleteItemsCheck cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n fltKpRule: function(kp) {\r\n // console.log('fltKpRule', kp)\r\n\r\n let vo = this\r\n\r\n //_kp\r\n let _kp = {}\r\n each(vo.targets, (v, k) => {\r\n _kp[v.id] = true //管控對象須使用id\r\n })\r\n // console.log('_kp', _kp)\r\n\r\n //kpt\r\n let kpt = {}\r\n each(kp, (v, k) => {\r\n if (haskey(_kp, k)) {\r\n kpt[k] = v\r\n }\r\n })\r\n\r\n return kpt\r\n },\r\n\r\n getCrulesText: function(crules) {\r\n // console.log('method getCrulesText', crules)\r\n\r\n let vo = this\r\n\r\n //kpRule\r\n let kpRule = {}\r\n try {\r\n // console.log('crules', crules)\r\n kpRule = JSON5.parse(crules)\r\n }\r\n catch (err) {}\r\n // console.log('kpRule', kpRule)\r\n\r\n //fltKpRule\r\n kpRule = vo.fltKpRule(kpRule)\r\n // console.log('kpRule(fltKpRule)', kpRule)\r\n\r\n //vs\r\n let vs = []\r\n each(kpRule, (v, k) => {\r\n // console.log(k, 'v', v)\r\n\r\n //isActive\r\n let isActive = v //crules各值為直接儲存y或n\r\n if (isActive !== 'y') {\r\n return true //跳出換下一個\r\n }\r\n // console.log(k, '_isActive', _isActive)\r\n\r\n //push\r\n vs.push(k)\r\n\r\n })\r\n\r\n //crulesText\r\n let crulesText = vo.$t('pemiRnderCrulesNoRule')\r\n let t = vo.$t('pemiRnderCrulesHasNRule')\r\n let n = size(vs)\r\n if (n > 0) {\r\n t = t.replace('{n}', n)\r\n // if (n === 1) {\r\n // t = t.replace('{nms}', `(${vs[0]})`)\r\n // }\r\n // else {\r\n // t = t.replace('{nms}', '')\r\n // }\r\n t = t.replace('{nms}', '') //管控對象id太長, 顯示按鈕預設寬度小, 故皆僅顯示數量\r\n crulesText = t\r\n }\r\n\r\n return crulesText\r\n },\r\n\r\n showVePemiBlngGrupsById: function(id) {\r\n // console.log('method showVePemiBlngGrupsById', id)\r\n\r\n let vo = this\r\n\r\n //check\r\n if (!isestr(id)) {\r\n vo.$alert(`${vo.$t('pemiEditBlngGrupsNoPemiId')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //find\r\n let r = null\r\n // let kr = null\r\n each(rows, (v, k) => {\r\n if (get(v, 'id', '') === id) {\r\n r = v\r\n // kr = k\r\n return false //跳出\r\n }\r\n })\r\n // console.log('r', r)\r\n\r\n //check\r\n if (!iseobj(r)) {\r\n vo.$alert(`${vo.$t('pemiEditBlngGrupsNoPemiData')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //showVePemiBlngGrups\r\n vo.$dg.showVePemiBlngGrups({\r\n isEditable: vo.isEditable,\r\n pemi: r,\r\n })\r\n .then(() => {})\r\n .catch(() => {})\r\n\r\n },\r\n\r\n showVeCrulesById: function(id) {\r\n // console.log('method showVeCrulesById', id)\r\n\r\n let vo = this\r\n\r\n //check\r\n if (!isestr(id)) {\r\n vo.$alert(`${vo.$t('pemiEditCrulesNoPemiId')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //find\r\n let r = null\r\n let kr = null\r\n each(rows, (v, k) => {\r\n if (get(v, 'id', '') === id) {\r\n r = v\r\n kr = k\r\n return false //跳出\r\n }\r\n })\r\n\r\n //check\r\n if (!iseobj(r)) {\r\n vo.$alert(`${vo.$t('pemiEditCrulesNoPemiData')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //showVeCrules\r\n vo.$dg.showVeCrules({\r\n isEditable: vo.isEditable,\r\n pemi: r,\r\n })\r\n .then((crules) => {\r\n // console.log('crules', crules)\r\n\r\n //set\r\n set(vo, `opt.rows[${kr}].crules`, crules)\r\n // console.log('vo.opt.rows[kr]', cloneDeep(vo.opt.rows[kr]))\r\n\r\n //refresh\r\n vo.refresh()\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n })\r\n .catch(() => {})\r\n\r\n },\r\n\r\n savePemis: function() {\r\n // console.log('method savePemis')\r\n\r\n let vo = this\r\n\r\n async function core() {\r\n let errTemp = null\r\n\r\n //show loading\r\n vo.$ui.updateLoading(true)\r\n\r\n //check\r\n if (isestr(vo.isError)) {\r\n vo.$alert(`${vo.isError}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //check\r\n if (size(rows) === 0) {\r\n vo.$alert(`${vo.$t('pemiAddEmpty')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //updatePemis\r\n await vo.$fapi.updatePemis(rows)\r\n .catch((err) => {\r\n errTemp = err\r\n })\r\n\r\n //check\r\n if (errTemp !== null) {\r\n vo.$alert(`${vo.$t('pemiSavePemisFail')}: ${errTemp}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //isModified\r\n vo.isModified = false\r\n\r\n //alert\r\n vo.$alert(vo.$t('pemiSavePemisSuccess'))\r\n\r\n }\r\n\r\n //core\r\n core()\r\n // .then((res) => {\r\n // console.log('then', res)\r\n // })\r\n .catch((err) => {\r\n console.log('catch', err)\r\n vo.$alert(vo.$t('anUnexpectedErrorOccurred'), { type: 'error' })\r\n })\r\n .finally(() => {\r\n\r\n //hide loading\r\n vo.$ui.updateLoading(false)\r\n\r\n })\r\n\r\n },\r\n\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n</style>\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LayoutContentPemis.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LayoutContentPemis.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./LayoutContentPemis.vue?vue&type=template&id=5ce3fee3&scoped=true\"\nimport script from \"./LayoutContentPemis.vue?vue&type=script&lang=js\"\nexport * from \"./LayoutContentPemis.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5ce3fee3\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{directives:[{name:\"domresize\",rawName:\"v-domresize\"}],staticStyle:{\"height\":\"100%\"},attrs:{\"changeParams\":_vm.changeParams},on:{\"domresize\":_vm.resizePanel}},[_c('div',{directives:[{name:\"domresize\",rawName:\"v-domresize\"}],staticStyle:{\"_border-bottom\":\"1px solid #ddd\",\"background\":\"#fff\"},on:{\"domresize\":_vm.resizeHead}},[_c('div',{staticStyle:{\"padding\":\"10px 10px 10px 20px\"}},[_c('div',{style:(`display:flex; align-items:center; padding:${_vm.drawer?'5px':'5px 5px 5px 20px'};`)},[_c('WIcon',{attrs:{\"icon\":_vm.mdiSelectGroup,\"color\":'#000',\"size\":32}}),_c('div',{staticStyle:{\"padding-left\":\"12px\"}},[_c('div',{staticStyle:{\"font-size\":\"1.4rem\",\"color\":\"#000\"}},[_vm._v(\" \"+_vm._s(_vm.$t('mmGrups'))+\" \")]),_c('div',{staticStyle:{\"padding-top\":\"2px\",\"font-size\":\"0.8rem\",\"color\":\"#666\"}},[_vm._v(\" \"+_vm._s(_vm.$t('mmGrupsMsg'))+\" \")])])],1)]),_c('div',{staticStyle:{\"padding\":\"5px\",\"border-top\":\"1px solid #ddd\",\"display\":\"flex\",\"align-items\":\"center\"},attrs:{\"_v-if\":\"showIsEditable || isEditable\"}},[(_vm.showIsEditable)?[_c('div',{staticStyle:{\"padding\":\"6px 0px 4px 4px\"}},[_c('WSwitch',{attrs:{\"checkedSwitchCircleColor\":'#F68200',\"checkedSwitchCircleColorHover\":'#FB8C00',\"checkedSwitchBarColor\":'#FFE0B2',\"checkedSwitchBarColorHover\":'#FFE6B8',\"text\":_vm.$t('modeEdit')},model:{value:(_vm.isEditable),callback:function ($$v) {_vm.isEditable=$$v},expression:\"isEditable\"}})],1),_c('div',{staticStyle:{\"padding-left\":\"10px\"}})]:_vm._e(),(true)?[_c('WPopup',{attrs:{\"isolated\":true,\"_show\":\"\",\"_hide\":\"\"},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('showTabCols'),\"icon\":_vm.mdiTableHeadersEye,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"_textColor\":\"'#eee'\",\"_textColorHover\":\"'#fff'\",\"iconColor\":'#444',\"iconColorHover\":'#222',\"shadow\":false,\"_click\":\"\"}})]},proxy:true},{key:\"content\",fn:function(){return [_c('div',{staticStyle:{\"padding\":\"10px 0px 10px 0px\"}},[_c('div',{staticStyle:{\"padding\":\"7px 10px\",\"font-size\":\"0.85rem\",\"color\":\"#222\",\"background\":\"#f2f2f2\"}},[_vm._v(\" \"+_vm._s(_vm.$t('showTabCols'))+\" \")]),_c('div',{staticStyle:{\"padding\":\"7px 9px 0px 7px\"}},[_c('WInputCheckbox',{attrs:{\"items\":_vm.tabKeysPick},on:{\"input\":_vm.toggleTabKeys},scopedSlots:_vm._u([{key:\"default\",fn:function(props){return [_c('div',{staticStyle:{\"padding-left\":\"3px\",\"display\":\"flex\",\"align-items\":\"center\",\"font-size\":\"0.85rem\",\"height\":\"24px\",\"cursor\":\"pointer\"}},[_vm._v(\" \"+_vm._s(_vm.getHead(props.item.data))+\" \")])]}}],null,false,286315898),model:{value:(_vm.tabKeysShow),callback:function ($$v) {_vm.tabKeysShow=$$v},expression:\"tabKeysShow\"}})],1)])]},proxy:true}],null,false,1031542656)}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})]:_vm._e(),(_vm.isEditable)?[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('grupAdd'),\"icon\":_vm.mdiPlus,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"_textColor\":\"'#eee'\",\"_textColorHover\":\"'#fff'\",\"iconColor\":'#444',\"iconColorHover\":'#222',\"shadow\":false},on:{\"click\":_vm.addItem}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})]:_vm._e(),(_vm.isEditable && _vm.hasItemCheckOne)?[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('grupCopy'),\"icon\":_vm.mdiContentCopy,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"_textColor\":\"'#eee'\",\"_textColorHover\":\"'#fff'\",\"iconColor\":'#444',\"iconColorHover\":'#222',\"shadow\":false},on:{\"click\":_vm.copyItem}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})]:_vm._e(),(_vm.isEditable && _vm.hasItemsCheck)?[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('grupDeleteCheckGrups'),\"icon\":_vm.mdiTrashCanOutline,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"_textColor\":\"'#eee'\",\"_textColorHover\":\"'#fff'\",\"iconColor\":'#444',\"iconColorHover\":'#222',\"shadow\":false},on:{\"click\":_vm.deleteItemsCheck}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})]:_vm._e(),(_vm.isEditable && _vm.isModified)?[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('saveChanges'),\"icon\":_vm.mdiCloudUploadOutline,\"backgroundColor\":'rgba(255,0,50,0.7)',\"backgroundColorHover\":'rgba(255,0,50,0.8)',\"textColor\":'#eee',\"textColorHover\":'#fff',\"iconColor\":'#eee',\"iconColorHover\":'#fff',\"shadow\":false},on:{\"click\":_vm.saveGrups}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})]:_vm._e()],2)]),(!_vm.firstLoading)?[(_vm.items)?[_c('WAggridVueDyn',{ref:\"rftable\",style:(`width:100%;`),attrs:{\"height\":_vm.contentHeight,\"opt\":_vm.opt}})]:_vm._e()]:_c('div',{staticStyle:{\"padding\":\"10px 15px\",\"font-size\":\"0.8rem\"}},[_vm._v(\" \"+_vm._s(_vm.$t('waitingData'))+\" \")])],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div\r\n style=\"height:100%;\"\r\n v-domresize\r\n @domresize=\"resizePanel\"\r\n :changeParams=\"changeParams\"\r\n >\r\n\r\n <div\r\n style=\"_border-bottom:1px solid #ddd; background:#fff;\"\r\n v-domresize\r\n @domresize=\"resizeHead\"\r\n >\r\n\r\n <!-- 標題區 -->\r\n <div style=\"padding:10px 10px 10px 20px;\">\r\n <div :style=\"`display:flex; align-items:center; padding:${drawer?'5px':'5px 5px 5px 20px'};`\">\r\n\r\n <WIcon\r\n :icon=\"mdiSelectGroup\"\r\n :color=\"'#000'\"\r\n :size=\"32\"\r\n ></WIcon>\r\n\r\n <div style=\"padding-left:12px;\">\r\n\r\n <div style=\"font-size:1.4rem; color:#000;\">\r\n {{$t('mmGrups')}}\r\n </div>\r\n\r\n <div style=\"padding-top:2px; font-size:0.8rem; color:#666;\">\r\n {{$t('mmGrupsMsg')}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <!-- 功能區 -->\r\n <div\r\n style=\"padding:5px; border-top:1px solid #ddd; display:flex; align-items:center;\"\r\n _v-if=\"showIsEditable || isEditable\"\r\n >\r\n\r\n <template v-if=\"showIsEditable\">\r\n\r\n <div style=\"padding:6px 0px 4px 4px;\">\r\n <WSwitch\r\n :checkedSwitchCircleColor=\"'#F68200'\"\r\n :checkedSwitchCircleColorHover=\"'#FB8C00'\"\r\n :checkedSwitchBarColor=\"'#FFE0B2'\"\r\n :checkedSwitchBarColorHover=\"'#FFE6B8'\"\r\n v-model=\"isEditable\"\r\n :text=\"$t('modeEdit')\"\r\n ></WSwitch>\r\n </div>\r\n\r\n <div style=\"padding-left:10px;\"></div>\r\n\r\n </template>\r\n\r\n <template v-if=\"true\">\r\n\r\n <WPopup\r\n :isolated=\"true\"\r\n _show=\"\"\r\n _hide=\"\"\r\n >\r\n <template v-slot:trigger>\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('showTabCols')\"\r\n :icon=\"mdiTableHeadersEye\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n _textColor=\"'#eee'\"\r\n _textColorHover=\"'#fff'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :shadow=\"false\"\r\n _click=\"\"\r\n ></WButtonCircle>\r\n </template>\r\n\r\n <template v-slot:content>\r\n <div style=\"padding:10px 0px 10px 0px;\">\r\n\r\n <div style=\"padding:7px 10px; font-size:0.85rem; color:#222; background:#f2f2f2;\">\r\n {{$t('showTabCols')}}\r\n </div>\r\n\r\n <div style=\"padding:7px 9px 0px 7px;\">\r\n <WInputCheckbox\r\n :items=\"tabKeysPick\"\r\n v-model=\"tabKeysShow\"\r\n @input=\"toggleTabKeys\"\r\n >\r\n <template v-slot=\"props\">\r\n <div style=\"padding-left:3px; display:flex; align-items:center; font-size:0.85rem; height:24px; cursor:pointer;\">\r\n {{getHead(props.item.data)}}\r\n </div>\r\n </template>\r\n </WInputCheckbox>\r\n </div>\r\n\r\n </div>\r\n </template>\r\n </WPopup>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n <template v-if=\"isEditable\">\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('grupAdd')\"\r\n :icon=\"mdiPlus\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n _textColor=\"'#eee'\"\r\n _textColorHover=\"'#fff'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :shadow=\"false\"\r\n @click=\"addItem\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n <template v-if=\"isEditable && hasItemCheckOne\">\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('grupCopy')\"\r\n :icon=\"mdiContentCopy\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n _textColor=\"'#eee'\"\r\n _textColorHover=\"'#fff'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :shadow=\"false\"\r\n @click=\"copyItem\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n <template v-if=\"isEditable && hasItemsCheck\">\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('grupDeleteCheckGrups')\"\r\n :icon=\"mdiTrashCanOutline\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n _textColor=\"'#eee'\"\r\n _textColorHover=\"'#fff'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :shadow=\"false\"\r\n @click=\"deleteItemsCheck\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n <template v-if=\"isEditable && isModified\">\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('saveChanges')\"\r\n :icon=\"mdiCloudUploadOutline\"\r\n :backgroundColor=\"'rgba(255,0,50,0.7)'\"\r\n :backgroundColorHover=\"'rgba(255,0,50,0.8)'\"\r\n :textColor=\"'#eee'\"\r\n :textColorHover=\"'#fff'\"\r\n :iconColor=\"'#eee'\"\r\n :iconColorHover=\"'#fff'\"\r\n :shadow=\"false\"\r\n @click=\"saveGrups\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n <template\r\n v-if=\"!firstLoading\"\r\n >\r\n\r\n <template v-if=\"items\">\r\n <WAggridVueDyn\r\n ref=\"rftable\"\r\n :style=\"`width:100%;`\"\r\n :height=\"contentHeight\"\r\n :opt=\"opt\"\r\n >\r\n </WAggridVueDyn>\r\n </template>\r\n\r\n </template>\r\n\r\n <div\r\n style=\"padding:10px 15px; font-size:0.8rem;\"\r\n v-else\r\n >\r\n {{$t('waitingData')}}\r\n </div>\r\n\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport { mdiSelectGroup, mdiVectorPolylinePlus, mdiCheckboxMarkedCircle, mdiCloudUploadOutline, mdiTrashCanOutline, mdiTableHeadersEye, mdiPlus, mdiPencilOutline, mdiContentCopy } from '@mdi/js/mdi.js'\r\nimport JSON5 from 'json5'\r\nimport get from 'lodash-es/get.js'\r\nimport set from 'lodash-es/set.js'\r\nimport each from 'lodash-es/each.js'\r\nimport map from 'lodash-es/map.js'\r\nimport size from 'lodash-es/size.js'\r\nimport filter from 'lodash-es/filter.js'\r\nimport sortBy from 'lodash-es/sortBy.js'\r\nimport cloneDeep from 'lodash-es/cloneDeep.js'\r\nimport haskey from 'wsemi/src/haskey.mjs'\r\nimport isestr from 'wsemi/src/isestr.mjs'\r\nimport iseobj from 'wsemi/src/iseobj.mjs'\r\nimport isnum from 'wsemi/src/isnum.mjs'\r\nimport cdbl from 'wsemi/src/cdbl.mjs'\r\nimport cstr from 'wsemi/src/cstr.mjs'\r\nimport arrPull from 'wsemi/src/arrPull.mjs'\r\nimport WIcon from 'w-component-vue/src/components/WIcon.vue'\r\nimport WSwitch from 'w-component-vue/src/components/WSwitch.vue'\r\nimport WButtonCircle from 'w-component-vue/src/components/WButtonCircle.vue'\r\nimport WPopup from 'w-component-vue/src/components/WPopup.vue'\r\nimport WInputCheckbox from 'w-component-vue/src/components/WInputCheckbox.vue'\r\nimport WAggridVueDyn from 'w-component-vue/src/components/WAggridVueDyn.vue'\r\n\r\n\r\nexport default {\r\n components: {\r\n WIcon,\r\n WSwitch,\r\n WButtonCircle,\r\n WPopup,\r\n WInputCheckbox,\r\n WAggridVueDyn,\r\n },\r\n props: {\r\n drawer: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n data: function() {\r\n return {\r\n mdiSelectGroup,\r\n mdiVectorPolylinePlus,\r\n mdiCheckboxMarkedCircle,\r\n mdiCloudUploadOutline,\r\n mdiTrashCanOutline,\r\n mdiTableHeadersEye,\r\n mdiPlus,\r\n mdiPencilOutline,\r\n mdiContentCopy,\r\n\r\n panelWidth: 100,\r\n panelHeight: 100,\r\n headHeight: 100,\r\n\r\n firstLoading: true,\r\n firstSetting: true,\r\n showIsEditable: false,\r\n isEditable: false,\r\n isModified: false,\r\n\r\n tabKeys: [\r\n 'id',\r\n 'name',\r\n 'description',\r\n 'from',\r\n 'belongUsers',\r\n 'cpemis',\r\n 'userId',\r\n 'timeCreate',\r\n 'userIdUpdate',\r\n 'timeUpdate',\r\n ],\r\n tabKeysPick: [\r\n 'name',\r\n 'description',\r\n 'from',\r\n 'belongUsers',\r\n 'cpemis',\r\n 'userId',\r\n 'timeCreate',\r\n 'userIdUpdate',\r\n 'timeUpdate',\r\n ],\r\n tabKeysShow: [\r\n 'name',\r\n 'description',\r\n // 'from',\r\n 'belongUsers',\r\n 'cpemis',\r\n // 'userId',\r\n // 'timeCreate',\r\n // 'userIdUpdate',\r\n // 'timeUpdate',\r\n ],\r\n\r\n widthGrupsName: null,\r\n widthGrupsDescription: null,\r\n\r\n items: [],\r\n itemsCheck: [],\r\n opt: null,\r\n\r\n }\r\n },\r\n mounted: function() {\r\n // console.log('mounted')\r\n\r\n let vo = this\r\n\r\n //註冊至$dg供使用\r\n vo.$dg.showVeGrupBlngUsersById = vo.showVeGrupBlngUsersById\r\n vo.$dg.showVeCpemisById = vo.showVeCpemisById\r\n\r\n //firstSetting\r\n if (vo.firstSetting) {\r\n // console.log('webInfor', vo.webInfor)\r\n\r\n let showModeEditGrups = get(vo, 'webInfor.showModeEditGrups', '')\r\n vo.showIsEditable = showModeEditGrups === 'y'\r\n let modeEditGrups = get(vo, 'webInfor.modeEditGrups', '')\r\n vo.isEditable = modeEditGrups === 'y'\r\n\r\n vo.widthGrupsName = get(vo, 'webInfor.widthGrupsName', '')\r\n vo.widthGrupsDescription = get(vo, 'webInfor.widthGrupsDescription', '')\r\n\r\n vo.firstSetting = false\r\n }\r\n\r\n },\r\n computed: {\r\n\r\n webInfor: function() {\r\n let wi = get(this, `$store.state.webInfor`)\r\n return wi\r\n },\r\n\r\n targets: function() {\r\n let rs = get(this, `$store.state.targets`)\r\n rs = sortBy(rs, 'order')\r\n return rs\r\n },\r\n\r\n pemis: function() {\r\n let rs = get(this, `$store.state.pemis`)\r\n rs = sortBy(rs, 'order')\r\n return rs\r\n },\r\n\r\n grups: function() {\r\n let rs = get(this, `$store.state.grups`)\r\n rs = sortBy(rs, 'order')\r\n return rs\r\n },\r\n\r\n users: function() {\r\n let rs = get(this, `$store.state.users`)\r\n rs = sortBy(rs, 'order')\r\n return rs\r\n },\r\n\r\n useUsers: function() {\r\n let vo = this\r\n\r\n //parse cgrups\r\n let users = map(vo.users, (u) => {\r\n\r\n //cloneDeep\r\n u = cloneDeep(u)\r\n\r\n //kpGrup\r\n let kpGrup = {}\r\n try {\r\n // console.log('u.cgrups', u.cgrups)\r\n kpGrup = JSON5.parse(u.cgrups)\r\n }\r\n catch (err) {}\r\n\r\n //save kpGrup\r\n u.kpGrup = kpGrup\r\n\r\n return u\r\n })\r\n // console.log('users', users)\r\n\r\n return users\r\n },\r\n\r\n kpGrupUser: function() {\r\n let vo = this\r\n\r\n //kp\r\n let kp = {}\r\n each(vo.useUsers, (u) => {\r\n each(u.kpGrup, (v, k) => {\r\n let isActive = get(v, 'isActive', '')\r\n if (isActive !== 'y') {\r\n return true //跳出換下一個\r\n }\r\n if (!haskey(kp, k)) {\r\n kp[k] = []\r\n }\r\n kp[k].push({\r\n user: u,\r\n grup: v,\r\n })\r\n })\r\n })\r\n // console.log('kp', kp)\r\n\r\n return kp\r\n },\r\n\r\n kpUseGrupUser: function() {\r\n let vo = this\r\n\r\n //_kp\r\n let _kp = {}\r\n each(vo.grups, (v, k) => {\r\n _kp[v.name] = true\r\n })\r\n // console.log('_kp', _kp)\r\n\r\n //kp\r\n let kp = {}\r\n each(vo.kpGrupUser, (v, k) => {\r\n if (haskey(_kp, k)) {\r\n kp[k] = v\r\n }\r\n })\r\n // console.log('kp', kp)\r\n\r\n return kp\r\n },\r\n\r\n changeParams: function() {\r\n // console.log('computed changeParams')\r\n\r\n let vo = this\r\n\r\n //trigger\r\n let isEditable = vo.isEditable\r\n let grups = cloneDeep(vo.grups)\r\n let kpUseGrupUser = cloneDeep(vo.kpUseGrupUser)\r\n\r\n //items\r\n let items = vo.genItems(grups, kpUseGrupUser)\r\n\r\n //save\r\n vo.items = items\r\n\r\n //genOpt\r\n vo.genOpt({ isEditable })\r\n\r\n //firstLoading\r\n vo.firstLoading = false\r\n\r\n return ''\r\n },\r\n\r\n contentHeight: function() {\r\n let vo = this\r\n\r\n //h\r\n let h = vo.panelHeight - vo.headHeight\r\n h = Math.max(h, 0)\r\n\r\n return h\r\n },\r\n\r\n hasItemsCheck: function() {\r\n let vo = this\r\n\r\n //h\r\n let b = size(vo.itemsCheck) > 0\r\n\r\n return b\r\n },\r\n\r\n hasItemCheckOne: function() {\r\n let vo = this\r\n\r\n //h\r\n let b = size(vo.itemsCheck) === 1\r\n\r\n return b\r\n },\r\n\r\n errItemsByName: function() {\r\n let vo = this\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //kpErr\r\n let kpErr = {}\r\n let kpName = {}\r\n each(rows, (v, k) => {\r\n\r\n //name\r\n let name = get(v, 'name', '')\r\n\r\n //check\r\n if (!isestr(name)) {\r\n\r\n //kpErr\r\n kpErr[name] = vo.$t(`grupNameEmpty`)\r\n\r\n return true //跳出換下一個\r\n }\r\n\r\n //check\r\n if (haskey(kpName, name)) {\r\n\r\n //kpErr\r\n kpErr[name] = vo.$t(`grupNameDuplicate`)\r\n\r\n return true //跳出換下一個\r\n }\r\n\r\n //kpName\r\n kpName[name] = true\r\n\r\n })\r\n\r\n return kpErr\r\n },\r\n\r\n isError: function() {\r\n let vo = this\r\n\r\n let c = ''\r\n let b = false\r\n b = iseobj(vo.errItemsByName)\r\n if (b) {\r\n c = vo.$t('errInNames')\r\n }\r\n\r\n return c\r\n },\r\n\r\n kpHead: function() {\r\n let vo = this\r\n\r\n let kp = {\r\n 'id': vo.$t('id'),\r\n 'name': vo.$t('name'),\r\n 'description': vo.$t('description'),\r\n 'from': vo.$t('from'),\r\n 'belongUsers': vo.$t('belongUsers'),\r\n 'cpemis': vo.$t('grupCpemis'),\r\n 'userId': vo.$t('userId'),\r\n 'timeCreate': vo.$t('timeCreate'),\r\n 'userIdUpdate': vo.$t('userIdUpdate'),\r\n 'timeUpdate': vo.$t('timeUpdate'),\r\n }\r\n\r\n return kp\r\n },\r\n\r\n },\r\n methods: {\r\n\r\n resizePanel: function(msg) {\r\n // console.log('methods resizePanel', msg)\r\n\r\n let vo = this\r\n\r\n //panelWidth, panelHeight\r\n vo.panelWidth = msg.snew.offsetWidth\r\n vo.panelHeight = msg.snew.offsetHeight\r\n\r\n },\r\n\r\n resizeHead: function(msg) {\r\n // console.log('methods resizeHead', msg)\r\n\r\n let vo = this\r\n\r\n //headHeight\r\n vo.headHeight = msg.snew.offsetHeight\r\n\r\n },\r\n\r\n getHead: function(key) {\r\n // console.log('methods getHead', key)\r\n\r\n let vo = this\r\n\r\n let head = get(vo, `kpHead.${key}`, '')\r\n\r\n return head\r\n },\r\n\r\n genOpt: function() {\r\n // console.log('methods genOpt')\r\n\r\n let vo = this\r\n\r\n //default\r\n vo.itemsCheck = []\r\n\r\n //opt\r\n let opt = null\r\n if (size(vo.items) > 0) {\r\n\r\n //ks\r\n let ks = vo.tabKeys\r\n // console.log('ks', ks)\r\n\r\n //kpHead\r\n let kpHead = vo.kpHead\r\n\r\n //kpCellEditable, kpRowDrag, kpHeadCheckBox\r\n let kpCellEditable = {}\r\n let kpRowDrag = {}\r\n let kpHeadCheckBox = {}\r\n if (vo.isEditable) {\r\n kpCellEditable = {\r\n 'name': true,\r\n 'description': true,\r\n 'from': true,\r\n }\r\n kpRowDrag = {\r\n 'name': true,\r\n }\r\n kpHeadCheckBox = {\r\n 'name': true,\r\n }\r\n }\r\n\r\n //kpHeadHide\r\n let kpHeadHide = {\r\n 'id': true,\r\n }\r\n if (true) {\r\n let tabKeysHide = arrPull(vo.tabKeysPick, vo.tabKeysShow)\r\n each(tabKeysHide, (k) => {\r\n kpHeadHide[k] = true\r\n })\r\n }\r\n\r\n //opt\r\n opt = {\r\n language: vo.$t('aggridLanguage'),\r\n rows: vo.items,\r\n keys: ks,\r\n kpHead,\r\n // autoFitColumn: true,\r\n defCellEditable: false, //vo.isEditable,\r\n defHeadFilter: true,\r\n defCellAlignH: 'left',\r\n kpHeadHide,\r\n kpHeadFixLeft: {\r\n 'name': true,\r\n },\r\n defHeadMinWidth: 150,\r\n kpHeadWidth: {\r\n 'name': isnum(vo.widthGrupsName) ? cdbl(vo.widthGrupsName) : 300,\r\n 'description': isnum(vo.widthGrupsDescription) ? cdbl(vo.widthGrupsDescription) : 300,\r\n 'belongUsers': 300,\r\n 'cpemis': 300,\r\n 'timeCreate': 220,\r\n 'timeUpdate': 220,\r\n },\r\n kpHeadFilterType: {\r\n 'id': 'text',\r\n 'name': 'text',\r\n 'description': 'text',\r\n 'from': 'text',\r\n 'belongUsers': 'text',\r\n 'cpemis': 'text',\r\n 'userId': 'text',\r\n 'timeCreate': 'text',\r\n 'userIdUpdate': 'text',\r\n 'timeUpdate': 'text',\r\n },\r\n kpCellEditable,\r\n kpRowDrag,\r\n kpHeadCheckBox,\r\n kpHeadFilter: {\r\n 'belongUsers': false,\r\n 'cpemis': false,\r\n },\r\n kpHeadSort: {\r\n 'belongUsers': false,\r\n 'cpemis': false,\r\n },\r\n kpHeadFocusHighlight: { //雖然效果不完全, 但因按鈕與cell有padding可被點擊, 故還是需要開啟\r\n 'belongUsers': false,\r\n 'cpemis': false,\r\n },\r\n kpCellRender: {\r\n 'name': (v) => {\r\n // console.log('kpCellRender name', v)\r\n\r\n //err\r\n let err = get(vo.errItemsByName, v, '')\r\n // console.log(v, err)\r\n\r\n //check\r\n if (isestr(err)) {\r\n v = `\r\n <span title=\"${err}\">\r\n <span style=\"color:#F57C00;\">${cstr(v)}</span>\r\n <img style=\"vertical-align:sub; width:16px; height:16px;\" src=\"${vo.$ui.getIcon('warning')}\" />\r\n </span>\r\n `\r\n }\r\n\r\n return v\r\n },\r\n 'belongUsers': (v, k, r) => {\r\n // console.log('kpCellRender belongUsers', v, k, r)\r\n\r\n //id\r\n let id = get(r, 'id', '')\r\n // console.log('id', id, k, r)\r\n\r\n //因kpHeadFocusHighlight設定false時, 仍會於點擊其他可focus的cell, 再點回時依然出現highlight的focus邊框, 故改使用stopPropagation強制吃掉點擊訊息\r\n //因stopPropagation只吃掉訊息, 原本focus會處於原本可focus的cell, 再重複點時會於前個focus的cell出現highlight邊框, 故再多使用preventDefault阻止瀏覽器預設行為, 此等同於return false\r\n let t = `\r\n <div onclick=\"event.stopPropagation();event.preventDefault();\" onmousedown=\"event.stopPropagation();event.preventDefault();\">\r\n <button style=\"width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;\" onclick=\"$vo.$dg.showVeGrupBlngUsersById('${id}')\">${v}</button>\r\n </div>\r\n `\r\n\r\n return t\r\n },\r\n 'cpemis': (v, k, r) => {\r\n // console.log('kpCellRender cpemis', v, k, r)\r\n\r\n //id\r\n let id = get(r, 'id', '')\r\n // console.log('id', id, k, r)\r\n\r\n //因kpHeadFocusHighlight設定false時, 仍會於點擊其他可focus的cell, 再點回時依然出現highlight的focus邊框, 故改使用stopPropagation強制吃掉點擊訊息\r\n //因stopPropagation只吃掉訊息, 原本focus會處於原本可focus的cell, 再重複點時會於前個focus的cell出現highlight邊框, 故再多使用preventDefault阻止瀏覽器預設行為, 此等同於return false\r\n let t = `\r\n <div onclick=\"event.stopPropagation();event.preventDefault();\" onmousedown=\"event.stopPropagation();event.preventDefault();\">\r\n <button style=\"width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;\" onclick=\"$vo.$dg.showVeCpemisById('${id}')\">${vo.getCpemisText(v)}</button>\r\n </div>\r\n `\r\n\r\n return t\r\n },\r\n },\r\n rowsChange: (rs) => {\r\n // console.log('rowsChange', rs)\r\n // console.log('rowsChange cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n rowChecked: (rs) => {\r\n // console.log('rowChecked', rs)\r\n // console.log('rowChecked cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\r\n\r\n //save itemsCheck\r\n vo.itemsCheck = cloneDeep(rs)\r\n\r\n },\r\n }\r\n // console.log('opt', opt)\r\n\r\n }\r\n\r\n //save\r\n vo.opt = opt\r\n\r\n },\r\n\r\n refresh: function() {\r\n let vo = this\r\n\r\n //cmp\r\n let cmp = get(vo, '$refs.rftable.$refs.$self')\r\n // console.log('cmp', cmp)\r\n\r\n //refresh, 因set不會觸發kpCellRender, 故須另外調用組件函數refresh, 進而觸發kpCellRender, 使能更新數據\r\n cmp.refresh()\r\n\r\n },\r\n\r\n toggleTabKeys: function() {\r\n let vo = this\r\n\r\n //cmp\r\n let cmp = get(vo, '$refs.rftable.$refs.$self')\r\n // console.log('cmp', cmp)\r\n\r\n //showKeys\r\n cmp.showKeys(vo.tabKeysShow)\r\n // console.log('tabKeysShow', vo.tabKeysShow)\r\n\r\n },\r\n\r\n genItems: function(grups, kpUseGrupUser) {\r\n // console.log('method genItems', grups, kpUseGrupUser)\r\n\r\n let vo = this\r\n\r\n //items\r\n let items = map(grups, (g) => {\r\n\r\n //us\r\n let us = []\r\n if (haskey(kpUseGrupUser, g.name)) {\r\n us = kpUseGrupUser[g.name]\r\n }\r\n // console.log('us', us)\r\n\r\n //belongUsers\r\n let belongUsers = vo.$t('grupBlngRnderNoUser')\r\n let t = vo.$t('grupBlngRnderUsers')\r\n let n = size(us)\r\n if (n > 0) {\r\n t = t.replace('{n}', n)\r\n if (n === 1) {\r\n t = t.replace('{nms}', `(${us[0].user.name})`)\r\n }\r\n else {\r\n t = t.replace('{nms}', '')\r\n }\r\n belongUsers = t\r\n }\r\n\r\n //save belongUsers, us\r\n g.belongUsers = belongUsers\r\n g.us = us\r\n // console.log('g', g)\r\n\r\n return g\r\n })\r\n // console.log('items', items)\r\n\r\n return items\r\n },\r\n\r\n addItem: function() {\r\n // console.log('method addItem')\r\n\r\n let vo = this\r\n\r\n //cloneDeep\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //cloneDeep\r\n rows = cloneDeep(rows)\r\n\r\n //r\r\n let r = vo.$ds.grups.funNew()\r\n r.name = vo.$s.getNameNew(rows, 'name', '', vo.$t('grupAddNameNew'))\r\n r.userId = `{${vo.$t('grupAddIdNew')}}`\r\n r.timeCreate = `{${vo.$t('grupAddIdNew')}}`\r\n r.userIdUpdate = `{${vo.$t('grupAddIdNew')}}`\r\n r.timeUpdate = `{${vo.$t('grupAddIdNew')}}`\r\n // console.log('r', r)\r\n\r\n //belongUsers, us\r\n let us = []\r\n let belongUsers = vo.$t('grupBlngRnderNoUser')\r\n\r\n //save belongUsers, us\r\n r.belongUsers = belongUsers\r\n r.us = us\r\n // console.log('r', r)\r\n\r\n //添加至最首\r\n rows = [\r\n r,\r\n ...rows,\r\n ]\r\n\r\n //save\r\n vo.opt.rows = rows\r\n // console.log('cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n copyItem: function() {\r\n // console.log('method copyItem')\r\n\r\n let vo = this\r\n\r\n //check\r\n if (size(vo.itemsCheck) !== 1) {\r\n console.log(`size(vo.itemsCheck) !== 1`, vo.itemsCheck)\r\n vo.$alert(`${vo.$t('anUnexpectedErrorOccurred')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //cloneDeep\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //cloneDeep\r\n rows = cloneDeep(rows)\r\n\r\n //find\r\n let tar = vo.itemsCheck[0]\r\n let tarId = get(tar, 'data.id', '')\r\n let row = null\r\n each(rows, (v) => {\r\n let id = get(v, 'id', '')\r\n if (id === tarId) {\r\n row = v\r\n return false //跳出\r\n }\r\n })\r\n // console.log('tar', tar)\r\n // console.log('row', row)\r\n\r\n //check\r\n if (!iseobj(row)) {\r\n console.log(`!iseobj(row)`, row)\r\n vo.$alert(`${vo.$t('anUnexpectedErrorOccurred')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //r\r\n let r = cloneDeep(row)\r\n let nameOld = r.name\r\n let _r = vo.$ds.grups.funNew()\r\n r.id = _r.id //使用新建方式預先產生id避免重複\r\n r.name = vo.$s.getNameNew(rows, 'name', nameOld, vo.$t('grupCopyNameNew'))\r\n r.userId = `{${vo.$t('grupAddIdNew')}}`\r\n r.timeCreate = `{${vo.$t('grupAddIdNew')}}`\r\n r.userIdUpdate = `{${vo.$t('grupAddIdNew')}}`\r\n r.timeUpdate = `{${vo.$t('grupAddIdNew')}}`\r\n // console.log('r', r)\r\n\r\n //belongUsers, us\r\n let us = []\r\n let belongUsers = vo.$t('grupBlngRnderNoUser')\r\n\r\n //save belongUsers, us\r\n r.belongUsers = belongUsers\r\n r.us = us\r\n // console.log('r', r)\r\n\r\n //添加至最首\r\n rows = [\r\n r,\r\n ...rows,\r\n ]\r\n\r\n //save\r\n vo.opt.rows = rows\r\n // console.log('cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n deleteItemsCheck: function() {\r\n // console.log('method deleteItemsCheck')\r\n\r\n let vo = this\r\n\r\n //check\r\n if (size(vo.itemsCheck) === 0) {\r\n console.log(`size(vo.itemsCheck) === 0`, vo.itemsCheck)\r\n vo.$alert(`${vo.$t('anUnexpectedErrorOccurred')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //cloneDeep\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //cloneDeep\r\n rows = cloneDeep(rows)\r\n\r\n //filter\r\n each(vo.itemsCheck, (v) => {\r\n // console.log('v', v)\r\n let id = get(v, 'data.id', '')\r\n if (!isestr(id)) {\r\n console.log(`invalid id`)\r\n return true //跳出換下一個\r\n }\r\n rows = filter(rows, (vv) => {\r\n return vv.id !== id\r\n })\r\n })\r\n\r\n //clear\r\n vo.itemsCheck = []\r\n\r\n //save\r\n vo.opt.rows = rows\r\n // console.log('deleteItemsCheck cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n fltKpPemi: function(kp) {\r\n // console.log('fltKpPemi', kp)\r\n\r\n let vo = this\r\n\r\n //_kp\r\n let _kp = {}\r\n each(vo.pemis, (v, k) => {\r\n _kp[v.name] = true\r\n })\r\n // console.log('_kp', _kp)\r\n\r\n //kpt\r\n let kpt = {}\r\n each(kp, (v, k) => {\r\n if (haskey(_kp, k)) {\r\n kpt[k] = v\r\n }\r\n })\r\n\r\n return kpt\r\n },\r\n\r\n getCpemisText: function(cpemis) {\r\n // console.log('method getCpemisText', cpemis)\r\n\r\n let vo = this\r\n\r\n //kpPemi\r\n let kpPemi = {}\r\n try {\r\n // console.log('cpemis', cpemis)\r\n kpPemi = JSON5.parse(cpemis)\r\n }\r\n catch (err) {}\r\n // console.log('kpPemi', kpPemi)\r\n\r\n //fltKpPemi\r\n kpPemi = vo.fltKpPemi(kpPemi)\r\n // console.log('kpPemi(fltKpPemi)', kpPemi)\r\n\r\n //vs\r\n let vs = []\r\n each(kpPemi, (v, k) => {\r\n // console.log(k, 'v', v)\r\n\r\n //isActive\r\n let isActive = get(v, 'isActive', '')\r\n if (isActive !== 'y') {\r\n return true //跳出換下一個\r\n }\r\n // console.log(k, '_isActive', _isActive)\r\n\r\n //push\r\n vs.push(k)\r\n\r\n })\r\n\r\n //cpemisText\r\n let cpemisText = vo.$t('grupRnderCpemisNoPermission')\r\n let t = vo.$t('grupRnderCpemisHasNPermissions')\r\n let n = size(vs)\r\n if (n > 0) {\r\n t = t.replace('{n}', n)\r\n if (n === 1) {\r\n t = t.replace('{nms}', `(${vs[0]})`)\r\n }\r\n else {\r\n t = t.replace('{nms}', '')\r\n }\r\n cpemisText = t\r\n }\r\n\r\n return cpemisText\r\n },\r\n\r\n showVeGrupBlngUsersById: function(id) {\r\n // console.log('method showVeGrupBlngUsersById', id)\r\n\r\n let vo = this\r\n\r\n //check\r\n if (!isestr(id)) {\r\n vo.$alert(`${vo.$t('grupEditBlngNoGrupId')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //find\r\n let r = null\r\n // let kr = null\r\n each(rows, (v, k) => {\r\n if (get(v, 'id', '') === id) {\r\n r = v\r\n // kr = k\r\n return false //跳出\r\n }\r\n })\r\n // console.log('r', r)\r\n\r\n //check\r\n if (!iseobj(r)) {\r\n vo.$alert(`${vo.$t('grupEditBlngNoGrupData')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //showVeGrupBlngUsers\r\n vo.$dg.showVeGrupBlngUsers({\r\n isEditable: vo.isEditable,\r\n grup: r,\r\n })\r\n .then(() => {})\r\n .catch(() => {})\r\n\r\n },\r\n\r\n showVeCpemisById: function(id) {\r\n // console.log('method showVeCpemisById', id)\r\n\r\n let vo = this\r\n\r\n //check\r\n if (!isestr(id)) {\r\n vo.$alert(`${vo.$t('grupEditBlngNoGrupId')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //find\r\n let r = null\r\n let kr = null\r\n each(rows, (v, k) => {\r\n if (get(v, 'id', '') === id) {\r\n r = v\r\n kr = k\r\n return false //跳出\r\n }\r\n })\r\n\r\n //check\r\n if (!iseobj(r)) {\r\n vo.$alert(`${vo.$t('grupEditBlngNoGrupData')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //showVeCpemis\r\n vo.$dg.showVeCpemis({\r\n isEditable: vo.isEditable,\r\n grup: r,\r\n })\r\n .then((cpemis) => {\r\n // console.log('cpemis', cpemis)\r\n\r\n //set\r\n set(vo, `opt.rows[${kr}].cpemis`, cpemis)\r\n // console.log('vo.opt.rows[kr]', cloneDeep(vo.opt.rows[kr]))\r\n\r\n //refresh\r\n vo.refresh()\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n })\r\n .catch(() => {})\r\n\r\n },\r\n\r\n saveGrups: function() {\r\n // console.log('method saveGrups')\r\n\r\n let vo = this\r\n\r\n async function core() {\r\n let errTemp = null\r\n\r\n //show loading\r\n vo.$ui.updateLoading(true)\r\n\r\n //check\r\n if (isestr(vo.isError)) {\r\n vo.$alert(`${vo.isError}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //check\r\n if (size(rows) === 0) {\r\n vo.$alert(`${vo.$t('grupAddEmpty')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //updateGrups\r\n await vo.$fapi.updateGrups(rows)\r\n .catch((err) => {\r\n errTemp = err\r\n })\r\n\r\n //check\r\n if (errTemp !== null) {\r\n vo.$alert(`${vo.$t('grupSaveGrupsFail')}: ${errTemp}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //isModified\r\n vo.isModified = false\r\n\r\n //alert\r\n vo.$alert(vo.$t('grupSaveGrupsSuccess'))\r\n\r\n }\r\n\r\n //core\r\n core()\r\n // .then((res) => {\r\n // console.log('then', res)\r\n // })\r\n .catch((err) => {\r\n console.log('catch', err)\r\n vo.$alert(vo.$t('anUnexpectedErrorOccurred'), { type: 'error' })\r\n })\r\n .finally(() => {\r\n\r\n //hide loading\r\n vo.$ui.updateLoading(false)\r\n\r\n })\r\n\r\n },\r\n\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n</style>\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LayoutContentGrups.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LayoutContentGrups.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./LayoutContentGrups.vue?vue&type=template&id=e6799f4e&scoped=true\"\nimport script from \"./LayoutContentGrups.vue?vue&type=script&lang=js\"\nexport * from \"./LayoutContentGrups.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e6799f4e\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{directives:[{name:\"domresize\",rawName:\"v-domresize\"}],staticStyle:{\"height\":\"100%\"},attrs:{\"changeParams\":_vm.changeParams},on:{\"domresize\":_vm.resizePanel}},[_c('div',{directives:[{name:\"domresize\",rawName:\"v-domresize\"}],staticStyle:{\"_border-bottom\":\"1px solid #ddd\",\"background\":\"#fff\"},on:{\"domresize\":_vm.resizeHead}},[_c('div',{staticStyle:{\"padding\":\"10px 10px 10px 20px\"}},[_c('div',{style:(`display:flex; align-items:center; padding:${_vm.drawer?'5px':'5px 5px 5px 20px'};`)},[_c('WIcon',{attrs:{\"icon\":_vm.mdiAccountGroupOutline,\"color\":'#000',\"size\":32}}),_c('div',{staticStyle:{\"padding-left\":\"12px\"}},[_c('div',{staticStyle:{\"font-size\":\"1.4rem\",\"color\":\"#000\"}},[_vm._v(\" \"+_vm._s(_vm.$t('mmUsers'))+\" \")]),_c('div',{staticStyle:{\"padding-top\":\"2px\",\"font-size\":\"0.8rem\",\"color\":\"#666\"}},[_vm._v(\" \"+_vm._s(_vm.$t('mmUsersMsg'))+\" \")])])],1)]),_c('div',{staticStyle:{\"padding\":\"5px\",\"border-top\":\"1px solid #ddd\",\"display\":\"flex\",\"align-items\":\"center\"},attrs:{\"_v-if\":\"showIsEditable || isEditable\"}},[(_vm.showIsEditable)?[_c('div',{staticStyle:{\"padding\":\"6px 0px 4px 4px\"}},[_c('WSwitch',{attrs:{\"checkedSwitchCircleColor\":'#F68200',\"checkedSwitchCircleColorHover\":'#FB8C00',\"checkedSwitchBarColor\":'#FFE0B2',\"checkedSwitchBarColorHover\":'#FFE6B8',\"text\":_vm.$t('modeEdit')},model:{value:(_vm.isEditable),callback:function ($$v) {_vm.isEditable=$$v},expression:\"isEditable\"}})],1),_c('div',{staticStyle:{\"padding-left\":\"10px\"}})]:_vm._e(),(true)?[_c('WPopup',{attrs:{\"isolated\":true,\"_show\":\"\",\"_hide\":\"\"},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('showTabCols'),\"icon\":_vm.mdiTableHeadersEye,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"_textColor\":\"'#eee'\",\"_textColorHover\":\"'#fff'\",\"iconColor\":'#444',\"iconColorHover\":'#222',\"shadow\":false,\"_click\":\"\"}})]},proxy:true},{key:\"content\",fn:function(){return [_c('div',{staticStyle:{\"padding\":\"10px 0px 10px 0px\"}},[_c('div',{staticStyle:{\"padding\":\"7px 10px\",\"font-size\":\"0.85rem\",\"color\":\"#222\",\"background\":\"#f2f2f2\"}},[_vm._v(\" \"+_vm._s(_vm.$t('showTabCols'))+\" \")]),_c('div',{staticStyle:{\"padding\":\"7px 9px 0px 7px\"}},[_c('WInputCheckbox',{attrs:{\"items\":_vm.tabKeysPick},on:{\"input\":_vm.toggleTabKeys},scopedSlots:_vm._u([{key:\"default\",fn:function(props){return [_c('div',{staticStyle:{\"padding-left\":\"3px\",\"display\":\"flex\",\"align-items\":\"center\",\"font-size\":\"0.85rem\",\"height\":\"24px\",\"cursor\":\"pointer\"}},[_vm._v(\" \"+_vm._s(_vm.getHead(props.item.data))+\" \")])]}}],null,false,286315898),model:{value:(_vm.tabKeysShow),callback:function ($$v) {_vm.tabKeysShow=$$v},expression:\"tabKeysShow\"}})],1)])]},proxy:true}],null,false,1031542656)}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})]:_vm._e(),(_vm.isEditable)?[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('userAdd'),\"icon\":_vm.mdiPlus,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"_textColor\":\"'#eee'\",\"_textColorHover\":\"'#fff'\",\"iconColor\":'#444',\"iconColorHover\":'#222',\"shadow\":false},on:{\"click\":_vm.addItem}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})]:_vm._e(),(_vm.isEditable && _vm.hasItemCheckOne)?[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('userCopy'),\"icon\":_vm.mdiContentCopy,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"_textColor\":\"'#eee'\",\"_textColorHover\":\"'#fff'\",\"iconColor\":'#444',\"iconColorHover\":'#222',\"shadow\":false},on:{\"click\":_vm.copyItem}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})]:_vm._e(),(_vm.isEditable && _vm.hasItemsCheck)?[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('userDeleteCheckUsers'),\"icon\":_vm.mdiTrashCanOutline,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"_textColor\":\"'#eee'\",\"_textColorHover\":\"'#fff'\",\"iconColor\":'#444',\"iconColorHover\":'#222',\"shadow\":false},on:{\"click\":_vm.deleteItemsCheck}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})]:_vm._e(),(_vm.isEditable && _vm.isModified)?[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('saveChanges'),\"icon\":_vm.mdiCloudUploadOutline,\"backgroundColor\":'rgba(255,0,50,0.7)',\"backgroundColorHover\":'rgba(255,0,50,0.8)',\"textColor\":'#eee',\"textColorHover\":'#fff',\"iconColor\":'#eee',\"iconColorHover\":'#fff',\"shadow\":false},on:{\"click\":_vm.saveUsers}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})]:_vm._e()],2)]),(!_vm.firstLoading)?[(_vm.items)?[_c('WAggridVueDyn',{ref:\"rftable\",style:(`width:100%;`),attrs:{\"height\":_vm.contentHeight,\"opt\":_vm.opt}})]:_vm._e()]:_c('div',{staticStyle:{\"padding\":\"10px 15px\",\"font-size\":\"0.8rem\"}},[_vm._v(\" \"+_vm._s(_vm.$t('waitingData'))+\" \")])],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div\r\n style=\"height:100%;\"\r\n v-domresize\r\n @domresize=\"resizePanel\"\r\n :changeParams=\"changeParams\"\r\n >\r\n\r\n <div\r\n style=\"_border-bottom:1px solid #ddd; background:#fff;\"\r\n v-domresize\r\n @domresize=\"resizeHead\"\r\n >\r\n\r\n <!-- 標題區 -->\r\n <div style=\"padding:10px 10px 10px 20px;\">\r\n <div :style=\"`display:flex; align-items:center; padding:${drawer?'5px':'5px 5px 5px 20px'};`\">\r\n\r\n <WIcon\r\n :icon=\"mdiAccountGroupOutline\"\r\n :color=\"'#000'\"\r\n :size=\"32\"\r\n ></WIcon>\r\n\r\n <div style=\"padding-left:12px;\">\r\n\r\n <div style=\"font-size:1.4rem; color:#000;\">\r\n {{$t('mmUsers')}}\r\n </div>\r\n\r\n <div style=\"padding-top:2px; font-size:0.8rem; color:#666;\">\r\n {{$t('mmUsersMsg')}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <!-- 功能區 -->\r\n <div\r\n style=\"padding:5px; border-top:1px solid #ddd; display:flex; align-items:center;\"\r\n _v-if=\"showIsEditable || isEditable\"\r\n >\r\n\r\n <template v-if=\"showIsEditable\">\r\n\r\n <div style=\"padding:6px 0px 4px 4px;\">\r\n <WSwitch\r\n :checkedSwitchCircleColor=\"'#F68200'\"\r\n :checkedSwitchCircleColorHover=\"'#FB8C00'\"\r\n :checkedSwitchBarColor=\"'#FFE0B2'\"\r\n :checkedSwitchBarColorHover=\"'#FFE6B8'\"\r\n v-model=\"isEditable\"\r\n :text=\"$t('modeEdit')\"\r\n ></WSwitch>\r\n </div>\r\n\r\n <div style=\"padding-left:10px;\"></div>\r\n\r\n </template>\r\n\r\n <template v-if=\"true\">\r\n\r\n <WPopup\r\n :isolated=\"true\"\r\n _show=\"\"\r\n _hide=\"\"\r\n >\r\n <template v-slot:trigger>\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('showTabCols')\"\r\n :icon=\"mdiTableHeadersEye\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n _textColor=\"'#eee'\"\r\n _textColorHover=\"'#fff'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :shadow=\"false\"\r\n _click=\"\"\r\n ></WButtonCircle>\r\n </template>\r\n\r\n <template v-slot:content>\r\n <div style=\"padding:10px 0px 10px 0px;\">\r\n\r\n <div style=\"padding:7px 10px; font-size:0.85rem; color:#222; background:#f2f2f2;\">\r\n {{$t('showTabCols')}}\r\n </div>\r\n\r\n <div style=\"padding:7px 9px 0px 7px;\">\r\n <WInputCheckbox\r\n :items=\"tabKeysPick\"\r\n v-model=\"tabKeysShow\"\r\n @input=\"toggleTabKeys\"\r\n >\r\n <template v-slot=\"props\">\r\n <div style=\"padding-left:3px; display:flex; align-items:center; font-size:0.85rem; height:24px; cursor:pointer;\">\r\n {{getHead(props.item.data)}}\r\n </div>\r\n </template>\r\n </WInputCheckbox>\r\n </div>\r\n\r\n </div>\r\n </template>\r\n </WPopup>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n <template v-if=\"isEditable\">\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('userAdd')\"\r\n :icon=\"mdiPlus\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n _textColor=\"'#eee'\"\r\n _textColorHover=\"'#fff'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :shadow=\"false\"\r\n @click=\"addItem\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n <template v-if=\"isEditable && hasItemCheckOne\">\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('userCopy')\"\r\n :icon=\"mdiContentCopy\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n _textColor=\"'#eee'\"\r\n _textColorHover=\"'#fff'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :shadow=\"false\"\r\n @click=\"copyItem\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n <template v-if=\"isEditable && hasItemsCheck\">\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('userDeleteCheckUsers')\"\r\n :icon=\"mdiTrashCanOutline\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n _textColor=\"'#eee'\"\r\n _textColorHover=\"'#fff'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :shadow=\"false\"\r\n @click=\"deleteItemsCheck\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n <template v-if=\"isEditable && isModified\">\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('saveChanges')\"\r\n :icon=\"mdiCloudUploadOutline\"\r\n :backgroundColor=\"'rgba(255,0,50,0.7)'\"\r\n :backgroundColorHover=\"'rgba(255,0,50,0.8)'\"\r\n :textColor=\"'#eee'\"\r\n :textColorHover=\"'#fff'\"\r\n :iconColor=\"'#eee'\"\r\n :iconColorHover=\"'#fff'\"\r\n :shadow=\"false\"\r\n @click=\"saveUsers\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n <template\r\n v-if=\"!firstLoading\"\r\n >\r\n\r\n <template v-if=\"items\">\r\n <WAggridVueDyn\r\n ref=\"rftable\"\r\n :style=\"`width:100%;`\"\r\n :height=\"contentHeight\"\r\n :opt=\"opt\"\r\n >\r\n </WAggridVueDyn>\r\n </template>\r\n\r\n </template>\r\n\r\n <div\r\n style=\"padding:10px 15px; font-size:0.8rem;\"\r\n v-else\r\n >\r\n {{$t('waitingData')}}\r\n </div>\r\n\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport { mdiAccountGroupOutline, mdiVectorPolylinePlus, mdiCheckboxMarkedCircle, mdiCloudUploadOutline, mdiTrashCanOutline, mdiTableHeadersEye, mdiPlus, mdiPencilOutline, mdiContentCopy } from '@mdi/js/mdi.js'\r\nimport JSON5 from 'json5'\r\nimport get from 'lodash-es/get.js'\r\nimport set from 'lodash-es/set.js'\r\nimport each from 'lodash-es/each.js'\r\nimport size from 'lodash-es/size.js'\r\nimport filter from 'lodash-es/filter.js'\r\nimport sortBy from 'lodash-es/sortBy.js'\r\nimport cloneDeep from 'lodash-es/cloneDeep.js'\r\nimport haskey from 'wsemi/src/haskey.mjs'\r\nimport isestr from 'wsemi/src/isestr.mjs'\r\nimport iseobj from 'wsemi/src/iseobj.mjs'\r\nimport isnum from 'wsemi/src/isnum.mjs'\r\nimport isEmail from 'wsemi/src/isEmail.mjs'\r\nimport cdbl from 'wsemi/src/cdbl.mjs'\r\nimport cstr from 'wsemi/src/cstr.mjs'\r\nimport arrPull from 'wsemi/src/arrPull.mjs'\r\nimport WIcon from 'w-component-vue/src/components/WIcon.vue'\r\nimport WSwitch from 'w-component-vue/src/components/WSwitch.vue'\r\nimport WButtonCircle from 'w-component-vue/src/components/WButtonCircle.vue'\r\nimport WPopup from 'w-component-vue/src/components/WPopup.vue'\r\nimport WInputCheckbox from 'w-component-vue/src/components/WInputCheckbox.vue'\r\nimport WAggridVueDyn from 'w-component-vue/src/components/WAggridVueDyn.vue'\r\n\r\n\r\nexport default {\r\n components: {\r\n WIcon,\r\n WSwitch,\r\n WButtonCircle,\r\n WPopup,\r\n WInputCheckbox,\r\n WAggridVueDyn,\r\n },\r\n props: {\r\n drawer: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n data: function() {\r\n return {\r\n mdiAccountGroupOutline,\r\n mdiVectorPolylinePlus,\r\n mdiCheckboxMarkedCircle,\r\n mdiCloudUploadOutline,\r\n mdiTrashCanOutline,\r\n mdiTableHeadersEye,\r\n mdiPlus,\r\n mdiPencilOutline,\r\n mdiContentCopy,\r\n\r\n panelWidth: 100,\r\n panelHeight: 100,\r\n headHeight: 100,\r\n\r\n firstLoading: true,\r\n firstSetting: true,\r\n showIsEditable: false,\r\n isEditable: false,\r\n isModified: false,\r\n\r\n tabKeys: [\r\n 'id',\r\n 'name',\r\n 'email',\r\n 'description',\r\n 'from',\r\n 'cgrups',\r\n 'isAdmin',\r\n 'isActive',\r\n 'userId',\r\n 'timeCreate',\r\n 'userIdUpdate',\r\n 'timeUpdate',\r\n ],\r\n tabKeysPick: [\r\n 'name',\r\n 'email',\r\n 'description',\r\n 'from',\r\n 'cgrups',\r\n 'isAdmin',\r\n 'isActive',\r\n 'userId',\r\n 'timeCreate',\r\n 'userIdUpdate',\r\n 'timeUpdate',\r\n ],\r\n tabKeysShow: [\r\n 'name',\r\n 'email',\r\n 'description',\r\n // 'from',\r\n 'cgrups',\r\n 'isAdmin',\r\n 'isActive',\r\n // 'userId',\r\n // 'timeCreate',\r\n // 'userIdUpdate',\r\n // 'timeUpdate',\r\n ],\r\n\r\n widthUsersName: null,\r\n widthUsersEmail: null,\r\n widthUsersDescription: null,\r\n\r\n items: [],\r\n itemsCheck: [],\r\n opt: null,\r\n\r\n }\r\n },\r\n mounted: function() {\r\n // console.log('mounted')\r\n\r\n let vo = this\r\n\r\n //註冊至$dg供使用\r\n vo.$dg.showVeCgrupsById = vo.showVeCgrupsById\r\n vo.$dg.toggleItemIsAdminById = vo.toggleItemIsAdminById\r\n vo.$dg.toggleItemIsActiveById = vo.toggleItemIsActiveById\r\n\r\n //firstSetting\r\n if (vo.firstSetting) {\r\n // console.log('webInfor', vo.webInfor)\r\n\r\n let showModeEditUsers = get(vo, 'webInfor.showModeEditUsers', '')\r\n vo.showIsEditable = showModeEditUsers === 'y'\r\n let modeEditUsers = get(vo, 'webInfor.modeEditUsers', '')\r\n vo.isEditable = modeEditUsers === 'y'\r\n\r\n vo.widthUsersName = get(vo, 'webInfor.widthUsersName', '')\r\n vo.widthUsersEmail = get(vo, 'webInfor.widthUsersEmail', '')\r\n vo.widthUsersDescription = get(vo, 'webInfor.widthUsersDescription', '')\r\n\r\n vo.firstSetting = false\r\n }\r\n\r\n },\r\n computed: {\r\n\r\n webInfor: function() {\r\n let wi = get(this, `$store.state.webInfor`)\r\n return wi\r\n },\r\n\r\n targets: function() {\r\n let rs = get(this, `$store.state.targets`)\r\n rs = sortBy(rs, 'order')\r\n return rs\r\n },\r\n\r\n pemis: function() {\r\n let rs = get(this, `$store.state.pemis`)\r\n rs = sortBy(rs, 'order')\r\n return rs\r\n },\r\n\r\n grups: function() {\r\n let rs = get(this, `$store.state.grups`)\r\n rs = sortBy(rs, 'order')\r\n return rs\r\n },\r\n\r\n users: function() {\r\n let rs = get(this, `$store.state.users`)\r\n rs = sortBy(rs, 'order')\r\n return rs\r\n },\r\n\r\n changeParams: function() {\r\n // console.log('computed changeParams')\r\n\r\n let vo = this\r\n\r\n //trigger\r\n let isEditable = vo.isEditable\r\n\r\n //items\r\n let items = cloneDeep(vo.users)\r\n\r\n //save\r\n vo.items = items\r\n\r\n //genOpt\r\n vo.genOpt({ isEditable })\r\n\r\n //firstLoading\r\n vo.firstLoading = false\r\n\r\n return ''\r\n },\r\n\r\n contentHeight: function() {\r\n let vo = this\r\n\r\n //h\r\n let h = vo.panelHeight - vo.headHeight\r\n h = Math.max(h, 0)\r\n\r\n return h\r\n },\r\n\r\n hasItemsCheck: function() {\r\n let vo = this\r\n\r\n //h\r\n let b = size(vo.itemsCheck) > 0\r\n\r\n return b\r\n },\r\n\r\n hasItemCheckOne: function() {\r\n let vo = this\r\n\r\n //h\r\n let b = size(vo.itemsCheck) === 1\r\n\r\n return b\r\n },\r\n\r\n errItemsByName: function() {\r\n let vo = this\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //kpErr\r\n let kpErr = {}\r\n let kpName = {}\r\n each(rows, (v, k) => {\r\n\r\n //name\r\n let name = get(v, 'name', '')\r\n\r\n //check\r\n if (!isestr(name)) {\r\n\r\n //kpErr\r\n kpErr[name] = vo.$t(`userNameEmpty`)\r\n\r\n return true //跳出換下一個\r\n }\r\n\r\n //check\r\n if (haskey(kpName, name)) {\r\n\r\n //kpErr\r\n kpErr[name] = vo.$t(`userNameDuplicate`)\r\n\r\n return true //跳出換下一個\r\n }\r\n\r\n //kpName\r\n kpName[name] = true\r\n\r\n })\r\n\r\n return kpErr\r\n },\r\n\r\n errItemsByEmail: function() {\r\n let vo = this\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //kpErr\r\n let kpErr = {}\r\n let kpEmail = {}\r\n each(rows, (v, k) => {\r\n\r\n //email\r\n let email = get(v, 'email', '')\r\n\r\n //check\r\n if (!isestr(email)) {\r\n\r\n //kpErr\r\n kpErr[email] = vo.$t(`userEmailEmpty`)\r\n\r\n return true //跳出換下一個\r\n }\r\n\r\n //check\r\n if (!isEmail(email)) {\r\n\r\n //kpErr\r\n kpErr[email] = vo.$t(`userEmailError`)\r\n\r\n return true //跳出換下一個\r\n }\r\n\r\n //check\r\n if (haskey(kpEmail, email)) {\r\n\r\n //kpErr\r\n kpErr[email] = vo.$t(`userEmailDuplicate`)\r\n\r\n return true //跳出換下一個\r\n }\r\n\r\n //kpEmail\r\n kpEmail[email] = true\r\n\r\n })\r\n\r\n return kpErr\r\n },\r\n\r\n isError: function() {\r\n let vo = this\r\n\r\n let c = ''\r\n let b = false\r\n b = iseobj(vo.errItemsByName)\r\n if (b) {\r\n c = vo.$t('errInNames')\r\n return c\r\n }\r\n b = iseobj(vo.errItemsByEmail)\r\n if (b) {\r\n c = vo.$t('errInEmails')\r\n return c\r\n }\r\n\r\n return ''\r\n },\r\n\r\n kpHead: function() {\r\n let vo = this\r\n\r\n let kp = {\r\n 'id': vo.$t('id'),\r\n 'name': vo.$t('name'),\r\n 'email': vo.$t('email'),\r\n 'description': vo.$t('description'),\r\n 'from': vo.$t('from'),\r\n 'cgrups': vo.$t('userCgrups'),\r\n 'isAdmin': vo.$t('isAdmin'),\r\n 'isActive': vo.$t('isActive'),\r\n 'userId': vo.$t('userId'),\r\n 'timeCreate': vo.$t('timeCreate'),\r\n 'userIdUpdate': vo.$t('userIdUpdate'),\r\n 'timeUpdate': vo.$t('timeUpdate'),\r\n }\r\n\r\n return kp\r\n },\r\n\r\n },\r\n methods: {\r\n\r\n resizePanel: function(msg) {\r\n // console.log('methods resizePanel', msg)\r\n\r\n let vo = this\r\n\r\n //panelWidth, panelHeight\r\n vo.panelWidth = msg.snew.offsetWidth\r\n vo.panelHeight = msg.snew.offsetHeight\r\n\r\n },\r\n\r\n resizeHead: function(msg) {\r\n // console.log('methods resizeHead', msg)\r\n\r\n let vo = this\r\n\r\n //headHeight\r\n vo.headHeight = msg.snew.offsetHeight\r\n\r\n },\r\n\r\n getHead: function(key) {\r\n // console.log('methods getHead', key)\r\n\r\n let vo = this\r\n\r\n let head = get(vo, `kpHead.${key}`, '')\r\n\r\n return head\r\n },\r\n\r\n genOpt: function() {\r\n // console.log('methods genOpt')\r\n\r\n let vo = this\r\n\r\n //default\r\n vo.itemsCheck = []\r\n\r\n //opt\r\n let opt = null\r\n if (size(vo.items) > 0) {\r\n\r\n //ks\r\n let ks = vo.tabKeys\r\n // console.log('ks', ks)\r\n\r\n //kpHead\r\n let kpHead = vo.kpHead\r\n\r\n //kpCellEditable, kpRowDrag, kpHeadCheckBox\r\n let kpCellEditable = {}\r\n let kpRowDrag = {}\r\n let kpHeadCheckBox = {}\r\n if (vo.isEditable) {\r\n kpCellEditable = {\r\n 'name': true,\r\n 'email': true,\r\n 'description': true,\r\n 'from': true,\r\n }\r\n kpRowDrag = {\r\n 'name': true,\r\n }\r\n kpHeadCheckBox = {\r\n 'name': true,\r\n }\r\n }\r\n\r\n //kpHeadHide\r\n let kpHeadHide = {\r\n 'id': true,\r\n }\r\n if (true) {\r\n let tabKeysHide = arrPull(vo.tabKeysPick, vo.tabKeysShow)\r\n each(tabKeysHide, (k) => {\r\n kpHeadHide[k] = true\r\n })\r\n }\r\n\r\n //opt\r\n opt = {\r\n language: vo.$t('aggridLanguage'),\r\n rows: vo.items,\r\n keys: ks,\r\n kpHead,\r\n // autoFitColumn: true,\r\n defCellEditable: false, //vo.isEditable,\r\n defHeadFilter: true,\r\n defCellAlignH: 'left',\r\n kpHeadHide,\r\n kpHeadFixLeft: {\r\n 'name': true,\r\n },\r\n defHeadMinWidth: 150,\r\n kpHeadWidth: {\r\n 'name': isnum(vo.widthUsersName) ? cdbl(vo.widthUsersName) : 200,\r\n 'email': isnum(vo.widthUsersEmail) ? cdbl(vo.widthUsersEmail) : 300,\r\n 'description': isnum(vo.widthUsersDescription) ? cdbl(vo.widthUsersDescription) : 300,\r\n 'cgrups': 300,\r\n 'isAdmin': 100,\r\n 'isActive': 100,\r\n 'timeCreate': 220,\r\n 'timeUpdate': 220,\r\n },\r\n kpHeadFilterType: {\r\n 'id': 'text',\r\n 'name': 'text',\r\n 'email': 'text',\r\n 'description': 'text',\r\n 'from': 'text',\r\n 'cgrups': 'text',\r\n 'isAdmin': 'text',\r\n 'isActive': 'text',\r\n 'userId': 'text',\r\n 'timeCreate': 'text',\r\n 'userIdUpdate': 'text',\r\n 'timeUpdate': 'text',\r\n },\r\n kpCellEditable,\r\n kpRowDrag,\r\n kpHeadCheckBox,\r\n kpHeadFilter: {\r\n 'cgrups': false,\r\n },\r\n kpHeadSort: {\r\n 'cgrups': false,\r\n },\r\n kpHeadFocusHighlight: { //雖然效果不完全, 但因按鈕與cell有padding可被點擊, 故還是需要開啟\r\n 'cgrups': false,\r\n },\r\n kpCellRender: {\r\n 'name': (v) => {\r\n // console.log('kpCellRender name', v)\r\n\r\n //err\r\n let err = get(vo.errItemsByName, v, '')\r\n // console.log(v, err)\r\n\r\n //check\r\n if (isestr(err)) {\r\n v = `\r\n <span title=\"${err}\">\r\n <span style=\"color:#F57C00;\">${cstr(v)}</span>\r\n <img style=\"vertical-align:sub; width:16px; height:16px;\" src=\"${vo.$ui.getIcon('warning')}\" />\r\n </span>\r\n `\r\n }\r\n\r\n return v\r\n },\r\n 'email': (v) => {\r\n // console.log('kpCellRender email', v)\r\n\r\n //err\r\n let err = get(vo.errItemsByEmail, v, '')\r\n // console.log(v, err)\r\n\r\n //check\r\n if (isestr(err)) {\r\n v = `\r\n <span title=\"${err}\">\r\n <span style=\"color:#F57C00;\">${cstr(v)}</span>\r\n <img style=\"vertical-align:sub; width:16px; height:16px;\" src=\"${vo.$ui.getIcon('warning')}\" />\r\n </span>\r\n `\r\n }\r\n\r\n return v\r\n },\r\n 'cgrups': (v, k, r) => {\r\n // console.log('kpCellRender cgrups', v, k, r)\r\n\r\n //id\r\n let id = get(r, 'id', '')\r\n // console.log('id', id, k, r)\r\n\r\n //因kpHeadFocusHighlight設定false時, 仍會於點擊其他可focus的cell, 再點回時依然出現highlight的focus邊框, 故改使用stopPropagation強制吃掉點擊訊息\r\n //因stopPropagation只吃掉訊息, 原本focus會處於原本可focus的cell, 再重複點時會於前個focus的cell出現highlight邊框, 故再多使用preventDefault阻止瀏覽器預設行為, 此等同於return false\r\n let t = `\r\n <div onclick=\"event.stopPropagation();event.preventDefault();\" onmousedown=\"event.stopPropagation();event.preventDefault();\">\r\n <button style=\"width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;\" onclick=\"$vo.$dg.showVeCgrupsById('${id}')\">${vo.getCgrupsText(v)}</button>\r\n </div>\r\n `\r\n\r\n return t\r\n },\r\n 'isAdmin': (v, k, r) => {\r\n // console.log('kpCellRender isAdmin', v, k, r)\r\n\r\n //id\r\n let id = get(r, 'id', '')\r\n // console.log('id', id, k, r)\r\n\r\n let t = `\r\n <input type=\"checkbox\" ${v === 'y' ? 'checked' : ''} onclick=\"$vo.$dg.toggleItemIsAdminById('${id}')\" ${vo.isEditable ? '' : 'disabled'} />\r\n `\r\n\r\n return t\r\n },\r\n 'isActive': (v, k, r) => {\r\n // console.log('kpCellRender isActive', v, k, r)\r\n\r\n //id\r\n let id = get(r, 'id', '')\r\n // console.log('id', id, k, r)\r\n\r\n let t = `\r\n <input type=\"checkbox\" ${v === 'y' ? 'checked' : ''} onclick=\"$vo.$dg.toggleItemIsActiveById('${id}')\" ${vo.isEditable ? '' : 'disabled'} />\r\n `\r\n\r\n return t\r\n },\r\n },\r\n rowsChange: (rs) => {\r\n // console.log('rowsChange', rs)\r\n // console.log('rowsChange cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n rowChecked: (rs) => {\r\n // console.log('rowChecked', rs)\r\n // console.log('rowChecked cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\r\n\r\n //save itemsCheck\r\n vo.itemsCheck = cloneDeep(rs)\r\n\r\n },\r\n }\r\n // console.log('opt', opt)\r\n\r\n }\r\n\r\n //save\r\n vo.opt = opt\r\n\r\n },\r\n\r\n refresh: function() {\r\n let vo = this\r\n\r\n //cmp\r\n let cmp = get(vo, '$refs.rftable.$refs.$self')\r\n // console.log('cmp', cmp)\r\n\r\n //refresh, 因set不會觸發kpCellRender, 故須另外調用組件函數refresh, 進而觸發kpCellRender, 使能更新數據\r\n cmp.refresh()\r\n\r\n },\r\n\r\n toggleTabKeys: function() {\r\n let vo = this\r\n\r\n //cmp\r\n let cmp = get(vo, '$refs.rftable.$refs.$self')\r\n // console.log('cmp', cmp)\r\n\r\n //showKeys\r\n cmp.showKeys(vo.tabKeysShow)\r\n // console.log('tabKeysShow', vo.tabKeysShow)\r\n\r\n },\r\n\r\n toggleItemIsAdminById: function(id) {\r\n // console.log('toggleItemIsAdminById', id)\r\n\r\n let vo = this\r\n\r\n //k\r\n let k = 'isAdmin'\r\n\r\n //check\r\n if (!isestr(id)) {\r\n vo.$alert(`${vo.$t('userEditNoUserId')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //find\r\n let r = null\r\n let kr = null\r\n each(rows, (v, k) => {\r\n if (get(v, 'id', '') === id) {\r\n r = v\r\n kr = k\r\n return false //跳出\r\n }\r\n })\r\n\r\n //check\r\n if (!iseobj(r)) {\r\n vo.$alert(`${vo.$t('userEditNoUserData')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //v\r\n let _v = get(r, k, 'n')\r\n let v = _v === 'y' ? 'n' : 'y'\r\n // console.log(k, v)\r\n\r\n //set\r\n set(vo, `opt.rows[${kr}].${k}`, v)\r\n // console.log('vo.opt.rows[kr]', cloneDeep(vo.opt.rows[kr]))\r\n\r\n //refresh\r\n vo.refresh()\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n toggleItemIsActiveById: function(id) {\r\n // console.log('toggleItemIsActiveById', id)\r\n\r\n let vo = this\r\n\r\n //k\r\n let k = 'isActive'\r\n\r\n //check\r\n if (!isestr(id)) {\r\n vo.$alert(`${vo.$t('userEditNoUserId')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //find\r\n let r = null\r\n let kr = null\r\n each(rows, (v, k) => {\r\n if (get(v, 'id', '') === id) {\r\n r = v\r\n kr = k\r\n return false //跳出\r\n }\r\n })\r\n\r\n //check\r\n if (!iseobj(r)) {\r\n vo.$alert(`${vo.$t('userEditNoUserData')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //v\r\n let _v = get(r, k, 'n')\r\n let v = _v === 'y' ? 'n' : 'y'\r\n // console.log(k, v)\r\n\r\n //set\r\n set(vo, `opt.rows[${kr}].${k}`, v)\r\n // console.log('vo.opt.rows[kr]', cloneDeep(vo.opt.rows[kr]))\r\n\r\n //refresh\r\n vo.refresh()\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n addItem: function() {\r\n // console.log('method addItem')\r\n\r\n let vo = this\r\n\r\n //cloneDeep\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //cloneDeep\r\n rows = cloneDeep(rows)\r\n\r\n //r\r\n let r = vo.$ds.users.funNew()\r\n r.name = vo.$s.getNameNew(rows, 'name', '', vo.$t('userAddNameNew'))\r\n r.userId = `{${vo.$t('userAddIdNew')}}`\r\n r.timeCreate = `{${vo.$t('userAddIdNew')}}`\r\n r.userIdUpdate = `{${vo.$t('userAddIdNew')}}`\r\n r.timeUpdate = `{${vo.$t('userAddIdNew')}}`\r\n // console.log('r', r)\r\n\r\n //添加至最首\r\n rows = [\r\n r,\r\n ...rows,\r\n ]\r\n\r\n //save\r\n vo.opt.rows = rows\r\n // console.log('cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n copyItem: function() {\r\n // console.log('method copyItem')\r\n\r\n let vo = this\r\n\r\n //check\r\n if (size(vo.itemsCheck) !== 1) {\r\n console.log(`size(vo.itemsCheck) !== 1`, vo.itemsCheck)\r\n vo.$alert(`${vo.$t('anUnexpectedErrorOccurred')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //cloneDeep\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //cloneDeep\r\n rows = cloneDeep(rows)\r\n\r\n //find\r\n let tar = vo.itemsCheck[0]\r\n let tarId = get(tar, 'data.id', '')\r\n let row = null\r\n each(rows, (v) => {\r\n let id = get(v, 'id', '')\r\n if (id === tarId) {\r\n row = v\r\n return false //跳出\r\n }\r\n })\r\n // console.log('tar', tar)\r\n // console.log('row', row)\r\n\r\n //check\r\n if (!iseobj(row)) {\r\n console.log(`!iseobj(row)`, row)\r\n vo.$alert(`${vo.$t('anUnexpectedErrorOccurred')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //r\r\n let r = cloneDeep(row)\r\n let nameOld = r.name\r\n let _r = vo.$ds.users.funNew()\r\n r.id = _r.id //使用新建方式預先產生id避免重複\r\n r.name = vo.$s.getNameNew(rows, 'name', nameOld, vo.$t('userCopyNameNew'))\r\n r.userId = `{${vo.$t('userAddIdNew')}}`\r\n r.timeCreate = `{${vo.$t('userAddIdNew')}}`\r\n r.userIdUpdate = `{${vo.$t('userAddIdNew')}}`\r\n r.timeUpdate = `{${vo.$t('userAddIdNew')}}`\r\n // console.log('r', r)\r\n\r\n //添加至最首\r\n rows = [\r\n r,\r\n ...rows,\r\n ]\r\n\r\n //save\r\n vo.opt.rows = rows\r\n // console.log('cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n deleteItemsCheck: function() {\r\n // console.log('method deleteItemsCheck')\r\n\r\n let vo = this\r\n\r\n //check\r\n if (size(vo.itemsCheck) === 0) {\r\n console.log(`size(vo.itemsCheck) === 0`, vo.itemsCheck)\r\n vo.$alert(`${vo.$t('anUnexpectedErrorOccurred')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //cloneDeep\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //cloneDeep\r\n rows = cloneDeep(rows)\r\n\r\n //filter\r\n each(vo.itemsCheck, (v) => {\r\n // console.log('v', v)\r\n let id = get(v, 'data.id', '')\r\n if (!isestr(id)) {\r\n console.log(`invalid id`)\r\n return true //跳出換下一個\r\n }\r\n rows = filter(rows, (vv) => {\r\n return vv.id !== id\r\n })\r\n })\r\n\r\n //clear\r\n vo.itemsCheck = []\r\n\r\n //save\r\n vo.opt.rows = rows\r\n // console.log('deleteItemsCheck cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n getCgrupsText: function(cgrups) {\r\n // console.log('method getCgrupsText', cgrups)\r\n\r\n let vo = this\r\n\r\n //kpGrup\r\n let kpGrup = {}\r\n try {\r\n // console.log('cgrups', cgrups)\r\n kpGrup = JSON5.parse(cgrups)\r\n }\r\n catch (err) {}\r\n\r\n let vs = []\r\n each(kpGrup, (v, k) => {\r\n // console.log(k, 'v', v)\r\n\r\n //isActive\r\n let isActive = get(v, 'isActive', '')\r\n if (isActive !== 'y') {\r\n return true //跳出換下一個\r\n }\r\n // console.log(k, '_isActive', _isActive)\r\n\r\n //push\r\n vs.push(k)\r\n\r\n })\r\n\r\n //cgrupsText\r\n let cgrupsText = vo.$t('userRnderCgrupsNoGroup')\r\n let t = vo.$t('userRnderCgrupsHasNGroups')\r\n let n = size(vs)\r\n if (n > 0) {\r\n t = t.replace('{n}', n)\r\n if (n === 1) {\r\n t = t.replace('{nms}', `(${vs[0]})`)\r\n }\r\n else {\r\n t = t.replace('{nms}', '')\r\n }\r\n cgrupsText = t\r\n }\r\n\r\n return cgrupsText\r\n },\r\n\r\n showVeCgrupsById: function(id) {\r\n // console.log('method showVeCgrupsById', id)\r\n\r\n let vo = this\r\n\r\n //check\r\n if (!isestr(id)) {\r\n vo.$alert(`${vo.$t('userEditCgrupsNoUserId')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //find\r\n let r = null\r\n let kr = null\r\n each(rows, (v, k) => {\r\n if (get(v, 'id', '') === id) {\r\n r = v\r\n kr = k\r\n return false //跳出\r\n }\r\n })\r\n\r\n //check\r\n if (!iseobj(r)) {\r\n vo.$alert(`${vo.$t('userEditCgrupsNoUserData')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n // //getUserRules\r\n // let kur = vo.$s.getUserRules(r, vo.grups, vo.pemis, vo.targets)\r\n // // console.log('getUserRules kur', kur)\r\n\r\n //showVeCgrups\r\n vo.$dg.showVeCgrups({\r\n isEditable: vo.isEditable,\r\n user: r,\r\n })\r\n .then((cgrups) => {\r\n // console.log('cgrups', cgrups)\r\n\r\n //set\r\n set(vo, `opt.rows[${kr}].cgrups`, cgrups)\r\n // console.log('vo.opt.rows[kr]', cloneDeep(vo.opt.rows[kr]))\r\n\r\n //refresh\r\n vo.refresh()\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n })\r\n .catch(() => {})\r\n\r\n },\r\n\r\n saveUsers: function() {\r\n // console.log('method saveUsers')\r\n\r\n let vo = this\r\n\r\n async function core() {\r\n let errTemp = null\r\n\r\n //show loading\r\n vo.$ui.updateLoading(true)\r\n\r\n //check\r\n if (isestr(vo.isError)) {\r\n vo.$alert(`${vo.isError}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //check\r\n if (size(rows) === 0) {\r\n vo.$alert(`${vo.$t('userAddEmpty')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //updateUsers\r\n await vo.$fapi.updateUsers(rows)\r\n .catch((err) => {\r\n errTemp = err\r\n })\r\n\r\n //check\r\n if (errTemp !== null) {\r\n vo.$alert(`${vo.$t('userSaveUsersFail')}: ${errTemp}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //isModified\r\n vo.isModified = false\r\n\r\n //alert\r\n vo.$alert(vo.$t('userSaveUsersSuccess'))\r\n\r\n }\r\n\r\n //core\r\n core()\r\n // .then((res) => {\r\n // console.log('then', res)\r\n // })\r\n .catch((err) => {\r\n console.log('catch', err)\r\n vo.$alert(vo.$t('anUnexpectedErrorOccurred'), { type: 'error' })\r\n })\r\n .finally(() => {\r\n\r\n //hide loading\r\n vo.$ui.updateLoading(false)\r\n\r\n })\r\n\r\n },\r\n\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n</style>\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LayoutContentUsers.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LayoutContentUsers.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./LayoutContentUsers.vue?vue&type=template&id=6df9dbe2&scoped=true\"\nimport script from \"./LayoutContentUsers.vue?vue&type=script&lang=js\"\nexport * from \"./LayoutContentUsers.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6df9dbe2\",\n null\n \n)\n\nexport default component.exports","<template>\r\n <div\r\n style=\"height:100%; width:100%;\"\r\n v-domresize\r\n @domresize=\"resize\"\r\n >\r\n\r\n <template v-if=\"syncState\">\r\n\r\n <WDrawer\r\n :style=\"`height:${panelHeight}px; width:100%;`\"\r\n v-model=\"drawer\"\r\n :drawerWidth.sync=\"drawerWidth\"\r\n :drawerWidthMin=\"drawerWidthMin\"\r\n :drawerWidthMax=\"drawerWidthMax\"\r\n :mode=\"'from-left'\"\r\n :dragDrawerWidth=\"true\"\r\n :autoSwitchToHide=\"true\"\r\n :autoSwitchToShow=\"true\"\r\n :autoSwitchToFloat=\"true\"\r\n :switchWidth=\"drawerWidth*2.3\"\r\n >\r\n\r\n <template v-slot:drawer=\"props\">\r\n <div :style=\"`height:${props.height}px; background:#fff; position:relative;`\">\r\n\r\n <WListVertical\r\n style=\"height:100%;\"\r\n :items=\"menus\"\r\n :itemActive=\"menuActive\"\r\n :item-text-color=\"'#222'\"\r\n :item-text-color-hover=\"'#444'\"\r\n :item-text-color-active=\"'#E65100'\"\r\n :item-icon-color=\"'#222'\"\r\n :item-icon-color-hover=\"'#444'\"\r\n :item-icon-color-active=\"'#F57C00'\"\r\n :item-background-color=\"'#fff'\"\r\n :item-background-color-hover=\"'#f6f6f6'\"\r\n :item-background-color-active=\"'#fff3e0'\"\r\n :paddingStyle=\"{v:15,h:15}\"\r\n @click=\"(menu)=>{menuKey=menu.key}\"\r\n ></WListVertical>\r\n\r\n <div\r\n :style=\"`position:absolute; top:2px; right:4px;`\"\r\n v-if=\"drawer\"\r\n >\r\n <WButtonCircle\r\n :paddingStyle=\"{h:2,v:2}\"\r\n :icon=\"mdiArrowLeftBoldHexagonOutline\"\r\n :iconSize=\"20\"\r\n :backgroundColor=\"'rgba(255,255,255,0.1)'\"\r\n :backgroundColorHover=\"'rgba(255,255,255,0.4)'\"\r\n :backgroundColorFocus=\"'rgba(255,255,255,0.7)'\"\r\n :borderColor=\"'transparent'\"\r\n :borderColorHover=\"'transparent'\"\r\n :borderColorFocus=\"'transparent'\"\r\n _tooltip=\"$t('menuTreeHide')\"\r\n :shadow=\"false\"\r\n @click=\"drawer=false\"\r\n ></WButtonCircle>\r\n </div>\r\n\r\n </div>\r\n </template>\r\n\r\n <template v-slot:content=\"props\">\r\n <div :style=\"`height:${props.height}px; width:${props.width}px; position:relative;`\">\r\n\r\n <template>\r\n\r\n <LayoutContentTargets\r\n :drawer=\"drawer\"\r\n v-if=\"menuKey==='mmTargets'\"\r\n ></LayoutContentTargets>\r\n\r\n <LayoutContentPemis\r\n :drawer=\"drawer\"\r\n v-if=\"menuKey==='mmPemis'\"\r\n ></LayoutContentPemis>\r\n\r\n <LayoutContentGrups\r\n :drawer=\"drawer\"\r\n v-if=\"menuKey==='mmGrups'\"\r\n ></LayoutContentGrups>\r\n\r\n <LayoutContentUsers\r\n :drawer=\"drawer\"\r\n v-if=\"menuKey==='mmUsers'\"\r\n ></LayoutContentUsers>\r\n\r\n </template>\r\n\r\n <div\r\n :style=\"`position:absolute; top:3px; left:5px;`\"\r\n v-if=\"!drawer\"\r\n >\r\n <WButtonCircle\r\n :paddingStyle=\"{h:2,v:2}\"\r\n :icon=\"mdiArrowRightBoldHexagonOutline\"\r\n :iconSize=\"20\"\r\n :backgroundColor=\"'rgba(255,255,255,0.1)'\"\r\n :backgroundColorHover=\"'rgba(255,255,255,0.4)'\"\r\n :backgroundColorFocus=\"'rgba(255,255,255,0.7)'\"\r\n :borderColor=\"'transparent'\"\r\n :borderColorHover=\"'transparent'\"\r\n :borderColorFocus=\"'transparent'\"\r\n _tooltip=\"$t('menuTreeShow')\"\r\n :shadow=\"false\"\r\n @click=\"drawer=true\"\r\n ></WButtonCircle>\r\n </div>\r\n\r\n </div>\r\n </template>\r\n\r\n </WDrawer>\r\n\r\n </template>\r\n\r\n <div\r\n style=\"padding:20px; font-size:0.9rem;\"\r\n v-else\r\n >\r\n {{$t('waitingData')}}\r\n </div>\r\n\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport { mdiArrowLeftBoldHexagonOutline, mdiArrowRightBoldHexagonOutline, mdiGamepadCircle, mdiStackOverflow, mdiSelectGroup, mdiAccountGroupOutline } from '@mdi/js/mdi.js'\r\nimport get from 'lodash-es/get.js'\r\nimport find from 'lodash-es/find.js'\r\nimport WDrawer from 'w-component-vue/src/components/WDrawer.vue'\r\nimport WListVertical from 'w-component-vue/src/components/WListVertical.vue'\r\nimport WButtonCircle from 'w-component-vue/src/components/WButtonCircle.vue'\r\nimport LayoutContentTargets from './LayoutContentTargets.vue'\r\nimport LayoutContentPemis from './LayoutContentPemis.vue'\r\nimport LayoutContentGrups from './LayoutContentGrups.vue'\r\nimport LayoutContentUsers from './LayoutContentUsers.vue'\r\n\r\n\r\nexport default {\r\n components: {\r\n WDrawer,\r\n WListVertical,\r\n WButtonCircle,\r\n LayoutContentTargets,\r\n LayoutContentPemis,\r\n LayoutContentGrups,\r\n LayoutContentUsers,\r\n },\r\n props: {\r\n },\r\n data: function() {\r\n return {\r\n mdiArrowLeftBoldHexagonOutline,\r\n mdiArrowRightBoldHexagonOutline,\r\n\r\n menuKey: 'mmTargets',\r\n\r\n panelWidth: 0,\r\n panelHeight: 0,\r\n\r\n drawer: true,\r\n drawerWidth: 200,\r\n drawerWidthMin: 150,\r\n drawerWidthMax: 300,\r\n\r\n }\r\n },\r\n computed: {\r\n\r\n syncState: function() {\r\n let vo = this\r\n return get(vo, '$store.state.syncState')\r\n },\r\n\r\n menus: function() {\r\n let vo = this\r\n let ms = [\r\n {\r\n key: 'mmTargets',\r\n text: vo.$t('mmTargets'),\r\n icon: mdiGamepadCircle,\r\n },\r\n {\r\n key: 'mmPemis',\r\n text: vo.$t('mmPemis'),\r\n icon: mdiStackOverflow,\r\n },\r\n {\r\n key: 'mmGrups',\r\n text: vo.$t('mmGrups'),\r\n icon: mdiSelectGroup,\r\n },\r\n {\r\n key: 'mmUsers',\r\n text: vo.$t('mmUsers'),\r\n icon: mdiAccountGroupOutline,\r\n },\r\n ]\r\n return ms\r\n },\r\n\r\n menuActive: function() {\r\n let vo = this\r\n let r = find(vo.menus, { key: vo.menuKey })\r\n // console.log(r)\r\n return r\r\n },\r\n\r\n },\r\n methods: {\r\n\r\n resize: function(msg) {\r\n // console.log('methods resize', msg)\r\n\r\n let vo = this\r\n\r\n //save\r\n vo.panelWidth = msg.snew.clientWidth\r\n vo.panelHeight = msg.snew.clientHeight\r\n // console.log('vo.panelHeight', vo.panelHeight)\r\n\r\n },\r\n\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n</style>\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LayoutContent.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LayoutContent.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./LayoutContent.vue?vue&type=template&id=05bd29ce&scoped=true\"\nimport script from \"./LayoutContent.vue?vue&type=script&lang=js\"\nexport * from \"./LayoutContent.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"05bd29ce\",\n null\n \n)\n\nexport default component.exports","<template>\r\n <div style=\"height:100svh; background:#f5f5f5;\">\r\n\r\n <!-- menu top, 因窄版導致名稱換行故須使用overflow-y:hidden -->\r\n <div :style=\"`height:${heightToolbar}px; overflow-y:hidden; padding:0px 10px; background:#fff; border-bottom:1px solid #ccc; display:flex; align-items:center;`\">\r\n\r\n <div style=\"padding-left:5px; white-space:nowrap\">\r\n <div style=\"display:flex; align-items:center;\">\r\n\r\n <div style=\"padding-right:10px; display:flex; align-items:center;\" v-if=\"webLogo\">\r\n <img style=\"width:36px; _min-width:36px; height:36px;\" :src=\"webLogo\" />\r\n </div>\r\n\r\n <div>\r\n <div style=\"font-size:1.2rem; color:#000;\">{{webName}}</div>\r\n <div style=\"font-size:0.8rem; color:#666;\">{{$t('webDescription')}}</div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <div style=\"width:100%;\"></div>\r\n\r\n <div\r\n style=\"padding-right:10px; white-space:nowrap;\"\r\n v-if=\"showLangSelect\"\r\n >\r\n <WTextSelect\r\n style=\"width:100px;\"\r\n :items=\"keysLang\"\r\n :value=\"lang\"\r\n @input=\"toggleLang\"\r\n >\r\n <template v-slot:select=\"props\">\r\n {{getLangText(props.item)}}\r\n </template>\r\n <template v-slot:item=\"props\">\r\n {{getLangText(props.item)}}\r\n </template>\r\n </WTextSelect>\r\n </div>\r\n\r\n </div>\r\n\r\n <div :style=\"`height:calc( 100% - ${heightToolbar}px );`\">\r\n <LayoutContent\r\n ></LayoutContent>\r\n </div>\r\n\r\n\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport { mdiMenu } from '@mdi/js/mdi.js'\r\nimport get from 'lodash-es/get.js'\r\n// import cloneDeep from 'lodash-es/cloneDeep.js'\r\nimport isestr from 'wsemi/src/isestr.mjs'\r\nimport WTextSelect from 'w-component-vue/src/components/WTextSelect.vue'\r\nimport WButtonCircle from 'w-component-vue/src/components/WButtonCircle.vue'\r\nimport LayoutContent from './LayoutContent.vue'\r\n\r\n\r\nexport default {\r\n components: {\r\n WTextSelect,\r\n WButtonCircle,\r\n LayoutContent,\r\n },\r\n props: {\r\n },\r\n data: function() {\r\n return {\r\n mdiMenu,\r\n\r\n firstSetting: true,\r\n\r\n showLangSelect: false,\r\n\r\n keysLang: [\r\n 'eng',\r\n 'cht',\r\n ],\r\n kpLangSelect: {\r\n 'eng': 'English',\r\n 'cht': '中文',\r\n },\r\n\r\n }\r\n },\r\n mounted: function() {\r\n // console.log('mounted')\r\n\r\n let vo = this\r\n\r\n //firstSetting\r\n if (vo.firstSetting) {\r\n // console.log('webInfor', vo.webInfor)\r\n let showLanguage = get(vo, 'webInfor.showLanguage', '')\r\n // console.log('showLanguage', showLanguage)\r\n vo.showLangSelect = showLanguage === 'y'\r\n let language = get(vo, 'webInfor.language', '')\r\n // console.log('language', language)\r\n vo.$ui.setLang(language, 'layout mounted')\r\n vo.firstSetting = false\r\n }\r\n\r\n },\r\n computed: {\r\n\r\n // viewState: function() {\r\n // let vo = this\r\n // return get(vo, '$store.state.viewState', '')\r\n // },\r\n\r\n heightToolbar: function() {\r\n let vo = this\r\n return get(vo, `$store.state.heightToolbar`, 0)\r\n },\r\n\r\n webInfor: function() {\r\n let wi = get(this, `$store.state.webInfor`)\r\n return wi\r\n },\r\n\r\n webName: {\r\n get() {\r\n let vo = this\r\n let c = vo.$t('webName', '')\r\n // console.log('get webName1', c)\r\n if (!isestr(c)) {\r\n c = vo.$t('waitingData', '')\r\n }\r\n // console.log('get webName2', c)\r\n document.title = c //更換網頁title\r\n return c\r\n },\r\n // set(value) {\r\n // return value\r\n // },\r\n },\r\n\r\n webLogo: function() {\r\n let vo = this\r\n return get(vo, 'webInfor.webLogo', '')\r\n },\r\n\r\n lang: function() {\r\n let vo = this\r\n return get(vo, '$store.state.lang', '')\r\n },\r\n\r\n },\r\n methods: {\r\n\r\n getLangText: function(lang) {\r\n // console.log('methods getLangText', lang)\r\n\r\n let vo = this\r\n\r\n let t = get(vo, `kpLangSelect.${lang}`, '')\r\n\r\n return t\r\n },\r\n\r\n toggleLang: function(lang) {\r\n // console.log('methods toggleLang', lang)\r\n\r\n let vo = this\r\n\r\n //setLang\r\n vo.$ui.setLang(lang, 'toggle')\r\n\r\n },\r\n\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n</style>\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Layout.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Layout.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Layout.vue?vue&type=template&id=25c2d0b5&scoped=true\"\nimport script from \"./Layout.vue?vue&type=script&lang=js\"\nexport * from \"./Layout.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"25c2d0b5\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('WDialog',{attrs:{\"show\":_vm.bShow,\"title\":_vm.isEditable?_vm.$t('pemiEditCrules'):_vm.$t('pemiEditCrulesForDisplay'),\"icon\":_vm.mdiFormatListCheckbox,\"minWidth\":800,\"maxWidth\":800,\"fullscreen\":_vm.fullscreen,\"contentBackgroundColor\":'#fff',\"headerBtns\":_vm.useHeaderBtns,\"hasSaveBtn\":_vm.isEditable && _vm.isModified,\"save-btn-tooltip\":_vm.$t('save'),\"close-btn-tooltip\":_vm.$t('close')},on:{\"update:show\":function($event){_vm.bShow=$event},\"click-btns\":_vm.clickBtns,\"click-save\":_vm.clickSave,\"click-close\":_vm.clickClose,\"resize\":_vm.resizeDialog},scopedSlots:_vm._u([{key:\"content\",fn:function(){return [_c('div',[_c('div',{directives:[{name:\"domresize\",rawName:\"v-domresize\"}],staticStyle:{\"_border-bottom\":\"1px solid #ddd\",\"background\":\"#fff\"},on:{\"domresize\":_vm.resizeHead}},[(_vm.isEditable)?_c('div',{staticStyle:{\"padding\":\"5px\",\"background\":\"#fff\",\"display\":\"flex\",\"align-items\":\"center\"}},[[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('checkAllYes'),\"icon\":_vm.mdiCheckboxMultipleMarked,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"_textColor\":\"'#eee'\",\"_textColorHover\":\"'#fff'\",\"iconColor\":'#444',\"iconColorHover\":'#222',\"shadow\":false},on:{\"click\":_vm.toggleItemsEnableAllYes}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})],[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('checkAllNo'),\"icon\":_vm.mdiCheckboxMultipleBlankOutline,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"_textColor\":\"'#eee'\",\"_textColorHover\":\"'#fff'\",\"iconColor\":'#444',\"iconColorHover\":'#222',\"shadow\":false},on:{\"click\":_vm.toggleItemsEnableAllNo}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})],[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('checkAllInv'),\"icon\":_vm.mdiCodeTagsCheck,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"_textColor\":\"'#eee'\",\"_textColorHover\":\"'#fff'\",\"iconColor\":'#444',\"iconColorHover\":'#222',\"shadow\":false},on:{\"click\":_vm.toggleItemsEnableAllInv}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})],(_vm.hasItemsCheck)?[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('cruleDeleteCheckTargets'),\"icon\":_vm.mdiTrashCanOutline,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"_textColor\":\"'#eee'\",\"_textColorHover\":\"'#fff'\",\"iconColor\":'#444',\"iconColorHover\":'#222',\"shadow\":false},on:{\"click\":_vm.deleteItemsCheck}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})]:_vm._e()],2):_vm._e()]),(_vm.items)?[_c('WAggridVueDyn',{ref:\"rftable\",style:(`width:100%;`),attrs:{\"height\":_vm.contentHeight,\"opt\":_vm.opt}})]:_c('div',{staticStyle:{\"padding\":\"10px 15px\",\"font-size\":\"0.8rem\"}},[_vm._v(\" \"+_vm._s(_vm.$t('waitingData'))+\" \")])],2)]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <WDialog\r\n :show.sync=\"bShow\"\r\n :title=\"isEditable?$t('pemiEditCrules'):$t('pemiEditCrulesForDisplay')\"\r\n :icon=\"mdiFormatListCheckbox\"\r\n :minWidth=\"800\"\r\n :maxWidth=\"800\"\r\n :fullscreen=\"fullscreen\"\r\n :contentBackgroundColor=\"'#fff'\"\r\n :headerBtns=\"useHeaderBtns\"\r\n :hasSaveBtn=\"isEditable && isModified\"\r\n :save-btn-tooltip=\"$t('save')\"\r\n :close-btn-tooltip=\"$t('close')\"\r\n @click-btns=\"clickBtns\"\r\n @click-save=\"clickSave\"\r\n @click-close=\"clickClose\"\r\n @resize=\"resizeDialog\"\r\n >\r\n <template v-slot:content>\r\n <div>\r\n\r\n <div\r\n style=\"_border-bottom:1px solid #ddd; background:#fff;\"\r\n v-domresize\r\n @domresize=\"resizeHead\"\r\n >\r\n\r\n <!-- 功能區 -->\r\n <div\r\n style=\"padding:5px; background:#fff; display:flex; align-items:center;\"\r\n v-if=\"isEditable\"\r\n >\r\n\r\n <template>\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('checkAllYes')\"\r\n :icon=\"mdiCheckboxMultipleMarked\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n _textColor=\"'#eee'\"\r\n _textColorHover=\"'#fff'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :shadow=\"false\"\r\n @click=\"toggleItemsEnableAllYes\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n <template>\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('checkAllNo')\"\r\n :icon=\"mdiCheckboxMultipleBlankOutline\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n _textColor=\"'#eee'\"\r\n _textColorHover=\"'#fff'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :shadow=\"false\"\r\n @click=\"toggleItemsEnableAllNo\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n <template>\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('checkAllInv')\"\r\n :icon=\"mdiCodeTagsCheck\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n _textColor=\"'#eee'\"\r\n _textColorHover=\"'#fff'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :shadow=\"false\"\r\n @click=\"toggleItemsEnableAllInv\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n <template v-if=\"hasItemsCheck\">\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('cruleDeleteCheckTargets')\"\r\n :icon=\"mdiTrashCanOutline\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n _textColor=\"'#eee'\"\r\n _textColorHover=\"'#fff'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :shadow=\"false\"\r\n @click=\"deleteItemsCheck\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n <template v-if=\"items\">\r\n <WAggridVueDyn\r\n ref=\"rftable\"\r\n :style=\"`width:100%;`\"\r\n :height=\"contentHeight\"\r\n :opt=\"opt\"\r\n >\r\n </WAggridVueDyn>\r\n </template>\r\n\r\n <div\r\n style=\"padding:10px 15px; font-size:0.8rem;\"\r\n v-else\r\n >\r\n {{$t('waitingData')}}\r\n </div>\r\n\r\n </div>\r\n </template>\r\n </WDialog>\r\n</template>\r\n\r\n<script>\r\nimport { mdiDeleteForever, mdiFullscreen, mdiFullscreenExit, mdiFormatListCheckbox, mdiFileTree, mdiTrashCanOutline, mdiCheckboxMultipleBlankOutline, mdiCheckboxMultipleMarked, mdiCodeTagsCheck } from '@mdi/js/mdi.js'\r\nimport Vue from 'vue'\r\nimport JSON5 from 'json5'\r\nimport get from 'lodash-es/get.js'\r\nimport set from 'lodash-es/set.js'\r\nimport each from 'lodash-es/each.js'\r\nimport map from 'lodash-es/map.js'\r\nimport size from 'lodash-es/size.js'\r\nimport filter from 'lodash-es/filter.js'\r\nimport sortBy from 'lodash-es/sortBy.js'\r\nimport cloneDeep from 'lodash-es/cloneDeep.js'\r\nimport genPm from 'wsemi/src/genPm.mjs'\r\nimport delay from 'wsemi/src/delay.mjs'\r\nimport iseobj from 'wsemi/src/iseobj.mjs'\r\nimport isestr from 'wsemi/src/isestr.mjs'\r\nimport WDialog from 'w-component-vue/src/components/WDialog.vue'\r\nimport WButtonCircle from 'w-component-vue/src/components/WButtonCircle.vue'\r\nimport WAggridVueDyn from 'w-component-vue/src/components/WAggridVueDyn.vue'\r\n\r\n\r\nexport default {\r\n components: {\r\n WDialog,\r\n WButtonCircle,\r\n WAggridVueDyn,\r\n },\r\n props: {\r\n },\r\n data: function() {\r\n return {\r\n mdiDeleteForever,\r\n mdiFullscreen,\r\n mdiFullscreenExit,\r\n mdiFormatListCheckbox,\r\n mdiFileTree,\r\n mdiTrashCanOutline,\r\n mdiCheckboxMultipleBlankOutline,\r\n mdiCheckboxMultipleMarked,\r\n mdiCodeTagsCheck,\r\n\r\n bShow: false,\r\n pm: null,\r\n\r\n fullscreen: false,\r\n\r\n panelWidth: 100,\r\n panelHeight: 100,\r\n headHeight: 100,\r\n\r\n isEditable: false,\r\n isModified: false,\r\n\r\n pemi: null,\r\n\r\n items: [],\r\n itemsCheck: [],\r\n opt: null,\r\n\r\n }\r\n },\r\n mounted: function() {\r\n //console.log('mounted')\r\n\r\n let vo = this\r\n\r\n //set\r\n Vue.prototype.$dg.showVeCrules = vo.show\r\n Vue.prototype.$dg.toggleItemEnableById = vo.toggleItemEnableById\r\n\r\n },\r\n computed: {\r\n\r\n targets: function() {\r\n let rs = get(this, `$store.state.targets`)\r\n rs = sortBy(rs, 'order')\r\n return rs\r\n },\r\n\r\n pemis: function() {\r\n let rs = get(this, `$store.state.pemis`)\r\n rs = sortBy(rs, 'order')\r\n return rs\r\n },\r\n\r\n grups: function() {\r\n let rs = get(this, `$store.state.grups`)\r\n rs = sortBy(rs, 'order')\r\n return rs\r\n },\r\n\r\n users: function() {\r\n let rs = get(this, `$store.state.users`)\r\n rs = sortBy(rs, 'order')\r\n return rs\r\n },\r\n\r\n kpHeaderBtns: function() {\r\n let vo = this\r\n let kp = {\r\n // delete: {\r\n // icon: mdiDeleteForever,\r\n // tooltip: `${vo.$t('delete')}${vo.tableNameCht}`,\r\n // evName: 'delete'\r\n // },\r\n toFullscreen: {\r\n icon: mdiFullscreen,\r\n tooltip: vo.$t('screenFull'),\r\n evName: 'toFullscreen'\r\n },\r\n toNormalscreen: {\r\n icon: mdiFullscreenExit,\r\n tooltip: vo.$t('screenNormal'),\r\n evName: 'toNormalscreen'\r\n },\r\n }\r\n return kp\r\n },\r\n\r\n useHeaderBtns: function() {\r\n let vo = this\r\n let bts = []\r\n if (true) {\r\n let k = vo.fullscreen ? 'toNormalscreen' : 'toFullscreen'\r\n bts = [\r\n ...bts,\r\n vo.kpHeaderBtns[k]\r\n ]\r\n }\r\n // if (vo.useDelete) {\r\n // let k = 'delete'\r\n // bts = [\r\n // ...bts,\r\n // vo.kpHeaderBtns[k]\r\n // ]\r\n // }\r\n return bts\r\n },\r\n\r\n contentHeight: function() {\r\n let vo = this\r\n\r\n //h\r\n let h = vo.panelHeight - vo.headHeight\r\n h = Math.max(h, 0)\r\n\r\n return h\r\n },\r\n\r\n hasItemsCheck: function() {\r\n let vo = this\r\n\r\n //h\r\n let b = vo.itemsCheck.length > 0\r\n\r\n return b\r\n },\r\n\r\n },\r\n methods: {\r\n\r\n resizeDialog: function(msg) {\r\n // console.log('methods resizeDialog', msg)\r\n\r\n let vo = this\r\n\r\n //panelWidth, panelHeight\r\n vo.panelWidth = msg.panelWidth\r\n vo.panelHeight = msg.contentHeightMax\r\n\r\n },\r\n\r\n resizeHead: function(msg) {\r\n // console.log('methods resizeHead', msg)\r\n\r\n let vo = this\r\n\r\n //headHeight\r\n vo.headHeight = msg.snew.offsetHeight\r\n\r\n },\r\n\r\n genOpt: function() {\r\n // console.log('methods genOpt')\r\n\r\n let vo = this\r\n\r\n //default\r\n vo.itemsCheck = []\r\n\r\n //opt\r\n let opt = null\r\n if (size(vo.items) > 0) {\r\n\r\n //ks\r\n let ks = [\r\n 'id',\r\n 'enable',\r\n ]\r\n // console.log('ks', ks)\r\n\r\n //kpHead\r\n let kpHead = {\r\n 'id': vo.$t('targetId'),\r\n 'enable': vo.$t('targetEnable'),\r\n }\r\n\r\n //opt\r\n opt = {\r\n language: vo.$t('aggridLanguage'),\r\n rows: vo.items,\r\n keys: ks,\r\n kpHead,\r\n autoFitColumn: true,\r\n defCellEditable: false, //vo.isEditable,\r\n defHeadFilter: true,\r\n defCellAlignH: 'left',\r\n kpCellEditable: {\r\n 'id': vo.isEditable,\r\n 'enable': false,\r\n },\r\n kpHeadWidth: {\r\n 'enable': 50,\r\n },\r\n // kpRowDrag: {\r\n // 'id': true,\r\n // },\r\n // kpHeadFilter: {\r\n // 'enable': false,\r\n // },\r\n kpHeadFilterType: {\r\n 'id': 'text',\r\n 'enable': 'text',\r\n },\r\n // kpHeadCheckBox: {\r\n // 'id': true,\r\n // },\r\n kpCellRender: {\r\n 'id': (v, k, r) => {\r\n // console.log('kpCellRender id', v)\r\n\r\n return v\r\n },\r\n 'enable': (v, k, r) => {\r\n // console.log('kpCellRender enable', v, k, r)\r\n\r\n //id\r\n let id = get(r, 'id', '')\r\n // console.log('id', id, k, r)\r\n\r\n let t = `\r\n <input type=\"checkbox\" ${v === 'y' ? 'checked' : ''} onclick=\"$vo.$dg.toggleItemEnableById('${id}')\" ${vo.isEditable ? '' : 'disabled'} />\r\n `\r\n\r\n return t\r\n },\r\n },\r\n rowsChange: (rs) => {\r\n // console.log('rowsChange', rs)\r\n // console.log('rowsChange cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n rowChecked: (rs) => {\r\n // console.log('rowChecked', rs)\r\n // console.log('rowChecked cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\r\n\r\n //save itemsCheck\r\n vo.itemsCheck = cloneDeep(rs)\r\n\r\n },\r\n }\r\n // console.log('opt', opt)\r\n\r\n }\r\n\r\n //save\r\n vo.opt = opt\r\n\r\n },\r\n\r\n deleteItemsCheck: function() {\r\n // console.log('method deleteItemsCheck')\r\n\r\n let vo = this\r\n\r\n //check\r\n if (size(vo.itemsCheck) === 0) {\r\n return\r\n }\r\n\r\n //cloneDeep\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //cloneDeep\r\n rows = cloneDeep(rows)\r\n\r\n //filter\r\n each(vo.itemsCheck, (v) => {\r\n // console.log('v', v)\r\n let id = get(v, 'data.id', '')\r\n if (!isestr(id)) {\r\n console.log(`invalid id`)\r\n return true //跳出換下一個\r\n }\r\n rows = filter(rows, (vv) => {\r\n return vv.id !== id\r\n })\r\n })\r\n\r\n //clear\r\n vo.itemsCheck = []\r\n\r\n //save\r\n vo.opt.rows = rows\r\n // console.log('deleteItemsCheck cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n refresh: function() {\r\n let vo = this\r\n\r\n //cmp\r\n let cmp = get(vo, '$refs.rftable.$refs.$self')\r\n // console.log('cmp', cmp)\r\n\r\n //refresh, 因set不會觸發kpCellRender, 故須另外調用組件函數refresh, 進而觸發kpCellRender, 使能更新數據\r\n cmp.refresh()\r\n\r\n },\r\n\r\n getDisplayData: function() {\r\n let vo = this\r\n\r\n //cmp\r\n let cmp = get(vo, '$refs.rftable.$refs.$self')\r\n // console.log('cmp', cmp)\r\n\r\n //getDisplayData\r\n let rows = cmp.getDisplayData()\r\n\r\n return rows\r\n },\r\n\r\n toggleItemEnableById: function(id) {\r\n // console.log('toggleItemEnableById', id)\r\n\r\n let vo = this\r\n\r\n //check\r\n if (!isestr(id)) {\r\n vo.$alert(`${vo.$t('cruleEditNoTargetId')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //find\r\n let r = null\r\n let kr = null\r\n each(rows, (v, k) => {\r\n if (get(v, 'id', '') === id) {\r\n r = v\r\n kr = k\r\n return false //跳出\r\n }\r\n })\r\n\r\n //check\r\n if (!iseobj(r)) {\r\n vo.$alert(`${vo.$t('cruleEditNoTargetData')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //enable\r\n let _enable = get(r, 'enable', 'n')\r\n let enable = _enable === 'y' ? 'n' : 'y'\r\n // console.log('enable', enable)\r\n\r\n //set\r\n set(vo, `opt.rows[${kr}].enable`, enable)\r\n // console.log('vo.opt.rows[kr]', cloneDeep(vo.opt.rows[kr]))\r\n\r\n //refresh\r\n vo.refresh()\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n toggleItemsEnableAllYes: function() {\r\n // console.log('toggleItemsEnableAllYes')\r\n\r\n let vo = this\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n // console.log('rows', rows)\r\n\r\n //kpRow\r\n let kpRow = {}\r\n each(rows, (r, kr) => {\r\n kpRow[r.id] = kr\r\n })\r\n\r\n //rowsEff\r\n let rowsEff = vo.getDisplayData()\r\n // console.log('rowsEff', rowsEff)\r\n\r\n //toggle\r\n each(rowsEff, (r) => {\r\n\r\n //kr\r\n let kr = kpRow[r.id]\r\n\r\n //set\r\n set(vo, `opt.rows[${kr}].enable`, 'y')\r\n // console.log('vo.opt.rows[kr]', cloneDeep(vo.opt.rows[kr]))\r\n\r\n })\r\n\r\n //refresh\r\n vo.refresh()\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n toggleItemsEnableAllNo: function() {\r\n // console.log('toggleItemsEnableAllNo')\r\n\r\n let vo = this\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n // console.log('rows', rows)\r\n\r\n //kpRow\r\n let kpRow = {}\r\n each(rows, (r, kr) => {\r\n kpRow[r.id] = kr\r\n })\r\n\r\n //rowsEff\r\n let rowsEff = vo.getDisplayData()\r\n // console.log('rowsEff', rowsEff)\r\n\r\n //toggle\r\n each(rowsEff, (r) => {\r\n\r\n //kr\r\n let kr = kpRow[r.id]\r\n\r\n //set\r\n set(vo, `opt.rows[${kr}].enable`, 'n')\r\n // console.log('vo.opt.rows[kr]', cloneDeep(vo.opt.rows[kr]))\r\n\r\n })\r\n\r\n //refresh\r\n vo.refresh()\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n toggleItemsEnableAllInv: function() {\r\n // console.log('toggleItemsEnableAllInv')\r\n\r\n let vo = this\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n // console.log('rows', rows)\r\n\r\n //kpRow\r\n let kpRow = {}\r\n each(rows, (r, kr) => {\r\n kpRow[r.id] = kr\r\n })\r\n\r\n //rowsEff\r\n let rowsEff = vo.getDisplayData()\r\n // console.log('rowsEff', rowsEff)\r\n\r\n //toggle\r\n each(rowsEff, (r) => {\r\n\r\n //kr\r\n let kr = kpRow[r.id]\r\n\r\n //enable\r\n let _enable = get(r, 'enable', 'n')\r\n let enable = _enable === 'y' ? 'n' : 'y'\r\n\r\n //set\r\n set(vo, `opt.rows[${kr}].enable`, enable)\r\n // console.log('vo.opt.rows[kr]', cloneDeep(vo.opt.rows[kr]))\r\n\r\n })\r\n\r\n //refresh\r\n vo.refresh()\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n clickBtns: function(msg) {\r\n // console.log('clickBtns', msg)\r\n\r\n let vo = this\r\n\r\n //evName\r\n if (msg.evName === 'toFullscreen') {\r\n vo.fullscreen = true\r\n }\r\n else if (msg.evName === 'toNormalscreen') {\r\n vo.fullscreen = false\r\n }\r\n\r\n },\r\n\r\n clickSave: function(msg) {\r\n //console.log('methods clickSave', msg)\r\n\r\n let vo = this\r\n\r\n async function core() {\r\n\r\n //show loading\r\n vo.$ui.updateLoading(true)\r\n\r\n //delay\r\n await delay(300)\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n // console.log('rows', rows)\r\n\r\n //kpRule\r\n let kpRule = {}\r\n each(rows, (r) => {\r\n let id = get(r, 'id', '')\r\n let enable = get(r, 'enable', '')\r\n if (!isestr(id)) {\r\n console.log(`invalid id`)\r\n return true //跳出換下一個\r\n }\r\n if (!isestr(enable)) {\r\n console.log(`invalid enable`)\r\n return true //跳出換下一個\r\n }\r\n kpRule[id] = enable\r\n })\r\n // console.log('kpRule', kpRule)\r\n\r\n //crules\r\n let crules = JSON.stringify(kpRule)\r\n // console.log('crules', crules)\r\n\r\n return crules\r\n }\r\n\r\n //core\r\n core()\r\n .then((rows) => {\r\n\r\n //resolve\r\n vo.pm.resolve(rows)\r\n\r\n //hide\r\n vo.bShow = false\r\n\r\n })\r\n .catch(() => { })\r\n .finally(() => {\r\n\r\n //save按鈕解除loading\r\n msg.pm.resolve()\r\n\r\n //hide loading\r\n vo.$ui.updateLoading(false)\r\n\r\n })\r\n\r\n },\r\n\r\n clickClose: function() {\r\n //console.log('methods clickClose')\r\n\r\n let vo = this\r\n\r\n //reject\r\n vo.pm.reject('close window')\r\n\r\n //hide\r\n vo.bShow = false\r\n\r\n },\r\n\r\n show: function (msg) {\r\n // console.log('methods show', msg)\r\n\r\n let vo = this\r\n\r\n //pm\r\n vo.pm = genPm()\r\n\r\n //default\r\n vo.isModified = false\r\n\r\n //isEditable, pemi\r\n let isEditable = get(msg, 'isEditable', false)\r\n let pemi = get(msg, 'pemi', {})\r\n\r\n //cloneDeep\r\n pemi = cloneDeep(pemi)\r\n\r\n //crules\r\n let crules = get(pemi, 'crules', '')\r\n\r\n //kpRule\r\n let kpRule = {}\r\n if (isestr(crules)) {\r\n try {\r\n kpRule = JSON5.parse(crules)\r\n }\r\n catch (err) {\r\n console.log('crules', crules)\r\n console.log('err', err)\r\n }\r\n\r\n }\r\n // console.log('kpRule', kpRule)\r\n\r\n //items\r\n let items = map(vo.targets, (v) => {\r\n let enable = get(kpRule, v.id, '')\r\n enable = enable === 'y' ? 'y' : 'n'\r\n let r = {\r\n id: v.id,\r\n enable,\r\n }\r\n return r\r\n })\r\n // console.log('items', items)\r\n\r\n //save\r\n vo.isEditable = isEditable\r\n vo.pemi = pemi\r\n vo.items = items\r\n\r\n //genOpt\r\n vo.genOpt()\r\n\r\n //bShow\r\n vo.bShow = true\r\n\r\n return vo.pm\r\n },\r\n\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n</style>\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VeCrules.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VeCrules.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./VeCrules.vue?vue&type=template&id=714fd8f4&scoped=true\"\nimport script from \"./VeCrules.vue?vue&type=script&lang=js\"\nexport * from \"./VeCrules.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"714fd8f4\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('WDialog',{attrs:{\"show\":_vm.bShow,\"title\":_vm.isEditable?_vm.$t('grupEditCpemis'):_vm.$t('grupEditCpemisForDisplay'),\"icon\":_vm.mdiFormatListCheckbox,\"minWidth\":800,\"maxWidth\":800,\"fullscreen\":_vm.fullscreen,\"contentBackgroundColor\":'#fff',\"headerBtns\":_vm.useHeaderBtns,\"hasSaveBtn\":_vm.isEditable && _vm.isModified,\"save-btn-tooltip\":_vm.$t('save'),\"close-btn-tooltip\":_vm.$t('close')},on:{\"update:show\":function($event){_vm.bShow=$event},\"click-btns\":_vm.clickBtns,\"click-save\":_vm.clickSave,\"click-close\":_vm.clickClose,\"resize\":_vm.resizeDialog},scopedSlots:_vm._u([{key:\"content\",fn:function(){return [_c('div',[_c('div',{directives:[{name:\"domresize\",rawName:\"v-domresize\"}],staticStyle:{\"_border-bottom\":\"1px solid #ddd\",\"background\":\"#fff\"},on:{\"domresize\":_vm.resizeHead}},[(_vm.isEditable)?_c('div',{staticStyle:{\"padding\":\"5px\",\"background\":\"#fff\",\"display\":\"flex\",\"align-items\":\"center\"}},[[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('checkAllYes'),\"icon\":_vm.mdiCheckboxMultipleMarked,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"_textColor\":\"'#eee'\",\"_textColorHover\":\"'#fff'\",\"iconColor\":'#444',\"iconColorHover\":'#222',\"shadow\":false},on:{\"click\":_vm.showVeCpemisToggleItemsEnableAllYes}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})],[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('checkAllNo'),\"icon\":_vm.mdiCheckboxMultipleBlankOutline,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"_textColor\":\"'#eee'\",\"_textColorHover\":\"'#fff'\",\"iconColor\":'#444',\"iconColorHover\":'#222',\"shadow\":false},on:{\"click\":_vm.showVeCpemisToggleItemsEnableAllNo}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})],[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('checkAllInv'),\"icon\":_vm.mdiCodeTagsCheck,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"_textColor\":\"'#eee'\",\"_textColorHover\":\"'#fff'\",\"iconColor\":'#444',\"iconColorHover\":'#222',\"shadow\":false},on:{\"click\":_vm.showVeCpemisToggleItemsEnableAllInv}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})],(_vm.hasItemsCheck)?[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('cpemiDeleteCheckTargets'),\"icon\":_vm.mdiTrashCanOutline,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"_textColor\":\"'#eee'\",\"_textColorHover\":\"'#fff'\",\"iconColor\":'#444',\"iconColorHover\":'#222',\"shadow\":false},on:{\"click\":_vm.deleteItemsCheck}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})]:_vm._e()],2):_vm._e()]),(_vm.items)?[_c('WAggridVueDyn',{ref:\"rftable\",style:(`width:100%;`),attrs:{\"height\":_vm.contentHeight,\"opt\":_vm.opt}})]:_c('div',{staticStyle:{\"padding\":\"10px 15px\",\"font-size\":\"0.8rem\"}},[_vm._v(\" \"+_vm._s(_vm.$t('waitingData'))+\" \")])],2)]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <WDialog\r\n :show.sync=\"bShow\"\r\n :title=\"isEditable?$t('grupEditCpemis'):$t('grupEditCpemisForDisplay')\"\r\n :icon=\"mdiFormatListCheckbox\"\r\n :minWidth=\"800\"\r\n :maxWidth=\"800\"\r\n :fullscreen=\"fullscreen\"\r\n :contentBackgroundColor=\"'#fff'\"\r\n :headerBtns=\"useHeaderBtns\"\r\n :hasSaveBtn=\"isEditable && isModified\"\r\n :save-btn-tooltip=\"$t('save')\"\r\n :close-btn-tooltip=\"$t('close')\"\r\n @click-btns=\"clickBtns\"\r\n @click-save=\"clickSave\"\r\n @click-close=\"clickClose\"\r\n @resize=\"resizeDialog\"\r\n >\r\n <template v-slot:content>\r\n <div>\r\n\r\n <div\r\n style=\"_border-bottom:1px solid #ddd; background:#fff;\"\r\n v-domresize\r\n @domresize=\"resizeHead\"\r\n >\r\n\r\n <!-- 功能區 -->\r\n <div\r\n style=\"padding:5px; background:#fff; display:flex; align-items:center;\"\r\n v-if=\"isEditable\"\r\n >\r\n\r\n <template>\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('checkAllYes')\"\r\n :icon=\"mdiCheckboxMultipleMarked\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n _textColor=\"'#eee'\"\r\n _textColorHover=\"'#fff'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :shadow=\"false\"\r\n @click=\"showVeCpemisToggleItemsEnableAllYes\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n <template>\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('checkAllNo')\"\r\n :icon=\"mdiCheckboxMultipleBlankOutline\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n _textColor=\"'#eee'\"\r\n _textColorHover=\"'#fff'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :shadow=\"false\"\r\n @click=\"showVeCpemisToggleItemsEnableAllNo\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n <template>\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('checkAllInv')\"\r\n :icon=\"mdiCodeTagsCheck\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n _textColor=\"'#eee'\"\r\n _textColorHover=\"'#fff'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :shadow=\"false\"\r\n @click=\"showVeCpemisToggleItemsEnableAllInv\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n <template v-if=\"hasItemsCheck\">\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('cpemiDeleteCheckTargets')\"\r\n :icon=\"mdiTrashCanOutline\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n _textColor=\"'#eee'\"\r\n _textColorHover=\"'#fff'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :shadow=\"false\"\r\n @click=\"deleteItemsCheck\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n <template v-if=\"items\">\r\n <WAggridVueDyn\r\n ref=\"rftable\"\r\n :style=\"`width:100%;`\"\r\n :height=\"contentHeight\"\r\n :opt=\"opt\"\r\n >\r\n </WAggridVueDyn>\r\n </template>\r\n\r\n <div\r\n style=\"padding:10px 15px; font-size:0.8rem;\"\r\n v-else\r\n >\r\n {{$t('waitingData')}}\r\n </div>\r\n\r\n </div>\r\n </template>\r\n </WDialog>\r\n</template>\r\n\r\n<script>\r\nimport { mdiDeleteForever, mdiFullscreen, mdiFullscreenExit, mdiFormatListCheckbox, mdiFileTree, mdiTrashCanOutline, mdiCheckboxMultipleBlankOutline, mdiCheckboxMultipleMarked, mdiCodeTagsCheck } from '@mdi/js/mdi.js'\r\nimport Vue from 'vue'\r\nimport JSON5 from 'json5'\r\nimport get from 'lodash-es/get.js'\r\nimport set from 'lodash-es/set.js'\r\nimport each from 'lodash-es/each.js'\r\nimport map from 'lodash-es/map.js'\r\nimport size from 'lodash-es/size.js'\r\nimport filter from 'lodash-es/filter.js'\r\nimport sortBy from 'lodash-es/sortBy.js'\r\nimport cloneDeep from 'lodash-es/cloneDeep.js'\r\nimport genPm from 'wsemi/src/genPm.mjs'\r\nimport delay from 'wsemi/src/delay.mjs'\r\nimport iseobj from 'wsemi/src/iseobj.mjs'\r\nimport isestr from 'wsemi/src/isestr.mjs'\r\nimport WDialog from 'w-component-vue/src/components/WDialog.vue'\r\nimport WButtonCircle from 'w-component-vue/src/components/WButtonCircle.vue'\r\nimport WAggridVueDyn from 'w-component-vue/src/components/WAggridVueDyn.vue'\r\n\r\n\r\nexport default {\r\n components: {\r\n WDialog,\r\n WButtonCircle,\r\n WAggridVueDyn,\r\n },\r\n props: {\r\n },\r\n data: function() {\r\n return {\r\n mdiDeleteForever,\r\n mdiFullscreen,\r\n mdiFullscreenExit,\r\n mdiFormatListCheckbox,\r\n mdiFileTree,\r\n mdiTrashCanOutline,\r\n mdiCheckboxMultipleBlankOutline,\r\n mdiCheckboxMultipleMarked,\r\n mdiCodeTagsCheck,\r\n\r\n bShow: false,\r\n pm: null,\r\n\r\n fullscreen: false,\r\n\r\n panelWidth: 100,\r\n panelHeight: 100,\r\n headHeight: 100,\r\n\r\n isEditable: false,\r\n isModified: false,\r\n\r\n grup: null,\r\n\r\n items: [],\r\n itemsCheck: [],\r\n opt: null,\r\n\r\n }\r\n },\r\n mounted: function() {\r\n //console.log('mounted')\r\n\r\n let vo = this\r\n\r\n //set\r\n Vue.prototype.$dg.showVeCpemis = vo.show\r\n Vue.prototype.$dg.showVeCpemisToggleItemModeByName = vo.showVeCpemisToggleItemModeByName\r\n Vue.prototype.$dg.showVeCpemisToggleItemEnableByName = vo.showVeCpemisToggleItemEnableByName\r\n\r\n },\r\n computed: {\r\n\r\n targets: function() {\r\n let rs = get(this, `$store.state.targets`)\r\n rs = sortBy(rs, 'order')\r\n return rs\r\n },\r\n\r\n pemis: function() {\r\n let rs = get(this, `$store.state.pemis`)\r\n rs = sortBy(rs, 'order')\r\n return rs\r\n },\r\n\r\n grups: function() {\r\n let rs = get(this, `$store.state.grups`)\r\n rs = sortBy(rs, 'order')\r\n return rs\r\n },\r\n\r\n users: function() {\r\n let rs = get(this, `$store.state.users`)\r\n rs = sortBy(rs, 'order')\r\n return rs\r\n },\r\n\r\n kpHeaderBtns: function() {\r\n let vo = this\r\n let kp = {\r\n // delete: {\r\n // icon: mdiDeleteForever,\r\n // tooltip: `${vo.$t('delete')}${vo.tableNameCht}`,\r\n // evName: 'delete'\r\n // },\r\n toFullscreen: {\r\n icon: mdiFullscreen,\r\n tooltip: vo.$t('screenFull'),\r\n evName: 'toFullscreen'\r\n },\r\n toNormalscreen: {\r\n icon: mdiFullscreenExit,\r\n tooltip: vo.$t('screenNormal'),\r\n evName: 'toNormalscreen'\r\n },\r\n }\r\n return kp\r\n },\r\n\r\n useHeaderBtns: function() {\r\n let vo = this\r\n let bts = []\r\n if (true) {\r\n let k = vo.fullscreen ? 'toNormalscreen' : 'toFullscreen'\r\n bts = [\r\n ...bts,\r\n vo.kpHeaderBtns[k]\r\n ]\r\n }\r\n // if (vo.useDelete) {\r\n // let k = 'delete'\r\n // bts = [\r\n // ...bts,\r\n // vo.kpHeaderBtns[k]\r\n // ]\r\n // }\r\n return bts\r\n },\r\n\r\n contentHeight: function() {\r\n let vo = this\r\n\r\n //h\r\n let h = vo.panelHeight - vo.headHeight\r\n h = Math.max(h, 0)\r\n\r\n return h\r\n },\r\n\r\n hasItemsCheck: function() {\r\n let vo = this\r\n\r\n //h\r\n let b = vo.itemsCheck.length > 0\r\n\r\n return b\r\n },\r\n\r\n },\r\n methods: {\r\n\r\n resizeDialog: function(msg) {\r\n // console.log('methods resizeDialog', msg)\r\n\r\n let vo = this\r\n\r\n //panelWidth, panelHeight\r\n vo.panelWidth = msg.panelWidth\r\n vo.panelHeight = msg.contentHeightMax\r\n\r\n },\r\n\r\n resizeHead: function(msg) {\r\n // console.log('methods resizeHead', msg)\r\n\r\n let vo = this\r\n\r\n //headHeight\r\n vo.headHeight = msg.snew.offsetHeight\r\n\r\n },\r\n\r\n genOpt: function() {\r\n // console.log('methods genOpt')\r\n\r\n let vo = this\r\n\r\n //default\r\n vo.itemsCheck = []\r\n\r\n //opt\r\n let opt = null\r\n if (size(vo.items) > 0) {\r\n\r\n //ks\r\n let ks = [\r\n 'name',\r\n 'mode',\r\n 'enable',\r\n ]\r\n // console.log('ks', ks)\r\n\r\n //kpHead\r\n let kpHead = {\r\n 'name': vo.$t('pemiName'),\r\n 'mode': vo.$t('operPemiEnable'),\r\n 'enable': vo.$t('operMode'),\r\n }\r\n\r\n //opt\r\n opt = {\r\n language: vo.$t('aggridLanguage'),\r\n rows: vo.items,\r\n keys: ks,\r\n kpHead,\r\n autoFitColumn: true,\r\n defCellEditable: false, //vo.isEditable,\r\n defHeadFilter: true,\r\n defCellAlignH: 'left',\r\n kpCellEditable: {\r\n 'name': vo.isEditable,\r\n 'mode': false,\r\n 'enable': false,\r\n },\r\n kpHeadWidth: {\r\n 'mode': 100,\r\n 'enable': 100,\r\n },\r\n // kpRowDrag: {\r\n // 'name': true,\r\n // },\r\n // kpHeadFilter: {\r\n // 'enable': false,\r\n // },\r\n kpHeadFilterType: {\r\n 'name': 'text',\r\n 'mode': 'text',\r\n 'enable': 'text',\r\n },\r\n // kpHeadCheckBox: {\r\n // 'name': true,\r\n // },\r\n kpCellRender: {\r\n 'name': (v, k, r) => {\r\n // console.log('kpCellRender name', v)\r\n\r\n return v\r\n },\r\n 'mode': (v, k, r) => {\r\n // console.log('kpCellRender mode', v)\r\n\r\n //name\r\n let name = get(r, 'name', '')\r\n // console.log('name', name, k, r)\r\n\r\n //mode\r\n let mode = get(r, 'mode', '')\r\n // console.log('mode', mode, k, r)\r\n\r\n let t = `\r\n <select onchange=\"$vo.$dg.showVeCpemisToggleItemModeByName('${name}',this.value)\" ${vo.isEditable ? '' : 'disabled'}>\r\n <option value=\"OR\" ${mode === 'OR' ? 'selected' : ''}>OR</option>\r\n <option value=\"AND\" ${mode === 'AND' ? 'selected' : ''}>AND</option>\r\n </select>\r\n `\r\n\r\n return t\r\n },\r\n 'enable': (v, k, r) => {\r\n // console.log('kpCellRender enable', v, k, r)\r\n\r\n //name\r\n let name = get(r, 'name', '')\r\n // console.log('name', name, k, r)\r\n\r\n let t = `\r\n <input type=\"checkbox\" ${v === 'y' ? 'checked' : ''} onclick=\"$vo.$dg.showVeCpemisToggleItemEnableByName('${name}')\" ${vo.isEditable ? '' : 'disabled'} />\r\n `\r\n\r\n return t\r\n },\r\n },\r\n rowsChange: (rs) => {\r\n // console.log('rowsChange', rs)\r\n // console.log('rowsChange cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n rowChecked: (rs) => {\r\n // console.log('rowChecked', rs)\r\n // console.log('rowChecked cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\r\n\r\n //save itemsCheck\r\n vo.itemsCheck = cloneDeep(rs)\r\n\r\n },\r\n }\r\n // console.log('opt', opt)\r\n\r\n }\r\n\r\n //save\r\n vo.opt = opt\r\n\r\n },\r\n\r\n deleteItemsCheck: function() {\r\n // console.log('method deleteItemsCheck')\r\n\r\n let vo = this\r\n\r\n //check\r\n if (size(vo.itemsCheck) === 0) {\r\n return\r\n }\r\n\r\n //cloneDeep\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //cloneDeep\r\n rows = cloneDeep(rows)\r\n\r\n //filter\r\n each(vo.itemsCheck, (v) => {\r\n // console.log('v', v)\r\n let name = get(v, 'data.name', '')\r\n if (!isestr(name)) {\r\n console.log(`invalid name`)\r\n return true //跳出換下一個\r\n }\r\n rows = filter(rows, (vv) => {\r\n return vv.name !== name\r\n })\r\n })\r\n\r\n //clear\r\n vo.itemsCheck = []\r\n\r\n //save\r\n vo.opt.rows = rows\r\n // console.log('deleteItemsCheck cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n refresh: function() {\r\n let vo = this\r\n\r\n //cmp\r\n let cmp = get(vo, '$refs.rftable.$refs.$self')\r\n // console.log('cmp', cmp)\r\n\r\n //refresh, 因set不會觸發kpCellRender, 故須另外調用組件函數refresh, 進而觸發kpCellRender, 使能更新數據\r\n cmp.refresh()\r\n\r\n },\r\n\r\n getDisplayData: function() {\r\n let vo = this\r\n\r\n //cmp\r\n let cmp = get(vo, '$refs.rftable.$refs.$self')\r\n // console.log('cmp', cmp)\r\n\r\n //getDisplayData\r\n let rows = cmp.getDisplayData()\r\n\r\n return rows\r\n },\r\n\r\n showVeCpemisToggleItemModeByName: function(name, mode) {\r\n // console.log('showVeCpemisToggleItemModeByName', name, mode)\r\n\r\n let vo = this\r\n\r\n //check\r\n if (!isestr(name)) {\r\n vo.$alert(`${vo.$t('cpemiEditNoName')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //find\r\n let r = null\r\n let kr = null\r\n each(rows, (v, k) => {\r\n if (get(v, 'name', '') === name) {\r\n r = v\r\n kr = k\r\n return false //跳出\r\n }\r\n })\r\n\r\n //check\r\n if (!iseobj(r)) {\r\n vo.$alert(`${vo.$t('cpemiEditNoTarget')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //mode\r\n // let mode = th.value\r\n // console.log('mode', mode)\r\n\r\n //set\r\n set(vo, `opt.rows[${kr}].mode`, mode)\r\n // console.log('vo.opt.rows[kr]', cloneDeep(vo.opt.rows[kr]))\r\n\r\n //refresh\r\n vo.refresh()\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n showVeCpemisToggleItemEnableByName: function(name) {\r\n // console.log('showVeCpemisToggleItemEnableByName', name)\r\n\r\n let vo = this\r\n\r\n //check\r\n if (!isestr(name)) {\r\n vo.$alert(`${vo.$t('cpemiEditNoName')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //find\r\n let r = null\r\n let kr = null\r\n each(rows, (v, k) => {\r\n if (get(v, 'name', '') === name) {\r\n r = v\r\n kr = k\r\n return false //跳出\r\n }\r\n })\r\n\r\n //check\r\n if (!iseobj(r)) {\r\n vo.$alert(`${vo.$t('cpemiEditNoTarget')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //enable\r\n let _enable = get(r, 'enable', 'n')\r\n let enable = _enable === 'y' ? 'n' : 'y'\r\n // console.log('enable', enable)\r\n\r\n //set\r\n set(vo, `opt.rows[${kr}].enable`, enable)\r\n // console.log('vo.opt.rows[kr]', cloneDeep(vo.opt.rows[kr]))\r\n\r\n //refresh\r\n vo.refresh()\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n showVeCpemisToggleItemsEnableAllYes: function() {\r\n // console.log('showVeCpemisToggleItemsEnableAllYes')\r\n\r\n let vo = this\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n // console.log('rows', rows)\r\n\r\n //kpRow\r\n let kpRow = {}\r\n each(rows, (r, kr) => {\r\n kpRow[r.name] = kr\r\n })\r\n\r\n //rowsEff\r\n let rowsEff = vo.getDisplayData()\r\n // console.log('rowsEff', rowsEff)\r\n\r\n //toggle\r\n each(rowsEff, (r) => {\r\n\r\n //kr\r\n let kr = kpRow[r.name]\r\n\r\n //set\r\n set(vo, `opt.rows[${kr}].enable`, 'y')\r\n // console.log('vo.opt.rows[kr]', cloneDeep(vo.opt.rows[kr]))\r\n\r\n })\r\n\r\n //refresh\r\n vo.refresh()\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n showVeCpemisToggleItemsEnableAllNo: function() {\r\n // console.log('showVeCpemisToggleItemsEnableAllNo')\r\n\r\n let vo = this\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n // console.log('rows', rows)\r\n\r\n //kpRow\r\n let kpRow = {}\r\n each(rows, (r, kr) => {\r\n kpRow[r.name] = kr\r\n })\r\n\r\n //rowsEff\r\n let rowsEff = vo.getDisplayData()\r\n // console.log('rowsEff', rowsEff)\r\n\r\n //toggle\r\n each(rowsEff, (r) => {\r\n\r\n //kr\r\n let kr = kpRow[r.name]\r\n\r\n //set\r\n set(vo, `opt.rows[${kr}].enable`, 'n')\r\n // console.log('vo.opt.rows[kr]', cloneDeep(vo.opt.rows[kr]))\r\n\r\n })\r\n\r\n //refresh\r\n vo.refresh()\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n showVeCpemisToggleItemsEnableAllInv: function() {\r\n // console.log('showVeCpemisToggleItemsEnableAllInv')\r\n\r\n let vo = this\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n // console.log('rows', rows)\r\n\r\n //kpRow\r\n let kpRow = {}\r\n each(rows, (r, kr) => {\r\n kpRow[r.name] = kr\r\n })\r\n\r\n //rowsEff\r\n let rowsEff = vo.getDisplayData()\r\n // console.log('rowsEff', rowsEff)\r\n\r\n //toggle\r\n each(rowsEff, (r) => {\r\n\r\n //kr\r\n let kr = kpRow[r.name]\r\n\r\n //enable\r\n let _enable = get(r, 'enable', 'n')\r\n let enable = _enable === 'y' ? 'n' : 'y'\r\n\r\n //set\r\n set(vo, `opt.rows[${kr}].enable`, enable)\r\n // console.log('vo.opt.rows[kr]', cloneDeep(vo.opt.rows[kr]))\r\n\r\n })\r\n\r\n //refresh\r\n vo.refresh()\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n clickBtns: function(msg) {\r\n // console.log('clickBtns', msg)\r\n\r\n let vo = this\r\n\r\n //evName\r\n if (msg.evName === 'toFullscreen') {\r\n vo.fullscreen = true\r\n }\r\n else if (msg.evName === 'toNormalscreen') {\r\n vo.fullscreen = false\r\n }\r\n\r\n },\r\n\r\n clickSave: function(msg) {\r\n //console.log('methods clickSave', msg)\r\n\r\n let vo = this\r\n\r\n async function core() {\r\n\r\n //show loading\r\n vo.$ui.updateLoading(true)\r\n\r\n //delay\r\n await delay(300)\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n // console.log('rows', rows)\r\n\r\n //kpPemi\r\n let kpPemi = {}\r\n each(rows, (r) => {\r\n let name = get(r, 'name', '')\r\n let mode = get(r, 'mode', '')\r\n let enable = get(r, 'enable', '')\r\n if (!isestr(name)) {\r\n console.log(`invalid name`)\r\n return true //跳出換下一個\r\n }\r\n if (mode !== 'OR' && mode !== 'AND') {\r\n console.log(`invalid mode[${mode}]`)\r\n return true //跳出換下一個\r\n }\r\n if (!isestr(enable)) {\r\n console.log(`invalid enable`)\r\n return true //跳出換下一個\r\n }\r\n kpPemi[name] = {\r\n mode,\r\n isActive: enable,\r\n }\r\n })\r\n // console.log('kpPemi', kpPemi)\r\n\r\n //cpemis\r\n let cpemis = JSON.stringify(kpPemi)\r\n // console.log('cpemis', cpemis)\r\n\r\n return cpemis\r\n }\r\n\r\n //core\r\n core()\r\n .then((rows) => {\r\n\r\n //resolve\r\n vo.pm.resolve(rows)\r\n\r\n //hide\r\n vo.bShow = false\r\n\r\n })\r\n .catch(() => { })\r\n .finally(() => {\r\n\r\n //save按鈕解除loading\r\n msg.pm.resolve()\r\n\r\n //hide loading\r\n vo.$ui.updateLoading(false)\r\n\r\n })\r\n\r\n },\r\n\r\n clickClose: function() {\r\n //console.log('methods clickClose')\r\n\r\n let vo = this\r\n\r\n //reject\r\n vo.pm.reject('close window')\r\n\r\n //hide\r\n vo.bShow = false\r\n\r\n },\r\n\r\n show: function (msg) {\r\n // console.log('methods show', msg)\r\n\r\n let vo = this\r\n\r\n //pm\r\n vo.pm = genPm()\r\n\r\n //default\r\n vo.isModified = false\r\n\r\n //isEditable, grup\r\n let isEditable = get(msg, 'isEditable', false)\r\n let grup = get(msg, 'grup', {})\r\n\r\n //cloneDeep\r\n grup = cloneDeep(grup)\r\n\r\n //cpemis\r\n let cpemis = get(grup, 'cpemis', '')\r\n // console.log('cpemis', cpemis)\r\n\r\n //kpPemi\r\n let kpPemi = {}\r\n if (isestr(cpemis)) {\r\n try {\r\n kpPemi = JSON5.parse(cpemis)\r\n }\r\n catch (err) {\r\n console.log('cpemis', cpemis)\r\n console.log('err', err)\r\n }\r\n }\r\n // console.log('kpPemi', kpPemi)\r\n\r\n //items\r\n let items = map(vo.pemis, (v) => {\r\n // console.log('pemis v', v)\r\n\r\n //p\r\n let p = get(kpPemi, v.name, null)\r\n // console.log('p', p)\r\n\r\n //name\r\n let name = v.name\r\n // console.log('name', name)\r\n\r\n //mode\r\n let mode = get(p, 'mode', '')\r\n if (mode !== 'OR' && mode !== 'AND') {\r\n mode = 'OR'\r\n }\r\n // console.log('mode', mode)\r\n\r\n //enable\r\n let _enable = get(p, 'isActive', '')\r\n let enable = _enable === 'y' ? 'y' : 'n'\r\n // console.log('isActive', enable)\r\n\r\n //r\r\n let r = {\r\n name,\r\n mode,\r\n enable,\r\n }\r\n // console.log('r', r)\r\n\r\n return r\r\n })\r\n // console.log('items', items)\r\n\r\n //save\r\n vo.isEditable = isEditable\r\n vo.grup = grup\r\n vo.items = items\r\n\r\n //genOpt\r\n vo.genOpt()\r\n\r\n //bShow\r\n vo.bShow = true\r\n\r\n return vo.pm\r\n },\r\n\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n</style>\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VeCpemis.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VeCpemis.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./VeCpemis.vue?vue&type=template&id=8eab7996&scoped=true\"\nimport script from \"./VeCpemis.vue?vue&type=script&lang=js\"\nexport * from \"./VeCpemis.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"8eab7996\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('WDialog',{attrs:{\"show\":_vm.bShow,\"title\":_vm.isEditable?_vm.$t('userEditCgrups'):_vm.$t('userEditCgrupsForDisplay'),\"icon\":_vm.mdiFormatListCheckbox,\"minWidth\":800,\"maxWidth\":800,\"fullscreen\":_vm.fullscreen,\"contentBackgroundColor\":'#fff',\"headerBtns\":_vm.useHeaderBtns,\"hasSaveBtn\":_vm.isEditable && _vm.isModified,\"save-btn-tooltip\":_vm.$t('save'),\"close-btn-tooltip\":_vm.$t('close')},on:{\"update:show\":function($event){_vm.bShow=$event},\"click-btns\":_vm.clickBtns,\"click-save\":_vm.clickSave,\"click-close\":_vm.clickClose,\"resize\":_vm.resizeDialog},scopedSlots:_vm._u([{key:\"content\",fn:function(){return [_c('div',[_c('div',{directives:[{name:\"domresize\",rawName:\"v-domresize\"}],staticStyle:{\"_border-bottom\":\"1px solid #ddd\",\"background\":\"#fff\"},on:{\"domresize\":_vm.resizeHead}},[(_vm.isEditable)?_c('div',{staticStyle:{\"padding\":\"5px\",\"background\":\"#fff\",\"display\":\"flex\",\"align-items\":\"center\"}},[[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('checkAllYes'),\"icon\":_vm.mdiCheckboxMultipleMarked,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"_textColor\":\"'#eee'\",\"_textColorHover\":\"'#fff'\",\"iconColor\":'#444',\"iconColorHover\":'#222',\"shadow\":false},on:{\"click\":_vm.showVeCgrupsToggleItemsEnableAllYes}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})],[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('checkAllNo'),\"icon\":_vm.mdiCheckboxMultipleBlankOutline,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"_textColor\":\"'#eee'\",\"_textColorHover\":\"'#fff'\",\"iconColor\":'#444',\"iconColorHover\":'#222',\"shadow\":false},on:{\"click\":_vm.showVeCgrupsToggleItemsEnableAllNo}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})],[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('checkAllInv'),\"icon\":_vm.mdiCodeTagsCheck,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"_textColor\":\"'#eee'\",\"_textColorHover\":\"'#fff'\",\"iconColor\":'#444',\"iconColorHover\":'#222',\"shadow\":false},on:{\"click\":_vm.showVeCgrupsToggleItemsEnableAllInv}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})],(_vm.hasItemsCheck)?[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('cgrupDeleteCheckPemis'),\"icon\":_vm.mdiTrashCanOutline,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"_textColor\":\"'#eee'\",\"_textColorHover\":\"'#fff'\",\"iconColor\":'#444',\"iconColorHover\":'#222',\"shadow\":false},on:{\"click\":_vm.deleteItemsCheck}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})]:_vm._e()],2):_vm._e()]),(_vm.items)?[_c('WAggridVueDyn',{ref:\"rftable\",style:(`width:100%;`),attrs:{\"height\":_vm.contentHeight,\"opt\":_vm.opt}})]:_c('div',{staticStyle:{\"padding\":\"10px 15px\",\"font-size\":\"0.8rem\"}},[_vm._v(\" \"+_vm._s(_vm.$t('waitingData'))+\" \")])],2)]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <WDialog\r\n :show.sync=\"bShow\"\r\n :title=\"isEditable?$t('userEditCgrups'):$t('userEditCgrupsForDisplay')\"\r\n :icon=\"mdiFormatListCheckbox\"\r\n :minWidth=\"800\"\r\n :maxWidth=\"800\"\r\n :fullscreen=\"fullscreen\"\r\n :contentBackgroundColor=\"'#fff'\"\r\n :headerBtns=\"useHeaderBtns\"\r\n :hasSaveBtn=\"isEditable && isModified\"\r\n :save-btn-tooltip=\"$t('save')\"\r\n :close-btn-tooltip=\"$t('close')\"\r\n @click-btns=\"clickBtns\"\r\n @click-save=\"clickSave\"\r\n @click-close=\"clickClose\"\r\n @resize=\"resizeDialog\"\r\n >\r\n <template v-slot:content>\r\n <div>\r\n\r\n <div\r\n style=\"_border-bottom:1px solid #ddd; background:#fff;\"\r\n v-domresize\r\n @domresize=\"resizeHead\"\r\n >\r\n\r\n <!-- 功能區 -->\r\n <div\r\n style=\"padding:5px; background:#fff; display:flex; align-items:center;\"\r\n v-if=\"isEditable\"\r\n >\r\n\r\n <template>\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('checkAllYes')\"\r\n :icon=\"mdiCheckboxMultipleMarked\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n _textColor=\"'#eee'\"\r\n _textColorHover=\"'#fff'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :shadow=\"false\"\r\n @click=\"showVeCgrupsToggleItemsEnableAllYes\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n <template>\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('checkAllNo')\"\r\n :icon=\"mdiCheckboxMultipleBlankOutline\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n _textColor=\"'#eee'\"\r\n _textColorHover=\"'#fff'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :shadow=\"false\"\r\n @click=\"showVeCgrupsToggleItemsEnableAllNo\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n <template>\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('checkAllInv')\"\r\n :icon=\"mdiCodeTagsCheck\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n _textColor=\"'#eee'\"\r\n _textColorHover=\"'#fff'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :shadow=\"false\"\r\n @click=\"showVeCgrupsToggleItemsEnableAllInv\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n <template v-if=\"hasItemsCheck\">\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('cgrupDeleteCheckPemis')\"\r\n :icon=\"mdiTrashCanOutline\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n _textColor=\"'#eee'\"\r\n _textColorHover=\"'#fff'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :shadow=\"false\"\r\n @click=\"deleteItemsCheck\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n <template v-if=\"items\">\r\n <WAggridVueDyn\r\n ref=\"rftable\"\r\n :style=\"`width:100%;`\"\r\n :height=\"contentHeight\"\r\n :opt=\"opt\"\r\n >\r\n </WAggridVueDyn>\r\n </template>\r\n\r\n <div\r\n style=\"padding:10px 15px; font-size:0.8rem;\"\r\n v-else\r\n >\r\n {{$t('waitingData')}}\r\n </div>\r\n\r\n </div>\r\n </template>\r\n </WDialog>\r\n</template>\r\n\r\n<script>\r\nimport { mdiDeleteForever, mdiFullscreen, mdiFullscreenExit, mdiFormatListCheckbox, mdiFileTree, mdiTrashCanOutline, mdiCheckboxMultipleBlankOutline, mdiCheckboxMultipleMarked, mdiCodeTagsCheck } from '@mdi/js/mdi.js'\r\nimport Vue from 'vue'\r\nimport JSON5 from 'json5'\r\nimport get from 'lodash-es/get.js'\r\nimport set from 'lodash-es/set.js'\r\nimport each from 'lodash-es/each.js'\r\nimport map from 'lodash-es/map.js'\r\nimport size from 'lodash-es/size.js'\r\nimport filter from 'lodash-es/filter.js'\r\nimport sortBy from 'lodash-es/sortBy.js'\r\nimport cloneDeep from 'lodash-es/cloneDeep.js'\r\nimport genPm from 'wsemi/src/genPm.mjs'\r\nimport delay from 'wsemi/src/delay.mjs'\r\nimport iseobj from 'wsemi/src/iseobj.mjs'\r\nimport isestr from 'wsemi/src/isestr.mjs'\r\nimport WDialog from 'w-component-vue/src/components/WDialog.vue'\r\nimport WButtonCircle from 'w-component-vue/src/components/WButtonCircle.vue'\r\nimport WAggridVueDyn from 'w-component-vue/src/components/WAggridVueDyn.vue'\r\n\r\n\r\nexport default {\r\n components: {\r\n WDialog,\r\n WButtonCircle,\r\n WAggridVueDyn,\r\n },\r\n props: {\r\n },\r\n data: function() {\r\n return {\r\n mdiDeleteForever,\r\n mdiFullscreen,\r\n mdiFullscreenExit,\r\n mdiFormatListCheckbox,\r\n mdiFileTree,\r\n mdiTrashCanOutline,\r\n mdiCheckboxMultipleBlankOutline,\r\n mdiCheckboxMultipleMarked,\r\n mdiCodeTagsCheck,\r\n\r\n bShow: false,\r\n pm: null,\r\n\r\n fullscreen: false,\r\n\r\n panelWidth: 100,\r\n panelHeight: 100,\r\n headHeight: 100,\r\n\r\n isEditable: false,\r\n isModified: false,\r\n\r\n user: null,\r\n\r\n items: [],\r\n itemsCheck: [],\r\n opt: null,\r\n\r\n }\r\n },\r\n mounted: function() {\r\n //console.log('mounted')\r\n\r\n let vo = this\r\n\r\n //set\r\n Vue.prototype.$dg.showVeCgrups = vo.show\r\n Vue.prototype.$dg.showVeCgrupsToggleItemModeByName = vo.showVeCgrupsToggleItemModeByName\r\n Vue.prototype.$dg.showVeCgrupsToggleItemEnableByName = vo.showVeCgrupsToggleItemEnableByName\r\n\r\n },\r\n computed: {\r\n\r\n targets: function() {\r\n let rs = get(this, `$store.state.targets`)\r\n rs = sortBy(rs, 'order')\r\n return rs\r\n },\r\n\r\n pemis: function() {\r\n let rs = get(this, `$store.state.pemis`)\r\n rs = sortBy(rs, 'order')\r\n return rs\r\n },\r\n\r\n grups: function() {\r\n let rs = get(this, `$store.state.grups`)\r\n rs = sortBy(rs, 'order')\r\n return rs\r\n },\r\n\r\n users: function() {\r\n let rs = get(this, `$store.state.users`)\r\n rs = sortBy(rs, 'order')\r\n return rs\r\n },\r\n\r\n kpHeaderBtns: function() {\r\n let vo = this\r\n let kp = {\r\n // delete: {\r\n // icon: mdiDeleteForever,\r\n // tooltip: `${vo.$t('delete')}${vo.tableNameCht}`,\r\n // evName: 'delete'\r\n // },\r\n toFullscreen: {\r\n icon: mdiFullscreen,\r\n tooltip: vo.$t('screenFull'),\r\n evName: 'toFullscreen'\r\n },\r\n toNormalscreen: {\r\n icon: mdiFullscreenExit,\r\n tooltip: vo.$t('screenNormal'),\r\n evName: 'toNormalscreen'\r\n },\r\n }\r\n return kp\r\n },\r\n\r\n useHeaderBtns: function() {\r\n let vo = this\r\n let bts = []\r\n if (true) {\r\n let k = vo.fullscreen ? 'toNormalscreen' : 'toFullscreen'\r\n bts = [\r\n ...bts,\r\n vo.kpHeaderBtns[k]\r\n ]\r\n }\r\n // if (vo.useDelete) {\r\n // let k = 'delete'\r\n // bts = [\r\n // ...bts,\r\n // vo.kpHeaderBtns[k]\r\n // ]\r\n // }\r\n return bts\r\n },\r\n\r\n contentHeight: function() {\r\n let vo = this\r\n\r\n //h\r\n let h = vo.panelHeight - vo.headHeight\r\n h = Math.max(h, 0)\r\n\r\n return h\r\n },\r\n\r\n hasItemsCheck: function() {\r\n let vo = this\r\n\r\n //h\r\n let b = vo.itemsCheck.length > 0\r\n\r\n return b\r\n },\r\n\r\n },\r\n methods: {\r\n\r\n resizeDialog: function(msg) {\r\n // console.log('methods resizeDialog', msg)\r\n\r\n let vo = this\r\n\r\n //panelWidth, panelHeight\r\n vo.panelWidth = msg.panelWidth\r\n vo.panelHeight = msg.contentHeightMax\r\n\r\n },\r\n\r\n resizeHead: function(msg) {\r\n // console.log('methods resizeHead', msg)\r\n\r\n let vo = this\r\n\r\n //headHeight\r\n vo.headHeight = msg.snew.offsetHeight\r\n\r\n },\r\n\r\n genOpt: function() {\r\n // console.log('methods genOpt')\r\n\r\n let vo = this\r\n\r\n //default\r\n vo.itemsCheck = []\r\n\r\n //opt\r\n let opt = null\r\n if (size(vo.items) > 0) {\r\n\r\n //ks\r\n let ks = [\r\n 'name',\r\n 'mode',\r\n 'enable',\r\n ]\r\n // console.log('ks', ks)\r\n\r\n //kpHead\r\n let kpHead = {\r\n 'name': vo.$t('pemiName'),\r\n 'mode': vo.$t('operGrupEnable'),\r\n 'enable': vo.$t('operMode'),\r\n }\r\n\r\n //opt\r\n opt = {\r\n language: vo.$t('aggridLanguage'),\r\n rows: vo.items,\r\n keys: ks,\r\n kpHead,\r\n autoFitColumn: true,\r\n defCellEditable: false, //vo.isEditable,\r\n defHeadFilter: true,\r\n defCellAlignH: 'left',\r\n kpCellEditable: {\r\n 'name': vo.isEditable,\r\n 'mode': false,\r\n 'enable': false,\r\n },\r\n kpHeadWidth: {\r\n 'mode': 100,\r\n 'enable': 100,\r\n },\r\n // kpRowDrag: {\r\n // 'name': true,\r\n // },\r\n // kpHeadFilter: {\r\n // 'enable': false,\r\n // },\r\n kpHeadFilterType: {\r\n 'name': 'text',\r\n 'mode': 'text',\r\n 'enable': 'text',\r\n },\r\n // kpHeadCheckBox: {\r\n // 'name': true,\r\n // },\r\n kpCellRender: {\r\n 'name': (v, k, r) => {\r\n // console.log('kpCellRender name', v)\r\n\r\n return v\r\n },\r\n 'mode': (v, k, r) => {\r\n // console.log('kpCellRender mode', v)\r\n\r\n //name\r\n let name = get(r, 'name', '')\r\n // console.log('name', name, k, r)\r\n\r\n //mode\r\n let mode = get(r, 'mode', '')\r\n // console.log('mode', mode, k, r)\r\n\r\n let t = `\r\n <select onchange=\"$vo.$dg.showVeCgrupsToggleItemModeByName('${name}',this.value)\" ${vo.isEditable ? '' : 'disabled'}>\r\n <option value=\"OR\" ${mode === 'OR' ? 'selected' : ''}>OR</option>\r\n <option value=\"AND\" ${mode === 'AND' ? 'selected' : ''}>AND</option>\r\n </select>\r\n `\r\n\r\n return t\r\n },\r\n 'enable': (v, k, r) => {\r\n // console.log('kpCellRender enable', v, k, r)\r\n\r\n //name\r\n let name = get(r, 'name', '')\r\n // console.log('name', name, k, r)\r\n\r\n let t = `\r\n <input type=\"checkbox\" ${v === 'y' ? 'checked' : ''} onclick=\"$vo.$dg.showVeCgrupsToggleItemEnableByName('${name}')\" ${vo.isEditable ? '' : 'disabled'} />\r\n `\r\n\r\n return t\r\n },\r\n },\r\n rowsChange: (rs) => {\r\n // console.log('rowsChange', rs)\r\n // console.log('rowsChange cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n rowChecked: (rs) => {\r\n // console.log('rowChecked', rs)\r\n // console.log('rowChecked cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\r\n\r\n //save itemsCheck\r\n vo.itemsCheck = cloneDeep(rs)\r\n\r\n },\r\n }\r\n // console.log('opt', opt)\r\n\r\n }\r\n\r\n //save\r\n vo.opt = opt\r\n\r\n },\r\n\r\n deleteItemsCheck: function() {\r\n // console.log('method deleteItemsCheck')\r\n\r\n let vo = this\r\n\r\n //check\r\n if (size(vo.itemsCheck) === 0) {\r\n return\r\n }\r\n\r\n //cloneDeep\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //cloneDeep\r\n rows = cloneDeep(rows)\r\n\r\n //filter\r\n each(vo.itemsCheck, (v) => {\r\n // console.log('v', v)\r\n let name = get(v, 'data.name', '')\r\n if (!isestr(name)) {\r\n console.log(`invalid name`)\r\n return true //跳出換下一個\r\n }\r\n rows = filter(rows, (vv) => {\r\n return vv.name !== name\r\n })\r\n })\r\n\r\n //clear\r\n vo.itemsCheck = []\r\n\r\n //save\r\n vo.opt.rows = rows\r\n // console.log('deleteItemsCheck cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n refresh: function() {\r\n let vo = this\r\n\r\n //cmp\r\n let cmp = get(vo, '$refs.rftable.$refs.$self')\r\n // console.log('cmp', cmp)\r\n\r\n //refresh, 因set不會觸發kpCellRender, 故須另外調用組件函數refresh, 進而觸發kpCellRender, 使能更新數據\r\n cmp.refresh()\r\n\r\n },\r\n\r\n getDisplayData: function() {\r\n let vo = this\r\n\r\n //cmp\r\n let cmp = get(vo, '$refs.rftable.$refs.$self')\r\n // console.log('cmp', cmp)\r\n\r\n //getDisplayData\r\n let rows = cmp.getDisplayData()\r\n\r\n return rows\r\n },\r\n\r\n showVeCgrupsToggleItemModeByName: function(name, mode) {\r\n // console.log('showVeCgrupsToggleItemModeByName', name, mode)\r\n\r\n let vo = this\r\n\r\n //check\r\n if (!isestr(name)) {\r\n vo.$alert(`${vo.$t('cgrupEditNoName')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //find\r\n let r = null\r\n let kr = null\r\n each(rows, (v, k) => {\r\n if (get(v, 'name', '') === name) {\r\n r = v\r\n kr = k\r\n return false //跳出\r\n }\r\n })\r\n\r\n //check\r\n if (!iseobj(r)) {\r\n vo.$alert(`${vo.$t('cgrupEditNoPemi')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //mode\r\n // let mode = th.value\r\n // console.log('mode', mode)\r\n\r\n //set\r\n set(vo, `opt.rows[${kr}].mode`, mode)\r\n // console.log('vo.opt.rows[kr]', cloneDeep(vo.opt.rows[kr]))\r\n\r\n //refresh\r\n vo.refresh()\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n showVeCgrupsToggleItemEnableByName: function(name) {\r\n // console.log('showVeCgrupsToggleItemEnableByName', name)\r\n\r\n let vo = this\r\n\r\n //check\r\n if (!isestr(name)) {\r\n vo.$alert(`${vo.$t('cgrupEditNoName')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //find\r\n let r = null\r\n let kr = null\r\n each(rows, (v, k) => {\r\n if (get(v, 'name', '') === name) {\r\n r = v\r\n kr = k\r\n return false //跳出\r\n }\r\n })\r\n\r\n //check\r\n if (!iseobj(r)) {\r\n vo.$alert(`${vo.$t('cgrupEditNoPemi')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //enable\r\n let _enable = get(r, 'enable', 'n')\r\n let enable = _enable === 'y' ? 'n' : 'y'\r\n // console.log('enable', enable)\r\n\r\n //set\r\n set(vo, `opt.rows[${kr}].enable`, enable)\r\n // console.log('vo.opt.rows[kr]', cloneDeep(vo.opt.rows[kr]))\r\n\r\n //refresh\r\n vo.refresh()\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n showVeCgrupsToggleItemsEnableAllYes: function() {\r\n // console.log('showVeCgrupsToggleItemsEnableAllYes')\r\n\r\n let vo = this\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n // console.log('rows', rows)\r\n\r\n //kpRow\r\n let kpRow = {}\r\n each(rows, (r, kr) => {\r\n kpRow[r.name] = kr\r\n })\r\n\r\n //rowsEff\r\n let rowsEff = vo.getDisplayData()\r\n // console.log('rowsEff', rowsEff)\r\n\r\n //toggle\r\n each(rowsEff, (r) => {\r\n\r\n //kr\r\n let kr = kpRow[r.name]\r\n\r\n //set\r\n set(vo, `opt.rows[${kr}].enable`, 'y')\r\n // console.log('vo.opt.rows[kr]', cloneDeep(vo.opt.rows[kr]))\r\n\r\n })\r\n\r\n //refresh\r\n vo.refresh()\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n showVeCgrupsToggleItemsEnableAllNo: function() {\r\n // console.log('showVeCgrupsToggleItemsEnableAllNo')\r\n\r\n let vo = this\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n // console.log('rows', rows)\r\n\r\n //kpRow\r\n let kpRow = {}\r\n each(rows, (r, kr) => {\r\n kpRow[r.name] = kr\r\n })\r\n\r\n //rowsEff\r\n let rowsEff = vo.getDisplayData()\r\n // console.log('rowsEff', rowsEff)\r\n\r\n //toggle\r\n each(rowsEff, (r) => {\r\n\r\n //kr\r\n let kr = kpRow[r.name]\r\n\r\n //set\r\n set(vo, `opt.rows[${kr}].enable`, 'n')\r\n // console.log('vo.opt.rows[kr]', cloneDeep(vo.opt.rows[kr]))\r\n\r\n })\r\n\r\n //refresh\r\n vo.refresh()\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n showVeCgrupsToggleItemsEnableAllInv: function() {\r\n // console.log('showVeCgrupsToggleItemsEnableAllInv')\r\n\r\n let vo = this\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n // console.log('rows', rows)\r\n\r\n //kpRow\r\n let kpRow = {}\r\n each(rows, (r, kr) => {\r\n kpRow[r.name] = kr\r\n })\r\n\r\n //rowsEff\r\n let rowsEff = vo.getDisplayData()\r\n // console.log('rowsEff', rowsEff)\r\n\r\n //toggle\r\n each(rowsEff, (r) => {\r\n\r\n //kr\r\n let kr = kpRow[r.name]\r\n\r\n //enable\r\n let _enable = get(r, 'enable', 'n')\r\n let enable = _enable === 'y' ? 'n' : 'y'\r\n\r\n //set\r\n set(vo, `opt.rows[${kr}].enable`, enable)\r\n // console.log('vo.opt.rows[kr]', cloneDeep(vo.opt.rows[kr]))\r\n\r\n })\r\n\r\n //refresh\r\n vo.refresh()\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n clickBtns: function(msg) {\r\n // console.log('clickBtns', msg)\r\n\r\n let vo = this\r\n\r\n //evName\r\n if (msg.evName === 'toFullscreen') {\r\n vo.fullscreen = true\r\n }\r\n else if (msg.evName === 'toNormalscreen') {\r\n vo.fullscreen = false\r\n }\r\n\r\n },\r\n\r\n clickSave: function(msg) {\r\n //console.log('methods clickSave', msg)\r\n\r\n let vo = this\r\n\r\n async function core() {\r\n\r\n //show loading\r\n vo.$ui.updateLoading(true)\r\n\r\n //delay\r\n await delay(300)\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n // console.log('rows', rows)\r\n\r\n //kpGrup\r\n let kpGrup = {}\r\n each(rows, (r) => {\r\n let name = get(r, 'name', '')\r\n let mode = get(r, 'mode', '')\r\n let enable = get(r, 'enable', '')\r\n if (!isestr(name)) {\r\n console.log(`invalid name`)\r\n return true //跳出換下一個\r\n }\r\n if (mode !== 'OR' && mode !== 'AND') {\r\n console.log(`invalid mode[${mode}]`)\r\n return true //跳出換下一個\r\n }\r\n if (!isestr(enable)) {\r\n console.log(`invalid enable`)\r\n return true //跳出換下一個\r\n }\r\n kpGrup[name] = {\r\n mode,\r\n isActive: enable,\r\n }\r\n })\r\n // console.log('kpGrup', kpGrup)\r\n\r\n //cgrups\r\n let cgrups = JSON.stringify(kpGrup)\r\n // console.log('cgrups', cgrups)\r\n\r\n return cgrups\r\n }\r\n\r\n //core\r\n core()\r\n .then((rows) => {\r\n\r\n //resolve\r\n vo.pm.resolve(rows)\r\n\r\n //hide\r\n vo.bShow = false\r\n\r\n })\r\n .catch(() => { })\r\n .finally(() => {\r\n\r\n //save按鈕解除loading\r\n msg.pm.resolve()\r\n\r\n //hide loading\r\n vo.$ui.updateLoading(false)\r\n\r\n })\r\n\r\n },\r\n\r\n clickClose: function() {\r\n //console.log('methods clickClose')\r\n\r\n let vo = this\r\n\r\n //reject\r\n vo.pm.reject('close window')\r\n\r\n //hide\r\n vo.bShow = false\r\n\r\n },\r\n\r\n show: function (msg) {\r\n // console.log('methods show', msg)\r\n\r\n let vo = this\r\n\r\n //pm\r\n vo.pm = genPm()\r\n\r\n //default\r\n vo.isModified = false\r\n\r\n //isEditable, user\r\n let isEditable = get(msg, 'isEditable', false)\r\n let user = get(msg, 'user', {})\r\n\r\n //cloneDeep\r\n user = cloneDeep(user)\r\n\r\n //cgrups\r\n let cgrups = get(user, 'cgrups', '')\r\n // console.log('cgrups', cgrups)\r\n\r\n //kpGrup\r\n let kpGrup = {}\r\n if (isestr(cgrups)) {\r\n try {\r\n kpGrup = JSON5.parse(cgrups)\r\n }\r\n catch (err) {\r\n console.log('cgrups', cgrups)\r\n console.log('err', err)\r\n }\r\n }\r\n // console.log('kpGrup', kpGrup)\r\n\r\n //items\r\n let items = map(vo.grups, (v) => {\r\n // console.log('grups v', v)\r\n\r\n //p\r\n let p = get(kpGrup, v.name, null)\r\n // console.log('p', p)\r\n\r\n //name\r\n let name = v.name\r\n // console.log('name', name)\r\n\r\n //mode\r\n let mode = get(p, 'mode', '')\r\n if (mode !== 'OR' && mode !== 'AND') {\r\n mode = 'OR'\r\n }\r\n // console.log('mode', mode)\r\n\r\n //enable\r\n let _enable = get(p, 'isActive', '')\r\n let enable = _enable === 'y' ? 'y' : 'n'\r\n // console.log('isActive', enable)\r\n\r\n //r\r\n let r = {\r\n name,\r\n mode,\r\n enable,\r\n }\r\n // console.log('r', r)\r\n\r\n return r\r\n })\r\n // console.log('items', items)\r\n\r\n //save\r\n vo.isEditable = isEditable\r\n vo.user = user\r\n vo.items = items\r\n\r\n //genOpt\r\n vo.genOpt()\r\n\r\n //bShow\r\n vo.bShow = true\r\n\r\n return vo.pm\r\n },\r\n\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n</style>\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VeCgrups.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VeCgrups.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./VeCgrups.vue?vue&type=template&id=6aa8ed92&scoped=true\"\nimport script from \"./VeCgrups.vue?vue&type=script&lang=js\"\nexport * from \"./VeCgrups.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6aa8ed92\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('WDialog',{attrs:{\"show\":_vm.bShow,\"title\":_vm.isEditable?_vm.$t('grupBlngEditUsers'):_vm.$t('grupBlngEditUsersForDisplay'),\"icon\":_vm.mdiFormatListCheckbox,\"minWidth\":800,\"maxWidth\":800,\"fullscreen\":_vm.fullscreen,\"contentBackgroundColor\":'#fff',\"headerBtns\":_vm.useHeaderBtns,\"hasSaveBtn\":_vm.isEditable && _vm.isModified,\"save-btn-tooltip\":_vm.$t('save'),\"close-btn-tooltip\":_vm.$t('close')},on:{\"update:show\":function($event){_vm.bShow=$event},\"click-btns\":_vm.clickBtns,\"click-save\":_vm.clickSave,\"click-close\":_vm.clickClose,\"resize\":_vm.resizeDialog},scopedSlots:_vm._u([{key:\"content\",fn:function(){return [_c('div',[_c('div',{directives:[{name:\"domresize\",rawName:\"v-domresize\"}],staticStyle:{\"_border-bottom\":\"1px solid #ddd\",\"background\":\"#fff\"},on:{\"domresize\":_vm.resizeHead}},[_c('div',{staticStyle:{\"padding\":\"18px 12px\",\"background\":\"#fff\",\"border-bottom\":\"1px solid #ddd\"}},[_c('div',{staticStyle:{\"font-size\":\"0.75rem\",\"color\":\"#999\",\"padding-bottom\":\"2px\"}},[_vm._v(\" \"+_vm._s(_vm.$t('grupBlngGrupNow'))+\" \")]),_c('div',{staticStyle:{\"font-size\":\"1.3rem\"}},[_vm._v(\" \"+_vm._s(_vm.grupName)+\" \")])]),(_vm.isEditable)?_c('div',{staticStyle:{\"padding\":\"5px\",\"background\":\"#fff\",\"display\":\"flex\",\"align-items\":\"center\"}},[[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('checkAllYes'),\"icon\":_vm.mdiCheckboxMultipleMarked,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"_textColor\":\"'#eee'\",\"_textColorHover\":\"'#fff'\",\"iconColor\":'#444',\"iconColorHover\":'#222',\"shadow\":false},on:{\"click\":_vm.showVeGrupBlngUsersToggleItemsEnableAllYes}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})],[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('checkAllNo'),\"icon\":_vm.mdiCheckboxMultipleBlankOutline,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"_textColor\":\"'#eee'\",\"_textColorHover\":\"'#fff'\",\"iconColor\":'#444',\"iconColorHover\":'#222',\"shadow\":false},on:{\"click\":_vm.showVeGrupBlngUsersToggleItemsEnableAllNo}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})],[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('checkAllInv'),\"icon\":_vm.mdiCodeTagsCheck,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"_textColor\":\"'#eee'\",\"_textColorHover\":\"'#fff'\",\"iconColor\":'#444',\"iconColorHover\":'#222',\"shadow\":false},on:{\"click\":_vm.showVeGrupBlngUsersToggleItemsEnableAllInv}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})],(_vm.hasItemsCheck)?[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('grupBlngDeleteCheckGrups'),\"icon\":_vm.mdiTrashCanOutline,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"_textColor\":\"'#eee'\",\"_textColorHover\":\"'#fff'\",\"iconColor\":'#444',\"iconColorHover\":'#222',\"shadow\":false},on:{\"click\":_vm.deleteItemsCheck}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})]:_vm._e()],2):_vm._e()]),(_vm.items)?[_c('WAggridVueDyn',{ref:\"rftable\",style:(`width:100%;`),attrs:{\"height\":_vm.contentHeight,\"opt\":_vm.opt}})]:_c('div',{staticStyle:{\"padding\":\"10px 15px\",\"font-size\":\"0.8rem\"}},[_vm._v(\" \"+_vm._s(_vm.$t('waitingData'))+\" \")])],2)]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <WDialog\r\n :show.sync=\"bShow\"\r\n :title=\"isEditable?$t('grupBlngEditUsers'):$t('grupBlngEditUsersForDisplay')\"\r\n :icon=\"mdiFormatListCheckbox\"\r\n :minWidth=\"800\"\r\n :maxWidth=\"800\"\r\n :fullscreen=\"fullscreen\"\r\n :contentBackgroundColor=\"'#fff'\"\r\n :headerBtns=\"useHeaderBtns\"\r\n :hasSaveBtn=\"isEditable && isModified\"\r\n :save-btn-tooltip=\"$t('save')\"\r\n :close-btn-tooltip=\"$t('close')\"\r\n @click-btns=\"clickBtns\"\r\n @click-save=\"clickSave\"\r\n @click-close=\"clickClose\"\r\n @resize=\"resizeDialog\"\r\n >\r\n <template v-slot:content>\r\n <div>\r\n\r\n <div\r\n style=\"_border-bottom:1px solid #ddd; background:#fff;\"\r\n v-domresize\r\n @domresize=\"resizeHead\"\r\n >\r\n\r\n <!-- 當前權限群組名稱 -->\r\n <div style=\"padding:18px 12px; background:#fff; border-bottom:1px solid #ddd;\">\r\n\r\n <div style=\"font-size:0.75rem; color:#999; padding-bottom:2px;\">\r\n {{$t('grupBlngGrupNow')}}\r\n </div>\r\n\r\n <div style=\"font-size:1.3rem;\">\r\n {{grupName}}\r\n </div>\r\n\r\n </div>\r\n\r\n <!-- 功能區 -->\r\n <div\r\n style=\"padding:5px; background:#fff; display:flex; align-items:center;\"\r\n v-if=\"isEditable\"\r\n >\r\n\r\n <template>\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('checkAllYes')\"\r\n :icon=\"mdiCheckboxMultipleMarked\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n _textColor=\"'#eee'\"\r\n _textColorHover=\"'#fff'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :shadow=\"false\"\r\n @click=\"showVeGrupBlngUsersToggleItemsEnableAllYes\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n <template>\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('checkAllNo')\"\r\n :icon=\"mdiCheckboxMultipleBlankOutline\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n _textColor=\"'#eee'\"\r\n _textColorHover=\"'#fff'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :shadow=\"false\"\r\n @click=\"showVeGrupBlngUsersToggleItemsEnableAllNo\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n <template>\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('checkAllInv')\"\r\n :icon=\"mdiCodeTagsCheck\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n _textColor=\"'#eee'\"\r\n _textColorHover=\"'#fff'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :shadow=\"false\"\r\n @click=\"showVeGrupBlngUsersToggleItemsEnableAllInv\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n <template v-if=\"hasItemsCheck\">\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('grupBlngDeleteCheckGrups')\"\r\n :icon=\"mdiTrashCanOutline\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n _textColor=\"'#eee'\"\r\n _textColorHover=\"'#fff'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :shadow=\"false\"\r\n @click=\"deleteItemsCheck\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n <template v-if=\"items\">\r\n <WAggridVueDyn\r\n ref=\"rftable\"\r\n :style=\"`width:100%;`\"\r\n :height=\"contentHeight\"\r\n :opt=\"opt\"\r\n >\r\n </WAggridVueDyn>\r\n </template>\r\n\r\n <div\r\n style=\"padding:10px 15px; font-size:0.8rem;\"\r\n v-else\r\n >\r\n {{$t('waitingData')}}\r\n </div>\r\n\r\n </div>\r\n </template>\r\n </WDialog>\r\n</template>\r\n\r\n<script>\r\nimport { mdiDeleteForever, mdiFullscreen, mdiFullscreenExit, mdiFormatListCheckbox, mdiFileTree, mdiTrashCanOutline, mdiCheckboxMultipleBlankOutline, mdiCheckboxMultipleMarked, mdiCodeTagsCheck } from '@mdi/js/mdi.js'\r\nimport Vue from 'vue'\r\nimport JSON5 from 'json5'\r\nimport get from 'lodash-es/get.js'\r\nimport set from 'lodash-es/set.js'\r\nimport each from 'lodash-es/each.js'\r\nimport map from 'lodash-es/map.js'\r\nimport size from 'lodash-es/size.js'\r\nimport filter from 'lodash-es/filter.js'\r\nimport join from 'lodash-es/join.js'\r\nimport sortBy from 'lodash-es/sortBy.js'\r\nimport isEqual from 'lodash-es/isEqual.js'\r\nimport cloneDeep from 'lodash-es/cloneDeep.js'\r\nimport genPm from 'wsemi/src/genPm.mjs'\r\nimport haskey from 'wsemi/src/haskey.mjs'\r\nimport delay from 'wsemi/src/delay.mjs'\r\nimport iseobj from 'wsemi/src/iseobj.mjs'\r\nimport isestr from 'wsemi/src/isestr.mjs'\r\nimport WDialog from 'w-component-vue/src/components/WDialog.vue'\r\nimport WButtonCircle from 'w-component-vue/src/components/WButtonCircle.vue'\r\nimport WAggridVueDyn from 'w-component-vue/src/components/WAggridVueDyn.vue'\r\n\r\n\r\nexport default {\r\n components: {\r\n WDialog,\r\n WButtonCircle,\r\n WAggridVueDyn,\r\n },\r\n props: {\r\n },\r\n data: function() {\r\n return {\r\n mdiDeleteForever,\r\n mdiFullscreen,\r\n mdiFullscreenExit,\r\n mdiFormatListCheckbox,\r\n mdiFileTree,\r\n mdiTrashCanOutline,\r\n mdiCheckboxMultipleBlankOutline,\r\n mdiCheckboxMultipleMarked,\r\n mdiCodeTagsCheck,\r\n\r\n bShow: false,\r\n pm: null,\r\n\r\n fullscreen: false,\r\n\r\n panelWidth: 100,\r\n panelHeight: 100,\r\n headHeight: 100,\r\n\r\n isEditable: false,\r\n isModified: false,\r\n\r\n grup: null,\r\n\r\n items: [],\r\n itemsCheck: [],\r\n opt: null,\r\n\r\n }\r\n },\r\n mounted: function() {\r\n //console.log('mounted')\r\n\r\n let vo = this\r\n\r\n //set\r\n Vue.prototype.$dg.showVeGrupBlngUsers = vo.show\r\n Vue.prototype.$dg.showVeGrupBlngUsersToggleItemModeByName = vo.showVeGrupBlngUsersToggleItemModeByName\r\n Vue.prototype.$dg.showVeGrupBlngUsersToggleItemEnableByName = vo.showVeGrupBlngUsersToggleItemEnableByName\r\n\r\n },\r\n computed: {\r\n\r\n targets: function() {\r\n let rs = get(this, `$store.state.targets`)\r\n rs = sortBy(rs, 'order')\r\n return rs\r\n },\r\n\r\n pemis: function() {\r\n let rs = get(this, `$store.state.pemis`)\r\n rs = sortBy(rs, 'order')\r\n return rs\r\n },\r\n\r\n grups: function() {\r\n let rs = get(this, `$store.state.grups`)\r\n rs = sortBy(rs, 'order')\r\n return rs\r\n },\r\n\r\n users: function() {\r\n let rs = get(this, `$store.state.users`)\r\n rs = sortBy(rs, 'order')\r\n return rs\r\n },\r\n\r\n kpHeaderBtns: function() {\r\n let vo = this\r\n let kp = {\r\n // delete: {\r\n // icon: mdiDeleteForever,\r\n // tooltip: `${vo.$t('delete')}${vo.tableNameCht}`,\r\n // evName: 'delete'\r\n // },\r\n toFullscreen: {\r\n icon: mdiFullscreen,\r\n tooltip: vo.$t('screenFull'),\r\n evName: 'toFullscreen'\r\n },\r\n toNormalscreen: {\r\n icon: mdiFullscreenExit,\r\n tooltip: vo.$t('screenNormal'),\r\n evName: 'toNormalscreen'\r\n },\r\n }\r\n return kp\r\n },\r\n\r\n useHeaderBtns: function() {\r\n let vo = this\r\n let bts = []\r\n if (true) {\r\n let k = vo.fullscreen ? 'toNormalscreen' : 'toFullscreen'\r\n bts = [\r\n ...bts,\r\n vo.kpHeaderBtns[k]\r\n ]\r\n }\r\n // if (vo.useDelete) {\r\n // let k = 'delete'\r\n // bts = [\r\n // ...bts,\r\n // vo.kpHeaderBtns[k]\r\n // ]\r\n // }\r\n return bts\r\n },\r\n\r\n contentHeight: function() {\r\n let vo = this\r\n\r\n //h\r\n let h = vo.panelHeight - vo.headHeight\r\n h = Math.max(h, 0)\r\n\r\n return h\r\n },\r\n\r\n hasItemsCheck: function() {\r\n let vo = this\r\n\r\n //h\r\n let b = vo.itemsCheck.length > 0\r\n\r\n return b\r\n },\r\n\r\n grupName: function() {\r\n let vo = this\r\n\r\n let c = get(vo, 'grup.name', '')\r\n\r\n return c\r\n },\r\n\r\n },\r\n methods: {\r\n\r\n resizeDialog: function(msg) {\r\n // console.log('methods resizeDialog', msg)\r\n\r\n let vo = this\r\n\r\n //panelWidth, panelHeight\r\n vo.panelWidth = msg.panelWidth\r\n vo.panelHeight = msg.contentHeightMax\r\n\r\n },\r\n\r\n resizeHead: function(msg) {\r\n // console.log('methods resizeHead', msg)\r\n\r\n let vo = this\r\n\r\n //headHeight\r\n vo.headHeight = msg.snew.offsetHeight\r\n\r\n },\r\n\r\n genOpt: function() {\r\n // console.log('methods genOpt')\r\n\r\n let vo = this\r\n\r\n //default\r\n vo.itemsCheck = []\r\n\r\n //opt\r\n let opt = null\r\n if (size(vo.items) > 0) {\r\n\r\n //ks\r\n let ks = [\r\n 'name',\r\n 'grupsNames',\r\n 'mode',\r\n 'enable',\r\n ]\r\n // console.log('ks', ks)\r\n\r\n //kpHead\r\n let kpHead = {\r\n 'name': vo.$t('userName'),\r\n 'grupsNames': vo.$t('belongGrupsNames'),\r\n 'mode': vo.$t('operGrupEnable'),\r\n 'enable': vo.$t('operMode'),\r\n }\r\n\r\n //opt\r\n opt = {\r\n language: vo.$t('aggridLanguage'),\r\n rows: vo.items,\r\n keys: ks,\r\n kpHead,\r\n autoFitColumn: true,\r\n defCellEditable: false, //vo.isEditable,\r\n defHeadFilter: true,\r\n defCellAlignH: 'left',\r\n kpCellEditable: {\r\n 'name': vo.isEditable,\r\n 'mode': false,\r\n 'enable': false,\r\n },\r\n kpHeadWidth: {\r\n 'mode': 100,\r\n 'enable': 100,\r\n },\r\n // kpRowDrag: {\r\n // 'name': true,\r\n // },\r\n // kpHeadFilter: {\r\n // 'enable': false,\r\n // },\r\n kpHeadFilterType: {\r\n 'name': 'text',\r\n 'grupsNames': 'text',\r\n 'mode': 'text',\r\n 'enable': 'text',\r\n },\r\n // kpHeadCheckBox: {\r\n // 'name': true,\r\n // },\r\n kpHeadFocusHighlight: { //雖然效果不完全, 但因按鈕與cell有padding可被點擊, 故還是需要開啟\r\n 'grupsNames': false,\r\n },\r\n kpCellRender: {\r\n 'grupsNames': (v, k, r) => {\r\n // console.log('kpCellRender grupsNames', v, k, r)\r\n\r\n let csp = `border-top-left-radius:4px; border-bottom-left-radius:4px;`\r\n let csnp = `border-left:1px solid #aaaaaa; border-right:1px solid #aaaaaa; border-top:1px solid #aaaaaa; border-bottom:1px solid #aaaaaa; background:#ffffff; color:#555;`\r\n let csep = `border-left:1px solid #ac2451; border-right:1px solid #9e2149; border-top:1px solid #ac2451; border-bottom:1px solid #ac2451; background:#be295a; color:#fff;`\r\n\r\n let csa = `border-top-right-radius:4px; border-bottom-right-radius:4px;`\r\n let csna = `_border-left:1px solid #aaaaaa; border-right:1px solid #aaaaaa; border-top:1px solid #aaaaaa; border-bottom:1px solid #aaaaaa; background:#eeeeee; color:#555;`\r\n let csea = `_border-left:1px solid #ac2451; border-right:1px solid #ac2451; border-top:1px solid #ac2451; border-bottom:1px solid #ac2451; background:#d22f64; color:#fff;`\r\n\r\n let vs = r.grups\r\n\r\n let t = ''\r\n each(vs, (v) => {\r\n t += `\r\n <span style=\"display:inline-block; line-height:20px; height:20px;\">\r\n <div style=\"display:flex;\">\r\n <div style=\"padding:0px 5px; ${csp} ${v.enable === 'y' ? csep : csnp}\">\r\n ${v.mode}\r\n </div>\r\n <div style=\"padding:0px 5px; ${csa} ${v.enable === 'y' ? csea : csna}\">\r\n ${v.name}\r\n </div>\r\n </div>\r\n </span>\r\n `\r\n })\r\n\r\n return t\r\n },\r\n 'mode': (v, k, r) => {\r\n // console.log('kpCellRender mode', v)\r\n\r\n //name\r\n let name = get(r, 'name', '')\r\n // console.log('name', name, k, r)\r\n\r\n //mode\r\n let mode = get(r, 'mode', '')\r\n // console.log('mode', mode, k, r)\r\n\r\n let t = `\r\n <select onchange=\"$vo.$dg.showVeGrupBlngUsersToggleItemModeByName('${name}',this.value)\" ${vo.isEditable ? '' : 'disabled'}>\r\n <option value=\"OR\" ${mode === 'OR' ? 'selected' : ''}>OR</option>\r\n <option value=\"AND\" ${mode === 'AND' ? 'selected' : ''}>AND</option>\r\n </select>\r\n `\r\n\r\n return t\r\n },\r\n 'enable': (v, k, r) => {\r\n // console.log('kpCellRender enable', v, k, r)\r\n\r\n //name\r\n let name = get(r, 'name', '')\r\n // console.log('name', name, k, r)\r\n\r\n let t = `\r\n <input type=\"checkbox\" ${v === 'y' ? 'checked' : ''} onclick=\"$vo.$dg.showVeGrupBlngUsersToggleItemEnableByName('${name}')\" ${vo.isEditable ? '' : 'disabled'} />\r\n `\r\n\r\n return t\r\n },\r\n },\r\n rowsChange: (rs) => {\r\n // console.log('rowsChange', rs)\r\n // console.log('rowsChange cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n rowChecked: (rs) => {\r\n // console.log('rowChecked', rs)\r\n // console.log('rowChecked cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\r\n\r\n //save itemsCheck\r\n vo.itemsCheck = cloneDeep(rs)\r\n\r\n },\r\n }\r\n // console.log('opt', opt)\r\n\r\n }\r\n\r\n //save\r\n vo.opt = opt\r\n\r\n },\r\n\r\n deleteItemsCheck: function() {\r\n // console.log('method deleteItemsCheck')\r\n\r\n let vo = this\r\n\r\n //check\r\n if (size(vo.itemsCheck) === 0) {\r\n return\r\n }\r\n\r\n //cloneDeep\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //cloneDeep\r\n rows = cloneDeep(rows)\r\n\r\n //filter\r\n each(vo.itemsCheck, (v) => {\r\n // console.log('v', v)\r\n let name = get(v, 'data.name', '')\r\n if (!isestr(name)) {\r\n console.log(`invalid name`)\r\n return true //跳出換下一個\r\n }\r\n rows = filter(rows, (vv) => {\r\n return vv.name !== name\r\n })\r\n })\r\n\r\n //clear\r\n vo.itemsCheck = []\r\n\r\n //save\r\n vo.opt.rows = rows\r\n // console.log('deleteItemsCheck cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n refresh: function() {\r\n let vo = this\r\n\r\n //cmp\r\n let cmp = get(vo, '$refs.rftable.$refs.$self')\r\n // console.log('cmp', cmp)\r\n\r\n //refresh, 因set不會觸發kpCellRender, 故須另外調用組件函數refresh, 進而觸發kpCellRender, 使能更新數據\r\n cmp.refresh()\r\n\r\n },\r\n\r\n getDisplayData: function() {\r\n let vo = this\r\n\r\n //cmp\r\n let cmp = get(vo, '$refs.rftable.$refs.$self')\r\n // console.log('cmp', cmp)\r\n\r\n //getDisplayData\r\n let rows = cmp.getDisplayData()\r\n\r\n return rows\r\n },\r\n\r\n fltKpGrup: function(kp) {\r\n // console.log('fltKpGrup', kp)\r\n\r\n let vo = this\r\n\r\n //_kp\r\n let _kp = {}\r\n each(vo.grups, (v, k) => {\r\n _kp[v.name] = true\r\n })\r\n // console.log('_kp', _kp)\r\n\r\n //kpt\r\n let kpt = {}\r\n each(kp, (v, k) => {\r\n if (haskey(_kp, k)) {\r\n kpt[k] = v\r\n }\r\n })\r\n\r\n return kpt\r\n },\r\n\r\n genItems: function(grup, users) {\r\n // console.log('genItems', grup, users)\r\n\r\n let vo = this\r\n\r\n //items\r\n let items = map(users, (u) => {\r\n\r\n //kpGrup\r\n let kpGrup = JSON5.parse(u.cgrups)\r\n // console.log(u.name, 'kpGrup', kpGrup)\r\n\r\n //fltKpGrup\r\n kpGrup = vo.fltKpGrup(kpGrup)\r\n // console.log(u.name, 'kpGrup(fltKpGrup)', kpGrup)\r\n\r\n //mode, enable, grups\r\n let mode = 'OR'\r\n let enable = 'n'\r\n let grups = []\r\n each(kpGrup, (v, k) => {\r\n // console.log(k, 'v', v)\r\n\r\n //_isActive, 此為使用者cgrups內設定, 可為y或n, 僅提取y, 再判斷此使用者是否有使用此grup\r\n let _isActive = get(v, 'isActive', '')\r\n if (_isActive !== 'y') {\r\n return true //跳出換下一個\r\n }\r\n // console.log(k, '_isActive', _isActive)\r\n\r\n //_mode\r\n let _mode = get(v, 'mode', '')\r\n // console.log(k, '_mode', _mode)\r\n\r\n //b, 使用者是否擁有指定權限群組\r\n let b = k === grup.name\r\n // console.log(k, 'b', b)\r\n\r\n //mode, isActive\r\n if (b) {\r\n enable = 'y'\r\n mode = _mode //使用使用者給予cgrups內指定權限群組之合併權限模式\r\n // console.log('使用使用者給予cgrups內指定權限群組之合併權限模式 grup', grup)\r\n }\r\n\r\n //push\r\n grups.push({\r\n name: k,\r\n ...v,\r\n enable: b ? 'y' : 'n', //給render使用\r\n })\r\n\r\n })\r\n // console.log(u.name, 'grups', grups)\r\n\r\n //grupsNames\r\n let grupsNames = map(grups, 'name')\r\n grupsNames = join(grupsNames, ' ')\r\n // console.log(u.name, 'grupsNames', grupsNames)\r\n\r\n return {\r\n name: u.name,\r\n grupsNames,\r\n mode,\r\n enable,\r\n // kpGrup,\r\n grups,\r\n }\r\n })\r\n // console.log(u.name, 'items', items)\r\n\r\n return items\r\n },\r\n\r\n revRows: function() {\r\n // console.log('revRows')\r\n\r\n let vo = this\r\n\r\n //grup\r\n let grup = cloneDeep(vo.grup)\r\n // console.log('grup', grup)\r\n\r\n //users\r\n let users = cloneDeep(vo.users)\r\n // console.log('users', users)\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n // console.log('rows', rows)\r\n\r\n //users\r\n users = map(users, (u, ku) => {\r\n\r\n //kpGrup\r\n let kpGrup = JSON5.parse(u.cgrups)\r\n // console.log(u.name, 'kpGrup', kpGrup)\r\n\r\n //fltKpGrup\r\n kpGrup = vo.fltKpGrup(kpGrup)\r\n // console.log(u.name, 'kpGrup(fltKpGrup)', kpGrup)\r\n\r\n //mode\r\n let mode = get(rows, `${ku}.mode`, '')\r\n if (mode !== 'OR' && mode !== 'AND') {\r\n console.log(`非預期: mode應該皆已指定不應觸發`, mode)\r\n mode = 'OR'\r\n }\r\n // console.log(u.name, 'mode', mode)\r\n\r\n //enable\r\n let enable = get(rows, `${ku}.enable`, '')\r\n if (enable !== 'y' && enable !== 'n') {\r\n console.log(`非預期: enable應該皆已指定不應觸發`, enable)\r\n enable = 'n'\r\n }\r\n // console.log(u.name, 'enable', enable)\r\n\r\n //kpGrup\r\n if (enable === 'y') {\r\n kpGrup[grup.name] = {\r\n mode,\r\n isActive: 'y',\r\n }\r\n }\r\n else {\r\n if (haskey(kpGrup, grup.name)) {\r\n delete kpGrup[grup.name]\r\n }\r\n }\r\n // console.log(u.name, 'kpGrup', kpGrup)\r\n\r\n //update cgrups\r\n let cgrups = JSON.stringify(kpGrup)\r\n u.cgrups = cgrups\r\n // console.log(u.name, 'cgrups', cgrups)\r\n\r\n return u\r\n })\r\n\r\n //items\r\n let items = vo.genItems(grup, users)\r\n // console.log('items', items)\r\n\r\n //update grupsNames, grups\r\n each(items, (r, kr) => {\r\n // name: u.name,\r\n // grupsNames,\r\n // mode,\r\n // enable,\r\n // grups,\r\n\r\n //set\r\n set(vo, `opt.rows[${kr}].grupsNames`, r.grupsNames)\r\n set(vo, `opt.rows[${kr}].grups`, r.grups)\r\n // console.log('vo.opt.rows[kr]', cloneDeep(vo.opt.rows[kr]))\r\n\r\n })\r\n\r\n //refresh\r\n vo.refresh()\r\n\r\n },\r\n\r\n showVeGrupBlngUsersToggleItemModeByName: function(name, mode) {\r\n // console.log('showVeGrupBlngUsersToggleItemModeByName', name, mode)\r\n\r\n let vo = this\r\n\r\n //check\r\n if (!isestr(name)) {\r\n vo.$alert(`${vo.$t('grupBlngEditNoGrupName')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //find\r\n let r = null\r\n let kr = null\r\n each(rows, (v, k) => {\r\n if (get(v, 'name', '') === name) {\r\n r = v\r\n kr = k\r\n return false //跳出\r\n }\r\n })\r\n\r\n //check\r\n if (!iseobj(r)) {\r\n vo.$alert(`${vo.$t('grupBlngEditNoGrupData')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //mode\r\n // let mode = th.value\r\n // console.log('mode', mode)\r\n\r\n //set\r\n set(vo, `opt.rows[${kr}].mode`, mode)\r\n // console.log('vo.opt.rows[kr]', cloneDeep(vo.opt.rows[kr]))\r\n\r\n //revRows, 已含refresh\r\n vo.revRows()\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n showVeGrupBlngUsersToggleItemEnableByName: function(name) {\r\n // console.log('showVeGrupBlngUsersToggleItemEnableByName', name)\r\n\r\n let vo = this\r\n\r\n //check\r\n if (!isestr(name)) {\r\n vo.$alert(`${vo.$t('grupBlngEditNoGrupName')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //find\r\n let r = null\r\n let kr = null\r\n each(rows, (v, k) => {\r\n if (get(v, 'name', '') === name) {\r\n r = v\r\n kr = k\r\n return false //跳出\r\n }\r\n })\r\n\r\n //check\r\n if (!iseobj(r)) {\r\n vo.$alert(`${vo.$t('grupBlngEditNoGrupData')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //enable\r\n let _enable = get(r, 'enable', 'n')\r\n let enable = _enable === 'y' ? 'n' : 'y'\r\n // console.log('enable', enable)\r\n\r\n //set\r\n set(vo, `opt.rows[${kr}].enable`, enable)\r\n // console.log('vo.opt.rows[kr]', cloneDeep(vo.opt.rows[kr]))\r\n\r\n //revRows, 已含refresh\r\n vo.revRows()\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n showVeGrupBlngUsersToggleItemsEnableAllYes: function() {\r\n // console.log('showVeGrupBlngUsersToggleItemsEnableAllYes')\r\n\r\n let vo = this\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n // console.log('rows', rows)\r\n\r\n //kpRow\r\n let kpRow = {}\r\n each(rows, (r, kr) => {\r\n kpRow[r.name] = kr\r\n })\r\n\r\n //rowsEff\r\n let rowsEff = vo.getDisplayData()\r\n // console.log('rowsEff', rowsEff)\r\n\r\n //toggle\r\n each(rowsEff, (r) => {\r\n\r\n //kr\r\n let kr = kpRow[r.name]\r\n\r\n //set\r\n set(vo, `opt.rows[${kr}].enable`, 'y')\r\n // console.log('vo.opt.rows[kr]', cloneDeep(vo.opt.rows[kr]))\r\n\r\n })\r\n\r\n //revRows, 已含refresh\r\n vo.revRows()\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n showVeGrupBlngUsersToggleItemsEnableAllNo: function() {\r\n // console.log('showVeGrupBlngUsersToggleItemsEnableAllNo')\r\n\r\n let vo = this\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n // console.log('rows', rows)\r\n\r\n //kpRow\r\n let kpRow = {}\r\n each(rows, (r, kr) => {\r\n kpRow[r.name] = kr\r\n })\r\n\r\n //rowsEff\r\n let rowsEff = vo.getDisplayData()\r\n // console.log('rowsEff', rowsEff)\r\n\r\n //toggle\r\n each(rowsEff, (r) => {\r\n\r\n //kr\r\n let kr = kpRow[r.name]\r\n\r\n //set\r\n set(vo, `opt.rows[${kr}].enable`, 'n')\r\n // console.log('vo.opt.rows[kr]', cloneDeep(vo.opt.rows[kr]))\r\n\r\n })\r\n\r\n //revRows, 已含refresh\r\n vo.revRows()\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n showVeGrupBlngUsersToggleItemsEnableAllInv: function() {\r\n // console.log('showVeGrupBlngUsersToggleItemsEnableAllInv')\r\n\r\n let vo = this\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n // console.log('rows', rows)\r\n\r\n //kpRow\r\n let kpRow = {}\r\n each(rows, (r, kr) => {\r\n kpRow[r.name] = kr\r\n })\r\n\r\n //rowsEff\r\n let rowsEff = vo.getDisplayData()\r\n // console.log('rowsEff', rowsEff)\r\n\r\n //toggle\r\n each(rowsEff, (r) => {\r\n\r\n //kr\r\n let kr = kpRow[r.name]\r\n\r\n //enable\r\n let _enable = get(r, 'enable', 'n')\r\n let enable = _enable === 'y' ? 'n' : 'y'\r\n\r\n //set\r\n set(vo, `opt.rows[${kr}].enable`, enable)\r\n // console.log('vo.opt.rows[kr]', cloneDeep(vo.opt.rows[kr]))\r\n\r\n })\r\n\r\n //revRows, 已含refresh\r\n vo.revRows()\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n saveUsers: async function(rows) {\r\n // console.log('method saveUsers', rows)\r\n\r\n let vo = this\r\n\r\n //errTemp\r\n let errTemp = null\r\n\r\n //check\r\n if (size(rows) === 0) {\r\n vo.$alert(`${vo.$t('userSaveUsersEmpty')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //updateUsers\r\n await vo.$fapi.updateUsers(rows)\r\n .catch((err) => {\r\n errTemp = err\r\n })\r\n\r\n //check\r\n if (errTemp !== null) {\r\n vo.$alert(`${vo.$t('userSaveUsersFail')}: ${errTemp}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //alert\r\n vo.$alert(vo.$t('userSaveUsersSuccess'))\r\n\r\n },\r\n\r\n clickBtns: function(msg) {\r\n // console.log('clickBtns', msg)\r\n\r\n let vo = this\r\n\r\n //evName\r\n if (msg.evName === 'toFullscreen') {\r\n vo.fullscreen = true\r\n }\r\n else if (msg.evName === 'toNormalscreen') {\r\n vo.fullscreen = false\r\n }\r\n\r\n },\r\n\r\n clickSave: function(msg) {\r\n //console.log('methods clickSave', msg)\r\n\r\n let vo = this\r\n\r\n async function core() {\r\n\r\n //show loading\r\n vo.$ui.updateLoading(true)\r\n\r\n //delay\r\n await delay(300)\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n // console.log('rows', rows)\r\n\r\n //users\r\n let users = cloneDeep(vo.users)\r\n // console.log('users', users)\r\n\r\n //usersNew\r\n let usersNew = map(rows, (r, kr) => {\r\n\r\n //u\r\n let u = get(users, kr, {})\r\n\r\n //cgrups\r\n let cgrups = get(u, 'cgrups', '')\r\n\r\n //kpGrup\r\n let kpGrup = JSON5.parse(cgrups)\r\n // console.log('kpGrup', kpGrup)\r\n\r\n //grups\r\n let grups = get(r, 'grups', [])\r\n\r\n //kpGrupNew\r\n let kpGrupNew = {}\r\n if (true) {\r\n each(grups, (g) => {\r\n if (g.isActive === 'y') {\r\n kpGrupNew[g.name] = {\r\n mode: g.mode,\r\n isActive: g.isActive,\r\n }\r\n }\r\n })\r\n }\r\n\r\n //check\r\n if (!isEqual(kpGrup, kpGrupNew)) {\r\n\r\n //cgrups\r\n u.cgrups = JSON.stringify(kpGrupNew)\r\n\r\n }\r\n\r\n return u\r\n })\r\n console.log('usersNew', usersNew)\r\n\r\n // //check\r\n // if (size(usersNew) === 0) {\r\n // return\r\n // }\r\n\r\n //saveUsers\r\n await vo.saveUsers(usersNew)\r\n\r\n }\r\n\r\n //core\r\n core()\r\n .then((rows) => {\r\n\r\n //resolve\r\n vo.pm.resolve(rows)\r\n\r\n //hide\r\n vo.bShow = false\r\n\r\n })\r\n .catch(() => { })\r\n .finally(() => {\r\n\r\n //save按鈕解除loading\r\n msg.pm.resolve()\r\n\r\n //hide loading\r\n vo.$ui.updateLoading(false)\r\n\r\n })\r\n\r\n },\r\n\r\n clickClose: function() {\r\n //console.log('methods clickClose')\r\n\r\n let vo = this\r\n\r\n //reject\r\n vo.pm.reject('close window')\r\n\r\n //hide\r\n vo.bShow = false\r\n\r\n },\r\n\r\n show: function (msg) {\r\n // console.log('methods show', msg)\r\n\r\n let vo = this\r\n\r\n //pm\r\n vo.pm = genPm()\r\n\r\n //default\r\n vo.isModified = false\r\n\r\n //isEditable, grup\r\n let isEditable = get(msg, 'isEditable', false)\r\n let grup = get(msg, 'grup', {})\r\n\r\n //grup\r\n grup = cloneDeep(grup)\r\n\r\n //users\r\n let users = cloneDeep(vo.users)\r\n\r\n //items\r\n let items = vo.genItems(grup, users)\r\n\r\n //save\r\n vo.isEditable = isEditable\r\n vo.grup = grup\r\n vo.items = items\r\n\r\n //genOpt\r\n vo.genOpt()\r\n\r\n //bShow\r\n vo.bShow = true\r\n\r\n return vo.pm\r\n },\r\n\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n</style>\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VeGrupBlngUsers.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VeGrupBlngUsers.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./VeGrupBlngUsers.vue?vue&type=template&id=d175979c&scoped=true\"\nimport script from \"./VeGrupBlngUsers.vue?vue&type=script&lang=js\"\nexport * from \"./VeGrupBlngUsers.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d175979c\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('WDialog',{attrs:{\"show\":_vm.bShow,\"title\":_vm.isEditable?_vm.$t('pemiBlngEditGrups'):_vm.$t('pemiBlngEditGrupsForDisplay'),\"icon\":_vm.mdiFormatListCheckbox,\"minWidth\":800,\"maxWidth\":800,\"fullscreen\":_vm.fullscreen,\"contentBackgroundColor\":'#fff',\"headerBtns\":_vm.useHeaderBtns,\"hasSaveBtn\":_vm.isEditable && _vm.isModified,\"save-btn-tooltip\":_vm.$t('save'),\"close-btn-tooltip\":_vm.$t('close')},on:{\"update:show\":function($event){_vm.bShow=$event},\"click-btns\":_vm.clickBtns,\"click-save\":_vm.clickSave,\"click-close\":_vm.clickClose,\"resize\":_vm.resizeDialog},scopedSlots:_vm._u([{key:\"content\",fn:function(){return [_c('div',[_c('div',{directives:[{name:\"domresize\",rawName:\"v-domresize\"}],staticStyle:{\"_border-bottom\":\"1px solid #ddd\",\"background\":\"#fff\"},on:{\"domresize\":_vm.resizeHead}},[_c('div',{staticStyle:{\"padding\":\"18px 12px\",\"background\":\"#fff\",\"border-bottom\":\"1px solid #ddd\"}},[_c('div',{staticStyle:{\"font-size\":\"0.75rem\",\"color\":\"#999\",\"padding-bottom\":\"2px\"}},[_vm._v(\" \"+_vm._s(_vm.$t('pemiBlngPemiNow'))+\" \")]),_c('div',{staticStyle:{\"font-size\":\"1.3rem\"}},[_vm._v(\" \"+_vm._s(_vm.pemiName)+\" \")])]),(_vm.isEditable)?_c('div',{staticStyle:{\"padding\":\"5px\",\"background\":\"#fff\",\"display\":\"flex\",\"align-items\":\"center\"}},[[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('checkAllYes'),\"icon\":_vm.mdiCheckboxMultipleMarked,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"_textColor\":\"'#eee'\",\"_textColorHover\":\"'#fff'\",\"iconColor\":'#444',\"iconColorHover\":'#222',\"shadow\":false},on:{\"click\":_vm.showVePemiBlngGrupsToggleItemsEnableAllYes}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})],[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('checkAllNo'),\"icon\":_vm.mdiCheckboxMultipleBlankOutline,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"_textColor\":\"'#eee'\",\"_textColorHover\":\"'#fff'\",\"iconColor\":'#444',\"iconColorHover\":'#222',\"shadow\":false},on:{\"click\":_vm.showVePemiBlngGrupsToggleItemsEnableAllNo}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})],[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('checkAllInv'),\"icon\":_vm.mdiCodeTagsCheck,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"_textColor\":\"'#eee'\",\"_textColorHover\":\"'#fff'\",\"iconColor\":'#444',\"iconColorHover\":'#222',\"shadow\":false},on:{\"click\":_vm.showVePemiBlngGrupsToggleItemsEnableAllInv}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})],(_vm.hasItemsCheck)?[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('pemiBlngDeleteCheckPemis'),\"icon\":_vm.mdiTrashCanOutline,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"_textColor\":\"'#eee'\",\"_textColorHover\":\"'#fff'\",\"iconColor\":'#444',\"iconColorHover\":'#222',\"shadow\":false},on:{\"click\":_vm.deleteItemsCheck}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})]:_vm._e()],2):_vm._e()]),(_vm.items)?[_c('WAggridVueDyn',{ref:\"rftable\",style:(`width:100%;`),attrs:{\"height\":_vm.contentHeight,\"opt\":_vm.opt}})]:_c('div',{staticStyle:{\"padding\":\"10px 15px\",\"font-size\":\"0.8rem\"}},[_vm._v(\" \"+_vm._s(_vm.$t('waitingData'))+\" \")])],2)]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <WDialog\r\n :show.sync=\"bShow\"\r\n :title=\"isEditable?$t('pemiBlngEditGrups'):$t('pemiBlngEditGrupsForDisplay')\"\r\n :icon=\"mdiFormatListCheckbox\"\r\n :minWidth=\"800\"\r\n :maxWidth=\"800\"\r\n :fullscreen=\"fullscreen\"\r\n :contentBackgroundColor=\"'#fff'\"\r\n :headerBtns=\"useHeaderBtns\"\r\n :hasSaveBtn=\"isEditable && isModified\"\r\n :save-btn-tooltip=\"$t('save')\"\r\n :close-btn-tooltip=\"$t('close')\"\r\n @click-btns=\"clickBtns\"\r\n @click-save=\"clickSave\"\r\n @click-close=\"clickClose\"\r\n @resize=\"resizeDialog\"\r\n >\r\n <template v-slot:content>\r\n <div>\r\n\r\n <div\r\n style=\"_border-bottom:1px solid #ddd; background:#fff;\"\r\n v-domresize\r\n @domresize=\"resizeHead\"\r\n >\r\n\r\n <!-- 當前權限群組名稱 -->\r\n <div style=\"padding:18px 12px; background:#fff; border-bottom:1px solid #ddd;\">\r\n\r\n <div style=\"font-size:0.75rem; color:#999; padding-bottom:2px;\">\r\n {{$t('pemiBlngPemiNow')}}\r\n </div>\r\n\r\n <div style=\"font-size:1.3rem;\">\r\n {{pemiName}}\r\n </div>\r\n\r\n </div>\r\n\r\n <!-- 功能區 -->\r\n <div\r\n style=\"padding:5px; background:#fff; display:flex; align-items:center;\"\r\n v-if=\"isEditable\"\r\n >\r\n\r\n <template>\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('checkAllYes')\"\r\n :icon=\"mdiCheckboxMultipleMarked\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n _textColor=\"'#eee'\"\r\n _textColorHover=\"'#fff'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :shadow=\"false\"\r\n @click=\"showVePemiBlngGrupsToggleItemsEnableAllYes\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n <template>\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('checkAllNo')\"\r\n :icon=\"mdiCheckboxMultipleBlankOutline\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n _textColor=\"'#eee'\"\r\n _textColorHover=\"'#fff'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :shadow=\"false\"\r\n @click=\"showVePemiBlngGrupsToggleItemsEnableAllNo\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n <template>\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('checkAllInv')\"\r\n :icon=\"mdiCodeTagsCheck\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n _textColor=\"'#eee'\"\r\n _textColorHover=\"'#fff'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :shadow=\"false\"\r\n @click=\"showVePemiBlngGrupsToggleItemsEnableAllInv\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n <template v-if=\"hasItemsCheck\">\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('pemiBlngDeleteCheckPemis')\"\r\n :icon=\"mdiTrashCanOutline\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n _textColor=\"'#eee'\"\r\n _textColorHover=\"'#fff'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :shadow=\"false\"\r\n @click=\"deleteItemsCheck\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n <template v-if=\"items\">\r\n <WAggridVueDyn\r\n ref=\"rftable\"\r\n :style=\"`width:100%;`\"\r\n :height=\"contentHeight\"\r\n :opt=\"opt\"\r\n >\r\n </WAggridVueDyn>\r\n </template>\r\n\r\n <div\r\n style=\"padding:10px 15px; font-size:0.8rem;\"\r\n v-else\r\n >\r\n {{$t('waitingData')}}\r\n </div>\r\n\r\n </div>\r\n </template>\r\n </WDialog>\r\n</template>\r\n\r\n<script>\r\nimport { mdiDeleteForever, mdiFullscreen, mdiFullscreenExit, mdiFormatListCheckbox, mdiFileTree, mdiTrashCanOutline, mdiCheckboxMultipleBlankOutline, mdiCheckboxMultipleMarked, mdiCodeTagsCheck } from '@mdi/js/mdi.js'\r\nimport Vue from 'vue'\r\nimport JSON5 from 'json5'\r\nimport get from 'lodash-es/get.js'\r\nimport set from 'lodash-es/set.js'\r\nimport each from 'lodash-es/each.js'\r\nimport map from 'lodash-es/map.js'\r\nimport size from 'lodash-es/size.js'\r\nimport filter from 'lodash-es/filter.js'\r\nimport join from 'lodash-es/join.js'\r\nimport sortBy from 'lodash-es/sortBy.js'\r\nimport isEqual from 'lodash-es/isEqual.js'\r\nimport cloneDeep from 'lodash-es/cloneDeep.js'\r\nimport genPm from 'wsemi/src/genPm.mjs'\r\nimport haskey from 'wsemi/src/haskey.mjs'\r\nimport delay from 'wsemi/src/delay.mjs'\r\nimport iseobj from 'wsemi/src/iseobj.mjs'\r\nimport isestr from 'wsemi/src/isestr.mjs'\r\nimport WDialog from 'w-component-vue/src/components/WDialog.vue'\r\nimport WButtonCircle from 'w-component-vue/src/components/WButtonCircle.vue'\r\nimport WAggridVueDyn from 'w-component-vue/src/components/WAggridVueDyn.vue'\r\n\r\n\r\nexport default {\r\n components: {\r\n WDialog,\r\n WButtonCircle,\r\n WAggridVueDyn,\r\n },\r\n props: {\r\n },\r\n data: function() {\r\n return {\r\n mdiDeleteForever,\r\n mdiFullscreen,\r\n mdiFullscreenExit,\r\n mdiFormatListCheckbox,\r\n mdiFileTree,\r\n mdiTrashCanOutline,\r\n mdiCheckboxMultipleBlankOutline,\r\n mdiCheckboxMultipleMarked,\r\n mdiCodeTagsCheck,\r\n\r\n bShow: false,\r\n pm: null,\r\n\r\n fullscreen: false,\r\n\r\n panelWidth: 100,\r\n panelHeight: 100,\r\n headHeight: 100,\r\n\r\n isEditable: false,\r\n isModified: false,\r\n\r\n pemi: null,\r\n\r\n items: [],\r\n itemsCheck: [],\r\n opt: null,\r\n\r\n }\r\n },\r\n mounted: function() {\r\n //console.log('mounted')\r\n\r\n let vo = this\r\n\r\n //set\r\n Vue.prototype.$dg.showVePemiBlngGrups = vo.show\r\n Vue.prototype.$dg.showVePemiBlngGrupsToggleItemModeByName = vo.showVePemiBlngGrupsToggleItemModeByName\r\n Vue.prototype.$dg.showVePemiBlngGrupsToggleItemEnableByName = vo.showVePemiBlngGrupsToggleItemEnableByName\r\n\r\n },\r\n computed: {\r\n\r\n targets: function() {\r\n let rs = get(this, `$store.state.targets`)\r\n rs = sortBy(rs, 'order')\r\n return rs\r\n },\r\n\r\n pemis: function() {\r\n let rs = get(this, `$store.state.pemis`)\r\n rs = sortBy(rs, 'order')\r\n return rs\r\n },\r\n\r\n grups: function() {\r\n let rs = get(this, `$store.state.grups`)\r\n rs = sortBy(rs, 'order')\r\n return rs\r\n },\r\n\r\n users: function() {\r\n let rs = get(this, `$store.state.users`)\r\n rs = sortBy(rs, 'order')\r\n return rs\r\n },\r\n\r\n kpHeaderBtns: function() {\r\n let vo = this\r\n let kp = {\r\n // delete: {\r\n // icon: mdiDeleteForever,\r\n // tooltip: `${vo.$t('delete')}${vo.tableNameCht}`,\r\n // evName: 'delete'\r\n // },\r\n toFullscreen: {\r\n icon: mdiFullscreen,\r\n tooltip: vo.$t('screenFull'),\r\n evName: 'toFullscreen'\r\n },\r\n toNormalscreen: {\r\n icon: mdiFullscreenExit,\r\n tooltip: vo.$t('screenNormal'),\r\n evName: 'toNormalscreen'\r\n },\r\n }\r\n return kp\r\n },\r\n\r\n useHeaderBtns: function() {\r\n let vo = this\r\n let bts = []\r\n if (true) {\r\n let k = vo.fullscreen ? 'toNormalscreen' : 'toFullscreen'\r\n bts = [\r\n ...bts,\r\n vo.kpHeaderBtns[k]\r\n ]\r\n }\r\n // if (vo.useDelete) {\r\n // let k = 'delete'\r\n // bts = [\r\n // ...bts,\r\n // vo.kpHeaderBtns[k]\r\n // ]\r\n // }\r\n return bts\r\n },\r\n\r\n contentHeight: function() {\r\n let vo = this\r\n\r\n //h\r\n let h = vo.panelHeight - vo.headHeight\r\n h = Math.max(h, 0)\r\n\r\n return h\r\n },\r\n\r\n hasItemsCheck: function() {\r\n let vo = this\r\n\r\n //h\r\n let b = vo.itemsCheck.length > 0\r\n\r\n return b\r\n },\r\n\r\n pemiName: function() {\r\n let vo = this\r\n\r\n let c = get(vo, 'pemi.name', '')\r\n\r\n return c\r\n },\r\n\r\n },\r\n methods: {\r\n\r\n resizeDialog: function(msg) {\r\n // console.log('methods resizeDialog', msg)\r\n\r\n let vo = this\r\n\r\n //panelWidth, panelHeight\r\n vo.panelWidth = msg.panelWidth\r\n vo.panelHeight = msg.contentHeightMax\r\n\r\n },\r\n\r\n resizeHead: function(msg) {\r\n // console.log('methods resizeHead', msg)\r\n\r\n let vo = this\r\n\r\n //headHeight\r\n vo.headHeight = msg.snew.offsetHeight\r\n\r\n },\r\n\r\n genOpt: function() {\r\n // console.log('methods genOpt')\r\n\r\n let vo = this\r\n\r\n //default\r\n vo.itemsCheck = []\r\n\r\n //opt\r\n let opt = null\r\n if (size(vo.items) > 0) {\r\n\r\n //ks\r\n let ks = [\r\n 'name',\r\n 'pemisNames',\r\n 'mode',\r\n 'enable',\r\n ]\r\n // console.log('ks', ks)\r\n\r\n //kpHead\r\n let kpHead = {\r\n 'name': vo.$t('grupName'),\r\n 'pemisNames': vo.$t('belongPemisNames'),\r\n 'mode': vo.$t('operPemiEnable'),\r\n 'enable': vo.$t('operMode'),\r\n }\r\n\r\n //opt\r\n opt = {\r\n language: vo.$t('aggridLanguage'),\r\n rows: vo.items,\r\n keys: ks,\r\n kpHead,\r\n autoFitColumn: true,\r\n defCellEditable: false, //vo.isEditable,\r\n defHeadFilter: true,\r\n defCellAlignH: 'left',\r\n kpCellEditable: {\r\n 'name': vo.isEditable,\r\n 'mode': false,\r\n 'enable': false,\r\n },\r\n kpHeadWidth: {\r\n 'mode': 100,\r\n 'enable': 100,\r\n },\r\n // kpRowDrag: {\r\n // 'name': true,\r\n // },\r\n // kpHeadFilter: {\r\n // 'enable': false,\r\n // },\r\n kpHeadFilterType: {\r\n 'name': 'text',\r\n 'pemisNames': 'text',\r\n 'mode': 'text',\r\n 'enable': 'text',\r\n },\r\n // kpHeadCheckBox: {\r\n // 'name': true,\r\n // },\r\n kpHeadFocusHighlight: { //雖然效果不完全, 但因按鈕與cell有padding可被點擊, 故還是需要開啟\r\n 'pemisNames': false,\r\n },\r\n kpCellRender: {\r\n 'pemisNames': (v, k, r) => {\r\n // console.log('kpCellRender pemisNames', v, k, r)\r\n\r\n let csp = `border-top-left-radius:4px; border-bottom-left-radius:4px;`\r\n let csnp = `border-left:1px solid #aaaaaa; border-right:1px solid #aaaaaa; border-top:1px solid #aaaaaa; border-bottom:1px solid #aaaaaa; background:#ffffff; color:#555;`\r\n let csep = `border-left:1px solid #ac2451; border-right:1px solid #9e2149; border-top:1px solid #ac2451; border-bottom:1px solid #ac2451; background:#be295a; color:#fff;`\r\n\r\n let csa = `border-top-right-radius:4px; border-bottom-right-radius:4px;`\r\n let csna = `_border-left:1px solid #aaaaaa; border-right:1px solid #aaaaaa; border-top:1px solid #aaaaaa; border-bottom:1px solid #aaaaaa; background:#eeeeee; color:#555;`\r\n let csea = `_border-left:1px solid #ac2451; border-right:1px solid #ac2451; border-top:1px solid #ac2451; border-bottom:1px solid #ac2451; background:#d22f64; color:#fff;`\r\n\r\n let vs = r.pemis\r\n\r\n let t = ''\r\n each(vs, (v) => {\r\n t += `\r\n <span style=\"display:inline-block; line-height:20px; height:20px;\">\r\n <div style=\"display:flex;\">\r\n <div style=\"padding:0px 5px; ${csp} ${v.enable === 'y' ? csep : csnp}\">\r\n ${v.mode}\r\n </div>\r\n <div style=\"padding:0px 5px; ${csa} ${v.enable === 'y' ? csea : csna}\">\r\n ${v.name}\r\n </div>\r\n </div>\r\n </span>\r\n `\r\n })\r\n\r\n return t\r\n },\r\n 'mode': (v, k, r) => {\r\n // console.log('kpCellRender mode', v)\r\n\r\n //name\r\n let name = get(r, 'name', '')\r\n // console.log('name', name, k, r)\r\n\r\n //mode\r\n let mode = get(r, 'mode', '')\r\n // console.log('mode', mode, k, r)\r\n\r\n let t = `\r\n <select onchange=\"$vo.$dg.showVePemiBlngGrupsToggleItemModeByName('${name}',this.value)\" ${vo.isEditable ? '' : 'disabled'}>\r\n <option value=\"OR\" ${mode === 'OR' ? 'selected' : ''}>OR</option>\r\n <option value=\"AND\" ${mode === 'AND' ? 'selected' : ''}>AND</option>\r\n </select>\r\n `\r\n\r\n return t\r\n },\r\n 'enable': (v, k, r) => {\r\n // console.log('kpCellRender enable', v, k, r)\r\n\r\n //name\r\n let name = get(r, 'name', '')\r\n // console.log('name', name, k, r)\r\n\r\n let t = `\r\n <input type=\"checkbox\" ${v === 'y' ? 'checked' : ''} onclick=\"$vo.$dg.showVePemiBlngGrupsToggleItemEnableByName('${name}')\" ${vo.isEditable ? '' : 'disabled'} />\r\n `\r\n\r\n return t\r\n },\r\n },\r\n rowsChange: (rs) => {\r\n // console.log('rowsChange', rs)\r\n // console.log('rowsChange cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n rowChecked: (rs) => {\r\n // console.log('rowChecked', rs)\r\n // console.log('rowChecked cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\r\n\r\n //save itemsCheck\r\n vo.itemsCheck = cloneDeep(rs)\r\n\r\n },\r\n }\r\n // console.log('opt', opt)\r\n\r\n }\r\n\r\n //save\r\n vo.opt = opt\r\n\r\n },\r\n\r\n deleteItemsCheck: function() {\r\n // console.log('method deleteItemsCheck')\r\n\r\n let vo = this\r\n\r\n //check\r\n if (size(vo.itemsCheck) === 0) {\r\n return\r\n }\r\n\r\n //cloneDeep\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //cloneDeep\r\n rows = cloneDeep(rows)\r\n\r\n //filter\r\n each(vo.itemsCheck, (v) => {\r\n // console.log('v', v)\r\n let name = get(v, 'data.name', '')\r\n if (!isestr(name)) {\r\n console.log(`invalid name`)\r\n return true //跳出換下一個\r\n }\r\n rows = filter(rows, (vv) => {\r\n return vv.name !== name\r\n })\r\n })\r\n\r\n //clear\r\n vo.itemsCheck = []\r\n\r\n //save\r\n vo.opt.rows = rows\r\n // console.log('deleteItemsCheck cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n refresh: function() {\r\n let vo = this\r\n\r\n //cmp\r\n let cmp = get(vo, '$refs.rftable.$refs.$self')\r\n // console.log('cmp', cmp)\r\n\r\n //refresh, 因set不會觸發kpCellRender, 故須另外調用組件函數refresh, 進而觸發kpCellRender, 使能更新數據\r\n cmp.refresh()\r\n\r\n },\r\n\r\n getDisplayData: function() {\r\n let vo = this\r\n\r\n //cmp\r\n let cmp = get(vo, '$refs.rftable.$refs.$self')\r\n // console.log('cmp', cmp)\r\n\r\n //getDisplayData\r\n let rows = cmp.getDisplayData()\r\n\r\n return rows\r\n },\r\n\r\n fltKpPemi: function(kp) {\r\n // console.log('fltKpPemi', kp)\r\n\r\n let vo = this\r\n\r\n //_kp\r\n let _kp = {}\r\n each(vo.pemis, (v, k) => {\r\n _kp[v.name] = true\r\n })\r\n // console.log('_kp', _kp)\r\n\r\n //kpt\r\n let kpt = {}\r\n each(kp, (v, k) => {\r\n if (haskey(_kp, k)) {\r\n kpt[k] = v\r\n }\r\n })\r\n\r\n return kpt\r\n },\r\n\r\n genItems: function(pemi, grups) {\r\n // console.log('genItems', pemi, grups)\r\n\r\n let vo = this\r\n\r\n //items\r\n let items = map(grups, (g) => {\r\n\r\n //kpPemi\r\n let kpPemi = JSON5.parse(g.cpemis)\r\n // console.log(g.name, 'kpPemi', kpPemi)\r\n\r\n //fltKpPemi\r\n kpPemi = vo.fltKpPemi(kpPemi)\r\n // console.log(g.name, 'kpPemi(fltKpPemi)', kpPemi)\r\n\r\n //mode, enable, pemis\r\n let mode = 'OR'\r\n let enable = 'n'\r\n let pemis = []\r\n each(kpPemi, (v, k) => {\r\n // console.log(k, 'v', v)\r\n\r\n //_isActive, 此為使用者cpemis內設定, 可為y或n, 僅提取y, 再判斷此使用者是否有使用此pemi\r\n let _isActive = get(v, 'isActive', '')\r\n if (_isActive !== 'y') {\r\n return true //跳出換下一個\r\n }\r\n // console.log(k, '_isActive', _isActive)\r\n\r\n //_mode\r\n let _mode = get(v, 'mode', '')\r\n // console.log(k, '_mode', _mode)\r\n\r\n //b, 使用者是否擁有指定權限群組\r\n let b = k === pemi.name\r\n // console.log(k, 'b', b)\r\n\r\n //mode, isActive\r\n if (b) {\r\n enable = 'y'\r\n mode = _mode //使用使用者給予cpemis內指定權限群組之合併權限模式\r\n // console.log('使用使用者給予cpemis內指定權限群組之合併權限模式 pemi', pemi)\r\n }\r\n\r\n //push\r\n pemis.push({\r\n name: k,\r\n ...v,\r\n enable: b ? 'y' : 'n', //給render使用\r\n })\r\n\r\n })\r\n // console.log(g.name, 'pemis', pemis)\r\n\r\n //pemisNames\r\n let pemisNames = map(pemis, 'name')\r\n pemisNames = join(pemisNames, ' ')\r\n // console.log(g.name, 'pemisNames', pemisNames)\r\n\r\n return {\r\n name: g.name,\r\n pemisNames,\r\n mode,\r\n enable,\r\n // kpPemi,\r\n pemis,\r\n }\r\n })\r\n // console.log(g.name, 'items', items)\r\n\r\n return items\r\n },\r\n\r\n revRows: function() {\r\n // console.log('revRows')\r\n\r\n let vo = this\r\n\r\n //pemi\r\n let pemi = cloneDeep(vo.pemi)\r\n // console.log('pemi', pemi)\r\n\r\n //grups\r\n let grups = cloneDeep(vo.grups)\r\n // console.log('grups', grups)\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n // console.log('rows', rows)\r\n\r\n //grups\r\n grups = map(grups, (g, kg) => {\r\n\r\n //kpPemi\r\n let kpPemi = JSON5.parse(g.cpemis)\r\n // console.log(g.name, 'kpPemi', kpPemi)\r\n\r\n //fltKpPemi\r\n kpPemi = vo.fltKpPemi(kpPemi)\r\n // console.log(g.name, 'kpPemi(fltKpPemi)', kpPemi)\r\n\r\n //mode\r\n let mode = get(rows, `${kg}.mode`, '')\r\n if (mode !== 'OR' && mode !== 'AND') {\r\n console.log(`非預期: mode應該皆已指定不應觸發`, mode)\r\n mode = 'OR'\r\n }\r\n // console.log(g.name, 'mode', mode)\r\n\r\n //enable\r\n let enable = get(rows, `${kg}.enable`, '')\r\n if (enable !== 'y' && enable !== 'n') {\r\n console.log(`非預期: enable應該皆已指定不應觸發`, enable)\r\n enable = 'n'\r\n }\r\n // console.log(g.name, 'enable', enable)\r\n\r\n //kpPemi\r\n if (enable === 'y') {\r\n kpPemi[pemi.name] = {\r\n mode,\r\n isActive: 'y',\r\n }\r\n }\r\n else {\r\n if (haskey(kpPemi, pemi.name)) {\r\n delete kpPemi[pemi.name]\r\n }\r\n }\r\n // console.log(g.name, 'kpPemi', kpPemi)\r\n\r\n //update cpemis\r\n let cpemis = JSON.stringify(kpPemi)\r\n g.cpemis = cpemis\r\n // console.log(g.name, 'cpemis', cpemis)\r\n\r\n return g\r\n })\r\n\r\n //items\r\n let items = vo.genItems(pemi, grups)\r\n // console.log('items', items)\r\n\r\n //update pemisNames, pemis\r\n each(items, (r, kr) => {\r\n // name: g.name,\r\n // pemisNames,\r\n // mode,\r\n // enable,\r\n // pemis,\r\n\r\n //set\r\n set(vo, `opt.rows[${kr}].pemisNames`, r.pemisNames)\r\n set(vo, `opt.rows[${kr}].pemis`, r.pemis)\r\n // console.log('vo.opt.rows[kr]', cloneDeep(vo.opt.rows[kr]))\r\n\r\n })\r\n\r\n //refresh\r\n vo.refresh()\r\n\r\n },\r\n\r\n showVePemiBlngGrupsToggleItemModeByName: function(name, mode) {\r\n // console.log('showVePemiBlngGrupsToggleItemModeByName', name, mode)\r\n\r\n let vo = this\r\n\r\n //check\r\n if (!isestr(name)) {\r\n vo.$alert(`${vo.$t('pemiBlngEditNoName')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //find\r\n let r = null\r\n let kr = null\r\n each(rows, (v, k) => {\r\n if (get(v, 'name', '') === name) {\r\n r = v\r\n kr = k\r\n return false //跳出\r\n }\r\n })\r\n\r\n //check\r\n if (!iseobj(r)) {\r\n vo.$alert(`${vo.$t('pemiBlngEditNoPemi')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //mode\r\n // let mode = th.value\r\n // console.log('mode', mode)\r\n\r\n //set\r\n set(vo, `opt.rows[${kr}].mode`, mode)\r\n // console.log('vo.opt.rows[kr]', cloneDeep(vo.opt.rows[kr]))\r\n\r\n //revRows, 已含refresh\r\n vo.revRows()\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n showVePemiBlngGrupsToggleItemEnableByName: function(name) {\r\n // console.log('showVePemiBlngGrupsToggleItemEnableByName', name)\r\n\r\n let vo = this\r\n\r\n //check\r\n if (!isestr(name)) {\r\n vo.$alert(`${vo.$t('pemiBlngEditNoName')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //find\r\n let r = null\r\n let kr = null\r\n each(rows, (v, k) => {\r\n if (get(v, 'name', '') === name) {\r\n r = v\r\n kr = k\r\n return false //跳出\r\n }\r\n })\r\n\r\n //check\r\n if (!iseobj(r)) {\r\n vo.$alert(`${vo.$t('pemiBlngEditNoPemi')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //enable\r\n let _enable = get(r, 'enable', 'n')\r\n let enable = _enable === 'y' ? 'n' : 'y'\r\n // console.log('enable', enable)\r\n\r\n //set\r\n set(vo, `opt.rows[${kr}].enable`, enable)\r\n // console.log('vo.opt.rows[kr]', cloneDeep(vo.opt.rows[kr]))\r\n\r\n //revRows, 已含refresh\r\n vo.revRows()\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n showVePemiBlngGrupsToggleItemsEnableAllYes: function() {\r\n // console.log('showVePemiBlngGrupsToggleItemsEnableAllYes')\r\n\r\n let vo = this\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n // console.log('rows', rows)\r\n\r\n //kpRow\r\n let kpRow = {}\r\n each(rows, (r, kr) => {\r\n kpRow[r.name] = kr\r\n })\r\n\r\n //rowsEff\r\n let rowsEff = vo.getDisplayData()\r\n // console.log('rowsEff', rowsEff)\r\n\r\n //toggle\r\n each(rowsEff, (r) => {\r\n\r\n //kr\r\n let kr = kpRow[r.name]\r\n\r\n //set\r\n set(vo, `opt.rows[${kr}].enable`, 'y')\r\n // console.log('vo.opt.rows[kr]', cloneDeep(vo.opt.rows[kr]))\r\n\r\n })\r\n\r\n //revRows, 已含refresh\r\n vo.revRows()\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n showVePemiBlngGrupsToggleItemsEnableAllNo: function() {\r\n // console.log('showVePemiBlngGrupsToggleItemsEnableAllNo')\r\n\r\n let vo = this\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n // console.log('rows', rows)\r\n\r\n //kpRow\r\n let kpRow = {}\r\n each(rows, (r, kr) => {\r\n kpRow[r.name] = kr\r\n })\r\n\r\n //rowsEff\r\n let rowsEff = vo.getDisplayData()\r\n // console.log('rowsEff', rowsEff)\r\n\r\n //toggle\r\n each(rowsEff, (r) => {\r\n\r\n //kr\r\n let kr = kpRow[r.name]\r\n\r\n //set\r\n set(vo, `opt.rows[${kr}].enable`, 'n')\r\n // console.log('vo.opt.rows[kr]', cloneDeep(vo.opt.rows[kr]))\r\n\r\n })\r\n\r\n //revRows, 已含refresh\r\n vo.revRows()\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n showVePemiBlngGrupsToggleItemsEnableAllInv: function() {\r\n // console.log('showVePemiBlngGrupsToggleItemsEnableAllInv')\r\n\r\n let vo = this\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n // console.log('rows', rows)\r\n\r\n //kpRow\r\n let kpRow = {}\r\n each(rows, (r, kr) => {\r\n kpRow[r.name] = kr\r\n })\r\n\r\n //rowsEff\r\n let rowsEff = vo.getDisplayData()\r\n // console.log('rowsEff', rowsEff)\r\n\r\n //toggle\r\n each(rowsEff, (r) => {\r\n\r\n //kr\r\n let kr = kpRow[r.name]\r\n\r\n //enable\r\n let _enable = get(r, 'enable', 'n')\r\n let enable = _enable === 'y' ? 'n' : 'y'\r\n\r\n //set\r\n set(vo, `opt.rows[${kr}].enable`, enable)\r\n // console.log('vo.opt.rows[kr]', cloneDeep(vo.opt.rows[kr]))\r\n\r\n })\r\n\r\n //revRows, 已含refresh\r\n vo.revRows()\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n saveGrups: async function(rows) {\r\n // console.log('method saveGrups', rows)\r\n\r\n let vo = this\r\n\r\n //errTemp\r\n let errTemp = null\r\n\r\n //check\r\n if (size(rows) === 0) {\r\n vo.$alert(`${vo.$t('grupSaveGrupsEmpty')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //updateGrups\r\n await vo.$fapi.updateGrups(rows)\r\n .catch((err) => {\r\n errTemp = err\r\n })\r\n\r\n //check\r\n if (errTemp !== null) {\r\n vo.$alert(`${vo.$t('grupSaveGrupsFail')}: ${errTemp}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //alert\r\n vo.$alert(vo.$t('grupSaveGrupsSuccess'))\r\n\r\n },\r\n\r\n clickBtns: function(msg) {\r\n // console.log('clickBtns', msg)\r\n\r\n let vo = this\r\n\r\n //evName\r\n if (msg.evName === 'toFullscreen') {\r\n vo.fullscreen = true\r\n }\r\n else if (msg.evName === 'toNormalscreen') {\r\n vo.fullscreen = false\r\n }\r\n\r\n },\r\n\r\n clickSave: function(msg) {\r\n //console.log('methods clickSave', msg)\r\n\r\n let vo = this\r\n\r\n async function core() {\r\n\r\n //show loading\r\n vo.$ui.updateLoading(true)\r\n\r\n //delay\r\n await delay(300)\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n // console.log('rows', rows)\r\n\r\n //grups\r\n let grups = cloneDeep(vo.grups)\r\n // console.log('grups', grups)\r\n\r\n //grupsNew\r\n let grupsNew = map(rows, (r, kr) => {\r\n\r\n //g\r\n let g = get(grups, kr, {})\r\n\r\n //cpemis\r\n let cpemis = get(g, 'cpemis', '')\r\n\r\n //kpPemi\r\n let kpPemi = JSON5.parse(cpemis)\r\n // console.log('kpGrup', kpGrup)\r\n\r\n //pemis\r\n let pemis = get(r, 'pemis', [])\r\n\r\n //kpPemiNew\r\n let kpPemiNew = {}\r\n if (true) {\r\n each(pemis, (p) => {\r\n if (p.isActive === 'y') {\r\n kpPemiNew[p.name] = {\r\n mode: p.mode,\r\n isActive: p.isActive,\r\n }\r\n }\r\n })\r\n }\r\n\r\n //check\r\n if (!isEqual(kpPemi, kpPemiNew)) {\r\n\r\n //cpemis\r\n g.cpemis = JSON.stringify(kpPemiNew)\r\n\r\n }\r\n\r\n return g\r\n })\r\n console.log('grupsNew', grupsNew)\r\n\r\n // //check\r\n // if (size(grupsNew) === 0) {\r\n // return\r\n // }\r\n\r\n //saveGrups\r\n await vo.saveGrups(grupsNew)\r\n\r\n }\r\n\r\n //core\r\n core()\r\n .then((rows) => {\r\n\r\n //resolve\r\n vo.pm.resolve(rows)\r\n\r\n //hide\r\n vo.bShow = false\r\n\r\n })\r\n .catch(() => { })\r\n .finally(() => {\r\n\r\n //save按鈕解除loading\r\n msg.pm.resolve()\r\n\r\n //hide loading\r\n vo.$ui.updateLoading(false)\r\n\r\n })\r\n\r\n },\r\n\r\n clickClose: function() {\r\n //console.log('methods clickClose')\r\n\r\n let vo = this\r\n\r\n //reject\r\n vo.pm.reject('close window')\r\n\r\n //hide\r\n vo.bShow = false\r\n\r\n },\r\n\r\n show: function (msg) {\r\n // console.log('methods show', msg)\r\n\r\n let vo = this\r\n\r\n //pm\r\n vo.pm = genPm()\r\n\r\n //default\r\n vo.isModified = false\r\n\r\n //isEditable, pemi\r\n let isEditable = get(msg, 'isEditable', false)\r\n let pemi = get(msg, 'pemi', {})\r\n\r\n //grup\r\n pemi = cloneDeep(pemi)\r\n\r\n //grups\r\n let grups = cloneDeep(vo.grups)\r\n\r\n //items\r\n let items = vo.genItems(pemi, grups)\r\n\r\n //save\r\n vo.isEditable = isEditable\r\n vo.pemi = pemi\r\n vo.items = items\r\n\r\n //genOpt\r\n vo.genOpt()\r\n\r\n //bShow\r\n vo.bShow = true\r\n\r\n return vo.pm\r\n },\r\n\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n</style>\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VePemiBlngGrups.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VePemiBlngGrups.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./VePemiBlngGrups.vue?vue&type=template&id=19bf7c1f&scoped=true\"\nimport script from \"./VePemiBlngGrups.vue?vue&type=script&lang=js\"\nexport * from \"./VePemiBlngGrups.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"19bf7c1f\",\n null\n \n)\n\nexport default component.exports","<template>\n <div\n v-domresize\n @domresize=\"resize\"\n >\n\n <LayoutState :style=\"`opacity:${ready?0:1};`\" v-if=\"!ready\"></LayoutState>\n\n <transition enter-active-class=\"fade-enter-active\" leave-active-class=\"fade-leave-active\">\n <Layout v-if=\"ready\"></Layout>\n </transition>\n\n <LoadingWinBar></LoadingWinBar>\n <CheckYesNo></CheckYesNo>\n <CheckYes></CheckYes>\n\n <VeCrules></VeCrules>\n <VeCpemis></VeCpemis>\n <VeCgrups></VeCgrups>\n\n <VeGrupBlngUsers></VeGrupBlngUsers>\n <VePemiBlngGrups></VePemiBlngGrups>\n\n </div>\n</template>\n\n<script>\nimport get from 'lodash-es/get.js'\nimport cloneDeep from 'lodash-es/cloneDeep.js'\nimport isestr from 'wsemi/src/isestr.mjs'\nimport iseobj from 'wsemi/src/iseobj.mjs'\nimport isDev from 'wsemi/src/isDev.mjs'\nimport wui from 'w-ui-loginout/src/WUiLoginout.mjs'\nimport LoadingWinBar from './components/Common/LoadingWinBar.vue'\nimport CheckYesNo from './components/Common/CheckYesNo.vue'\nimport CheckYes from './components/Common/CheckYes.vue'\nimport LayoutState from './components/LayoutState.vue'\nimport Layout from './components/Layout.vue'\nimport VeCrules from './components/VeCrules.vue'\nimport VeCpemis from './components/VeCpemis.vue'\nimport VeCgrups from './components/VeCgrups.vue'\nimport VeGrupBlngUsers from './components/VeGrupBlngUsers.vue'\nimport VePemiBlngGrups from './components/VePemiBlngGrups.vue'\n\n\nexport default {\n components: {\n LoadingWinBar,\n CheckYesNo,\n CheckYes,\n LayoutState,\n Layout,\n VeCrules,\n VeCpemis,\n VeCgrups,\n VeGrupBlngUsers,\n VePemiBlngGrups,\n },\n data: function() {\n return {\n ll: null,\n }\n },\n beforeMount: function() {\n // console.log('methods beforeMount')\n\n let vo = this\n\n //setVo, 更換ui內vo, 才能使用廣播技術, 更換語系才能用廣播通知全部組件forceUpdate\n vo.$ui.setVo(vo)\n\n //setLang\n let lang = get(window, '___pmwperm___.language', '')\n vo.$ui.setLang(lang, 'app init') //初始化先讀取html內語系設定進行變更\n // console.log('lang', lang)\n\n function loginSuccess(data) {\n console.log('login success', cloneDeep(data.user))\n vo.$ui.updateConnState('csLogin')\n vo.$ui.updateUserToken(data.token)\n vo.$ui.updateUserSelf(data.user)\n }\n\n function loginError(data) {\n console.log('login error', cloneDeep(data))\n vo.$ui.updateConnState('csErrLogin')\n vo.$ui.updateUserToken('')\n let urlRedirect = get(window, '___pmwperm___.urlRedirect', '')\n if (!isestr(urlRedirect)) {\n console.log('urlRedirect', urlRedirect)\n throw new Error(`invalid urlRedirect`)\n }\n if (isDev()) {\n console.log('60s redirect to:', urlRedirect)\n setTimeout(() => {\n window.location.href = urlRedirect\n }, 60 * 1000)\n }\n else {\n window.location.href = urlRedirect\n }\n }\n\n //login\n console.log('login...')\n let ll = wui('wperm', {\n timeWaitAnimation: 2000,\n params: {},\n })\n ll.login({\n afterGetUser: null,\n afterLogin: null,\n loginSuccess,\n loginError,\n })\n vo.ll = ll\n\n },\n mounted: function() {\n let vo = this\n\n //set, 把目前vo儲存至window供外部非vue環境使用\n window.$vo = vo\n\n },\n computed: {\n\n ready: function() {\n //console.log('computed ready')\n\n let vo = this\n\n let connState = get(vo, `$store.state.connState`)\n let webInfor = get(vo, `$store.state.webInfor`)\n\n let b1 = connState === 'csLogin'\n let b2 = iseobj(webInfor)\n let b = b1 && b2\n\n return b\n },\n\n },\n methods: {\n\n resize: function(msg) {\n // console.log('methods resize', msg)\n\n let vo = this\n\n //syncHeight\n vo.$ui.syncHeight()\n\n },\n\n },\n}\n</script>\n\n<style>\nhtml,\nbody {\n font-family: '微軟正黑體', 'Microsoft JhengHei', 'MicrosoftJhengHeiRegular', 'Avenir', Helvetica, Arial, sans-serif;\n overflow-y: hidden;\n}\n\ndiv,\np,\nspan,\na,\npre,\ninput,\ntextarea,\nbutton {\n font-family: inherit;\n}\n\n.fade-enter-active {\n animation: go 1s;\n}\n\n.fade-leave-active {\n animation: back 1s;\n}\n\n@keyframes go {\n from { opacity: 0; }\n to {opacity: 1;}\n}\n\n@keyframes back {\n from { opacity: 1; }\n to { opacity: 0; }\n}\n\n</style>\n","import mod from \"-!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=0c8193c2\"\nimport script from \"./App.vue?vue&type=script&lang=js\"\nexport * from \"./App.vue?vue&type=script&lang=js\"\nimport style0 from \"./App.vue?vue&type=style&index=0&id=0c8193c2&prod&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","export const UpdateWebInfor = 'UpdateWebInfor'\r\nexport const UpdateLang = 'UpdateLang'\r\nexport const UpdateKpText = 'UpdateKpText'\r\nexport const UpdateConnState = 'UpdateConnState'\r\nexport const UpdateSyncState = 'UpdateSyncState'\r\nexport const UpdateLoading = 'UpdateLoading'\r\n// export const UpdateViewState = 'UpdateViewState'\r\nexport const UpdateTableData = 'UpdateTableData'\r\nexport const UpdateData = 'UpdateData'\r\nexport const UpdateHeightApp = 'UpdateHeightApp'\r\nexport const UpdateHeightAppEff = 'UpdateHeightAppEff'\r\nexport const UpdateHeightToolbar = 'UpdateHeightToolbar'\r\nexport const UpdateMenu = 'UpdateMenu'\r\nexport const UpdateUserToken = 'UpdateUserToken'\r\nexport const UpdateUserSelf = 'UpdateUserSelf'\r\n","import map from 'lodash-es/map.js'\r\nimport keys from 'lodash-es/keys.js'\r\nimport genIDSeq from 'wsemi/src/genIDSeq.mjs'\r\nimport dtmapping from 'wsemi/src/dtmapping.mjs'\r\nimport dtpick from 'wsemi/src/dtpick.mjs'\r\nimport nowms2str from 'wsemi/src/nowms2str.mjs'\r\n\r\n\r\nlet keyTable = 'grups'\r\nlet tableNameCht = '權限群組設定'\r\nlet tableNameEng = 'Permission groups'\r\n\r\n\r\nlet settings = {\r\n id: {\r\n pk: true,\r\n name: '主鍵',\r\n type: 'STRING',\r\n },\r\n order: {\r\n name: '順序',\r\n type: 'INTEGER',\r\n },\r\n name: {\r\n name: '名稱',\r\n type: 'STRING',\r\n },\r\n description: {\r\n name: '說明',\r\n type: 'TEXT',\r\n },\r\n from: {\r\n name: '來源', //供外部批次變更使用\r\n type: 'STRING',\r\n },\r\n cpemis: {\r\n name: '權限清單', //為json字串\r\n type: 'TEXT',\r\n },\r\n userId: {\r\n name: '創建使用者主鍵',\r\n type: 'STRING',\r\n },\r\n timeCreate: {\r\n name: '創建時間',\r\n type: 'STRING',\r\n },\r\n userIdUpdate: {\r\n name: '最新變更使用者主鍵',\r\n type: 'STRING',\r\n },\r\n timeUpdate: {\r\n name: '更新時間',\r\n type: 'STRING',\r\n },\r\n // isActive: {\r\n // name: '是否有效',\r\n // type: 'STRING',\r\n // },\r\n}\r\n\r\nlet funNew = (ndata = {}) => {\r\n let o = dtmapping(ndata, keys(settings))\r\n o.id = `${genIDSeq()}`\r\n o.userIdUpdate = o.userId\r\n o.timeCreate = nowms2str()\r\n o.userIdUpdate = o.userId\r\n o.timeUpdate = o.timeCreate\r\n // o.isActive = 'y'\r\n return o\r\n}\r\n\r\nlet funTest = () => {\r\n let rs = [\r\n\r\n ['權限群組M1', `\r\n {\r\n '權限P1': {\r\n 'mode': 'OR',\r\n 'isActive': 'y',\r\n },\r\n '權限P2': {\r\n 'mode': 'OR',\r\n 'isActive': 'y',\r\n },\r\n }\r\n `],\r\n ['權限群組M2', `\r\n {\r\n '權限P2': {\r\n 'mode': 'OR',\r\n 'isActive': 'y',\r\n },\r\n '權限P3': {\r\n 'mode': 'OR',\r\n 'isActive': 'y',\r\n },\r\n }\r\n `],\r\n ['權限群組M3', `\r\n {\r\n '權限P2': {\r\n 'mode': 'OR',\r\n 'isActive': 'y',\r\n },\r\n '權限P3': {\r\n 'mode': 'AND',\r\n 'isActive': 'y',\r\n },\r\n }\r\n `],\r\n ['權限群組M4', `\r\n {\r\n '權限P3': {\r\n 'mode': 'OR',\r\n 'isActive': 'y',\r\n },\r\n '權限P4': {\r\n 'mode': 'OR',\r\n 'isActive': 'y',\r\n },\r\n }\r\n `],\r\n\r\n ]\r\n rs = map(rs, ([name, cpemis], k) => {\r\n let v = funNew({\r\n userId: 'id-for-admin',\r\n order: k,\r\n name,\r\n description: `${name}的說明`,\r\n cpemis,\r\n })\r\n v.id = `id-for-${name}`\r\n v = dtpick(v, keys(settings))\r\n return v\r\n })\r\n console.log(`已產生: ${keyTable} 測試資料`, rs)\r\n return rs\r\n}\r\n\r\nlet tab = {\r\n keyTable,\r\n tableNameCht,\r\n tableNameEng,\r\n settings,\r\n funNew,\r\n funTest,\r\n}\r\n\r\n\r\nexport default tab\r\n\r\n","import map from 'lodash-es/map.js'\r\nimport keys from 'lodash-es/keys.js'\r\nimport genIDSeq from 'wsemi/src/genIDSeq.mjs'\r\nimport dtmapping from 'wsemi/src/dtmapping.mjs'\r\nimport dtpick from 'wsemi/src/dtpick.mjs'\r\nimport nowms2str from 'wsemi/src/nowms2str.mjs'\r\n\r\n\r\nlet keyTable = 'pemis'\r\nlet tableNameCht = '權限設定'\r\nlet tableNameEng = 'Permissions'\r\n\r\n\r\nlet settings = {\r\n id: {\r\n pk: true,\r\n name: '主鍵',\r\n type: 'STRING',\r\n },\r\n order: {\r\n name: '順序',\r\n type: 'INTEGER',\r\n },\r\n name: {\r\n name: '名稱',\r\n type: 'STRING',\r\n },\r\n description: {\r\n name: '說明',\r\n type: 'TEXT',\r\n },\r\n from: {\r\n name: '來源', //供外部批次變更使用\r\n type: 'STRING',\r\n },\r\n crules: {\r\n name: '管控對象清單', //為json字串\r\n type: 'TEXT',\r\n },\r\n userId: {\r\n name: '創建使用者主鍵',\r\n type: 'STRING',\r\n },\r\n timeCreate: {\r\n name: '創建時間',\r\n type: 'STRING',\r\n },\r\n userIdUpdate: {\r\n name: '最新變更使用者主鍵',\r\n type: 'STRING',\r\n },\r\n timeUpdate: {\r\n name: '更新時間',\r\n type: 'STRING',\r\n },\r\n // isActive: {\r\n // name: '是否有效',\r\n // type: 'STRING',\r\n // },\r\n}\r\n\r\nlet funNew = (ndata = {}) => {\r\n let o = dtmapping(ndata, keys(settings))\r\n o.id = `${genIDSeq()}`\r\n o.userIdUpdate = o.userId\r\n o.timeCreate = nowms2str()\r\n o.userIdUpdate = o.userId\r\n o.timeUpdate = o.timeCreate\r\n // o.isActive = 'y'\r\n return o\r\n}\r\n\r\nlet funTest = () => {\r\n let rs = [\r\n\r\n ['權限P1', `{ \"專案A/頁A/區塊A\": 'y', \"專案A/頁B/區塊A\": 'n', \"專案A/頁C\": 'n' }`],\r\n ['權限P2', `{ \"專案A/頁C\": 'y', \"專案B/頁A/區塊A\": 'y', \"專案B/頁A/區塊B\": 'y' }`],\r\n ['權限P3', `{ \"專案A/頁C\": 'y', \"專案B/頁A/區塊A\": 'n', \"專案B/頁A/區塊B\": 'y', \"專案B/頁A/區塊C\": 'y' }`],\r\n ['權限P4', `{ \"專案B/頁B/區塊A/待辦事項清單\": 'y', \"專案B/頁B/區塊B/顯示後台按鈕\": 'n' }`],\r\n\r\n ]\r\n rs = map(rs, ([name, crules], k) => {\r\n let v = funNew({\r\n userId: 'id-for-admin',\r\n order: k,\r\n name,\r\n description: `${name}的說明`,\r\n crules,\r\n })\r\n v.id = `id-for-${name}`\r\n v = dtpick(v, keys(settings))\r\n return v\r\n })\r\n console.log(`已產生: ${keyTable} 測試資料`, rs)\r\n return rs\r\n}\r\n\r\nlet tab = {\r\n keyTable,\r\n tableNameCht,\r\n tableNameEng,\r\n settings,\r\n funNew,\r\n funTest,\r\n}\r\n\r\n\r\nexport default tab\r\n\r\n","import map from 'lodash-es/map.js'\r\nimport keys from 'lodash-es/keys.js'\r\nimport genIDSeq from 'wsemi/src/genIDSeq.mjs'\r\nimport dtmapping from 'wsemi/src/dtmapping.mjs'\r\nimport dtpick from 'wsemi/src/dtpick.mjs'\r\nimport nowms2str from 'wsemi/src/nowms2str.mjs'\r\n\r\n\r\nlet keyTable = 'targets'\r\nlet tableNameCht = '管控對象'\r\nlet tableNameEng = 'Targets'\r\n\r\n\r\nlet settings = {\r\n id: {\r\n pk: true,\r\n name: '主鍵', //儲存對象路徑, 不同階層用句點「.」分開, 可用unicode\r\n type: 'STRING',\r\n },\r\n order: {\r\n name: '順序',\r\n type: 'INTEGER',\r\n },\r\n description: {\r\n name: '說明',\r\n type: 'TEXT',\r\n },\r\n from: {\r\n name: '來源', //供外部批次變更使用\r\n type: 'STRING',\r\n },\r\n userId: {\r\n name: '創建使用者主鍵',\r\n type: 'STRING',\r\n },\r\n timeCreate: {\r\n name: '創建時間',\r\n type: 'STRING',\r\n },\r\n userIdUpdate: {\r\n name: '最新變更使用者主鍵',\r\n type: 'STRING',\r\n },\r\n timeUpdate: {\r\n name: '更新時間',\r\n type: 'STRING',\r\n },\r\n // isActive: {\r\n // name: '是否有效',\r\n // type: 'STRING',\r\n // },\r\n}\r\n\r\nlet funNew = (ndata = {}) => {\r\n let o = dtmapping(ndata, keys(settings))\r\n o.id = `${genIDSeq()}`\r\n o.userIdUpdate = o.userId\r\n o.timeCreate = nowms2str()\r\n o.userIdUpdate = o.userId\r\n o.timeUpdate = o.timeCreate\r\n // o.isActive = 'y'\r\n return o\r\n}\r\n\r\nlet funTest = () => {\r\n let rs = [\r\n\r\n '專案A/頁A/區塊A',\r\n '專案A/頁A/區塊A/執行按鈕',\r\n '專案A/頁A/區塊A/分析按鈕',\r\n\r\n '專案A/頁B/區塊A',\r\n '專案A/頁B/區塊A/執行按鈕',\r\n '專案A/頁B/區塊A/分析按鈕',\r\n\r\n '專案A/頁B/區塊B/展開按鈕',\r\n '專案A/頁B/區塊B/下載按鈕',\r\n\r\n '專案A/頁C',\r\n\r\n '專案B/頁A/區塊A',\r\n '專案B/頁A/區塊A/顯示綜合報表',\r\n '專案B/頁A/區塊A/顯示當前數據',\r\n '專案B/頁A/區塊B',\r\n '專案B/頁A/區塊B/下載報表按鈕',\r\n '專案B/頁A/區塊B/下載數據按鈕',\r\n '專案B/頁A/區塊C',\r\n\r\n '專案B/頁B/區塊A',\r\n '專案B/頁B/區塊A/待辦事項清單',\r\n '專案B/頁B/區塊A/相關資源清單',\r\n '專案B/頁B/區塊B',\r\n '專案B/頁B/區塊B/顯示後台按鈕',\r\n '專案B/頁B/區塊B/轉跳主站按鈕',\r\n\r\n ]\r\n rs = map(rs, (key, k) => {\r\n let v = funNew({\r\n userId: 'id-for-admin',\r\n order: k,\r\n description: `${key}的說明`,\r\n })\r\n v.id = key\r\n v = dtpick(v, keys(settings))\r\n return v\r\n })\r\n console.log(`已產生: ${keyTable} 測試資料`, rs)\r\n return rs\r\n}\r\n\r\nlet tab = {\r\n keyTable,\r\n tableNameCht,\r\n tableNameEng,\r\n settings,\r\n funNew,\r\n funTest,\r\n}\r\n\r\n\r\nexport default tab\r\n\r\n","import map from 'lodash-es/map.js'\r\nimport keys from 'lodash-es/keys.js'\r\nimport genIDSeq from 'wsemi/src/genIDSeq.mjs'\r\nimport dtmapping from 'wsemi/src/dtmapping.mjs'\r\nimport dtpick from 'wsemi/src/dtpick.mjs'\r\nimport nowms2str from 'wsemi/src/nowms2str.mjs'\r\n\r\n\r\nlet keyTable = 'users'\r\nlet tableNameCht = '使用者'\r\nlet tableNameEng = 'Users'\r\n\r\n\r\nlet settings = {\r\n id: {\r\n pk: true,\r\n name: '主鍵',\r\n type: 'STRING',\r\n },\r\n order: {\r\n name: '順序',\r\n type: 'INTEGER',\r\n },\r\n name: {\r\n name: '姓名',\r\n type: 'STRING',\r\n },\r\n email: {\r\n name: '電子郵件',\r\n type: 'STRING',\r\n },\r\n description: {\r\n name: '描述',\r\n type: 'TEXT',\r\n },\r\n from: {\r\n name: '來源', //標注使用者來源, 亦供外部批次變更使用\r\n type: 'STRING',\r\n },\r\n cgrups: {\r\n name: '權限群組清單', //為json字串\r\n type: 'TEXT',\r\n },\r\n isAdmin: {\r\n name: '是否為系統管理員',\r\n type: 'STRING',\r\n },\r\n userId: {\r\n name: '創建使用者主鍵',\r\n type: 'STRING',\r\n },\r\n timeCreate: {\r\n name: '創建時間',\r\n type: 'STRING',\r\n },\r\n userIdUpdate: {\r\n name: '最新變更使用者主鍵',\r\n type: 'STRING',\r\n },\r\n timeUpdate: {\r\n name: '更新時間',\r\n type: 'STRING',\r\n },\r\n isActive: {\r\n name: '是否有效',\r\n type: 'STRING',\r\n },\r\n}\r\n\r\nlet funNew = (ndata = {}) => {\r\n let o = dtmapping(ndata, keys(settings))\r\n o.id = `${genIDSeq()}`\r\n o.isAdmin = 'n'\r\n o.userIdUpdate = o.userId\r\n o.timeCreate = nowms2str()\r\n o.userIdUpdate = o.userId\r\n o.timeUpdate = o.timeCreate\r\n o.isActive = 'y'\r\n return o\r\n}\r\n\r\nlet funTest = () => {\r\n let rs = [\r\n\r\n ['peter', 'teamA', `\r\n { \r\n '權限群組M1': {\r\n 'mode': 'OR',\r\n 'isActive': 'y',\r\n }\r\n }\r\n `, 'n'],\r\n ['mary', 'teamA', `\r\n { \r\n '權限群組M2': {\r\n 'mode': 'OR',\r\n 'isActive': 'y',\r\n }\r\n }\r\n `, 'n'],\r\n ['john', 'teamA', `\r\n { \r\n '權限群組M3': {\r\n 'mode': 'OR',\r\n 'isActive': 'y',\r\n }\r\n }\r\n `, 'n'],\r\n ['admin', '', `\r\n { \r\n '權限群組M4': {\r\n 'mode': 'OR',\r\n 'isActive': 'y',\r\n }\r\n }\r\n `, 'y'],\r\n\r\n ]\r\n rs = map(rs, ([name, from, cgrups, isAdmin], k) => {\r\n let v = funNew({\r\n userId: 'id-for-admin',\r\n order: k,\r\n name,\r\n email: `${name}@example.com`,\r\n from,\r\n cgrups,\r\n isAdmin,\r\n })\r\n v.id = `id-for-${name}`\r\n if (name === 'john') {\r\n v.email = `${v.email};john@test.com`\r\n }\r\n v.isAdmin = isAdmin\r\n v = dtpick(v, keys(settings))\r\n return v\r\n })\r\n console.log(`已產生: ${keyTable} 測試資料`, rs)\r\n return rs\r\n}\r\n\r\nlet tab = {\r\n keyTable,\r\n tableNameCht,\r\n tableNameEng,\r\n settings,\r\n funNew,\r\n funTest,\r\n}\r\n\r\n\r\nexport default tab\r\n\r\n","import grups from './tables/grups.mjs'\nimport pemis from './tables/pemis.mjs'\nimport targets from './tables/targets.mjs'\nimport users from './tables/users.mjs'\nimport build from 'w-data-collector/src/build.mjs'\n\n\nlet cs = {\n grups,\n pemis,\n targets,\n users,\n}\n\n//ds\nlet ds = {}\nfor (let k in cs) {\n ds[k] = build(cs[k], { useCreateStorage: false })\n}\n\n\nexport default ds\n","import each from 'lodash-es/each.js'\r\nimport set from 'lodash-es/set.js'\r\nimport * as types from './types.mjs'\r\nimport ds from '../schema/index.mjs'\r\n\r\n\r\n//state, 全域狀態\r\nlet state = {\r\n\r\n hostname: `${window.location.origin}`,\r\n webInfor: {},\r\n connState: 'csIng', //'csIng', 'csLogin', 'csLogout', 'csErrConn', 'csErrLogin'\r\n syncState: false,\r\n // viewState: 'lists',\r\n loading: false,\r\n settings: {\r\n leftDrawerWidth: 200,\r\n },\r\n\r\n heightApp: 0,\r\n heightAppEff: 0,\r\n heightToolbar: 60,\r\n\r\n menu: {}, //初始值需為物件, 否則LayoutContent會取menu.key出錯\r\n\r\n userToken: '',\r\n userSelf: {},\r\n\r\n lang: 'cht', //'eng', 'cht'\r\n kpText: {}, //一定要放在vuex內, 否則無法用broadcast驅動變更語系文字\r\n\r\n}\r\n\r\n//添加各資料表\r\neach(ds, (v, k) => {\r\n state[k] = null //初始化null\r\n})\r\n\r\n//儲存至state\r\nexport { state }\r\n\r\n//mutations, 同步執行\r\nexport let mutations = {\r\n\r\n [types.UpdateWebInfor] (state, webInfor) {\r\n state.webInfor = webInfor\r\n },\r\n\r\n [types.UpdateLang] (state, lang) {\r\n state.lang = lang\r\n },\r\n\r\n [types.UpdateKpText] (state, kpText) {\r\n state.kpText = kpText\r\n },\r\n\r\n [types.UpdateConnState] (state, connState) {\r\n state.connState = connState\r\n },\r\n\r\n [types.UpdateSyncState] (state, syncState) {\r\n state.syncState = syncState\r\n },\r\n\r\n [types.UpdateLoading] (state, loading) {\r\n state.loading = loading\r\n },\r\n\r\n // [types.UpdateViewState] (state, viewState) {\r\n // state.viewState = viewState\r\n // },\r\n\r\n [types.UpdateTableData] (state, msg) {\r\n state[msg.tableName] = msg.data\r\n },\r\n\r\n [types.UpdateData] (state, msg) {\r\n //msg.path內為存取路徑, 需使用set處理\r\n // console.log('UpdateData msg', msg)\r\n set(state, msg.path, msg.data)\r\n },\r\n\r\n [types.UpdateHeightApp] (state, heightApp) {\r\n state.heightApp = heightApp\r\n },\r\n\r\n [types.UpdateHeightAppEff] (state, heightAppEff) {\r\n state.heightAppEff = heightAppEff\r\n },\r\n\r\n [types.UpdateHeightToolbar] (state, heightToolbar) {\r\n state.heightToolbar = heightToolbar\r\n },\r\n\r\n [types.UpdateMenu] (state, menu) {\r\n state.menu = menu\r\n },\r\n\r\n [types.UpdateUserToken] (state, userToken) {\r\n state.userToken = userToken\r\n },\r\n\r\n [types.UpdateUserSelf] (state, userSelf) {\r\n state.userSelf = userSelf\r\n },\r\n\r\n}\r\n\r\n","import Vue from 'vue'\r\nimport Vuex from 'vuex'\r\nimport { state, mutations } from './mutations.mjs'\r\nimport * as getters from './getters.mjs'\r\nimport * as actions from './actions.mjs'\r\nimport * as types from './types.mjs'\r\n\r\n\r\n//use\r\nVue.use(Vuex)\r\n\r\nlet st = new Vuex.Store({\r\n state,\r\n mutations,\r\n getters,\r\n actions,\r\n strict: true, //嚴格模式禁止修改state\r\n})\r\n\r\n//save to $store\r\nst.types = types\r\nVue.prototype.$store = st\r\n// console.log('$store', st)\r\n\r\nexport default st\r\n","\r\n\r\nlet kpLang = {\r\n\r\n csIng: {\r\n eng: 'Connecting...',\r\n cht: '連線中...',\r\n },\r\n csLogin: {\r\n eng: 'Logged in',\r\n cht: '已登入',\r\n },\r\n csLogout: {\r\n eng: 'Logged out',\r\n cht: '已登出',\r\n },\r\n csErrConn: {\r\n eng: 'Unable to connect',\r\n cht: '無法連線',\r\n },\r\n csErrLogin: {\r\n eng: 'Login denied',\r\n cht: '拒絕登入',\r\n },\r\n\r\n aggridLanguage: {\r\n eng: 'en',\r\n cht: 'zh-tw',\r\n },\r\n\r\n systemMessage: {\r\n eng: 'System message',\r\n cht: '系統確認訊息',\r\n },\r\n ok: {\r\n eng: 'OK',\r\n cht: '確認',\r\n },\r\n no: {\r\n eng: 'No',\r\n cht: '取消',\r\n },\r\n yes: {\r\n eng: 'Yes',\r\n cht: '確定',\r\n },\r\n\r\n empty: {\r\n eng: 'Empty',\r\n cht: '無',\r\n },\r\n waitingData: {\r\n eng: 'Waiting data...',\r\n cht: '等待數據中...',\r\n },\r\n\r\n isEditabled: {\r\n eng: 'Editable',\r\n cht: '是否編輯',\r\n },\r\n saveChanges: {\r\n eng: `Save changes`,\r\n cht: `儲存變更`,\r\n },\r\n id: {\r\n eng: `Id`,\r\n cht: `主鍵`,\r\n },\r\n from: {\r\n eng: `From`,\r\n cht: `來源`,\r\n },\r\n save: {\r\n eng: `Save`,\r\n cht: `儲存`,\r\n },\r\n close: {\r\n eng: `Close`,\r\n cht: `關閉`,\r\n },\r\n delete: {\r\n eng: `Delete`,\r\n cht: `刪除`,\r\n },\r\n cancel: {\r\n eng: `Cancel`,\r\n cht: `取消`,\r\n },\r\n screenFull: {\r\n eng: `Max size`,\r\n cht: `最大化尺寸`,\r\n },\r\n screenNormal: {\r\n eng: `Normal size`,\r\n cht: `預設尺寸`,\r\n },\r\n checkAllYes: {\r\n eng: `Check all`,\r\n cht: `全選使用`,\r\n },\r\n checkAllNo: {\r\n eng: `Uncheck all`,\r\n cht: `全不選使用`,\r\n },\r\n checkAllInv: {\r\n eng: `Reverse all`,\r\n cht: `全反選使用`,\r\n },\r\n operMode: {\r\n eng: `Enable`,\r\n cht: `是否使用`,\r\n },\r\n operPemiEnable: {\r\n eng: `Operator`,\r\n cht: `合併權限模式`,\r\n },\r\n operGrupEnable: {\r\n eng: `Operator`,\r\n cht: `合併權限群組模式`,\r\n },\r\n\r\n processing: {\r\n eng: `Processing...`,\r\n cht: `處理中請稍後...`,\r\n },\r\n anUnexpectedErrorOccurred: {\r\n eng: `An unexpected error occurred, please contact the administrator`,\r\n cht: `發生非預期錯誤,請洽管理員`,\r\n },\r\n unknow: {\r\n eng: `Unknow`,\r\n cht: `未知`,\r\n },\r\n\r\n username: {\r\n eng: `Username`,\r\n cht: `使用者姓名`,\r\n },\r\n email: {\r\n eng: `Email`,\r\n cht: `電子郵件`,\r\n },\r\n name: {\r\n eng: `Name`,\r\n cht: `名稱`,\r\n },\r\n description: {\r\n eng: `Description`,\r\n cht: `說明`,\r\n },\r\n // noDescription: {\r\n // eng: `No description`,\r\n // cht: `無說明`,\r\n // },\r\n modeEdit: {\r\n eng: `Edit mode`,\r\n cht: `編輯模式`,\r\n },\r\n showTabCols: {\r\n eng: `Show columns`,\r\n cht: `顯示欄位`,\r\n },\r\n\r\n belongUsers: {\r\n eng: `Use users`,\r\n cht: `管控所屬使用者`,\r\n },\r\n belongGrups: {\r\n eng: `Use groups`,\r\n cht: `所屬權限群組`,\r\n },\r\n belongPemis: {\r\n eng: `Use permissions`,\r\n cht: `所屬權限`,\r\n },\r\n belongGrupsNames: {\r\n eng: `Use permission groups`,\r\n cht: `所屬權限群組名稱`,\r\n },\r\n belongPemisNames: {\r\n eng: `Use permissions`,\r\n cht: `所屬權限名稱`,\r\n },\r\n\r\n isAdmin: {\r\n eng: `Administrator`,\r\n cht: `是否為系統管理員`,\r\n },\r\n isActive: {\r\n eng: `Active`,\r\n cht: `是否有效`,\r\n },\r\n\r\n errInNames: {\r\n eng: `Name errors`,\r\n cht: `名稱出現錯誤待修復`,\r\n },\r\n errInEmails: {\r\n eng: `Email errors`,\r\n cht: `Email出現錯誤待修復`,\r\n },\r\n\r\n menuTreeShow: {\r\n eng: `Show menu`,\r\n cht: `顯示選單`,\r\n },\r\n menuTreeHide: {\r\n eng: `Hide menu`,\r\n cht: `隱藏選單`,\r\n },\r\n\r\n mmTargets: {\r\n eng: `Targets`,\r\n cht: `管理對象`,\r\n },\r\n mmTargetsMsg: {\r\n eng: `Targets generally refer to entities such as pages, data, etc., and can also include features or services.`,\r\n cht: `對象泛指實體的頁面、數據等,亦可為的功能或服務。`,\r\n },\r\n\r\n mmPemis: {\r\n eng: `Permissions`,\r\n cht: `管理權限`,\r\n },\r\n mmPemisMsg: {\r\n eng: `Permissions are primarily used to set rules for enabling or disabling various objects.`,\r\n cht: `權限主要為用來設定各種對象之使用或禁用規則。`,\r\n },\r\n\r\n mmGrups: {\r\n eng: `Permission groups`,\r\n cht: `管理權限群組`,\r\n },\r\n mmGrupsMsg: {\r\n eng: `Permission groups are primarily used to configure combinations of different permissions.`,\r\n cht: `權限群組主要為用來設定組合各種權限。`,\r\n },\r\n\r\n mmUsers: {\r\n eng: `Users`,\r\n cht: `管理使用者`,\r\n },\r\n mmUsersMsg: {\r\n eng: `Users are primarily for providing or extending user information and can be configured with combinations of various permission groups.`,\r\n cht: `使用者主要為提供或擴充使用者資訊,並可設定組合各種權限群組。`,\r\n },\r\n\r\n targetId: {\r\n eng: `Target`,\r\n cht: `對象名稱`,\r\n },\r\n targetIdEmpty: {\r\n eng: `Invalid name`,\r\n cht: `尚未給予有效對象名稱`,\r\n },\r\n targetIdDuplicate: {\r\n eng: `Duplicate target`,\r\n cht: `對象名稱出現重複`,\r\n },\r\n targetAddEmpty: {\r\n eng: `No target`,\r\n cht: `尚未新增管理資料`,\r\n },\r\n targetAdd: {\r\n eng: `Add target`,\r\n cht: `新增對象`,\r\n },\r\n targetAddNameNew: {\r\n eng: `New target`,\r\n cht: `新對象`,\r\n },\r\n targetAddIdNew: {\r\n eng: `Waiting generation`,\r\n cht: `待自動給予`,\r\n },\r\n targetCopy: {\r\n eng: `Copy target`,\r\n cht: `複製對象`,\r\n },\r\n targetCopyNameNew: {\r\n eng: `copy`,\r\n cht: `複製`,\r\n },\r\n targetDeleteCheckTargets: {\r\n eng: `Delete target(s)`,\r\n cht: `刪除勾選對象`,\r\n },\r\n targetEnable: {\r\n eng: `Enable`,\r\n cht: `是否使用`,\r\n },\r\n targetClearTargetsFail: {\r\n eng: `Failed to clear existing targets`,\r\n cht: `清除既有對象數據失敗`,\r\n },\r\n targetSaveTargetsFail: {\r\n eng: `Failed to save targets`,\r\n cht: `儲存對象數據失敗`,\r\n },\r\n targetSaveTargetsSuccess: {\r\n eng: `Save targets successfully`,\r\n cht: `儲存對象數據成功`,\r\n },\r\n\r\n pemiName: {\r\n eng: `Name of permission`,\r\n cht: `權限名稱`,\r\n },\r\n pemiNameEmpty: {\r\n eng: `Invalid name of permission`,\r\n cht: `尚未給予有效權限名稱`,\r\n },\r\n pemiNameDuplicate: {\r\n eng: `Duplicate name of permission`,\r\n cht: `權限名稱出現重複`,\r\n },\r\n pemiAddEmpty: {\r\n eng: `No permission`,\r\n cht: `尚未新增權限資料`,\r\n },\r\n pemiAdd: {\r\n eng: `Add permission`,\r\n cht: `新增權限`,\r\n },\r\n pemiAddNameNew: {\r\n eng: `New permission`,\r\n cht: `新權限`,\r\n },\r\n pemiAddIdNew: {\r\n eng: `Waiting generation`,\r\n cht: `待自動給予`,\r\n },\r\n pemiCopy: {\r\n eng: `Copy permission`,\r\n cht: `複製權限`,\r\n },\r\n pemiCopyNameNew: {\r\n eng: `copy`,\r\n cht: `複製`,\r\n },\r\n pemiDeleteCheckPemis: {\r\n eng: `Delete permission(s)`,\r\n cht: `刪除勾選權限`,\r\n },\r\n pemiCrules: {\r\n eng: `Rules of permission`,\r\n cht: `管控對象`,\r\n },\r\n pemiEditBlngGrupsNoPemiId: {\r\n eng: `Can not find the id of permission`,\r\n cht: `無法找到權限Id`,\r\n },\r\n pemiEditBlngGrupsNoPemiData: {\r\n eng: `Can not find the data of permission`,\r\n cht: `無法找到權限資料`,\r\n },\r\n pemiEditCrules: {\r\n eng: `Edit rules of permission`,\r\n cht: `編輯使用對象`,\r\n },\r\n pemiEditCrulesForDisplay: {\r\n eng: `Rules of permission`,\r\n cht: `展示使用對象`,\r\n },\r\n // pemiEditCrulesSimple: {\r\n // eng: `Edit rules`,\r\n // cht: `編輯對象`,\r\n // },\r\n pemiEditCrulesNoPemiId: {\r\n eng: `Can not find the id of permission`,\r\n cht: `無法找到權限Id`,\r\n },\r\n pemiEditCrulesNoPemiData: {\r\n eng: `Can not find the data of permission`,\r\n cht: `無法找到權限資料`,\r\n },\r\n pemiRnderCrulesNoRule: {\r\n eng: `No rule`,\r\n cht: `無使用任何對象`,\r\n },\r\n pemiRnderCrulesHasNRule: {\r\n eng: `Has {n} rule(s){nms}`,\r\n cht: `使用共 {n} 項對象{nms}`,\r\n },\r\n pemiClearPemisFail: {\r\n eng: `Failed to clear existing permissions`,\r\n cht: `清除既有權限數據失敗`,\r\n },\r\n pemiSavePemisFail: {\r\n eng: `Failed to save permissions`,\r\n cht: `儲存權限數據失敗`,\r\n },\r\n pemiSavePemisSuccess: {\r\n eng: `Save permissions successfully`,\r\n cht: `儲存權限數據成功`,\r\n },\r\n\r\n pemiBlngEditGrups: {\r\n eng: `Edit permission groups`,\r\n cht: `編輯所屬權限群組`,\r\n },\r\n pemiBlngEditGrupsForDisplay: {\r\n eng: `Permission groups`,\r\n cht: `展示所屬權限群組`,\r\n },\r\n pemiBlngRnderNoGrup: {\r\n eng: `No users`,\r\n cht: `無所屬權限群組`,\r\n },\r\n pemiBlngRnderGrups: {\r\n eng: `Has {n} permission group(s){nms}`,\r\n cht: `共被 {n} 個權限群組{nms}使用`,\r\n },\r\n pemiBlngPemiNow: {\r\n eng: `Now permission`,\r\n cht: `目前權限`,\r\n },\r\n pemiBlngEditNoName: {\r\n eng: `Can not find the name of permission`,\r\n cht: `無法找到權限名稱`,\r\n },\r\n pemiBlngEditNoPemi: {\r\n eng: `Can not find the data of permission`,\r\n cht: `無法找到權限資料`,\r\n },\r\n pemiBlngDeleteCheckPemis: {\r\n eng: `Delete permission(s)`,\r\n cht: `刪除勾選權限`,\r\n },\r\n\r\n cruleEditNoTargetId: {\r\n eng: `Can not find the id of target`,\r\n cht: `無法找到對象Id`,\r\n },\r\n cruleEditNoTargetData: {\r\n eng: `Can not find the data of target`,\r\n cht: `無法找到對象資料`,\r\n },\r\n cruleDeleteCheckTargets: {\r\n eng: `Delete target(s)`,\r\n cht: `刪除勾選對象`,\r\n },\r\n\r\n grupName: {\r\n eng: `Name of permission group`,\r\n cht: `權限群組名稱`,\r\n },\r\n grupNameEmpty: {\r\n eng: `Invalid name of permission group`,\r\n cht: `尚未給予有效權限群組名稱`,\r\n },\r\n grupNameDuplicate: {\r\n eng: `Duplicate name of permission group`,\r\n cht: `權限群組名稱出現重複`,\r\n },\r\n grupAddEmpty: {\r\n eng: `No permission group`,\r\n cht: `尚未新增權限群組資料`,\r\n },\r\n grupAdd: {\r\n eng: `Add permission group`,\r\n cht: `新增權限群組`,\r\n },\r\n grupAddNameNew: {\r\n eng: `New permission group`,\r\n cht: `新權限群組`,\r\n },\r\n grupAddIdNew: {\r\n eng: `Waiting generation`,\r\n cht: `待自動給予`,\r\n },\r\n grupCopy: {\r\n eng: `Copy permission group`,\r\n cht: `複製權限群組`,\r\n },\r\n grupCopyNameNew: {\r\n eng: `copy`,\r\n cht: `複製`,\r\n },\r\n grupDeleteCheckGrups: {\r\n eng: `Delete permission group(s)`,\r\n cht: `刪除勾選權限群組`,\r\n },\r\n grupCpemis: {\r\n eng: `Permissions`,\r\n cht: `管控使用權限`,\r\n },\r\n grupEditBlngNoGrupId: {\r\n eng: `Can not find the id of permission group`,\r\n cht: `無法找到權限群組Id`,\r\n },\r\n grupEditBlngNoGrupData: {\r\n eng: `Can not find the data of permission group`,\r\n cht: `無法找到權限群組資料`,\r\n },\r\n grupEditCpemis: {\r\n eng: `Edit list of permission group`,\r\n cht: `編輯使用權限`,\r\n },\r\n grupEditCpemisForDisplay: {\r\n eng: `List of permission group`,\r\n cht: `展示使用權限`,\r\n },\r\n grupRnderCpemisNoPermission: {\r\n eng: `No permission`,\r\n cht: `無使用任何權限`,\r\n },\r\n grupRnderCpemisHasNPermissions: {\r\n eng: `Has {n} permission(s){nms}`,\r\n cht: `使用 {n} 項權限{nms}`,\r\n },\r\n grupClearGrupsFail: {\r\n eng: `Failed to clear existing permission groups`,\r\n cht: `清除既有權限群組數據失敗`,\r\n },\r\n grupSaveGrupsEmpty: {\r\n eng: `No user`,\r\n cht: `未有變更權限群組資料`,\r\n },\r\n grupSaveGrupsFail: {\r\n eng: `Failed to save permission groups`,\r\n cht: `儲存權限群組數據失敗`,\r\n },\r\n grupSaveGrupsSuccess: {\r\n eng: `Save permission groups successfully`,\r\n cht: `儲存權限群組數據成功`,\r\n },\r\n\r\n grupBlngEditUsers: {\r\n eng: `Edit permission group of users`,\r\n cht: `編輯所屬使用者`,\r\n },\r\n grupBlngEditUsersForDisplay: {\r\n eng: `Permission group of users`,\r\n cht: `展示所屬使用者`,\r\n },\r\n grupBlngRnderNoUser: {\r\n eng: `No users`,\r\n cht: `無所屬使用者`,\r\n },\r\n grupBlngRnderUsers: {\r\n eng: `Has {n} user(s){nms}`,\r\n cht: `共被 {n} 位使用者{nms}使用`,\r\n },\r\n grupBlngGrupNow: {\r\n eng: `Now permission group`,\r\n cht: `目前權限群組`,\r\n },\r\n grupBlngEditNoGrupName: {\r\n eng: `Can not find the name of permission group`,\r\n cht: `無法找到權限群組名稱`,\r\n },\r\n grupBlngEditNoGrupData: {\r\n eng: `Can not find the data of permission group`,\r\n cht: `無法找到權限群組資料`,\r\n },\r\n grupBlngDeleteCheckGrups: {\r\n eng: `Delete permission group(s)`,\r\n cht: `刪除勾選權限群組`,\r\n },\r\n\r\n cpemiEditNoName: {\r\n eng: `Can not find the name of target`,\r\n cht: `無法找到對象名稱`,\r\n },\r\n cpemiEditNoTarget: {\r\n eng: `Can not find the data of target`,\r\n cht: `無法找到對象資料`,\r\n },\r\n cpemiDeleteCheckTargets: {\r\n eng: `Delete targets(s)`,\r\n cht: `刪除勾選對象`,\r\n },\r\n\r\n userName: {\r\n eng: `Name of user`,\r\n cht: `使用者名稱`,\r\n },\r\n userNameEmpty: {\r\n eng: `Invalid name of user`,\r\n cht: `尚未給予有效使用者名稱`,\r\n },\r\n userNameDuplicate: {\r\n eng: `Duplicate name of user`,\r\n cht: `使用者名稱出現重複`,\r\n },\r\n userEmailEmpty: {\r\n eng: `Empty email of user`,\r\n cht: `尚未給予使用者Email`,\r\n },\r\n userEmailError: {\r\n eng: `Invalid email of user`,\r\n cht: `使用者Email格式錯誤`,\r\n },\r\n userEmailDuplicate: {\r\n eng: `Duplicate email of user`,\r\n cht: `使用者Email出現重複`,\r\n },\r\n userAddEmpty: {\r\n eng: `No user`,\r\n cht: `尚未新增使用者資料`,\r\n },\r\n userAdd: {\r\n eng: `Add user`,\r\n cht: `新增使用者`,\r\n },\r\n userAddNameNew: {\r\n eng: `New user`,\r\n cht: `新使用者`,\r\n },\r\n userAddIdNew: {\r\n eng: `Waiting generation`,\r\n cht: `待自動給予`,\r\n },\r\n userCopy: {\r\n eng: `Copy user`,\r\n cht: `複製使用者`,\r\n },\r\n userCopyNameNew: {\r\n eng: `copy`,\r\n cht: `複製`,\r\n },\r\n userDeleteCheckUsers: {\r\n eng: `Delete user(s)`,\r\n cht: `刪除勾選使用者`,\r\n },\r\n userCgrups: {\r\n eng: `Permission groups`,\r\n cht: `管控使用權限群組`,\r\n },\r\n userEditCgrups: {\r\n eng: `Edit list of user`,\r\n cht: `編輯使用權限群組`,\r\n },\r\n userEditCgrupsForDisplay: {\r\n eng: `Edit list of user`,\r\n cht: `展示使用權限群組`,\r\n },\r\n userEditCgrupsNoUserId: {\r\n eng: `Can not find the id of user`,\r\n cht: `無法找到使用者Id`,\r\n },\r\n userEditCgrupsNoUserData: {\r\n eng: `Can not find the data of user`,\r\n cht: `無法找到使用者資料`,\r\n },\r\n // userClearUsersFail: {\r\n // eng: `Failed to clear existing users`,\r\n // cht: `清除既有使用者數據失敗`,\r\n // },\r\n userSaveUsersEmpty: {\r\n eng: `No user`,\r\n cht: `未有變更使用者資料`,\r\n },\r\n userSaveUsersFail: {\r\n eng: `Failed to save users`,\r\n cht: `儲存使用者數據失敗`,\r\n },\r\n userSaveUsersSuccess: {\r\n eng: `Save users successfully`,\r\n cht: `儲存使用者數據成功`,\r\n },\r\n userEditNoUserId: {\r\n eng: `Can not find the id of user`,\r\n cht: `無法找到使用者Id`,\r\n },\r\n userEditNoUserData: {\r\n eng: `Can not find the data of user`,\r\n cht: `無法找到使用者數據`,\r\n },\r\n userRnderCgrupsNoGroup: {\r\n eng: `No permission group`,\r\n cht: `無使用任何權限群組`,\r\n },\r\n userRnderCgrupsHasNGroups: {\r\n eng: `Has {n} permission group(s){nms}`,\r\n cht: `使用 {n} 項權限群組{nms}`,\r\n },\r\n\r\n cgrupEditNoName: {\r\n eng: `Can not find the name of permission`,\r\n cht: `無法找到權限名稱`,\r\n },\r\n cgrupEditNoPemi: {\r\n eng: `Can not find the data of permission`,\r\n cht: `無法找到權限資料`,\r\n },\r\n cgrupDeleteCheckPemis: {\r\n eng: `Delete permission(s)`,\r\n cht: `刪除勾選權限`,\r\n },\r\n\r\n allDefaults: {\r\n eng: `All defaults`,\r\n cht: `全部項目預設值`,\r\n },\r\n show: {\r\n eng: `Show`,\r\n cht: `顯示`,\r\n },\r\n active: {\r\n eng: `Active`,\r\n cht: `啟用`,\r\n },\r\n showChildren: {\r\n eng: `Show children`,\r\n cht: `所屬顯示`,\r\n },\r\n hideChildren: {\r\n eng: `Hide children`,\r\n cht: `所屬不顯示`,\r\n },\r\n activateChildren: {\r\n eng: `Activate children`,\r\n cht: `所屬啟用`,\r\n },\r\n deactivateChildren: {\r\n eng: `Deactivate children`,\r\n cht: `所屬不啟用`,\r\n },\r\n isUsernameEmpty: {\r\n eng: `Username is empty`,\r\n cht: `使用者名稱不得為空`,\r\n },\r\n failedToSaveUser: {\r\n eng: `Failed to save the user`,\r\n cht: `變更使用者失敗`,\r\n },\r\n successfulToSaveUser: {\r\n eng: `Save the user successfully`,\r\n cht: `變更使用者成功`,\r\n },\r\n\r\n userId: {\r\n eng: `ID of the created user`,\r\n cht: '創建使用者主鍵',\r\n },\r\n timeCreate: {\r\n eng: `Created time`,\r\n cht: '創建時間',\r\n },\r\n userIdUpdate: {\r\n eng: `ID of the updated user`,\r\n cht: '最新變更使用者主鍵',\r\n },\r\n timeUpdate: {\r\n eng: `Updated time`,\r\n cht: '更新時間',\r\n },\r\n\r\n}\r\n\r\n\r\nexport default kpLang\r\n","import Vue from 'vue'\r\nimport min from 'lodash-es/min.js'\r\nimport size from 'lodash-es/size.js'\r\nimport take from 'lodash-es/take.js'\r\nimport isEqual from 'lodash-es/isEqual.js'\r\nimport uniq from 'lodash-es/uniq.js'\r\nimport set from 'lodash-es/set.js'\r\nimport get from 'lodash-es/get.js'\r\nimport each from 'lodash-es/each.js'\r\nimport map from 'lodash-es/map.js'\r\nimport filter from 'lodash-es/filter.js'\r\nimport last from 'lodash-es/last.js'\r\nimport split from 'lodash-es/split.js'\r\nimport join from 'lodash-es/join.js'\r\nimport drop from 'lodash-es/drop.js'\r\nimport dropRight from 'lodash-es/dropRight.js'\r\nimport groupBy from 'lodash-es/groupBy.js'\r\nimport sortBy from 'lodash-es/sortBy.js'\r\nimport cloneDeep from 'lodash-es/cloneDeep.js'\r\nimport cint from 'wsemi/src/cint.mjs'\r\nimport delay from 'wsemi/src/delay.mjs'\r\nimport isarr from 'wsemi/src/isarr.mjs'\r\nimport isestr from 'wsemi/src/isestr.mjs'\r\nimport isfun from 'wsemi/src/isfun.mjs'\r\nimport iseobj from 'wsemi/src/iseobj.mjs'\r\nimport isearr from 'wsemi/src/isearr.mjs'\r\nimport isEle from 'wsemi/src/isEle.mjs'\r\nimport strleft from 'wsemi/src/strleft.mjs'\r\nimport strdelleft from 'wsemi/src/strdelleft.mjs'\r\nimport sep from 'wsemi/src/sep.mjs'\r\nimport aes2str from 'wsemi/src/aes2str.mjs'\r\nimport str2aes from 'wsemi/src/str2aes.mjs'\r\nimport haskey from 'wsemi/src/haskey.mjs'\r\nimport genPm from 'wsemi/src/genPm.mjs'\r\nimport pmSeries from 'wsemi/src/pmSeries.mjs'\r\nimport waitFun from 'wsemi/src/waitFun.mjs'\r\nimport browserView from 'wsemi/src/browserView.mjs'\r\nimport arrHas from 'wsemi/src/arrHas.mjs'\r\nimport arrSort from 'wsemi/src/arrSort.mjs'\r\nimport arrInsert from 'wsemi/src/arrInsert.mjs'\r\nimport replace from 'wsemi/src/replace.mjs'\r\nimport timemsTZ2past from 'wsemi/src/timemsTZ2past.mjs'\r\nimport convertToTree from 'wsemi/src/convertToTree.mjs'\r\n// import WUiDwload from 'w-ui-dwload/src/WUiDwload.mjs'\r\nimport kpLang from './mLang.mjs'\r\n\r\n\r\nlet vo = Vue.prototype\r\n\r\n\r\nfunction setVo(vObj) {\r\n vo = vObj\r\n}\r\n\r\n\r\nfunction updateConnState(connState) {\r\n vo.$store.commit(vo.$store.types.UpdateConnState, connState)\r\n}\r\n\r\n\r\nfunction updateLoading(loading) {\r\n vo.$store.commit(vo.$store.types.UpdateLoading, loading)\r\n}\r\n\r\n\r\n// function updateViewState(viewState) {\r\n// vo.$store.commit(vo.$store.types.UpdateViewState, viewState)\r\n// }\r\n\r\n\r\nfunction updateUserToken(userToken) {\r\n vo.$store.commit(vo.$store.types.UpdateUserToken, userToken)\r\n}\r\n\r\n\r\nfunction updateUserSelf(userSelf) {\r\n vo.$store.commit(vo.$store.types.UpdateUserSelf, userSelf)\r\n}\r\n\r\n\r\nfunction forceUpdate() {\r\n // console.log('forceUpdate')\r\n\r\n function broadcast(chs) {\r\n each(chs, (v) => {\r\n // console.log(v.$el)\r\n v.$forceUpdate()\r\n if (v.$children) {\r\n broadcast(v.$children)\r\n }\r\n })\r\n }\r\n\r\n //broadcast, 注意此處需使用更換ui內vo為mounted後的vo, 也就是含元素, 才能使用廣播技術\r\n broadcast(vo.$children)\r\n\r\n}\r\n\r\n\r\nfunction validLang(lang) {\r\n if (lang !== 'eng' && lang !== 'cht') {\r\n // console.log(`invalid lang[${lang}]`)\r\n lang = 'eng'\r\n }\r\n return lang\r\n}\r\n\r\n\r\nfunction getLang() {\r\n let lang = ''\r\n\r\n //from window\r\n if (!isestr(lang)) {\r\n let _lang = get(window, '___pmwperm___.language', '')\r\n // console.log('_lang(from window)', _lang)\r\n if (isestr(_lang)) {\r\n lang = validLang(_lang) //有可能取到未取代前模板符號\r\n }\r\n }\r\n\r\n //from store\r\n if (!isestr(lang)) {\r\n let _lang = get(vo, '$store.state.lang', '')\r\n // console.log('_lang(from store)', _lang)\r\n if (isestr(_lang)) {\r\n lang = validLang(_lang) //有可能給予非預期lang\r\n }\r\n }\r\n\r\n //return\r\n if (!isestr(lang)) {\r\n return 'eng'\r\n }\r\n return lang\r\n}\r\n\r\n\r\nfunction setLang(lang = null, from = '') {\r\n // console.log('setLang', lang, from)\r\n\r\n //check\r\n if (!isestr(lang)) {\r\n lang = getLang()\r\n }\r\n else {\r\n lang = validLang(lang)\r\n }\r\n // console.log('get lang', lang)\r\n\r\n //check, 若有變更才commit\r\n if (true) {\r\n let _lang = get(vo, '$store.state.lang')\r\n if (lang !== _lang) {\r\n vo.$store.commit(vo.$store.types.UpdateLang, lang)\r\n // console.log('commit lang', lang)\r\n }\r\n }\r\n\r\n //genKpText, 切換lang得調用getKpLang重算kpText\r\n genKpText(lang)\r\n\r\n //forceUpdate\r\n forceUpdate()\r\n\r\n}\r\n\r\n\r\nfunction genKpText(lang) {\r\n // console.log('genKpText', lang)\r\n\r\n //kp\r\n let kp = {}\r\n\r\n //kpLang\r\n kp = {\r\n ...kp,\r\n ...kpLang,\r\n }\r\n\r\n //kpLangExt\r\n let kpLangExt = get(vo, '$store.state.webInfor.kpLangExt', {})\r\n // console.log('kpLangExt', kpLangExt)\r\n if (iseobj(kpLangExt)) {\r\n kp = {\r\n ...kp,\r\n ...kpLangExt,\r\n }\r\n }\r\n\r\n //webName\r\n let webName = get(vo, '$store.state.webInfor.webName', {})\r\n // console.log('webName', webName)\r\n if (iseobj(webName)) {\r\n kp = {\r\n ...kp,\r\n webName: {\r\n ...webName,\r\n },\r\n }\r\n }\r\n\r\n //webDescription\r\n let webDescription = get(vo, '$store.state.webInfor.webDescription', {})\r\n // console.log('webDescription', webDescription)\r\n if (iseobj(webDescription)) {\r\n kp = {\r\n ...kp,\r\n webDescription: {\r\n ...webDescription,\r\n },\r\n }\r\n }\r\n\r\n //kpText\r\n let kpText = {}\r\n each(kp, (v, k) => {\r\n kpText[k] = v[lang]\r\n })\r\n // console.log('kp', kp)\r\n // console.log('kpText', kpText)\r\n\r\n //commit\r\n vo.$store.commit(vo.$store.types.UpdateKpText, kpText)\r\n // console.log('commit kpText', kpText)\r\n\r\n}\r\n\r\n\r\nfunction getKpText(key) {\r\n // console.log('getKpText', key)\r\n\r\n //kpText\r\n let kpText = get(vo, '$store.state.kpText')\r\n // console.log('kpText', cloneDeep(kpText))\r\n\r\n //t\r\n let t = get(kpText, key, '')\r\n if (!isestr(t)) {\r\n t = key\r\n }\r\n\r\n return t\r\n}\r\n\r\n\r\nfunction gv(o, k, cv = null) {\r\n let r = get(o, k, '')\r\n if (!isestr(r)) {\r\n let def = getKpText('empty')\r\n return def\r\n }\r\n if (isfun(cv)) {\r\n r = cv(r)\r\n }\r\n return r\r\n}\r\n\r\n\r\nfunction syncHeight() {\r\n\r\n //heightToolbar\r\n let heightToolbar = get(vo, '$store.state.heightToolbar')\r\n\r\n //heightAppEff\r\n let heightAppEff = window.innerHeight - heightToolbar\r\n\r\n //commit\r\n // vo.$store.commit(vo.$store.types.UpdateHeightToolbar, heightToolbar)\r\n vo.$store.commit(vo.$store.types.UpdateHeightApp, window.innerHeight)\r\n vo.$store.commit(vo.$store.types.UpdateHeightAppEff, heightAppEff)\r\n\r\n return ''\r\n}\r\n\r\n\r\n// async function waitData(t = 0) {\r\n\r\n// //delay\r\n// if (t > 0) {\r\n// await delay(t)\r\n// }\r\n\r\n// //waitFun, 等待dsrl模組掛載\r\n// await waitFun(() => {\r\n// return iseobj(get(vo, '$dsrl'))\r\n// })\r\n\r\n// //等待前端第一次同步完畢數據\r\n// await waitFun(() => {\r\n// return get(vo, '$store.state.syncState')\r\n// })\r\n\r\n// }\r\n\r\n\r\nlet kpIcon = {\r\n warning: `data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAhCAYAAACxzQkrAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOwwAADsMBx2+oZAAAABZ0RVh0Q3JlYXRpb24gVGltZQAwOS8xOS8yNP52YhIAAAAcdEVYdFNvZnR3YXJlAEFkb2JlIEZpcmV3b3JrcyBDUzbovLKMAAADMklEQVRYha2WTWgTQRiGn0k2SU2KNQjmoiL+gGAVD/5gEelAkSKOiILei+hBRAQv/tBDsQiK1CJFDz331tNePAjRm60eBL0pXsSDF+dimmzbZDzsRJNmm+xPXliyOzP7zrNfvpn5hDGGJNJSHQJmAQHcLpbdL0n8RBIgLdVhYBHYb5u+AZeLZfdzXM9UbBpfC8AB/OgIe7+QxDA2kJZqAhgO6Bq2fbEU6y/TUuWB70BpkyG/gL3FsrsS1TtuhO53gcH23Y9jHDlCWqqd+Mmb6zHUA/YVy+7PKP5xIvQkBAx2zNOo5pEipKU6Bnzo6Kg3/N904PcdL5bdj2HniBqh2bYnITDVGmQcyDj+vRDd3+kXkJbqEjDS2mYqK2THTjO0MMfQwhzZsdOYSsfCGrHv9g9IS+UAz9oajUFkHPITV0mVSqRKJfITVxAZBzrT4Jn16A8QcBvY0w4EZDL+/mw8/xIpv60zLfdYj+RAWqrtwGRgpzHQaJm90QiKTlOT1isZEPAI2BpiXC9ttV5d1RVIS3UQuN4HmKZuWM94QMBMiDFRJKznptp0Mi3VGDDeR5imxq13eCB95iz0+JKEmtFj58IDkc5dI7jWaZcQ7cdFOhW0UwdpmHr6WiggLVUBmO4NA6bmYSpVEIMgBjGVKqbm+ZnSW9N2ru5AwANgR28gf9bKzDxry+9ZW35PZWa+ra+Hdti52m1bT3st1S7gK+HKi/+Ha73uP6fTiC0D3TbHjfKAA8Wy+6PZsDFCT0PDAGAQ2Qys12G97t8HnBtd1FEz/YuQluoEsBTFjXoDnDQ5u4o9940PF1wXddPJYtldBmg9gZ9HdTG1GoMPb5G9cBEAZ+9u/ky/QBTyUa2eY0ubFICWSgGnotEYxEAO59gRoAJUcI4fQQzkouRQU6csAykt1TZgKqqDn9Aeq6/fAQWgwOrrt5iqF3aVbdSUlmpI/B49vwiErujaZAxmbZ3syaMArC598gu0eEAAi+L36PkakVZWANRKFQCR35IEBqCaAl4mcUAIRCHvJ3IyGIBXjhHcEYYGcJMkkUomD5gziLut+9Bj4DKQJeLulkACWAUWi2X3HsBfLU4ARuGaUEMAAAAASUVORK5CYII=`,\r\n}\r\nfunction getIcon(icon) {\r\n let c = get(kpIcon, icon, '')\r\n if (!isestr(c)) {\r\n console.log(`invalid icon[${icon}]`)\r\n }\r\n return c\r\n}\r\n\r\n\r\nlet mUI = {\r\n\r\n setVo,\r\n\r\n updateConnState,\r\n updateLoading,\r\n // updateViewState,\r\n updateUserToken,\r\n updateUserSelf,\r\n forceUpdate,\r\n\r\n setLang,\r\n getKpText,\r\n\r\n gv,\r\n syncHeight,\r\n\r\n // waitData,\r\n\r\n getIcon,\r\n\r\n}\r\n\r\n\r\nexport default mUI\r\n","import get from 'lodash-es/get.js'\nimport find from 'lodash-es/find.js'\nimport isestr from 'wsemi/src/isestr.mjs'\r\n\r\n\r\nfunction mDataSelectorSchema(ds, opt = {}) {\r\n\r\n function getTableInforBy(keyFind, valueFind, keyPick) {\r\n let r = find(ds, { [keyFind]: valueFind })\r\n if (!r) {\r\n r = ''\r\n }\r\n if (isestr(keyPick)) {\r\n r = get(r, keyPick, '')\r\n }\r\n return r\r\n }\r\n\r\n function getTableChtByKey(valueFind) {\r\n return getTableInforBy('keyTable', valueFind, 'tableNameCht')\r\n }\r\n\r\n return {\r\n getTableInforBy,\r\n getTableChtByKey,\r\n }\r\n}\r\n\r\n\r\nexport default mDataSelectorSchema\r\n","//前後端共用函數區\r\nimport JSON5 from 'json5'\r\nimport get from 'lodash-es/get.js'\r\nimport each from 'lodash-es/each.js'\r\nimport map from 'lodash-es/map.js'\r\nimport join from 'lodash-es/join.js'\r\nimport size from 'lodash-es/size.js'\r\nimport find from 'lodash-es/find.js'\r\nimport filter from 'lodash-es/filter.js'\r\nimport cloneDeep from 'lodash-es/cloneDeep.js'\r\nimport takeRight from 'lodash-es/takeRight.js'\r\nimport dropRight from 'lodash-es/dropRight.js'\r\nimport sortBy from 'lodash-es/sortBy.js'\r\nimport sep from 'wsemi/src/sep.mjs'\r\nimport iseobj from 'wsemi/src/iseobj.mjs'\r\nimport isestr from 'wsemi/src/isestr.mjs'\r\nimport haskey from 'wsemi/src/haskey.mjs'\r\n\r\n\r\n// //dlm\r\n// let dlm = '/'\r\n\r\n\r\nfunction getNameNew(rows, key = 'name', nameBase = '', nameExt = '') {\r\n\r\n //hasName\r\n let hasName = (name) => {\r\n let b = false\r\n each(rows, (r) => {\r\n let _name = get(r, key, '')\r\n if (_name === name) {\r\n b = true\r\n return false //跳出\r\n }\r\n })\r\n return b\r\n }\r\n\r\n //nameNew\r\n let nameNew = ''\r\n let b = true\r\n let i = 0\r\n while (b) {\r\n i++\r\n let pre = ''\r\n if (isestr(nameBase)) {\r\n pre = `${nameBase} - `\r\n }\r\n nameNew = `${pre}${nameExt}(${i})` //vo.$t('pemiAddNameNew') vo.$t('pemiCopyNameNew')\r\n b = hasName(nameNew)\r\n }\r\n\r\n return nameNew\r\n}\r\n\r\n\r\n// function getAllBlocks(targets) {\r\n\r\n// //rs\r\n// let rs = map(targets, (v) => {\r\n\r\n// //text, parentId\r\n// let s = sep(v.id, dlm) //[tag:dlm]\r\n// let text = get(takeRight(s), 0) //取最後節點\r\n// s = dropRight(s, 1)\r\n// let parentId = join(s, dlm) //[tag:dlm] 取父節點\r\n\r\n// return {\r\n// ...v,\r\n// idTemp: v.id,\r\n// parentId,\r\n// text,\r\n// }\r\n// })\r\n// // console.log('rs', rs)\r\n\r\n// //sortBy\r\n// rs = sortBy(rs, 'order')\r\n// // console.log('rs sortBy', rs)\r\n\r\n// return rs\r\n// }\r\n\r\n\r\n// function getTreeBlocks(targets) {\r\n\r\n// //getAllBlocks\r\n// let blocks = getAllBlocks(targets)\r\n// // console.log('blocks', blocks)\r\n\r\n// //opt\r\n// let opt = {\r\n// bindKey: 'id',\r\n// bindParent: 'parentId',\r\n// bindChildren: 'children',\r\n// saveExtProps: true,\r\n// }\r\n\r\n// //composeToTree\r\n// let r\r\n// try {\r\n// r = composeToTree(blocks, opt)\r\n// }\r\n// catch (err) {\r\n// console.log(err)\r\n// }\r\n// // console.log('treeBlocks', cloneDeep(r))\r\n\r\n// return r\r\n// }\r\n\r\n\r\n// function getUserGroups(user, pemis) {\r\n\r\n// //userGroups\r\n// let ruleGroupsIds = get(user, 'ruleGroupsIds', '')\r\n\r\n// //sep\r\n// let s = sep(ruleGroupsIds, ';')\r\n\r\n// //gs\r\n// let gs = []\r\n// each(s, (id) => {\r\n// let g = find(pemis, { id })\r\n// if (iseobj(g)) {\r\n// gs.push(g)\r\n// }\r\n// })\r\n\r\n// //add pemis\r\n// gs = map(gs, (g) => {\r\n// let pemis = JSON5.parse(g.crules)\r\n// g.pemis = pemis\r\n// return g\r\n// })\r\n\r\n// return gs\r\n// }\r\n\r\n\r\n// function getTargetsByGroup(targets, group) {\r\n\r\n// //cloneDeep\r\n// targets = cloneDeep(targets)\r\n\r\n// //sortBy\r\n// targets = sortBy(targets, 'order')\r\n\r\n// //cloneDeep\r\n// group = cloneDeep(group)\r\n\r\n// //pemis\r\n// let pemis = JSON5.parse(group.crules)\r\n\r\n// //rulesDisplay\r\n// let rulesDisplay = {}\r\n// let ks = ['show', 'active']\r\n// each(ks, (k) => {\r\n\r\n// //___all___\r\n// let def = get(pemis, `___all___.${k}`)\r\n// def = (def === 'y') ? 'y' : 'n'\r\n\r\n// //other props\r\n// each(targets, (v) => {\r\n\r\n// //krule\r\n// let krule = v.id\r\n\r\n// //check\r\n// if (!rulesDisplay[krule]) {\r\n// rulesDisplay[krule] = {}\r\n// }\r\n\r\n// //rule\r\n// let rule = pemis[krule]\r\n\r\n// //r\r\n// let r = null\r\n\r\n// //b\r\n// let b = get(rule, `${k}`)\r\n// if (b === 'y' || b === 'n') {\r\n// r = b\r\n// }\r\n// else {\r\n// r = def\r\n// }\r\n\r\n// //save\r\n// rulesDisplay[krule][k] = r //因krule內含有「.」故不能用set\r\n\r\n// })\r\n\r\n// })\r\n// // console.log('rulesDisplay', rulesDisplay)\r\n\r\n// return rulesDisplay\r\n// }\r\n\r\n\r\nfunction getUserRules(user, grups, pemis, targets) {\r\n\r\n let cvKpToArr = (kp) => {\r\n let rs = []\r\n each(kp, (v, k) => {\r\n // console.log(k, v)\r\n let r = {\r\n name: k,\r\n }\r\n if (iseobj(v)) {\r\n r = {\r\n ...r,\r\n ...v,\r\n }\r\n }\r\n else {\r\n r = {\r\n ...r,\r\n isActive: v,\r\n }\r\n }\r\n rs.push(r)\r\n })\r\n return rs\r\n }\r\n\r\n let cvStrToArr = (c) => {\r\n\r\n //kp\r\n let kp = {}\r\n try {\r\n kp = JSON5.parse(c)\r\n // console.log('kp', kp)\r\n }\r\n catch (err) {\r\n console.log('c', c)\r\n console.log(err)\r\n }\r\n\r\n //arr\r\n let arr = []\r\n try {\r\n arr = cvKpToArr(kp)\r\n // console.log('arr', arr)\r\n }\r\n catch (err) {\r\n console.log('c', c)\r\n console.log('kp', kp)\r\n console.log(err)\r\n }\r\n\r\n return arr\r\n }\r\n\r\n let arrFinder = (arrSrc, arrPks, key) => {\r\n let rs = []\r\n each(arrSrc, (v) => {\r\n let tSrc = get(v, key, '')\r\n each(arrPks, (vv) => {\r\n let tPks = get(vv, key, '')\r\n if (tSrc === tPks) {\r\n rs.push({\r\n ...v,\r\n data: vv,\r\n })\r\n return false //跳出\r\n }\r\n })\r\n })\r\n return rs\r\n }\r\n\r\n let mergeRules = (rs) => {\r\n\r\n //ts\r\n let ts = []\r\n each(rs, (v) => {\r\n\r\n //mode\r\n let mode = get(v, 'mode', '')\r\n\r\n //check\r\n if (mode !== 'OR' && mode !== 'AND') {\r\n return true //跳出換下一個\r\n }\r\n\r\n //kpRule\r\n let rules = get(v, 'rules', [])\r\n let kpRule = {}\r\n each(rules, (vv) => {\r\n kpRule[vv.name] = vv.isActive\r\n })\r\n\r\n //push\r\n ts.push({\r\n mode,\r\n kpRule,\r\n })\r\n\r\n })\r\n\r\n //check\r\n if (size(ts) === 0) {\r\n return []\r\n }\r\n\r\n let objOR = (obj1, obj2) => {\r\n let kp = {}\r\n let objs = [obj1, obj2]\r\n each(objs, (obj) => {\r\n each(obj, (v, k) => {\r\n if (!haskey(kp, k)) {\r\n kp[k] = 'n'\r\n }\r\n if (kp[k] === 'y' || v === 'y') {\r\n kp[k] = 'y'\r\n }\r\n else {\r\n kp[k] = 'n'\r\n }\r\n })\r\n })\r\n return kp\r\n }\r\n\r\n let objAND = (obj1, obj2) => {\r\n let kp = cloneDeep(obj1)\r\n let objs = [obj2]\r\n each(objs, (obj) => {\r\n each(obj, (v, k) => {\r\n if (!haskey(kp, k)) {\r\n kp[k] = 'n'\r\n }\r\n if (kp[k] === 'y' && v === 'y') {\r\n kp[k] = 'y'\r\n }\r\n else {\r\n kp[k] = 'n'\r\n }\r\n })\r\n })\r\n return kp\r\n }\r\n\r\n let tsOR = filter(ts, { mode: 'OR' })\r\n let tsAND = filter(ts, { mode: 'AND' })\r\n // console.log('tsOR', tsOR)\r\n // console.log('tsAND', tsAND)\r\n\r\n //kpRuleFin\r\n let kpRuleFin = null\r\n if (size(tsOR) > 0) {\r\n kpRuleFin = get(tsOR, `0.kpRule`)\r\n }\r\n else if (size(tsAND) > 0) {\r\n kpRuleFin = get(tsAND, `0.kpRule`)\r\n }\r\n // console.log('kpRuleFin(0)', kpRuleFin)\r\n\r\n //or\r\n each(tsOR, (t) => {\r\n let kpRule = get(t, 'kpRule', {})\r\n kpRuleFin = objOR(kpRuleFin, kpRule)\r\n })\r\n // console.log('kpRuleFin(or)', kpRuleFin)\r\n\r\n //and\r\n each(tsAND, (t, kt) => {\r\n let kpRule = get(t, 'kpRule', {})\r\n // console.log(kt, '(and)(in) kpRule', kpRule)\r\n // console.log(kt, '(and)(in) kpRuleFin', kpRuleFin)\r\n kpRuleFin = objAND(kpRuleFin, kpRule)\r\n // console.log(kt, '(and)(out) kpRuleFin', kpRuleFin)\r\n })\r\n // console.log('kpRuleFin(and)', kpRuleFin)\r\n\r\n //rulesFin\r\n let rulesFin = []\r\n each(kpRuleFin, (v, k) => {\r\n rulesFin.push({\r\n name: k,\r\n isActive: v,\r\n })\r\n })\r\n // console.log('rulesFin', rulesFin)\r\n\r\n return rulesFin\r\n }\r\n\r\n //cgrups\r\n let cgrups = get(user, 'cgrups', '')\r\n // console.log('cgrups', cgrups)\r\n\r\n //cvStrToArr\r\n let _grups = cvStrToArr(cgrups)\r\n // console.log('cvStrToArr _grups', _grups)\r\n\r\n //_grups\r\n _grups = arrFinder(_grups, grups, 'name')\r\n // console.log('arrFinder _grups', cloneDeep(_grups))\r\n\r\n //filter\r\n _grups = filter(_grups, { isActive: 'y' })\r\n // console.log('filter _grups', cloneDeep(_grups))\r\n\r\n //proc _pemis\r\n _grups = map(_grups, (v) => {\r\n let cpemis = get(v, 'data.cpemis', '')\r\n let _pemis = cvStrToArr(cpemis)\r\n _pemis = filter(_pemis, { isActive: 'y' })\r\n _pemis = arrFinder(_pemis, pemis, 'name')\r\n v.data._pemis = _pemis\r\n return v\r\n })\r\n // console.log('proc _pemis _grups', cloneDeep(_grups))\r\n\r\n //proc _rules\r\n _grups = map(_grups, (v) => {\r\n let _pemis = get(v, 'data._pemis', [])\r\n _pemis = map(_pemis, (vv) => {\r\n let crules = get(vv, 'data.crules', '')\r\n let _rules = cvStrToArr(crules)\r\n vv.data._rules = _rules\r\n return vv\r\n })\r\n v.data._pemis = _pemis\r\n return v\r\n })\r\n // console.log('proc _rules _grups', cloneDeep(_grups))\r\n\r\n //merge _rules\r\n let _rules = []\r\n if (true) {\r\n\r\n //rrs\r\n let rrs = []\r\n each(_grups, (v) => {\r\n\r\n let modeG = v.mode\r\n let _pemis = v.data._pemis\r\n\r\n //rs\r\n let rs = []\r\n each(_pemis, (vv) => {\r\n let modeP = vv.mode\r\n let _rules = vv.data._rules\r\n rs.push({\r\n mode: modeP,\r\n rules: _rules,\r\n })\r\n\r\n })\r\n // console.log('rs', rs)\r\n\r\n //mergeRules\r\n let rulesP = mergeRules(rs)\r\n // console.log('rulesP', rulesP)\r\n\r\n //t\r\n let t = {\r\n mode: modeG,\r\n rules: rulesP,\r\n }\r\n\r\n //push\r\n rrs.push(t)\r\n\r\n })\r\n // console.log('rrs', rrs)\r\n\r\n //mergeRules\r\n let rulesG = mergeRules(rrs)\r\n // console.log('rulesG', rulesG)\r\n\r\n //save\r\n _rules = rulesG\r\n\r\n }\r\n // console.log('merge _rules', cloneDeep(_rules))\r\n\r\n //expand _rules\r\n if (true) {\r\n let kp = {}\r\n each(_rules, (v) => {\r\n kp[v.name] = v.isActive\r\n })\r\n each(targets, (t) => {\r\n // console.log('t', t)\r\n if (!haskey(kp, t.id)) {\r\n kp[t.id] = 'n'\r\n }\r\n })\r\n let rs = []\r\n each(kp, (v, k) => {\r\n let r = {\r\n name: k,\r\n isActive: v,\r\n }\r\n rs.push(r)\r\n })\r\n _rules = rs\r\n }\r\n // console.log('expand _rules', cloneDeep(_rules))\r\n\r\n return {\r\n grups: _grups,\r\n rules: _rules,\r\n }\r\n}\r\n\r\n\r\nexport {\r\n // atSep,\r\n // atJoin,\r\n // atParse,\r\n // atMerge,\r\n // atRemove,\r\n getNameNew,\r\n // getAllBlocks,\r\n // getTreeBlocks,\r\n // getUserGroups,\r\n // getTargetsByGroup,\r\n getUserRules\r\n}\r\n","import Vue from 'vue'\r\nimport get from 'lodash-es/get.js'\r\nimport WServHapiClient from 'w-serv-hapi/src/WServHapiClient.mjs'\r\nimport WAlert from 'w-component-vue/src/components/WAlert.mjs'\r\nimport domMutation from 'w-component-vue/src/js/domMutation.mjs'\r\nimport domResize from 'w-component-vue/src/js/domResize.mjs'\r\nimport domDragDrop from 'w-component-vue/src/js/domDragDrop.mjs'\r\nimport App from './App.vue'\r\nimport store from './store/index.mjs'\r\nimport ui from './plugins/mUI.mjs'\r\nimport mDataSelectorSchema from './plugins/mDataSelectorSchema.mjs'\r\nimport * as s from './plugins/mShare.mjs'\r\nimport ds from './schema/index.mjs'\r\n// console.log('ds', ds)\r\n\r\n\r\n//不提示vue產品\r\nVue.config.productionTip = false\r\n\r\n//$alert\r\nVue.prototype.$alert = function() {\r\n let [msg, type] = arguments\r\n console.log(msg, type)\r\n if (msg !== 'close') {\r\n WAlert(msg, type)\r\n }\r\n}\r\n\r\n//dssm\r\nlet dssm = mDataSelectorSchema(ds)\r\n\r\n//prototype\r\nVue.prototype.$ui = ui\r\nVue.prototype.$t = ui.getKpText\r\nVue.prototype.$s = s\r\nVue.prototype.$dssm = dssm\r\nVue.prototype.$ds = ds\r\nVue.prototype.$dg = {}\r\n\r\n//directive\r\nVue.directive('domresize', domResize())\r\nVue.directive('dommutation', domMutation())\r\nVue.directive('domdragdrop', domDragDrop())\r\n\r\n//WServHapiClient\r\n// let bFirstSync = false //不需要bFirstSync, 由getWebInfor結束代表第1次完成同步\r\nWServHapiClient({\r\n showLog: false,\r\n url: window.location.origin + window.location.pathname,\r\n useWaitToken: true,\r\n apiName: 'api',\r\n tokenType: 'Bearer',\r\n getToken: () => {\r\n let token = get(Vue.prototype, `$store.state.userToken`, '')\r\n // console.log('getToken', token)\r\n return token\r\n },\r\n getServerMethods: (_fapi) => {\r\n // console.log('$fapi', _fapi)\r\n\r\n //save $fapi\r\n Vue.prototype.$fapi = _fapi\r\n\r\n //getWebInfor\r\n _fapi.getWebInfor() //已有fapi時優先取得web資訊\r\n .then((wi) => {\r\n // console.log('$fapi getWebInfor', wi)\r\n\r\n Vue.prototype.$store.commit(Vue.prototype.$store.types.UpdateWebInfor, wi)\r\n ui.setLang(null, 'get webInfor') //因更新webInfor可取得webName與webDescription, 得要重刷語系才能依照語言取得顯示文字\r\n\r\n //commit syncState\r\n Vue.prototype.$store.commit(Vue.prototype.$store.types.UpdateSyncState, true)\r\n\r\n })\r\n .catch((err) => {\r\n console.log(err)\r\n })\r\n\r\n },\r\n recvData: (r) => {\r\n // console.log('sync data', r.tableName, r.data)\r\n Vue.prototype.$store.commit(Vue.prototype.$store.types.UpdateTableData, r)\r\n },\r\n})\r\n\r\n//new\r\nnew Vue({\r\n store,\r\n render: h => h(App)\r\n}).$mount('#app')\r\n\r\n","function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = 9297;\nmodule.exports = webpackEmptyAsyncContext;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t524: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkw_web_perm\"] = self[\"webpackChunkw_web_perm\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [504], function() { return __webpack_require__(186); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["render","_vm","this","_c","_self","directives","name","rawName","on","resize","ready","_e","style","concat","attrs","staticRenderFns","loading","dialogWidth","$event","resizeDialog","scopedSlots","_u","key","fn","barPadding","staticStyle","msg","_v","_s","$t","barWidth","proxy","components","WDialog","WProgressBar","props","data","dialogWidthMax","mounted","vo","Vue","prototype","$dg","setLoadingWinBarMessage","setMessage","computed","b","get","methods","w","window","innerWidth","Math","max","min","component","bShow","content","clickBtn","WConfirm","pm","showCheckYesNo","show","genPm","mode","resolve","reject","clickUnit","showCheckYes","connState","img_connection","img_logout","img_dissconnection","img_deny","heightToolbar","webLogo","webName","showLangSelect","keysLang","lang","toggleLang","getLangText","item","syncState","panelHeight","drawerWidth","drawerWidthMin","drawerWidthMax","height","menus","menuActive","v","h","menu","menuKey","drawer","mdiArrowLeftBoldHexagonOutline","width","mdiArrowRightBoldHexagonOutline","model","value","callback","$$v","expression","changeParams","resizePanel","resizeHead","mdiGamepadCircle","showIsEditable","isEditable","mdiTableHeadersEye","tabKeysPick","toggleTabKeys","getHead","tabKeysShow","mdiPlus","addItem","hasItemCheckOne","mdiContentCopy","copyItem","hasItemsCheck","mdiTrashCanOutline","deleteItemsCheck","isModified","mdiCloudUploadOutline","saveTargets","firstLoading","items","ref","contentHeight","opt","WIcon","WSwitch","WButtonCircle","WPopup","WInputCheckbox","WAggridVueDyn","type","Boolean","default","mdiStackOverflow","mdiAccountGroupOutline","mdiBallotRecountOutline","mdiPencilOutline","panelWidth","headHeight","firstSetting","tabKeys","widthTargetId","widthTargetDescription","itemsCheck","showModeEditTargets","modeEditTargets","webInfor","wi","targets","rs","sortBy","pemis","grups","users","cloneDeep","genOpt","length","size","errItemsById","rows","kpErr","kpId","each","k","id","isestr","haskey","isError","c","iseobj","errItemsByName","kpHead","kp","snew","offsetWidth","offsetHeight","head","ks","kpCellEditable","kpRowDrag","kpHeadCheckBox","kpHeadHide","tabKeysHide","arrPull","language","keys","defCellEditable","defHeadFilter","defCellAlignH","kpHeadFixLeft","defHeadMinWidth","kpHeadWidth","isnum","cdbl","kpHeadFilterType","kpCellRender","err","cstr","$ui","getIcon","rowsChange","rowChecked","refresh","cmp","showKeys","r","$ds","funNew","$s","getNameNew","userId","timeCreate","userIdUpdate","timeUpdate","_toConsumableArray","console","log","$alert","tar","tarId","row","nameOld","_r","filter","vv","core","_core","apply","arguments","_asyncToGenerator","_regeneratorRuntime","_callee","errTemp","_context","prev","next","updateLoading","abrupt","$fapi","updateTargets","catch","stop","finally","savePemis","mdiVectorPolylinePlus","mdiCheckboxMarkedCircle","widthPemisName","widthPemisDescription","showVePemiBlngGrupsById","showVeCrulesById","showModeEditPemis","modeEditPemis","useGrups","map","g","kpPemi","JSON5","cpemis","kpPemiGrup","isActive","push","grup","pemi","kpUsePemiGrup","_kp","genItems","kpName","kpHeadFilter","kpHeadSort","kpHeadFocusHighlight","t","getCrulesText","p","gs","belongGrups","n","replace","fltKpRule","kpt","crules","kpRule","vs","crulesText","showVePemiBlngGrups","then","kr","showVeCrules","set","updatePemis","mdiSelectGroup","saveGrups","widthGrupsName","widthGrupsDescription","showVeGrupBlngUsersById","showVeCpemisById","showModeEditGrups","modeEditGrups","useUsers","u","kpGrup","cgrups","kpGrupUser","user","kpUseGrupUser","getCpemisText","us","belongUsers","fltKpPemi","cpemisText","showVeGrupBlngUsers","showVeCpemis","updateGrups","saveUsers","widthUsersName","widthUsersEmail","widthUsersDescription","showVeCgrupsById","toggleItemIsAdminById","toggleItemIsActiveById","showModeEditUsers","modeEditUsers","errItemsByEmail","kpEmail","email","isEmail","getCgrupsText","cgrupsText","showVeCgrups","updateUsers","WDrawer","WListVertical","LayoutContentTargets","LayoutContentPemis","LayoutContentGrups","LayoutContentUsers","ms","text","icon","find","clientWidth","clientHeight","WTextSelect","LayoutContent","mdiMenu","kpLangSelect","showLanguage","setLang","document","title","mdiFormatListCheckbox","fullscreen","useHeaderBtns","clickBtns","clickSave","clickClose","mdiCheckboxMultipleMarked","toggleItemsEnableAllYes","mdiCheckboxMultipleBlankOutline","toggleItemsEnableAllNo","mdiCodeTagsCheck","toggleItemsEnableAllInv","mdiDeleteForever","mdiFullscreen","mdiFullscreenExit","mdiFileTree","toggleItemEnableById","kpHeaderBtns","toFullscreen","tooltip","evName","toNormalscreen","bts","contentHeightMax","autoFitColumn","getDisplayData","_enable","enable","kpRow","rowsEff","delay","JSON","stringify","showVeCpemisToggleItemsEnableAllYes","showVeCpemisToggleItemsEnableAllNo","showVeCpemisToggleItemsEnableAllInv","showVeCpemisToggleItemModeByName","showVeCpemisToggleItemEnableByName","showVeCgrupsToggleItemsEnableAllYes","showVeCgrupsToggleItemsEnableAllNo","showVeCgrupsToggleItemsEnableAllInv","showVeCgrupsToggleItemModeByName","showVeCgrupsToggleItemEnableByName","grupName","showVeGrupBlngUsersToggleItemsEnableAllYes","showVeGrupBlngUsersToggleItemsEnableAllNo","showVeGrupBlngUsersToggleItemsEnableAllInv","showVeGrupBlngUsersToggleItemModeByName","showVeGrupBlngUsersToggleItemEnableByName","csp","csnp","csep","csa","csna","csea","fltKpGrup","_isActive","_mode","_objectSpread","grupsNames","join","revRows","ku","_saveUsers","_x","_callee2","usersNew","_context2","kpGrupNew","isEqual","pemiName","showVePemiBlngGrupsToggleItemsEnableAllYes","showVePemiBlngGrupsToggleItemsEnableAllNo","showVePemiBlngGrupsToggleItemsEnableAllInv","showVePemiBlngGrupsToggleItemModeByName","showVePemiBlngGrupsToggleItemEnableByName","pemisNames","kg","_saveGrups","grupsNew","kpPemiNew","LoadingWinBar","CheckYesNo","CheckYes","LayoutState","Layout","VeCrules","VeCpemis","VeCgrups","VeGrupBlngUsers","VePemiBlngGrups","ll","beforeMount","setVo","loginSuccess","updateConnState","updateUserToken","token","updateUserSelf","loginError","urlRedirect","Error","isDev","setTimeout","location","href","wui","timeWaitAnimation","params","login","afterGetUser","afterLogin","$vo","b1","b2","syncHeight","UpdateWebInfor","UpdateLang","UpdateKpText","UpdateConnState","UpdateSyncState","UpdateLoading","UpdateTableData","UpdateData","UpdateHeightApp","UpdateHeightAppEff","UpdateHeightToolbar","UpdateMenu","UpdateUserToken","UpdateUserSelf","keyTable","tableNameCht","tableNameEng","settings","pk","order","description","from","ndata","undefined","o","dtmapping","genIDSeq","nowms2str","funTest","_ref","_ref2","_slicedToArray","dtpick","tab","isAdmin","cs","ds","build","useCreateStorage","state","hostname","origin","leftDrawerWidth","heightApp","heightAppEff","userToken","userSelf","kpText","mutations","_mutations","_defineProperty","types","tableName","path","use","Vuex","st","getters","actions","strict","$store","kpLang","csIng","eng","cht","csLogin","csLogout","csErrConn","csErrLogin","aggridLanguage","systemMessage","ok","no","yes","empty","waitingData","isEditabled","saveChanges","save","close","delete","cancel","screenFull","screenNormal","checkAllYes","checkAllNo","checkAllInv","operMode","operPemiEnable","operGrupEnable","processing","anUnexpectedErrorOccurred","unknow","username","modeEdit","showTabCols","belongPemis","belongGrupsNames","belongPemisNames","errInNames","errInEmails","menuTreeShow","menuTreeHide","mmTargets","mmTargetsMsg","mmPemis","mmPemisMsg","mmGrups","mmGrupsMsg","mmUsers","mmUsersMsg","targetId","targetIdEmpty","targetIdDuplicate","targetAddEmpty","targetAdd","targetAddNameNew","targetAddIdNew","targetCopy","targetCopyNameNew","targetDeleteCheckTargets","targetEnable","targetClearTargetsFail","targetSaveTargetsFail","targetSaveTargetsSuccess","pemiNameEmpty","pemiNameDuplicate","pemiAddEmpty","pemiAdd","pemiAddNameNew","pemiAddIdNew","pemiCopy","pemiCopyNameNew","pemiDeleteCheckPemis","pemiCrules","pemiEditBlngGrupsNoPemiId","pemiEditBlngGrupsNoPemiData","pemiEditCrules","pemiEditCrulesForDisplay","pemiEditCrulesNoPemiId","pemiEditCrulesNoPemiData","pemiRnderCrulesNoRule","pemiRnderCrulesHasNRule","pemiClearPemisFail","pemiSavePemisFail","pemiSavePemisSuccess","pemiBlngEditGrups","pemiBlngEditGrupsForDisplay","pemiBlngRnderNoGrup","pemiBlngRnderGrups","pemiBlngPemiNow","pemiBlngEditNoName","pemiBlngEditNoPemi","pemiBlngDeleteCheckPemis","cruleEditNoTargetId","cruleEditNoTargetData","cruleDeleteCheckTargets","grupNameEmpty","grupNameDuplicate","grupAddEmpty","grupAdd","grupAddNameNew","grupAddIdNew","grupCopy","grupCopyNameNew","grupDeleteCheckGrups","grupCpemis","grupEditBlngNoGrupId","grupEditBlngNoGrupData","grupEditCpemis","grupEditCpemisForDisplay","grupRnderCpemisNoPermission","grupRnderCpemisHasNPermissions","grupClearGrupsFail","grupSaveGrupsEmpty","grupSaveGrupsFail","grupSaveGrupsSuccess","grupBlngEditUsers","grupBlngEditUsersForDisplay","grupBlngRnderNoUser","grupBlngRnderUsers","grupBlngGrupNow","grupBlngEditNoGrupName","grupBlngEditNoGrupData","grupBlngDeleteCheckGrups","cpemiEditNoName","cpemiEditNoTarget","cpemiDeleteCheckTargets","userName","userNameEmpty","userNameDuplicate","userEmailEmpty","userEmailError","userEmailDuplicate","userAddEmpty","userAdd","userAddNameNew","userAddIdNew","userCopy","userCopyNameNew","userDeleteCheckUsers","userCgrups","userEditCgrups","userEditCgrupsForDisplay","userEditCgrupsNoUserId","userEditCgrupsNoUserData","userSaveUsersEmpty","userSaveUsersFail","userSaveUsersSuccess","userEditNoUserId","userEditNoUserData","userRnderCgrupsNoGroup","userRnderCgrupsHasNGroups","cgrupEditNoName","cgrupEditNoPemi","cgrupDeleteCheckPemis","allDefaults","active","showChildren","hideChildren","activateChildren","deactivateChildren","isUsernameEmpty","failedToSaveUser","successfulToSaveUser","vObj","commit","forceUpdate","broadcast","chs","$forceUpdate","$children","validLang","getLang","_lang","genKpText","kpLangExt","webDescription","getKpText","gv","cv","def","isfun","innerHeight","kpIcon","warning","mUI","mDataSelectorSchema","getTableInforBy","keyFind","valueFind","keyPick","getTableChtByKey","nameBase","nameExt","hasName","_name","nameNew","i","pre","getUserRules","cvKpToArr","cvStrToArr","arr","arrFinder","arrSrc","arrPks","tSrc","tPks","mergeRules","ts","rules","objOR","obj1","obj2","objs","obj","objAND","tsOR","tsAND","kpRuleFin","kt","rulesFin","_grups","_pemis","_rules","rrs","modeG","modeP","rulesP","rulesG","config","productionTip","_arguments","Array","slice","call","WAlert","dssm","ui","s","$dssm","directive","domResize","domMutation","domDragDrop","WServHapiClient","showLog","url","pathname","useWaitToken","apiName","tokenType","getToken","getServerMethods","_fapi","getWebInfor","recvData","store","App","$mount","webpackEmptyAsyncContext","req","Promise","e","code","module","exports","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","m","deferred","O","result","chunkIds","priority","notFulfilled","Infinity","fulfilled","j","Object","every","splice","getter","__esModule","d","a","definition","defineProperty","enumerable","globalThis","Function","prop","hasOwnProperty","Symbol","toStringTag","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","self","forEach","bind","__webpack_exports__"],"sourceRoot":""}
|