w-web-perm 1.0.26 → 1.0.28
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/index.tmp +2 -9
- package/dist/js/app-legacy.5f39a4e2.js +2 -0
- package/dist/js/app-legacy.5f39a4e2.js.map +1 -0
- package/dist/js/app.5f39a4e2.js +2 -0
- package/dist/js/app.5f39a4e2.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 +29 -9
- package/docs/index.html +1 -1
- package/package.json +1 -1
- package/public/index.html +1 -8
- package/server/WWebPerm.mjs +28 -8
- package/src/App.vue +16 -5
- package/src/components/Layout.vue +76 -32
- package/src/components/LayoutContentGrups.vue +12 -2
- package/src/components/LayoutContentPemis.vue +12 -2
- package/src/components/LayoutContentTargets.vue +12 -2
- package/src/components/LayoutContentUsers.vue +15 -0
- package/src/components/LayoutState.vue +20 -8
- package/src/main.js +5 -10
- package/src/plugins/mLang.mjs +746 -0
- package/src/plugins/mUI.mjs +73 -20
- package/src/store/mutations.mjs +3 -723
- package/srv.mjs +4 -0
- package/tableTags-web-perm.json +1 -1
- package/dist/js/app-legacy.b0850281.js +0 -2
- package/dist/js/app-legacy.b0850281.js.map +0 -1
- package/dist/js/app.db01fef5.js +0 -2
- package/dist/js/app.db01fef5.js.map +0 -1
- package/src/plugins/mDataSupport.mjs +0 -23
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"js/app-legacy.5f39a4e2.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/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(\"處理中請稍後...\")])]),_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>處理中請稍後...</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'\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=ff3d4996&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 \"ff3d4996\",\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\":\"100vh\",\"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\",\"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.langKeys,\"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,\"autoSwitch\":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\":'#fff',\"item-icon-color\":'#222',\"item-icon-color-hover\":'#444',\"item-icon-color-active\":'#eee',\"item-background-color\":'#fff',\"item-background-color-hover\":'#f2f2f2',\"item-background-color-active\":'#666',\"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\":'mdi-arrow-left-bold-hexagon-outline',\"iconSize\":20,\"backgroundColor\":'rgba(255,255,255,0.9)',\"backgroundColorHover\":'rgba(255,255,255,0.7)',\"backgroundColorFocus\":'rgba(255,255,255,0.5)',\"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==='targets')?_c('LayoutContentTargets',{attrs:{\"drawer\":_vm.drawer}}):_vm._e(),(_vm.menuKey==='pemis')?_c('LayoutContentPemis',{attrs:{\"drawer\":_vm.drawer}}):_vm._e(),(_vm.menuKey==='grups')?_c('LayoutContentGrups',{attrs:{\"drawer\":_vm.drawer}}):_vm._e(),(_vm.menuKey==='users')?_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\":'mdi-arrow-right-bold-hexagon-outline',\"iconSize\":20,\"backgroundColor\":'rgba(255,255,255,0.9)',\"backgroundColorHover\":'rgba(255,255,255,0.7)',\"backgroundColorFocus\":'rgba(255,255,255,0.5)',\"borderColor\":'transparent',\"borderColorHover\":'transparent',\"borderColorFocus\":'transparent',\"_tooltip\":\"$t('menuTreeShow')\",\"shadow\":false},on:{\"click\":function($event){_vm.drawer=true}}})],1):_vm._e()],2)]}}],null,false,1672344725),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('managementTargets'))+\" \")]),_c('div',{staticStyle:{\"padding-top\":\"2px\",\"font-size\":\"0.8rem\",\"color\":\"#666\"}},[_vm._v(\" \"+_vm._s(_vm.$t('managementTargetsMsg'))+\" \")])])],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:{\"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('managementTargets')}}\r\n </div>\r\n\r\n <div style=\"padding-top:2px; font-size:0.8rem; color:#666;\">\r\n {{$t('managementTargetsMsg')}}\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 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 style=\"padding:10px 15px; font-size:0.8rem;\" v-else>\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: 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=0942f721&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 \"0942f721\",\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('managementPemis'))+\" \")]),_c('div',{staticStyle:{\"padding-top\":\"2px\",\"font-size\":\"0.8rem\",\"color\":\"#666\"}},[_vm._v(\" \"+_vm._s(_vm.$t('managementPemisMsg'))+\" \")])])],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:{\"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('managementPemis')}}\r\n </div>\r\n\r\n <div style=\"padding-top:2px; font-size:0.8rem; color:#666;\">\r\n {{$t('managementPemisMsg')}}\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 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 style=\"padding:10px 15px; font-size:0.8rem;\" v-else>\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: 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=1c1ac1d7&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 \"1c1ac1d7\",\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('managementGrups'))+\" \")]),_c('div',{staticStyle:{\"padding-top\":\"2px\",\"font-size\":\"0.8rem\",\"color\":\"#666\"}},[_vm._v(\" \"+_vm._s(_vm.$t('managementGrupsMsg'))+\" \")])])],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:{\"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('managementGrups')}}\r\n </div>\r\n\r\n <div style=\"padding-top:2px; font-size:0.8rem; color:#666;\">\r\n {{$t('managementGrupsMsg')}}\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 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 style=\"padding:10px 15px; font-size:0.8rem;\" v-else>\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: 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=bbf300c2&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 \"bbf300c2\",\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('managementUsers'))+\" \")]),_c('div',{staticStyle:{\"padding-top\":\"2px\",\"font-size\":\"0.8rem\",\"color\":\"#666\"}},[_vm._v(\" \"+_vm._s(_vm.$t('managementUsersMsg'))+\" \")])])],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:{\"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('managementUsers')}}\r\n </div>\r\n\r\n <div style=\"padding-top:2px; font-size:0.8rem; color:#666;\">\r\n {{$t('managementUsersMsg')}}\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 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 style=\"padding:10px 15px; font-size:0.8rem;\" v-else>\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 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 (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: 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=878a8086&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 \"878a8086\",\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 :autoSwitch=\"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=\"'#fff'\"\r\n :item-icon-color=\"'#222'\"\r\n :item-icon-color-hover=\"'#444'\"\r\n :item-icon-color-active=\"'#eee'\"\r\n :item-background-color=\"'#fff'\"\r\n :item-background-color-hover=\"'#f2f2f2'\"\r\n :item-background-color-active=\"'#666'\"\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=\"'mdi-arrow-left-bold-hexagon-outline'\"\r\n :iconSize=\"20\"\r\n :backgroundColor=\"'rgba(255,255,255,0.9)'\"\r\n :backgroundColorHover=\"'rgba(255,255,255,0.7)'\"\r\n :backgroundColorFocus=\"'rgba(255,255,255,0.5)'\"\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==='targets'\"\r\n ></LayoutContentTargets>\r\n\r\n <LayoutContentPemis\r\n :drawer=\"drawer\"\r\n v-if=\"menuKey==='pemis'\"\r\n ></LayoutContentPemis>\r\n\r\n <LayoutContentGrups\r\n :drawer=\"drawer\"\r\n v-if=\"menuKey==='grups'\"\r\n ></LayoutContentGrups>\r\n\r\n <LayoutContentUsers\r\n :drawer=\"drawer\"\r\n v-if=\"menuKey==='users'\"\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=\"'mdi-arrow-right-bold-hexagon-outline'\"\r\n :iconSize=\"20\"\r\n :backgroundColor=\"'rgba(255,255,255,0.9)'\"\r\n :backgroundColorHover=\"'rgba(255,255,255,0.7)'\"\r\n :backgroundColorFocus=\"'rgba(255,255,255,0.5)'\"\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 <template v-else>\r\n <div\r\n style=\"padding:20px; font-size:0.9rem;\"\r\n >\r\n {{$t('waitingData')}}\r\n </div>\r\n </template>\r\n\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport { 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\r\n menuKey: 'targets',\r\n\r\n panelWidth: 0,\r\n panelHeight: 0,\r\n\r\n drawer: true,\r\n drawerWidth: 180,\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 return get(this, '$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: 'targets',\r\n text: vo.$t('managementTargets'),\r\n icon: mdiGamepadCircle,\r\n },\r\n {\r\n key: 'pemis',\r\n text: vo.$t('managementPemis'),\r\n icon: mdiStackOverflow,\r\n },\r\n {\r\n key: 'grups',\r\n text: vo.$t('managementGrups'),\r\n icon: mdiSelectGroup,\r\n },\r\n {\r\n key: 'users',\r\n text: vo.$t('managementUsers'),\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=0d34af46&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 \"0d34af46\",\n null\n \n)\n\nexport default component.exports","<template>\r\n <div style=\"height:100vh; 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; 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=\"langKeys\"\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 langKeys: [\r\n 'eng',\r\n 'cht',\r\n ],\r\n kpLang: {\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 //console.log('computed viewState')\r\n\r\n let vo = this\r\n\r\n return get(vo, `$store.state.viewState`, '')\r\n },\r\n\r\n heightToolbar: function() {\r\n //console.log('computed heightToolbar')\r\n\r\n let vo = this\r\n\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 // console.log('get webName2', c)\r\n }\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 //console.log('computed webLogo')\r\n\r\n let vo = this\r\n\r\n return get(vo, `webInfor.webLogo`, '')\r\n },\r\n\r\n lang: function() {\r\n //console.log('computed webLogo')\r\n\r\n let vo = this\r\n\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, `kpLang.${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=642f8916&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 \"642f8916\",\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 style=\"padding:10px 15px; font-size:0.8rem;\" v-else>\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=38d370c4&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 \"38d370c4\",\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 style=\"padding:10px 15px; font-size:0.8rem;\" v-else>\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=2f0b23bb&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 \"2f0b23bb\",\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 style=\"padding:10px 15px; font-size:0.8rem;\" v-else>\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=c799b49a&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 \"c799b49a\",\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 style=\"padding:10px 15px; font-size:0.8rem;\" v-else>\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=38de46c8&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 \"38de46c8\",\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 style=\"padding:10px 15px; font-size:0.8rem;\" v-else>\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=f7637d02&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 \"f7637d02\",\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\nexport 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 genID from 'wsemi/src/genID.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\nimport now2strp from 'wsemi/src/now2strp.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 = `${now2strp()}-${genID()}`\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 genID from 'wsemi/src/genID.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\nimport now2strp from 'wsemi/src/now2strp.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 = `${now2strp()}-${genID()}`\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 genID from 'wsemi/src/genID.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\nimport now2strp from 'wsemi/src/now2strp.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 = `${now2strp()}-${genID()}`\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 genID from 'wsemi/src/genID.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\nimport now2strp from 'wsemi/src/now2strp.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 = `${now2strp()}-${genID()}`\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 user: {\r\n id: '', //id-for-admin\r\n name: '', //測試者\r\n email: '', //admin@example.com\r\n isAdmin: 'n',\r\n },\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 keyLangs = {\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 managementTargets: {\r\n eng: `Targets`,\r\n cht: `管理對象`,\r\n },\r\n managementTargetsMsg: {\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 targetId: {\r\n eng: `Target`,\r\n cht: `對象名稱`,\r\n },\r\n targetIdEmpty: {\r\n eng: `No valid 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 managementPemis: {\r\n eng: `Permissions`,\r\n cht: `管理權限`,\r\n },\r\n managementPemisMsg: {\r\n eng: `Permissions are primarily used to set rules for enabling or disabling various objects.`,\r\n cht: `權限主要為用來設定各種對象之使用或禁用規則。`,\r\n },\r\n pemiName: {\r\n eng: `Name of permission`,\r\n cht: `權限名稱`,\r\n },\r\n pemiNameEmpty: {\r\n eng: `No valid 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 managementGrups: {\r\n eng: `Permission groups`,\r\n cht: `管理權限群組`,\r\n },\r\n managementGrupsMsg: {\r\n eng: `Permission groups are primarily used to configure combinations of different permissions.`,\r\n cht: `權限群組主要為用來設定組合各種權限。`,\r\n },\r\n grupName: {\r\n eng: `Name of permission group`,\r\n cht: `權限群組名稱`,\r\n },\r\n grupNameEmpty: {\r\n eng: `No valid 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 managementUsers: {\r\n eng: `Users`,\r\n cht: `管理使用者`,\r\n },\r\n managementUsersMsg: {\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 userName: {\r\n eng: `Name of user`,\r\n cht: `使用者名稱`,\r\n },\r\n userNameEmpty: {\r\n eng: `No valid 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: `No valid 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 keyLangs\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 keyLangs 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\nfunction 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 //merge keyLangs\r\n let webName = get(vo, '$store.state.webInfor.webName', '')\r\n let webDescription = get(vo, '$store.state.webInfor.webDescription', '')\r\n let kls = {\r\n ...keyLangs,\r\n webName: {\r\n ...webName,\r\n },\r\n webDescription: {\r\n ...webDescription,\r\n },\r\n }\r\n\r\n //update\r\n let kpText = {}\r\n each(kls, (v, k) => {\r\n kpText[k] = v[lang]\r\n })\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\nasync 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\nlet bFirstSync = false\r\nWServHapiClient({\r\n showLog: false,\r\n getUrl: () => {\r\n return window.location.origin + window.location.pathname\r\n },\r\n useWaitToken: true,\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 Vue.prototype.$fapi = _fapi\r\n _fapi.getWebInfor() //已有fapi時優先取得web資訊\r\n .then((wi) => {\r\n // console.log('$fapi getWebInfor', wi)\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 .catch((err) => {\r\n console.log(err)\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 getAfterUpdateTableTags: (r) => {\r\n // console.log('getAfterUpdateTableTags', r, 'needToRefresh', JSON.stringify(r.oldTableTags) !== JSON.stringify(r.newTableTags))\r\n if (bFirstSync) {\r\n return\r\n }\r\n bFirstSync = true\r\n // console.log('first-sync')\r\n Vue.prototype.$store.commit(Vue.prototype.$store.types.UpdateSyncState, true)\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","// 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\t143: 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, [998], function() { return __webpack_require__(4326); })\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","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","$t","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","langKeys","lang","toggleLang","getLangText","item","syncState","panelHeight","drawerWidth","drawerWidthMin","drawerWidthMax","height","menus","menuActive","v","h","menu","menuKey","drawer","width","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","getCgrupsText","cgrupsText","showVeCgrups","updateUsers","WDrawer","WListVertical","LayoutContentTargets","LayoutContentPemis","LayoutContentGrups","LayoutContentUsers","ms","text","icon","find","clientWidth","clientHeight","WTextSelect","LayoutContent","mdiMenu","kpLang","showLanguage","setLang","viewState","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","UpdateViewState","UpdateTableData","UpdateData","UpdateHeightApp","UpdateHeightAppEff","UpdateHeightToolbar","UpdateMenu","UpdateUserToken","UpdateUserSelf","keyTable","tableNameCht","tableNameEng","settings","pk","order","description","from","ndata","undefined","o","dtmapping","now2strp","genID","nowms2str","funTest","_ref","_ref2","_slicedToArray","dtpick","tab","isAdmin","cs","ds","build","useCreateStorage","state","hostname","origin","leftDrawerWidth","heightApp","heightAppEff","userToken","kpText","mutations","_mutations","_defineProperty","types","tableName","path","userSelf","use","Vuex","st","getters","actions","strict","$store","keyLangs","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","managementTargets","managementTargetsMsg","targetId","targetIdEmpty","targetIdDuplicate","targetAddEmpty","targetAdd","targetAddNameNew","targetAddIdNew","targetCopy","targetCopyNameNew","targetDeleteCheckTargets","targetEnable","targetClearTargetsFail","targetSaveTargetsFail","targetSaveTargetsSuccess","managementPemis","managementPemisMsg","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","managementGrups","managementGrupsMsg","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","managementUsers","managementUsersMsg","userName","userNameEmpty","userNameDuplicate","userEmailEmpty","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","updateViewState","forceUpdate","broadcast","chs","$forceUpdate","$children","validLang","getLang","_lang","genKpText","webDescription","kls","getKpText","gv","cv","def","isfun","innerHeight","waitData","_waitData","_args","waitFun","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","bFirstSync","WServHapiClient","showLog","getUrl","pathname","useWaitToken","getToken","getServerMethods","_fapi","getWebInfor","recvData","getAfterUpdateTableTags","store","App","$mount","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__","m","deferred","O","result","chunkIds","priority","notFulfilled","Infinity","fulfilled","j","Object","every","splice","getter","__esModule","d","a","definition","defineProperty","enumerable","globalThis","Function","e","prop","hasOwnProperty","Symbol","toStringTag","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","self","forEach","bind","__webpack_exports__"],"sourceRoot":""}
|