w-web-perm 1.0.21 → 1.0.22

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.
@@ -1 +1 @@
1
- {"version":3,"file":"js/app.d59bcc1e.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/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/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')],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==='已連線' || _vm.connState==='連線中...')?[_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.connState)+\" \")])])]:(_vm.connState==='已登出')?[_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.connState)+\" \")])])]:(_vm.connState==='無法連線')?[_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.connState)+\" \")])])]:[_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.connState)+\" \")])])]],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==='已連線' || connState==='連線中...'\">\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 {{connState}}\r\n </div>\r\n </div>\r\n\r\n </template>\r\n\r\n <template v-else-if=\"connState==='已登出'\">\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 {{connState}}\r\n </div>\r\n </div>\r\n\r\n </template>\r\n\r\n <template v-else-if=\"connState==='無法連線'\">\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 {{connState}}\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 {{connState}}\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'\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,iVBORw0KGgoAAAANSUhEUgAAAKAAAACgCAYAAACLz2ctAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAK6wAACusBgosNWgAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNui8sowAAAAWdEVYdENyZWF0aW9uIFRpbWUAMDMvMTMvMjAy1hkhAAAQCUlEQVR4nO2db0xb1f/H35fyt3+oWwkqLmw+8IkuTrOJMPwzZpaYadQh48EAQ5gQR5hsc1mMYCZhJEaNONaAY1EwjLkRg5Mle8IYZnEOJssUMdEnGHFDhxRGy78W6Pk+4Fd+HfS2vbf3nnNLzyvZg7X3nnN6efVzzr2f03MEQgg4HFZEsW4AJ7LhAnKYwgXkMIULyGEKF5DDFC4ghylcQA5TuIAcpnABOUzhAnKYwgXkMIULyGEKF5DDFC4ghynRrBvA0SbHjh0jExMTsNvt0Ov1qK2tFdSoR+DzATnenDlzhtTV1WF+fv6e100mE7q7uxWXkAvIWaK5uZlYrVa/x/T19SkqIR8DcgAEJx8AnDp1StGIxQXkBC0fANy4cUPRuvlNiEZpbGwkt27dwujoKGw2G2w2GyYmJgAsjseSkpJgsVhgsViQkpKC0tJSWV2jFPkA4J9//pFTjSh8DKghqqqqyNWrVzE2Nibr/MTERGRkZKCmpiYoGaXKBwDl5eUoKChQbBzIBWTMyZMnSWtrK6anpxUtNzY2Fjk5OTh06JBPWeTIp8adMBeQES0tLaS5uXmpW1ULvV6P/Px8lJSULIkjRz4AOHLkCHJzc7mA4c7OnTvJyMgI1TrNZjP27duHyclJyJGvrKwMhYWF/DlgOFNbW0taW1tZN0MyaskH8LtgapSVlZGenh7WzZCMmvIBXEAqZGdnk6GhIdbNkIza8gFcQNXZtm0bmZycZN0MydCQD+CZEFXh8gWGR0ARDh8+TG7cuAGHw4Enn3wSp06dkvQH4fIFB78L9sGWLVt8XpRgReTyBQ/vgpeRlZUl+o28efMmCgsL/X5jw1U+ADAajdTr5AJ6UVNTQxwOh99jBgYGRCUMZ/kAoKGhgXqdXEAvYmJigjrOl4ThLh8ATExMoLGxkeqYjAvohclkCvpYbwlXg3weTp8+TbU+LqAX999/v6TjBwYGkJaWtmrkA4Dp6Wl8+umn1KIgvwteRm5uLhkcHGTdDKbExsbixx9/pHI3zCPgMtra2oQ1a9awbgZTXC4Xtbq4gD7o7OyMeAkrKiqodI1cQBEiXcJr165RqYcL6IdIltBut1OphwsYgEiWsL6+XvVumAsYBJEq4fDwsOp1cAGDJBIltNlsqtfBBZRApEnIBdQgkSTh6Oio6nVwAWUQKRIGmhmkBFxAmUSKhGrDBQyBzs5OQRCoTiCmitlsVr0OLmAIbNu2jazmyRwWi0X1OriAMllNcwDF4AJqlKysrFUvHwAkJSWpXgcXUCJZWVkBfzeyWli3bp3qdfAJqRKIJPkA5Rck9wWPgEESafKtXbuWSj1cwCCQI9/jjz+O++67T6UWqU9mZiaVengXHAA58mVkZODEiRMCAOzYsYOMj4+r0jY1odH9AjwC+iVU+YDwzJjo9XpqdXEBRdi+fXvI8nkINwnz8vKo1cW7YB9s376dSJ2SLiafN+HQHZvNZnR1dVHLL/IIuAy15APCIxIWFhZSrY9HQC/UlM8brUbC5ORkXLx4kersCi7g/0FLPg9alJDWna83vAsGffkA7XXHNG88vIn4CMhCPm+0EAnT09NhtVqZTGyM6Ah48OBBpvIB7CNhamoqM/mACI+AYmtBi6G0fN6wiIRGoxHff/890yndERsBq6qqNCMfsBgJaeaOtSAfwHibhvPnz5O+vj4IgoDq6mqqF0PKH1tt+Tykpqbi7t27alejGfkARl3wuXPnyMcff7ziddqD4WC6YFry7d+/n9BYkUpL8gGMBNy6dSsRWwRxzZo16OzspHKB0tPTyfz8vOj7W7duRV1dHZdPRaiPAbOzs0XlA4Dx8XHs2LGDyreip6dHSE5O9vne888/z+WjAPUI+PTTT5OFhYWAx9GMhO+++y4ZHByE0WiEwWBAVlYWsrOzuXwUoC6glAe/NCWkDZdvEepdsJTtoGh2xzSRI5+cFRiioqI0LR/AQMCXX35Z0vGrTUI58hmNRvz000+SMyZutzvg3nasYXIXXFRURPr7+yWdsxq6Y7nyeUcxORmTjRs3orm5WZPXjlkqrrCwkAwMDEg6J5wllCOfyWRCd3f3is+7miRkloprbm4WNm7cKOmccO2OlZQPkDeBwd8unyxhmguOBAmVls+DXAmLioo0de2YT0ZYzRKqJZ8HORL29/dT35LVH5qZjpWWlkbcbrekc7Q8JlRbPm+kjglTUlLQ0dGhievGPAICi2vtSZUP0G4kpCkfID0SamlpOeYChrrQo9YkpC2fBykSTk1NhVKVojAVUKlVRrUiYWVlpWT5EhMTQ5bPQ7ASPvTQQ0pUpwjMxoBqLHHLekz41FNPSVozOjExEZcvX1a8vf7GhDQ3ow4GJhFQrfWVWUbC999/XxPyAYuRMD093ed75eXlalQpG+oRkMbi3iwiob9JtstRU77leL4YW7ZswWuvvaaZyOeBqoA0V5anLeHevXvJL7/8EvA4mvKFA9S6YNrbGtDujtPS0gIew+VbCZUImJ2dTYaGhlSvxxc0I+EzzzxDZmdnfb7H5fON6hGwrKyMmXwA3Uj4ww8/CI888siK1zds2MDlE0HVCFhbW0taW1tVK18KNCNhU1MTcblcMBqNyMvL4+L5QVUBpS59oTasnxNyVqJaF7xz505NyQdoJ2PC+X9UEbClpYWMjIyoUXTIcAm1hSpd8AsvvEAmJiYUL1dJeHesDRSPgCdPntS8fACPhFpB8Qj43HPPkenpaUXLVBMeCdmieAQMJ/mA1RcJrVYrqaysDJvPo2gErKqqIhcuXFCsPJqshkj47LPPkn///Rc6nQ7z8/PIycnBhx9+qOnPpGgEvHr1qpLFUSXcI+Gbb75JRkZGYDabYTQaYTab0d7ezrpZAVFUwLGxMSWLo044S9jT03PPujuCICAuLg67du3S9OdRTEAt/dQvFMJRwt27dxNg5QJGcXFx+O2333D69GnNfh7FBLx165ZSRTEnnCRsa2sjv/76K+Lj432+n5CQgKamJsqtCh7FBBwdHVWqKE0QLhJ++eWXiI2NFX0/JiYGf//9N+rq6jT5WRQT0GazKVWUZtC6hJ9//jn5888//QoILG5A/fXXX1NqlTS4gAHQsoRnzpwR7Xq9iY6OxtjYGD744APNfQ7FBAyH9JtctCjhsWPHyJ07dxATExPU8QaDAefPn1e5VdJhvjJCuKA1CTs6OqDX64M+PioqCk6nE+Xl5Zr5DICCAppMJqWK0ixakfDw4cPEbrdDp9NJOk+v1+PSpUsqtUoeigmYlJSkVFGaRgsSXrp0CQaDAcDis7+FhQXMzMxgdnZ2xb+ZmZml8zzPCd944w3mXyIPiu0VZ7FYMDg4qFRxmsYjIYvc8d69e4nL5Vrqfufm5vDggw+irKxsSUpvfv75Z3z11VeIioqCIAhISEjA9evXaTdbFEUFjCRYSdjT04OEhISl/zudTmzatAkvvfSSz+OfeOIJfPPNN5iamlrqsmNiYrBr1y7y7bffMp+ooFgXnJKSolRRYQPt7nj37t1EEIR7Um6CIPhd7+/u3btYvjOVllJ0iglYWlrK/NvEAloSiqXcBEGA0+kUPW92dhYul2tFnlgrKTpFH8MkJiYqWVzYQENCsZSbIAiYm5sTPW9mZgZzc3MrBPSk6D777DOmUVBRATMyMpQsLqxQU8L6+nq/Kbe5uTmITSyenZ2F2+32udWXwWDA2bNnFW2rVBQVsKamJiK7YQ9qSXj27Nl7bjy8EQQBLpdrxTjPg9PpFJVTp9NhfHycaYpO8UxIoMT4amd8fBy5ubmK/UE9KbfoaN8PLDxdsNgi7y6XS1RAgH2KTnEBc3JylC6SOVFR0i7T4OAg2tvbFZHwu+++85ty8wgotvO72GpdHjwpuv379zOJgooLeOjQIUFKjlLrGI1GXL9+XfJmOnfu3Am57nfeeYc4HA6/KTePgHK6YA96vR6XL18Oqa1yUWUyQn5+vhrFUsd7p0qpOzo5HI6Q6+/q6gpqwkGoArJM0akiYElJiWA2m9Uomhq+dhqXIqG/RyPBUFRURFwuV8DuXxAEuN1u0foCjQE9JCQkoLe3V1ZbQ0G16Vj79u1Tq2jV8bfNfTASmkwmVFRUhPREoLe3V/TOdzkul0tUQCmb0sTGxuKVV16hGgUVywUvR0vbQUnBn3wempubheLiYnLz5k2f74e68YyvlJsYOp0OTqcTR44cwQMPPHDPewsLC+jv7/c5ScEXcXFx+P3339HS0kIKCgqoPFJTZXWs5uZmYrVaFS9XbYKRbzkeEU0mEzZv3oxPPvkkpD/cuXPnyNGjR+/5jW8wOJ1On+PAuLg4SfMG5+bmYLFYqC0prLiAkSSfGrz44otkeHhY8vPUmZkZnwLGx8cjJiYmqHGgB7vdjtLSUhw4cED166GogFy+0LBareTEiROSZ5cvLCwgMzMTGzZsWHpNEATMz8/jypUruH37tuiDbLHyYmNj0dvbGz4Chqt8qampaG9vZy4fsLjNw+TkpGRZEhIS0NHR4XNW+hdffIGPPvpIstQOhwO5ubmorq5W9doochccrvKlp6drRr7q6mry33//SZLPg06nE30OKDWL48FgMIDGSmchCxiu8uXl5cFqtWpCPkD6r9yWI9aTye3haKXoQnoMI1e+srIyGI1GNDQ0UP89cXJyMi5evKgZ8QDgwIEDxOFwSL7zVRu9Xo+uri5V65AdAdva2mTLV1hYKOTk5AhdXV1CSUlJSN/8YDGbzSgvL9ecfADQ3d0d9LM6XwiCIPoDdTldune5giAgPz9ftSgoW8CGhgbJ53jk836tpKREuHLlirBnzx5VpnLp9XoUFxejq6tLoPVwVQpFRUXE14zlYBEEATMzM/jrr7/gcrnu+Tc7O4uhoSHZ40BgMUXX19cn+/xAyLoLbmlpIcePH5d0ji/5xKioqCDXrl2D3W6X3DYAWLt2LTIzM3H06FHNCbecxx57jMTHx8sWEADcbvfSqqjLX1diVo7T6cTDDz+Mjo4Oxa+nLAFfffVVcvv27aCPlyLfcurr68nw8DBsNhtsNhtGR0eXZpqYzWZYLBZYLBYkJSVh3bp1KCkp0bx0Hl5//XXyxx9/BLXAUCAWFhZ8TkqNjo4OSW4Pdrsd7733nuy/oxiyBHzrrbdIsGE5FPlWO48++igJl7mTLpcL69evx4ULFxT9W8oaHGzevDmo47h84rS0tBCxWcxaRKfTqbIEnywBi4uLA0rF5fNPQUGBYDAYRKfSa42pqSls2rRJ8XJDSsVlZWWR5TN/o6Oj8fbbb2PPnj1cvgA0NjaS48eP+/zdrpYghGD9+vWq7KMSci744MGDZHp6GomJiTCbzaisrNTuldQoTU1NIT2KURO32w2LxYKcnBxVGqfqhtUcTiD4CqkcpnABOUzhAnKYwgXkMIULyGEKF5DDFC4ghylcQA5TuIAcpnABOUzhAnKYwgXkMIULyGEKF5DDFC4ghylcQA5T/gcwfxasAttwjQAAAABJRU5ErkJggg==`,\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=3630a75a&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 \"3630a75a\",\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;`)},[(false)?_c('WButtonCircle',{attrs:{\"icon\":'mdi-menu',\"tooltip\":'左側選單',\"shadow\":false},on:{\"click\":function($event){_vm.drawer=!_vm.drawer}}}):_vm._e(),_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%\"}}),_c('div',{staticStyle:{\"padding-right\":\"10px\",\"white-space\":\"nowrap\"}},[_c('WTextSelect',{staticStyle:{\"width\":\"100px\"},attrs:{\"items\":_vm.tgLangs},on:{\"input\":_vm.changeLang},model:{value:(_vm.tgLangSelect),callback:function ($$v) {_vm.tgLangSelect=$$v},expression:\"tgLangSelect\"}})],1)],1),_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:1px; right:4px;`)},[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:3,h:3},\"icon\":'mdi-arrow-left',\"iconSize\":16,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#eee',\"backgroundColorFocus\":'#fff',\"borderColor\":'transparent',\"borderColorHover\":'#eee',\"borderColorFocus\":'#eee',\"tooltip\":_vm.$t('menuTreeHide'),\"shadow\":true},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:1px; left:4px;`)},[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:3,h:3},\"icon\":'mdi-arrow-right',\"iconSize\":16,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#eee',\"backgroundColorFocus\":'#fff',\"borderColor\":'transparent',\"borderColorHover\":'#eee',\"borderColorFocus\":'#eee',\"tooltip\":_vm.$t('menuTreeShow'),\"shadow\":true},on:{\"click\":function($event){_vm.drawer=true}}})],1):_vm._e()],2)]}}],null,false,836279765),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:{\"changeTargets\":_vm.changeTargets},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\":26}}),_c('div',{staticStyle:{\"padding-left\":\"10px\",\"font-size\":\"1.4rem\",\"color\":\"#000\"}},[_vm._v(\" \"+_vm._s(_vm.$t('managementTargets'))+\" \")])],1)]),_c('div',{staticStyle:{\"padding\":\"5px\",\"border-top\":\"1px solid #ddd\",\"display\":\"flex\",\"align-items\":\"center\"}},[[_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\":\"6px\"}})],(_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\":\"6px\"}})]:_vm._e(),(_vm.hasItemsCheck)?[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('targetDeleteChecks'),\"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\":\"6px\"}})]:_vm._e(),(_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\":\"6px\"}})]:_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 :changeTargets=\"changeTargets\"\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=\"26\"\r\n ></WIcon>\r\n\r\n <div style=\"padding-left:10px; font-size:1.4rem; color:#000;\">\r\n {{$t('managementTargets')}}\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <!-- 功能區 -->\r\n <div style=\"padding:5px; border-top:1px solid #ddd; display:flex; align-items:center;\">\r\n\r\n <template>\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:6px;\"></div>\r\n\r\n </template>\r\n\r\n <template v-if=\"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:6px;\"></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('targetDeleteChecks')\"\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:6px;\"></div>\r\n\r\n </template>\r\n\r\n <template v-if=\"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:6px;\"></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, 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 cstr from 'wsemi/src/cstr.mjs'\r\nimport WIcon from 'w-component-vue/src/components/WIcon.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 WIcon,\r\n WButtonCircle,\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 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 isModified: false,\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 },\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 changeTargets: function() {\r\n // console.log('computed changeTargets')\r\n\r\n let vo = this\r\n\r\n //check\r\n if (size(vo.targets) === 0) {\r\n return ''\r\n }\r\n\r\n //cloneDeep\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()\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 },\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 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 'description',\r\n 'from',\r\n 'userId',\r\n 'timeCreate',\r\n 'userIdUpdate',\r\n 'timeUpdate',\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 '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 //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 defHeadFilter: true,\r\n defCellAlignH: 'left',\r\n // kpHeadHide: {\r\n // 'id': true,\r\n // },\r\n kpHeadFixLeft: {\r\n 'id': true,\r\n },\r\n defHeadMinWidth: 150,\r\n kpHeadWidth: {\r\n 'id': 300,\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 '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 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 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=b9e757ce&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 \"b9e757ce\",\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:{\"changePemis\":_vm.changePemis},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\":26}}),_c('div',{staticStyle:{\"padding-left\":\"10px\",\"font-size\":\"1.4rem\",\"color\":\"#000\"}},[_vm._v(\" \"+_vm._s(_vm.$t('managementPemis'))+\" \")])],1)]),_c('div',{staticStyle:{\"padding\":\"5px\",\"border-top\":\"1px solid #ddd\",\"display\":\"flex\",\"align-items\":\"center\"}},[[_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\":\"6px\"}})],(_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\":\"6px\"}})]:_vm._e(),(_vm.hasItemsCheck)?[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('pemiDeleteChecks'),\"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\":\"6px\"}})]:_vm._e(),(_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\":\"6px\"}})]:_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 :changePemis=\"changePemis\"\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=\"26\"\r\n ></WIcon>\r\n\r\n <div style=\"padding-left:10px; font-size:1.4rem; color:#000;\">\r\n {{$t('managementPemis')}}\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <!-- 功能區 -->\r\n <div style=\"padding:5px; border-top:1px solid #ddd; display:flex; align-items:center;\">\r\n\r\n <template>\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:6px;\"></div>\r\n\r\n </template>\r\n\r\n <template v-if=\"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:6px;\"></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('pemiDeleteChecks')\"\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:6px;\"></div>\r\n\r\n </template>\r\n\r\n <template v-if=\"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:6px;\"></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, mdiPlus, mdiPencilOutline, mdiContentCopy } from '@mdi/js/mdi.js'\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 cstr from 'wsemi/src/cstr.mjs'\r\nimport WIcon from 'w-component-vue/src/components/WIcon.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 WIcon,\r\n WButtonCircle,\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 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 isModified: false,\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.showVeCrulesById = vo.showVeCrulesById\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 changePemis: function() {\r\n // console.log('computed changePemis')\r\n\r\n let vo = this\r\n\r\n //check\r\n if (size(vo.pemis) === 0) {\r\n return ''\r\n }\r\n\r\n //cloneDeep\r\n let items = cloneDeep(vo.pemis)\r\n\r\n //save\r\n vo.items = items\r\n\r\n //genOpt\r\n vo.genOpt()\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 },\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 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 'name',\r\n 'description',\r\n 'from',\r\n 'crules',\r\n 'userId',\r\n 'timeCreate',\r\n 'userIdUpdate',\r\n 'timeUpdate',\r\n ]\r\n // console.log('ks', ks)\r\n\r\n //kpHead\r\n let kpHead = {\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 '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 //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 defHeadFilter: true,\r\n defCellAlignH: 'left',\r\n kpHeadHide: {\r\n 'id': true,\r\n },\r\n kpHeadFixLeft: {\r\n 'name': true,\r\n },\r\n defHeadMinWidth: 150,\r\n kpHeadWidth: {\r\n 'name': 300,\r\n 'crules': 100,\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 '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 '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 kpHeadFilter: {\r\n 'crules': false,\r\n },\r\n kpHeadSort: {\r\n 'crules': false,\r\n },\r\n kpHeadFocusHighlight: { //雖然效果不完全, 但因按鈕與cell有padding可被點擊, 故還是需要開啟\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 '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%;\" onclick=\"$vo.$dg.showVeCrulesById('${id}')\">${vo.$t('pemiEditCrulesSimple')}</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 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.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 //添加至最首\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 //添加至最首\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 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('pemiEditCrulesNoId')}`, { 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('pemiEditCrulesNoPemi')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //showVeCrules\r\n vo.$dg.showVeCrules(r)\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=1a14558e&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 \"1a14558e\",\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:{\"changeGrups\":_vm.changeGrups},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\":26}}),_c('div',{staticStyle:{\"padding-left\":\"10px\",\"font-size\":\"1.4rem\",\"color\":\"#000\"}},[_vm._v(\" \"+_vm._s(_vm.$t('managementGrups'))+\" \")])],1)]),_c('div',{staticStyle:{\"padding\":\"5px\",\"border-top\":\"1px solid #ddd\",\"display\":\"flex\",\"align-items\":\"center\"}},[[_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\":\"6px\"}})],(_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\":\"6px\"}})]:_vm._e(),(_vm.hasItemsCheck)?[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('grupDeleteChecks'),\"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\":\"6px\"}})]:_vm._e(),(_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\":\"6px\"}})]:_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 :changeGrups=\"changeGrups\"\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=\"26\"\r\n ></WIcon>\r\n\r\n <div style=\"padding-left:10px; font-size:1.4rem; color:#000;\">\r\n {{$t('managementGrups')}}\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <!-- 功能區 -->\r\n <div style=\"padding:5px; border-top:1px solid #ddd; display:flex; align-items:center;\">\r\n\r\n <template>\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:6px;\"></div>\r\n\r\n </template>\r\n\r\n <template v-if=\"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:6px;\"></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('grupDeleteChecks')\"\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:6px;\"></div>\r\n\r\n </template>\r\n\r\n <template v-if=\"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:6px;\"></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, mdiPlus, mdiPencilOutline, mdiContentCopy } from '@mdi/js/mdi.js'\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 cstr from 'wsemi/src/cstr.mjs'\r\nimport WIcon from 'w-component-vue/src/components/WIcon.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 WIcon,\r\n WButtonCircle,\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 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 isModified: false,\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.showVeCpemisById = vo.showVeCpemisById\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 changeGrups: function() {\r\n // console.log('computed changeGrups')\r\n\r\n let vo = this\r\n\r\n //check\r\n if (size(vo.grups) === 0) {\r\n return ''\r\n }\r\n\r\n //cloneDeep\r\n let items = cloneDeep(vo.grups)\r\n\r\n //save\r\n vo.items = items\r\n\r\n //genOpt\r\n vo.genOpt()\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 },\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 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 'name',\r\n 'description',\r\n 'from',\r\n 'cpemis',\r\n 'userId',\r\n 'timeCreate',\r\n 'userIdUpdate',\r\n 'timeUpdate',\r\n ]\r\n // console.log('ks', ks)\r\n\r\n //kpHead\r\n let kpHead = {\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 '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 //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 defHeadFilter: true,\r\n defCellAlignH: 'left',\r\n kpHeadHide: {\r\n 'id': true,\r\n },\r\n kpHeadFixLeft: {\r\n 'name': true,\r\n },\r\n defHeadMinWidth: 150,\r\n kpHeadWidth: {\r\n 'name': 300,\r\n 'cpemis': 100,\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 '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 '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 kpHeadFilter: {\r\n 'cpemis': false,\r\n },\r\n kpHeadSort: {\r\n 'cpemis': false,\r\n },\r\n kpHeadFocusHighlight: { //雖然效果不完全, 但因按鈕與cell有padding可被點擊, 故還是需要開啟\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 '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%;\" onclick=\"$vo.$dg.showVeCpemisById('${id}')\">${vo.$t('grupEditCpemisSimple')}</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 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 //添加至最首\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 //添加至最首\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 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('grupEditCpemisNoId')}`, { 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('grupEditCpemisNoGrup')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //showVeCpemis\r\n vo.$dg.showVeCpemis(r)\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=3956f73c&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 \"3956f73c\",\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:{\"changeUsers\":_vm.changeUsers},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\":26}}),_c('div',{staticStyle:{\"padding-left\":\"10px\",\"font-size\":\"1.4rem\",\"color\":\"#000\"}},[_vm._v(\" \"+_vm._s(_vm.$t('managementUsers'))+\" \")])],1)]),_c('div',{staticStyle:{\"padding\":\"5px\",\"border-top\":\"1px solid #ddd\",\"display\":\"flex\",\"align-items\":\"center\"}},[[_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\":\"6px\"}})],(_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\":\"6px\"}})]:_vm._e(),(_vm.hasItemsCheck)?[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('userDeleteChecks'),\"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\":\"6px\"}})]:_vm._e(),(_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\":\"6px\"}})]:_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 :changeUsers=\"changeUsers\"\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=\"26\"\r\n ></WIcon>\r\n\r\n <div style=\"padding-left:10px; font-size:1.4rem; color:#000;\">\r\n {{$t('managementUsers')}}\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <!-- 功能區 -->\r\n <div style=\"padding:5px; border-top:1px solid #ddd; display:flex; align-items:center;\">\r\n\r\n <template>\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:6px;\"></div>\r\n\r\n </template>\r\n\r\n <template v-if=\"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:6px;\"></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('userDeleteChecks')\"\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:6px;\"></div>\r\n\r\n </template>\r\n\r\n <template v-if=\"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:6px;\"></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, mdiPlus, mdiPencilOutline, mdiContentCopy } from '@mdi/js/mdi.js'\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 cstr from 'wsemi/src/cstr.mjs'\r\nimport WIcon from 'w-component-vue/src/components/WIcon.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 WIcon,\r\n WButtonCircle,\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 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 isModified: false,\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 },\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 changeUsers: function() {\r\n // console.log('computed changeUsers')\r\n\r\n let vo = this\r\n\r\n //check\r\n if (size(vo.users) === 0) {\r\n return ''\r\n }\r\n\r\n //cloneDeep\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()\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 },\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 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 '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 // console.log('ks', ks)\r\n\r\n //kpHead\r\n let kpHead = {\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 //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 defHeadFilter: true,\r\n defCellAlignH: 'left',\r\n kpHeadHide: {\r\n 'id': true,\r\n },\r\n kpHeadFixLeft: {\r\n 'name': true,\r\n },\r\n defHeadMinWidth: 150,\r\n kpHeadWidth: {\r\n 'cgrups': 100,\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 '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 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%;\" onclick=\"$vo.$dg.showVeCgrupsById('${id}')\">${vo.$t('userEditCgrupsSimple')}</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}')\" />\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}')\" />\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 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('userEditNoId')}`, { 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('userEditNoUser')}`, { 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('userEditNoId')}`, { 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('userEditNoUser')}`, { 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 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('userEditCgrupsNoId')}`, { 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('userEditCgrupsNoUser')}`, { 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)\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=433fc1f4&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 \"433fc1f4\",\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:1px; right:4px;`\"\r\n v-if=\"drawer\"\r\n >\r\n <WButtonCircle\r\n :paddingStyle=\"{v:3,h:3}\"\r\n :icon=\"'mdi-arrow-left'\"\r\n :iconSize=\"16\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#eee'\"\r\n :backgroundColorFocus=\"'#fff'\"\r\n :borderColor=\"'transparent'\"\r\n :borderColorHover=\"'#eee'\"\r\n :borderColorFocus=\"'#eee'\"\r\n :tooltip=\"$t('menuTreeHide')\"\r\n :shadow=\"true\"\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:1px; left:4px;`\"\r\n v-if=\"!drawer\"\r\n >\r\n <WButtonCircle\r\n :paddingStyle=\"{v:3,h:3}\"\r\n :icon=\"'mdi-arrow-right'\"\r\n :iconSize=\"16\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#eee'\"\r\n :backgroundColorFocus=\"'#fff'\"\r\n :borderColor=\"'transparent'\"\r\n :borderColorHover=\"'#eee'\"\r\n :borderColorFocus=\"'#eee'\"\r\n :tooltip=\"$t('menuTreeShow')\"\r\n :shadow=\"true\"\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=437fda3e&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 \"437fda3e\",\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 <WButtonCircle\r\n :icon=\"'mdi-menu'\"\r\n :tooltip=\"'左側選單'\"\r\n :shadow=\"false\"\r\n @click=\"drawer=!drawer\"\r\n v-if=\"false\"\r\n ></WButtonCircle>\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 style=\"padding-right:10px; white-space:nowrap\">\r\n <WTextSelect\r\n style=\"width:100px;\"\r\n :items=\"tgLangs\"\r\n v-model=\"tgLangSelect\"\r\n @input=\"changeLang\"\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\r\n mdiMenu,\r\n // drawer: null, //null false\r\n // menuKey: 'blocks',\r\n userName: 'tester',\r\n\r\n drawer: true, //null,\r\n\r\n tgLangs: [\r\n {\r\n id: 'cht',\r\n text: '中文',\r\n },\r\n {\r\n id: 'eng',\r\n text: 'English',\r\n },\r\n ],\r\n tgLangSelect: {\r\n id: 'cht',\r\n text: '中文',\r\n },\r\n\r\n }\r\n },\r\n beforeMount: function() {\r\n // console.log('beforeMount')\r\n\r\n let vo = this\r\n\r\n //setLang\r\n vo.$ui.setLang(vo.tgLangSelect.id)\r\n\r\n },\r\n computed: {\r\n\r\n viewState: function() {\r\n return get(this, `$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 webName: {\r\n get() {\r\n let vo = this\r\n let c = vo.$t('webName')\r\n // console.log('get webName1', c)\r\n if (!isestr(c)) {\r\n c = vo.$t('waitingData')\r\n }\r\n // console.log('get webName2', c)\r\n document.title = c //更換網頁title\r\n return c\r\n },\r\n // set(value) {\r\n // return value\r\n // },\r\n },\r\n\r\n webLogo: function() {\r\n //console.log('computed webLogo')\r\n\r\n let vo = this\r\n\r\n return get(vo, `$store.state.webInfor.webLogo`, '')\r\n },\r\n\r\n },\r\n methods: {\r\n\r\n changeLang: function(msg) {\r\n // console.log('methods changeLang', msg)\r\n let vo = this\r\n let lang = msg.id\r\n vo.$ui.setLang(lang)\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=f2151b4e&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 \"f2151b4e\",\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.$t('pemiEditCrules'),\"icon\":_vm.mdiFormatListCheckbox,\"minWidth\":800,\"maxWidth\":800,\"fullscreen\":_vm.fullscreen,\"contentBackgroundColor\":'#fff',\"headerBtns\":_vm.useHeaderBtns,\"hasSaveBtn\":_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\":\"5px\",\"background\":\"#fff\",\"display\":\"flex\",\"align-items\":\"center\"}},[[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('cruleCheckAllYes'),\"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\":\"6px\"}})],[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('cruleCheckAllNo'),\"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\":\"6px\"}})],[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('cruleCheckAllInv'),\"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\":\"6px\"}})],(_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\":\"6px\"}})]:_vm._e()],2)]),(_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=\"$t('pemiEditCrules')\"\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=\"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:5px; background:#fff; display:flex; align-items:center;\">\r\n\r\n <template>\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('cruleCheckAllYes')\"\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:6px;\"></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('cruleCheckAllNo')\"\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:6px;\"></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('cruleCheckAllInv')\"\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:6px;\"></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:6px;\"></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 trim from 'lodash-es/trim.js'\r\nimport uniq from 'lodash-es/uniq.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 cloneDeep from 'lodash-es/cloneDeep.js'\r\nimport genPm from 'wsemi/src/genPm.mjs'\r\nimport sep from 'wsemi/src/sep.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 WText from 'w-component-vue/src/components/WText.vue'\r\nimport WTextSuggest from 'w-component-vue/src/components/WTextSuggest.vue'\r\nimport WSwitch from 'w-component-vue/src/components/WSwitch.vue'\r\nimport WCheckbox from 'w-component-vue/src/components/WCheckbox.vue'\r\nimport WIcon from 'w-component-vue/src/components/WIcon.vue'\r\nimport WButtonChip from 'w-component-vue/src/components/WButtonChip.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 WText,\r\n WTextSuggest,\r\n WSwitch,\r\n WCheckbox,\r\n WIcon,\r\n WButtonChip,\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 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 defHeadFilter: true,\r\n defCellAlignH: 'left',\r\n // kpCellEditable: {\r\n // 'id': true,\r\n // 'enable': true,\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}')\" />\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('cruleEditNoId')}`, { 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('cruleEditNoRule')}`, { 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 (pemi) {\r\n // console.log('methods show', pemi)\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 //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.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=56bcfc00&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 \"56bcfc00\",\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.$t('grupEditCpemis'),\"icon\":_vm.mdiFormatListCheckbox,\"minWidth\":800,\"maxWidth\":800,\"fullscreen\":_vm.fullscreen,\"contentBackgroundColor\":'#fff',\"headerBtns\":_vm.useHeaderBtns,\"hasSaveBtn\":_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\":\"5px\",\"background\":\"#fff\",\"display\":\"flex\",\"align-items\":\"center\"}},[[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('cpemiCheckAllYes'),\"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\":\"6px\"}})],[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('cpemiCheckAllNo'),\"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\":\"6px\"}})],[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('cpemiCheckAllInv'),\"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\":\"6px\"}})],(_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\":\"6px\"}})]:_vm._e()],2)]),(_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=\"$t('grupEditCpemis')\"\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=\"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:5px; background:#fff; display:flex; align-items:center;\">\r\n\r\n <template>\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('cpemiCheckAllYes')\"\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:6px;\"></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('cpemiCheckAllNo')\"\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:6px;\"></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('cpemiCheckAllInv')\"\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:6px;\"></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:6px;\"></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 trim from 'lodash-es/trim.js'\r\nimport uniq from 'lodash-es/uniq.js'\r\nimport find from 'lodash-es/find.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 cloneDeep from 'lodash-es/cloneDeep.js'\r\nimport genPm from 'wsemi/src/genPm.mjs'\r\nimport sep from 'wsemi/src/sep.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 WText from 'w-component-vue/src/components/WText.vue'\r\nimport WTextSuggest from 'w-component-vue/src/components/WTextSuggest.vue'\r\nimport WSwitch from 'w-component-vue/src/components/WSwitch.vue'\r\nimport WCheckbox from 'w-component-vue/src/components/WCheckbox.vue'\r\nimport WIcon from 'w-component-vue/src/components/WIcon.vue'\r\nimport WButtonChip from 'w-component-vue/src/components/WButtonChip.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 WText,\r\n WTextSuggest,\r\n WSwitch,\r\n WCheckbox,\r\n WIcon,\r\n WButtonChip,\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 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.toggleItemModeByName = vo.toggleItemModeByName\r\n Vue.prototype.$dg.toggleItemEnableByName = vo.toggleItemEnableByName\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('pemiMode'),\r\n 'enable': vo.$t('pemiEnable'),\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 defHeadFilter: true,\r\n defCellAlignH: 'left',\r\n // kpCellEditable: {\r\n // 'name': true,\r\n // 'mode': true,\r\n // 'enable': true,\r\n // },\r\n kpHeadWidth: {\r\n 'mode': 50,\r\n 'enable': 50,\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.toggleItemModeByName('${name}',this.value)\">\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.toggleItemEnableByName('${name}')\" />\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 toggleItemModeByName: function(name, mode) {\r\n // console.log('toggleItemModeByName', 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('cpemiEditNoPemi')}`, { 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 toggleItemEnableByName: function(name) {\r\n // console.log('toggleItemEnableByName', 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('cpemiEditNoPemi')}`, { 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.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 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.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 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.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 (grup) {\r\n // console.log('methods show', grup)\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 //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.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=6d5503e1&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 \"6d5503e1\",\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.$t('userEditCgrups'),\"icon\":_vm.mdiFormatListCheckbox,\"minWidth\":800,\"maxWidth\":800,\"fullscreen\":_vm.fullscreen,\"contentBackgroundColor\":'#fff',\"headerBtns\":_vm.useHeaderBtns,\"hasSaveBtn\":_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\":\"5px\",\"background\":\"#fff\",\"display\":\"flex\",\"align-items\":\"center\"}},[[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('cpemiCheckAllYes'),\"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\":\"6px\"}})],[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('cpemiCheckAllNo'),\"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\":\"6px\"}})],[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('cpemiCheckAllInv'),\"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\":\"6px\"}})],(_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\":\"6px\"}})]:_vm._e()],2)]),(_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=\"$t('userEditCgrups')\"\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=\"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:5px; background:#fff; display:flex; align-items:center;\">\r\n\r\n <template>\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('cpemiCheckAllYes')\"\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:6px;\"></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('cpemiCheckAllNo')\"\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:6px;\"></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('cpemiCheckAllInv')\"\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:6px;\"></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:6px;\"></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 trim from 'lodash-es/trim.js'\r\nimport uniq from 'lodash-es/uniq.js'\r\nimport find from 'lodash-es/find.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 cloneDeep from 'lodash-es/cloneDeep.js'\r\nimport genPm from 'wsemi/src/genPm.mjs'\r\nimport sep from 'wsemi/src/sep.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 WText from 'w-component-vue/src/components/WText.vue'\r\nimport WTextSuggest from 'w-component-vue/src/components/WTextSuggest.vue'\r\nimport WSwitch from 'w-component-vue/src/components/WSwitch.vue'\r\nimport WCheckbox from 'w-component-vue/src/components/WCheckbox.vue'\r\nimport WIcon from 'w-component-vue/src/components/WIcon.vue'\r\nimport WButtonChip from 'w-component-vue/src/components/WButtonChip.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 WText,\r\n WTextSuggest,\r\n WSwitch,\r\n WCheckbox,\r\n WIcon,\r\n WButtonChip,\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 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.toggleItemModeByName = vo.toggleItemModeByName\r\n Vue.prototype.$dg.toggleItemEnableByName = vo.toggleItemEnableByName\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('pemiMode'),\r\n 'enable': vo.$t('pemiEnable'),\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 defHeadFilter: true,\r\n defCellAlignH: 'left',\r\n // kpCellEditable: {\r\n // 'name': true,\r\n // 'mode': true,\r\n // 'enable': true,\r\n // },\r\n kpHeadWidth: {\r\n 'mode': 50,\r\n 'enable': 50,\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.toggleItemModeByName('${name}',this.value)\">\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.toggleItemEnableByName('${name}')\" />\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 toggleItemModeByName: function(name, mode) {\r\n // console.log('toggleItemModeByName', 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('cpemiEditNoPemi')}`, { 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 toggleItemEnableByName: function(name) {\r\n // console.log('toggleItemEnableByName', 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('cpemiEditNoPemi')}`, { 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.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 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.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 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.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 (user) {\r\n // console.log('methods show', user)\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 //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.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=431dfa86&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 \"431dfa86\",\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 </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 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'\n\n\nexport default {\n components: {\n LoadingWinBar,\n CheckYesNo,\n CheckYes,\n LayoutState,\n Layout,\n VeCrules,\n VeCpemis,\n VeCgrups,\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 function loginSuccess(data) {\n console.log('login success', cloneDeep(data.user))\n vo.$ui.updateConnState('已連線')\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(data.text)\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 let connState = get(this, `$store.state.connState`)\n return connState === '已連線'\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=1ebc3561\"\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=1ebc3561&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 = 'Permissions 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: '連線中...',\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',\r\n keyLangs: {\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\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 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 managementTargets: {\r\n eng: `Targets`,\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 targetDeleteChecks: {\r\n eng: `Delete user(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 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 pemiDeleteChecks: {\r\n eng: `Delete user(s)`,\r\n cht: `刪除勾選權限`,\r\n },\r\n pemiEnable: {\r\n eng: `Enable`,\r\n cht: `是否使用`,\r\n },\r\n pemiMode: {\r\n eng: `Operator`,\r\n cht: `合併權限模式`,\r\n },\r\n pemiCrules: {\r\n eng: `Rules of permission`,\r\n cht: `管控對象規則`,\r\n },\r\n pemiEditCrules: {\r\n eng: `Edit rules of permission`,\r\n cht: `編輯對象規則清單`,\r\n },\r\n pemiEditCrulesSimple: {\r\n eng: `Edit rules`,\r\n cht: `編輯對象規則`,\r\n },\r\n pemiEditCrulesNoId: {\r\n eng: `Can not find the id of permission`,\r\n cht: `無法找到權限Id`,\r\n },\r\n pemiEditCrulesNoPemi: {\r\n eng: `Can not find the data of permission`,\r\n cht: `無法找到權限資料`,\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 cruleEditNoId: {\r\n eng: `Can not find the id of rule`,\r\n cht: `無法找到規則Id`,\r\n },\r\n cruleEditNoRule: {\r\n eng: `Can not find the data of rule`,\r\n cht: `無法找到規則資料`,\r\n },\r\n cruleCheckAllYes: {\r\n eng: `Check all`,\r\n cht: `全選使用`,\r\n },\r\n cruleCheckAllNo: {\r\n eng: `Uncheck all`,\r\n cht: `全不選使用`,\r\n },\r\n cruleCheckAllInv: {\r\n eng: `Reverse all`,\r\n cht: `全反選使用`,\r\n },\r\n cruleDeleteCheckTargets: {\r\n eng: `Delete item(s)`,\r\n cht: `刪除勾選對象`,\r\n },\r\n\r\n managementGrups: {\r\n eng: `Permission groups`,\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 grupDeleteChecks: {\r\n eng: `Delete user(s)`,\r\n cht: `刪除勾選權限群組`,\r\n },\r\n grupCpemis: {\r\n eng: `Permissions`,\r\n cht: `管控使用權限`,\r\n },\r\n grupEditCpemis: {\r\n eng: `Edit list of permission group`,\r\n cht: `編輯使用權限清單`,\r\n },\r\n grupEditCpemisSimple: {\r\n eng: `Edit permissions`,\r\n cht: `編輯權限`,\r\n },\r\n grupEditCpemisNoId: {\r\n eng: `Can not find the id of permission group`,\r\n cht: `無法找到權限群組Id`,\r\n },\r\n grupEditCpemisNoGrup: {\r\n eng: `Can not find the data of permission group`,\r\n cht: `無法找到權限群組資料`,\r\n },\r\n grupClearGrupsFail: {\r\n eng: `Failed to clear existing permission groups`,\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 cpemiEditNoName: {\r\n eng: `Can not find the name of permission`,\r\n cht: `無法找到權限名稱`,\r\n },\r\n cpemiEditNoPemi: {\r\n eng: `Can not find the data of permission`,\r\n cht: `無法找到權限資料`,\r\n },\r\n cpemiCheckAllYes: {\r\n eng: `Check all`,\r\n cht: `全選使用`,\r\n },\r\n cpemiCheckAllNo: {\r\n eng: `Uncheck all`,\r\n cht: `全不選使用`,\r\n },\r\n cpemiCheckAllInv: {\r\n eng: `Reverse all`,\r\n cht: `全反選使用`,\r\n },\r\n cpemiDeleteCheckTargets: {\r\n eng: `Delete item(s)`,\r\n cht: `刪除勾選權限`,\r\n },\r\n\r\n managementUsers: {\r\n eng: `Users`,\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 userDeleteChecks: {\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 userEditCgrupsSimple: {\r\n eng: `Edit permission group`,\r\n cht: `編輯權限群組`,\r\n },\r\n userEditCgrupsNoId: {\r\n eng: `Can not find the id of user`,\r\n cht: `無法找到使用者Id`,\r\n },\r\n userEditCgrupsNoUser: {\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 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 userEditNoId: {\r\n eng: `Can not find the id of user`,\r\n cht: `無法找到使用者Id`,\r\n },\r\n userEditNoUser: {\r\n eng: `Can not find the data of user`,\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 kpText: {},\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","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\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('call 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 setLang(lang = null) {\r\n // console.log('call setLang')\r\n\r\n //check lang, 若有輸入才commit\r\n if (isestr(lang)) {\r\n vo.$store.commit(vo.$store.types.UpdateLang, lang)\r\n }\r\n\r\n //getKpLang, 切換lang得調用getKpLang重算kpText\r\n getKpLang()\r\n\r\n //forceUpdate\r\n forceUpdate()\r\n\r\n}\r\n\r\n\r\nfunction getKpLang() {\r\n // console.log('call getKpLang')\r\n\r\n //merge keyLangs\r\n let keyLangs = get(vo, '$store.state.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 //lang\r\n let lang = get(vo, '$store.state.lang')\r\n\r\n //kpText\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\r\n return kpText\r\n}\r\n\r\n\r\nfunction getKpText(key) {\r\n // console.log('call getKpText')\r\n let kpText = get(vo, '$store.state.kpText')\r\n let t = get(kpText, key, '')\r\n if (!isestr(t)) {\r\n t = key\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 getKpLang,\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\n// import mDataSupport from './plugins/mDataSupport.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// //dspt\r\n// let dspt = mDataSupport(Vue.prototype)\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\n// Vue.prototype.$dspt = dspt\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() //因更新webInfor得要重刷語系才能依照語言取得顯示文字\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__(988); })\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","tgLangs","changeLang","model","value","tgLangSelect","callback","$$v","expression","syncState","panelHeight","drawerWidth","drawerWidthMin","drawerWidthMax","height","menus","menuActive","v","h","menu","menuKey","drawer","width","changeTargets","resizePanel","resizeHead","mdiGamepadCircle","mdiPlus","addItem","hasItemCheckOne","mdiContentCopy","copyItem","hasItemsCheck","mdiTrashCanOutline","deleteItemsCheck","isModified","mdiCloudUploadOutline","saveTargets","firstLoading","items","ref","contentHeight","opt","WIcon","WButtonCircle","WAggridVueDyn","type","Boolean","default","mdiStackOverflow","mdiAccountGroupOutline","mdiBallotRecountOutline","mdiPencilOutline","panelWidth","headHeight","itemsCheck","targets","rs","sortBy","pemis","grups","users","size","cloneDeep","genOpt","length","errItemsById","rows","kpErr","kpId","each","k","id","isestr","haskey","isError","c","iseobj","errItemsByName","snew","offsetWidth","offsetHeight","ks","kpHead","language","keys","defHeadFilter","defCellAlignH","kpHeadFixLeft","defHeadMinWidth","kpHeadWidth","kpHeadFilterType","kpCellEditable","kpRowDrag","kpHeadCheckBox","kpCellRender","err","cstr","$ui","getIcon","rowsChange","rowChecked","refresh","cmp","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","changePemis","savePemis","mdiVectorPolylinePlus","mdiCheckboxMarkedCircle","showVeCrulesById","kpName","kpHeadHide","kpHeadFilter","kpHeadSort","kpHeadFocusHighlight","t","kr","showVeCrules","then","crules","set","updatePemis","changeGrups","mdiSelectGroup","saveGrups","showVeCpemisById","showVeCpemis","cpemis","updateGrups","changeUsers","saveUsers","showVeCgrupsById","toggleItemIsAdminById","toggleItemIsActiveById","errItemsByEmail","kpEmail","email","kur","getUserRules","showVeCgrups","cgrups","updateUsers","WDrawer","WListVertical","LayoutContentTargets","LayoutContentPemis","LayoutContentGrups","LayoutContentUsers","ms","text","icon","find","clientWidth","clientHeight","WTextSelect","LayoutContent","mdiMenu","userName","beforeMount","setLang","viewState","document","title","lang","mdiFormatListCheckbox","fullscreen","useHeaderBtns","clickBtns","clickSave","clickClose","mdiCheckboxMultipleMarked","toggleItemsEnableAllYes","mdiCheckboxMultipleBlankOutline","toggleItemsEnableAllNo","mdiCodeTagsCheck","toggleItemsEnableAllInv","WText","WTextSuggest","WSwitch","WCheckbox","WButtonChip","mdiDeleteForever","mdiFullscreen","mdiFullscreenExit","mdiFileTree","pemi","toggleItemEnableById","kpHeaderBtns","kp","toFullscreen","tooltip","evName","toNormalscreen","bts","contentHeightMax","autoFitColumn","getDisplayData","_enable","enable","kpRow","rowsEff","kpRule","delay","JSON","stringify","JSON5","map","grup","toggleItemModeByName","toggleItemEnableByName","kpPemi","isActive","p","user","kpGrup","LoadingWinBar","CheckYesNo","CheckYes","LayoutState","Layout","VeCrules","VeCpemis","VeCgrups","ll","loginSuccess","updateConnState","updateUserToken","token","updateUserSelf","loginError","urlRedirect","Error","isDev","setTimeout","location","href","setVo","wui","timeWaitAnimation","params","login","afterGetUser","afterLogin","$vo","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","webInfor","leftDrawerWidth","heightApp","heightAppEff","userToken","keyLangs","aggridLanguage","eng","cht","systemMessage","ok","no","yes","empty","waitingData","isEditabled","saveChanges","save","close","delete","cancel","screenFull","screenNormal","checkAllYes","checkAllNo","checkAllInv","processing","anUnexpectedErrorOccurred","unknow","username","noDescription","errInNames","errInEmails","managementTargets","targetId","targetIdEmpty","targetIdDuplicate","targetAddEmpty","targetAdd","targetAddNameNew","targetAddIdNew","targetCopy","targetCopyNameNew","targetDeleteChecks","targetEnable","targetClearTargetsFail","targetSaveTargetsFail","targetSaveTargetsSuccess","managementPemis","pemiName","pemiNameEmpty","pemiNameDuplicate","pemiAddEmpty","pemiAdd","pemiAddNameNew","pemiAddIdNew","pemiCopy","pemiCopyNameNew","pemiDeleteChecks","pemiEnable","pemiMode","pemiCrules","pemiEditCrules","pemiEditCrulesSimple","pemiEditCrulesNoId","pemiEditCrulesNoPemi","pemiClearPemisFail","pemiSavePemisFail","pemiSavePemisSuccess","cruleEditNoId","cruleEditNoRule","cruleCheckAllYes","cruleCheckAllNo","cruleCheckAllInv","cruleDeleteCheckTargets","managementGrups","grupName","grupNameEmpty","grupNameDuplicate","grupAddEmpty","grupAdd","grupAddNameNew","grupAddIdNew","grupCopy","grupCopyNameNew","grupDeleteChecks","grupCpemis","grupEditCpemis","grupEditCpemisSimple","grupEditCpemisNoId","grupEditCpemisNoGrup","grupClearGrupsFail","grupSaveGrupsFail","grupSaveGrupsSuccess","cpemiEditNoName","cpemiEditNoPemi","cpemiCheckAllYes","cpemiCheckAllNo","cpemiCheckAllInv","cpemiDeleteCheckTargets","managementUsers","userNameEmpty","userNameDuplicate","userEmailEmpty","userEmailDuplicate","userAddEmpty","userAdd","userAddNameNew","userAddIdNew","userCopy","userCopyNameNew","userDeleteChecks","userCgrups","userEditCgrups","userEditCgrupsSimple","userEditCgrupsNoId","userEditCgrupsNoUser","userClearUsersFail","userSaveUsersFail","userSaveUsersSuccess","userEditNoId","userEditNoUser","allDefaults","active","showChildren","hideChildren","activateChildren","deactivateChildren","isUsernameEmpty","failedToSaveUser","successfulToSaveUser","kpText","mutations","_mutations","_defineProperty","types","tableName","path","userSelf","use","Vuex","st","getters","actions","strict","$store","vObj","commit","updateViewState","forceUpdate","broadcast","chs","$forceUpdate","$children","getKpLang","webDescription","kls","_objectSpread","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","cvKpToArr","push","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","wi","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","n","getter","__esModule","d","a","definition","defineProperty","enumerable","g","globalThis","Function","e","prop","hasOwnProperty","Symbol","toStringTag","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","self","forEach","bind","__webpack_exports__"],"sourceRoot":""}
1
+ {"version":3,"file":"js/app.ce3fad1e.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/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/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')],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==='已連線' || _vm.connState==='連線中...')?[_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.connState)+\" \")])])]:(_vm.connState==='已登出')?[_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.connState)+\" \")])])]:(_vm.connState==='無法連線')?[_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.connState)+\" \")])])]:[_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.connState)+\" \")])])]],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==='已連線' || connState==='連線中...'\">\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 {{connState}}\r\n </div>\r\n </div>\r\n\r\n </template>\r\n\r\n <template v-else-if=\"connState==='已登出'\">\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 {{connState}}\r\n </div>\r\n </div>\r\n\r\n </template>\r\n\r\n <template v-else-if=\"connState==='無法連線'\">\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 {{connState}}\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 {{connState}}\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'\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=3630a75a&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 \"3630a75a\",\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;`)},[(false)?_c('WButtonCircle',{attrs:{\"icon\":'mdi-menu',\"tooltip\":'左側選單',\"shadow\":false},on:{\"click\":function($event){_vm.drawer=!_vm.drawer}}}):_vm._e(),_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%\"}}),_c('div',{staticStyle:{\"padding-right\":\"10px\",\"white-space\":\"nowrap\"}},[_c('WTextSelect',{staticStyle:{\"width\":\"100px\"},attrs:{\"items\":_vm.tgLangs},on:{\"input\":_vm.changeLang},model:{value:(_vm.tgLangSelect),callback:function ($$v) {_vm.tgLangSelect=$$v},expression:\"tgLangSelect\"}})],1)],1),_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:1px; right:4px;`)},[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:3,h:3},\"icon\":'mdi-arrow-left',\"iconSize\":16,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#eee',\"backgroundColorFocus\":'#fff',\"borderColor\":'transparent',\"borderColorHover\":'#eee',\"borderColorFocus\":'#eee',\"tooltip\":_vm.$t('menuTreeHide'),\"shadow\":true},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:1px; left:4px;`)},[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:3,h:3},\"icon\":'mdi-arrow-right',\"iconSize\":16,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#eee',\"backgroundColorFocus\":'#fff',\"borderColor\":'transparent',\"borderColorHover\":'#eee',\"borderColorFocus\":'#eee',\"tooltip\":_vm.$t('menuTreeShow'),\"shadow\":true},on:{\"click\":function($event){_vm.drawer=true}}})],1):_vm._e()],2)]}}],null,false,836279765),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:{\"changeTargets\":_vm.changeTargets},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\":26}}),_c('div',{staticStyle:{\"padding-left\":\"10px\",\"font-size\":\"1.4rem\",\"color\":\"#000\"}},[_vm._v(\" \"+_vm._s(_vm.$t('managementTargets'))+\" \")])],1)]),_c('div',{staticStyle:{\"padding\":\"5px\",\"border-top\":\"1px solid #ddd\",\"display\":\"flex\",\"align-items\":\"center\"}},[[_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\":\"6px\"}})],(_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\":\"6px\"}})]:_vm._e(),(_vm.hasItemsCheck)?[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('targetDeleteChecks'),\"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\":\"6px\"}})]:_vm._e(),(_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\":\"6px\"}})]:_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 :changeTargets=\"changeTargets\"\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=\"26\"\r\n ></WIcon>\r\n\r\n <div style=\"padding-left:10px; font-size:1.4rem; color:#000;\">\r\n {{$t('managementTargets')}}\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <!-- 功能區 -->\r\n <div style=\"padding:5px; border-top:1px solid #ddd; display:flex; align-items:center;\">\r\n\r\n <template>\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:6px;\"></div>\r\n\r\n </template>\r\n\r\n <template v-if=\"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:6px;\"></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('targetDeleteChecks')\"\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:6px;\"></div>\r\n\r\n </template>\r\n\r\n <template v-if=\"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:6px;\"></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, 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 cstr from 'wsemi/src/cstr.mjs'\r\nimport WIcon from 'w-component-vue/src/components/WIcon.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 WIcon,\r\n WButtonCircle,\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 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 isModified: false,\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 },\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 changeTargets: function() {\r\n // console.log('computed changeTargets')\r\n\r\n let vo = this\r\n\r\n //check\r\n if (size(vo.targets) === 0) {\r\n return ''\r\n }\r\n\r\n //cloneDeep\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()\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 },\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 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 'description',\r\n 'from',\r\n 'userId',\r\n 'timeCreate',\r\n 'userIdUpdate',\r\n 'timeUpdate',\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 '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 //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 defHeadFilter: true,\r\n defCellAlignH: 'left',\r\n // kpHeadHide: {\r\n // 'id': true,\r\n // },\r\n kpHeadFixLeft: {\r\n 'id': true,\r\n },\r\n defHeadMinWidth: 150,\r\n kpHeadWidth: {\r\n 'id': 300,\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 '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 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 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=b9e757ce&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 \"b9e757ce\",\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:{\"changePemis\":_vm.changePemis},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\":26}}),_c('div',{staticStyle:{\"padding-left\":\"10px\",\"font-size\":\"1.4rem\",\"color\":\"#000\"}},[_vm._v(\" \"+_vm._s(_vm.$t('managementPemis'))+\" \")])],1)]),_c('div',{staticStyle:{\"padding\":\"5px\",\"border-top\":\"1px solid #ddd\",\"display\":\"flex\",\"align-items\":\"center\"}},[[_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\":\"6px\"}})],(_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\":\"6px\"}})]:_vm._e(),(_vm.hasItemsCheck)?[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('pemiDeleteChecks'),\"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\":\"6px\"}})]:_vm._e(),(_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\":\"6px\"}})]:_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 :changePemis=\"changePemis\"\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=\"26\"\r\n ></WIcon>\r\n\r\n <div style=\"padding-left:10px; font-size:1.4rem; color:#000;\">\r\n {{$t('managementPemis')}}\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <!-- 功能區 -->\r\n <div style=\"padding:5px; border-top:1px solid #ddd; display:flex; align-items:center;\">\r\n\r\n <template>\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:6px;\"></div>\r\n\r\n </template>\r\n\r\n <template v-if=\"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:6px;\"></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('pemiDeleteChecks')\"\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:6px;\"></div>\r\n\r\n </template>\r\n\r\n <template v-if=\"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:6px;\"></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, mdiPlus, mdiPencilOutline, mdiContentCopy } from '@mdi/js/mdi.js'\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 cstr from 'wsemi/src/cstr.mjs'\r\nimport WIcon from 'w-component-vue/src/components/WIcon.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 WIcon,\r\n WButtonCircle,\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 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 isModified: false,\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.showVeCrulesById = vo.showVeCrulesById\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 changePemis: function() {\r\n // console.log('computed changePemis')\r\n\r\n let vo = this\r\n\r\n //check\r\n if (size(vo.pemis) === 0) {\r\n return ''\r\n }\r\n\r\n //cloneDeep\r\n let items = cloneDeep(vo.pemis)\r\n\r\n //save\r\n vo.items = items\r\n\r\n //genOpt\r\n vo.genOpt()\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 },\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 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 'name',\r\n 'description',\r\n 'from',\r\n 'crules',\r\n 'userId',\r\n 'timeCreate',\r\n 'userIdUpdate',\r\n 'timeUpdate',\r\n ]\r\n // console.log('ks', ks)\r\n\r\n //kpHead\r\n let kpHead = {\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 '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 //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 defHeadFilter: true,\r\n defCellAlignH: 'left',\r\n kpHeadHide: {\r\n 'id': true,\r\n },\r\n kpHeadFixLeft: {\r\n 'name': true,\r\n },\r\n defHeadMinWidth: 150,\r\n kpHeadWidth: {\r\n 'name': 300,\r\n 'crules': 100,\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 '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 '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 kpHeadFilter: {\r\n 'crules': false,\r\n },\r\n kpHeadSort: {\r\n 'crules': false,\r\n },\r\n kpHeadFocusHighlight: { //雖然效果不完全, 但因按鈕與cell有padding可被點擊, 故還是需要開啟\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 '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%;\" onclick=\"$vo.$dg.showVeCrulesById('${id}')\">${vo.$t('pemiEditCrulesSimple')}</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 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.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 //添加至最首\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 //添加至最首\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 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('pemiEditCrulesNoId')}`, { 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('pemiEditCrulesNoPemi')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //showVeCrules\r\n vo.$dg.showVeCrules(r)\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=1a14558e&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 \"1a14558e\",\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:{\"changeGrups\":_vm.changeGrups},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\":26}}),_c('div',{staticStyle:{\"padding-left\":\"10px\",\"font-size\":\"1.4rem\",\"color\":\"#000\"}},[_vm._v(\" \"+_vm._s(_vm.$t('managementGrups'))+\" \")])],1)]),_c('div',{staticStyle:{\"padding\":\"5px\",\"border-top\":\"1px solid #ddd\",\"display\":\"flex\",\"align-items\":\"center\"}},[[_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\":\"6px\"}})],(_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\":\"6px\"}})]:_vm._e(),(_vm.hasItemsCheck)?[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('grupDeleteChecks'),\"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\":\"6px\"}})]:_vm._e(),(_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\":\"6px\"}})]:_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 :changeGrups=\"changeGrups\"\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=\"26\"\r\n ></WIcon>\r\n\r\n <div style=\"padding-left:10px; font-size:1.4rem; color:#000;\">\r\n {{$t('managementGrups')}}\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <!-- 功能區 -->\r\n <div style=\"padding:5px; border-top:1px solid #ddd; display:flex; align-items:center;\">\r\n\r\n <template>\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:6px;\"></div>\r\n\r\n </template>\r\n\r\n <template v-if=\"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:6px;\"></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('grupDeleteChecks')\"\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:6px;\"></div>\r\n\r\n </template>\r\n\r\n <template v-if=\"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:6px;\"></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, mdiPlus, mdiPencilOutline, mdiContentCopy } from '@mdi/js/mdi.js'\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 cstr from 'wsemi/src/cstr.mjs'\r\nimport WIcon from 'w-component-vue/src/components/WIcon.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 WIcon,\r\n WButtonCircle,\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 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 isModified: false,\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.showVeCpemisById = vo.showVeCpemisById\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 changeGrups: function() {\r\n // console.log('computed changeGrups')\r\n\r\n let vo = this\r\n\r\n //check\r\n if (size(vo.grups) === 0) {\r\n return ''\r\n }\r\n\r\n //cloneDeep\r\n let items = cloneDeep(vo.grups)\r\n\r\n //save\r\n vo.items = items\r\n\r\n //genOpt\r\n vo.genOpt()\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 },\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 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 'name',\r\n 'description',\r\n 'from',\r\n 'cpemis',\r\n 'userId',\r\n 'timeCreate',\r\n 'userIdUpdate',\r\n 'timeUpdate',\r\n ]\r\n // console.log('ks', ks)\r\n\r\n //kpHead\r\n let kpHead = {\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 '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 //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 defHeadFilter: true,\r\n defCellAlignH: 'left',\r\n kpHeadHide: {\r\n 'id': true,\r\n },\r\n kpHeadFixLeft: {\r\n 'name': true,\r\n },\r\n defHeadMinWidth: 150,\r\n kpHeadWidth: {\r\n 'name': 300,\r\n 'cpemis': 100,\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 '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 '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 kpHeadFilter: {\r\n 'cpemis': false,\r\n },\r\n kpHeadSort: {\r\n 'cpemis': false,\r\n },\r\n kpHeadFocusHighlight: { //雖然效果不完全, 但因按鈕與cell有padding可被點擊, 故還是需要開啟\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 '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%;\" onclick=\"$vo.$dg.showVeCpemisById('${id}')\">${vo.$t('grupEditCpemisSimple')}</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 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 //添加至最首\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 //添加至最首\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 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('grupEditCpemisNoId')}`, { 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('grupEditCpemisNoGrup')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //showVeCpemis\r\n vo.$dg.showVeCpemis(r)\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=3956f73c&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 \"3956f73c\",\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:{\"changeUsers\":_vm.changeUsers},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\":26}}),_c('div',{staticStyle:{\"padding-left\":\"10px\",\"font-size\":\"1.4rem\",\"color\":\"#000\"}},[_vm._v(\" \"+_vm._s(_vm.$t('managementUsers'))+\" \")])],1)]),_c('div',{staticStyle:{\"padding\":\"5px\",\"border-top\":\"1px solid #ddd\",\"display\":\"flex\",\"align-items\":\"center\"}},[[_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\":\"6px\"}})],(_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\":\"6px\"}})]:_vm._e(),(_vm.hasItemsCheck)?[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('userDeleteChecks'),\"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\":\"6px\"}})]:_vm._e(),(_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\":\"6px\"}})]:_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 :changeUsers=\"changeUsers\"\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=\"26\"\r\n ></WIcon>\r\n\r\n <div style=\"padding-left:10px; font-size:1.4rem; color:#000;\">\r\n {{$t('managementUsers')}}\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <!-- 功能區 -->\r\n <div style=\"padding:5px; border-top:1px solid #ddd; display:flex; align-items:center;\">\r\n\r\n <template>\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:6px;\"></div>\r\n\r\n </template>\r\n\r\n <template v-if=\"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:6px;\"></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('userDeleteChecks')\"\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:6px;\"></div>\r\n\r\n </template>\r\n\r\n <template v-if=\"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:6px;\"></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, mdiPlus, mdiPencilOutline, mdiContentCopy } from '@mdi/js/mdi.js'\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 cstr from 'wsemi/src/cstr.mjs'\r\nimport WIcon from 'w-component-vue/src/components/WIcon.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 WIcon,\r\n WButtonCircle,\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 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 isModified: false,\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 },\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 changeUsers: function() {\r\n // console.log('computed changeUsers')\r\n\r\n let vo = this\r\n\r\n //check\r\n if (size(vo.users) === 0) {\r\n return ''\r\n }\r\n\r\n //cloneDeep\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()\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 },\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 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 '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 // console.log('ks', ks)\r\n\r\n //kpHead\r\n let kpHead = {\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 //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 defHeadFilter: true,\r\n defCellAlignH: 'left',\r\n kpHeadHide: {\r\n 'id': true,\r\n },\r\n kpHeadFixLeft: {\r\n 'name': true,\r\n },\r\n defHeadMinWidth: 150,\r\n kpHeadWidth: {\r\n 'cgrups': 100,\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 '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 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%;\" onclick=\"$vo.$dg.showVeCgrupsById('${id}')\">${vo.$t('userEditCgrupsSimple')}</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}')\" />\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}')\" />\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 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('userEditNoId')}`, { 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('userEditNoUser')}`, { 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('userEditNoId')}`, { 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('userEditNoUser')}`, { 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 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('userEditCgrupsNoId')}`, { 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('userEditCgrupsNoUser')}`, { 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)\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=433fc1f4&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 \"433fc1f4\",\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:1px; right:4px;`\"\r\n v-if=\"drawer\"\r\n >\r\n <WButtonCircle\r\n :paddingStyle=\"{v:3,h:3}\"\r\n :icon=\"'mdi-arrow-left'\"\r\n :iconSize=\"16\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#eee'\"\r\n :backgroundColorFocus=\"'#fff'\"\r\n :borderColor=\"'transparent'\"\r\n :borderColorHover=\"'#eee'\"\r\n :borderColorFocus=\"'#eee'\"\r\n :tooltip=\"$t('menuTreeHide')\"\r\n :shadow=\"true\"\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:1px; left:4px;`\"\r\n v-if=\"!drawer\"\r\n >\r\n <WButtonCircle\r\n :paddingStyle=\"{v:3,h:3}\"\r\n :icon=\"'mdi-arrow-right'\"\r\n :iconSize=\"16\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#eee'\"\r\n :backgroundColorFocus=\"'#fff'\"\r\n :borderColor=\"'transparent'\"\r\n :borderColorHover=\"'#eee'\"\r\n :borderColorFocus=\"'#eee'\"\r\n :tooltip=\"$t('menuTreeShow')\"\r\n :shadow=\"true\"\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=437fda3e&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 \"437fda3e\",\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 <WButtonCircle\r\n :icon=\"'mdi-menu'\"\r\n :tooltip=\"'左側選單'\"\r\n :shadow=\"false\"\r\n @click=\"drawer=!drawer\"\r\n v-if=\"false\"\r\n ></WButtonCircle>\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 style=\"padding-right:10px; white-space:nowrap\">\r\n <WTextSelect\r\n style=\"width:100px;\"\r\n :items=\"tgLangs\"\r\n v-model=\"tgLangSelect\"\r\n @input=\"changeLang\"\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\r\n mdiMenu,\r\n // drawer: null, //null false\r\n // menuKey: 'blocks',\r\n userName: 'tester',\r\n\r\n drawer: true, //null,\r\n\r\n tgLangs: [\r\n {\r\n id: 'cht',\r\n text: '中文',\r\n },\r\n {\r\n id: 'eng',\r\n text: 'English',\r\n },\r\n ],\r\n tgLangSelect: {\r\n id: 'cht',\r\n text: '中文',\r\n },\r\n\r\n }\r\n },\r\n beforeMount: function() {\r\n // console.log('beforeMount')\r\n\r\n let vo = this\r\n\r\n //setLang\r\n vo.$ui.setLang(vo.tgLangSelect.id)\r\n\r\n },\r\n computed: {\r\n\r\n viewState: function() {\r\n return get(this, `$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 webName: {\r\n get() {\r\n let vo = this\r\n let c = vo.$t('webName')\r\n // console.log('get webName1', c)\r\n if (!isestr(c)) {\r\n c = vo.$t('waitingData')\r\n }\r\n // console.log('get webName2', c)\r\n document.title = c //更換網頁title\r\n return c\r\n },\r\n // set(value) {\r\n // return value\r\n // },\r\n },\r\n\r\n webLogo: function() {\r\n //console.log('computed webLogo')\r\n\r\n let vo = this\r\n\r\n return get(vo, `$store.state.webInfor.webLogo`, '')\r\n },\r\n\r\n },\r\n methods: {\r\n\r\n changeLang: function(msg) {\r\n // console.log('methods changeLang', msg)\r\n let vo = this\r\n let lang = msg.id\r\n vo.$ui.setLang(lang)\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=f2151b4e&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 \"f2151b4e\",\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.$t('pemiEditCrules'),\"icon\":_vm.mdiFormatListCheckbox,\"minWidth\":800,\"maxWidth\":800,\"fullscreen\":_vm.fullscreen,\"contentBackgroundColor\":'#fff',\"headerBtns\":_vm.useHeaderBtns,\"hasSaveBtn\":_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\":\"5px\",\"background\":\"#fff\",\"display\":\"flex\",\"align-items\":\"center\"}},[[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('cruleCheckAllYes'),\"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\":\"6px\"}})],[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('cruleCheckAllNo'),\"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\":\"6px\"}})],[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('cruleCheckAllInv'),\"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\":\"6px\"}})],(_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\":\"6px\"}})]:_vm._e()],2)]),(_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=\"$t('pemiEditCrules')\"\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=\"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:5px; background:#fff; display:flex; align-items:center;\">\r\n\r\n <template>\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('cruleCheckAllYes')\"\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:6px;\"></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('cruleCheckAllNo')\"\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:6px;\"></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('cruleCheckAllInv')\"\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:6px;\"></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:6px;\"></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 trim from 'lodash-es/trim.js'\r\nimport uniq from 'lodash-es/uniq.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 cloneDeep from 'lodash-es/cloneDeep.js'\r\nimport genPm from 'wsemi/src/genPm.mjs'\r\nimport sep from 'wsemi/src/sep.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 WText from 'w-component-vue/src/components/WText.vue'\r\nimport WTextSuggest from 'w-component-vue/src/components/WTextSuggest.vue'\r\nimport WSwitch from 'w-component-vue/src/components/WSwitch.vue'\r\nimport WCheckbox from 'w-component-vue/src/components/WCheckbox.vue'\r\nimport WIcon from 'w-component-vue/src/components/WIcon.vue'\r\nimport WButtonChip from 'w-component-vue/src/components/WButtonChip.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 WText,\r\n WTextSuggest,\r\n WSwitch,\r\n WCheckbox,\r\n WIcon,\r\n WButtonChip,\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 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 defHeadFilter: true,\r\n defCellAlignH: 'left',\r\n // kpCellEditable: {\r\n // 'id': true,\r\n // 'enable': true,\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}')\" />\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('cruleEditNoId')}`, { 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('cruleEditNoRule')}`, { 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 (pemi) {\r\n // console.log('methods show', pemi)\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 //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.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=56bcfc00&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 \"56bcfc00\",\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.$t('grupEditCpemis'),\"icon\":_vm.mdiFormatListCheckbox,\"minWidth\":800,\"maxWidth\":800,\"fullscreen\":_vm.fullscreen,\"contentBackgroundColor\":'#fff',\"headerBtns\":_vm.useHeaderBtns,\"hasSaveBtn\":_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\":\"5px\",\"background\":\"#fff\",\"display\":\"flex\",\"align-items\":\"center\"}},[[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('cpemiCheckAllYes'),\"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\":\"6px\"}})],[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('cpemiCheckAllNo'),\"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\":\"6px\"}})],[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('cpemiCheckAllInv'),\"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\":\"6px\"}})],(_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\":\"6px\"}})]:_vm._e()],2)]),(_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=\"$t('grupEditCpemis')\"\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=\"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:5px; background:#fff; display:flex; align-items:center;\">\r\n\r\n <template>\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('cpemiCheckAllYes')\"\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:6px;\"></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('cpemiCheckAllNo')\"\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:6px;\"></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('cpemiCheckAllInv')\"\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:6px;\"></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:6px;\"></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 trim from 'lodash-es/trim.js'\r\nimport uniq from 'lodash-es/uniq.js'\r\nimport find from 'lodash-es/find.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 cloneDeep from 'lodash-es/cloneDeep.js'\r\nimport genPm from 'wsemi/src/genPm.mjs'\r\nimport sep from 'wsemi/src/sep.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 WText from 'w-component-vue/src/components/WText.vue'\r\nimport WTextSuggest from 'w-component-vue/src/components/WTextSuggest.vue'\r\nimport WSwitch from 'w-component-vue/src/components/WSwitch.vue'\r\nimport WCheckbox from 'w-component-vue/src/components/WCheckbox.vue'\r\nimport WIcon from 'w-component-vue/src/components/WIcon.vue'\r\nimport WButtonChip from 'w-component-vue/src/components/WButtonChip.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 WText,\r\n WTextSuggest,\r\n WSwitch,\r\n WCheckbox,\r\n WIcon,\r\n WButtonChip,\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 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.toggleItemModeByName = vo.toggleItemModeByName\r\n Vue.prototype.$dg.toggleItemEnableByName = vo.toggleItemEnableByName\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('pemiMode'),\r\n 'enable': vo.$t('pemiEnable'),\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 defHeadFilter: true,\r\n defCellAlignH: 'left',\r\n // kpCellEditable: {\r\n // 'name': true,\r\n // 'mode': true,\r\n // 'enable': true,\r\n // },\r\n kpHeadWidth: {\r\n 'mode': 50,\r\n 'enable': 50,\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.toggleItemModeByName('${name}',this.value)\">\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.toggleItemEnableByName('${name}')\" />\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 toggleItemModeByName: function(name, mode) {\r\n // console.log('toggleItemModeByName', 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('cpemiEditNoPemi')}`, { 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 toggleItemEnableByName: function(name) {\r\n // console.log('toggleItemEnableByName', 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('cpemiEditNoPemi')}`, { 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.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 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.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 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.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 (grup) {\r\n // console.log('methods show', grup)\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 //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.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=6d5503e1&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 \"6d5503e1\",\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.$t('userEditCgrups'),\"icon\":_vm.mdiFormatListCheckbox,\"minWidth\":800,\"maxWidth\":800,\"fullscreen\":_vm.fullscreen,\"contentBackgroundColor\":'#fff',\"headerBtns\":_vm.useHeaderBtns,\"hasSaveBtn\":_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\":\"5px\",\"background\":\"#fff\",\"display\":\"flex\",\"align-items\":\"center\"}},[[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('cpemiCheckAllYes'),\"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\":\"6px\"}})],[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('cpemiCheckAllNo'),\"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\":\"6px\"}})],[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('cpemiCheckAllInv'),\"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\":\"6px\"}})],(_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\":\"6px\"}})]:_vm._e()],2)]),(_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=\"$t('userEditCgrups')\"\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=\"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:5px; background:#fff; display:flex; align-items:center;\">\r\n\r\n <template>\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('cpemiCheckAllYes')\"\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:6px;\"></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('cpemiCheckAllNo')\"\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:6px;\"></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('cpemiCheckAllInv')\"\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:6px;\"></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:6px;\"></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 trim from 'lodash-es/trim.js'\r\nimport uniq from 'lodash-es/uniq.js'\r\nimport find from 'lodash-es/find.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 cloneDeep from 'lodash-es/cloneDeep.js'\r\nimport genPm from 'wsemi/src/genPm.mjs'\r\nimport sep from 'wsemi/src/sep.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 WText from 'w-component-vue/src/components/WText.vue'\r\nimport WTextSuggest from 'w-component-vue/src/components/WTextSuggest.vue'\r\nimport WSwitch from 'w-component-vue/src/components/WSwitch.vue'\r\nimport WCheckbox from 'w-component-vue/src/components/WCheckbox.vue'\r\nimport WIcon from 'w-component-vue/src/components/WIcon.vue'\r\nimport WButtonChip from 'w-component-vue/src/components/WButtonChip.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 WText,\r\n WTextSuggest,\r\n WSwitch,\r\n WCheckbox,\r\n WIcon,\r\n WButtonChip,\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 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.toggleItemModeByName = vo.toggleItemModeByName\r\n Vue.prototype.$dg.toggleItemEnableByName = vo.toggleItemEnableByName\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('pemiMode'),\r\n 'enable': vo.$t('pemiEnable'),\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 defHeadFilter: true,\r\n defCellAlignH: 'left',\r\n // kpCellEditable: {\r\n // 'name': true,\r\n // 'mode': true,\r\n // 'enable': true,\r\n // },\r\n kpHeadWidth: {\r\n 'mode': 50,\r\n 'enable': 50,\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.toggleItemModeByName('${name}',this.value)\">\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.toggleItemEnableByName('${name}')\" />\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 toggleItemModeByName: function(name, mode) {\r\n // console.log('toggleItemModeByName', 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('cpemiEditNoPemi')}`, { 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 toggleItemEnableByName: function(name) {\r\n // console.log('toggleItemEnableByName', 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('cpemiEditNoPemi')}`, { 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.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 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.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 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.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 (user) {\r\n // console.log('methods show', user)\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 //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.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=431dfa86&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 \"431dfa86\",\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 </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 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'\n\n\nexport default {\n components: {\n LoadingWinBar,\n CheckYesNo,\n CheckYes,\n LayoutState,\n Layout,\n VeCrules,\n VeCpemis,\n VeCgrups,\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 function loginSuccess(data) {\n console.log('login success', cloneDeep(data.user))\n vo.$ui.updateConnState('已連線')\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(data.text)\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 let connState = get(this, `$store.state.connState`)\n return connState === '已連線'\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=1ebc3561\"\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=1ebc3561&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 = 'Permissions 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: '連線中...',\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',\r\n keyLangs: {\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\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 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 managementTargets: {\r\n eng: `Targets`,\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 targetDeleteChecks: {\r\n eng: `Delete user(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 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 pemiDeleteChecks: {\r\n eng: `Delete user(s)`,\r\n cht: `刪除勾選權限`,\r\n },\r\n pemiEnable: {\r\n eng: `Enable`,\r\n cht: `是否使用`,\r\n },\r\n pemiMode: {\r\n eng: `Operator`,\r\n cht: `合併權限模式`,\r\n },\r\n pemiCrules: {\r\n eng: `Rules of permission`,\r\n cht: `管控對象規則`,\r\n },\r\n pemiEditCrules: {\r\n eng: `Edit rules of permission`,\r\n cht: `編輯對象規則清單`,\r\n },\r\n pemiEditCrulesSimple: {\r\n eng: `Edit rules`,\r\n cht: `編輯對象規則`,\r\n },\r\n pemiEditCrulesNoId: {\r\n eng: `Can not find the id of permission`,\r\n cht: `無法找到權限Id`,\r\n },\r\n pemiEditCrulesNoPemi: {\r\n eng: `Can not find the data of permission`,\r\n cht: `無法找到權限資料`,\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 cruleEditNoId: {\r\n eng: `Can not find the id of rule`,\r\n cht: `無法找到規則Id`,\r\n },\r\n cruleEditNoRule: {\r\n eng: `Can not find the data of rule`,\r\n cht: `無法找到規則資料`,\r\n },\r\n cruleCheckAllYes: {\r\n eng: `Check all`,\r\n cht: `全選使用`,\r\n },\r\n cruleCheckAllNo: {\r\n eng: `Uncheck all`,\r\n cht: `全不選使用`,\r\n },\r\n cruleCheckAllInv: {\r\n eng: `Reverse all`,\r\n cht: `全反選使用`,\r\n },\r\n cruleDeleteCheckTargets: {\r\n eng: `Delete item(s)`,\r\n cht: `刪除勾選對象`,\r\n },\r\n\r\n managementGrups: {\r\n eng: `Permission groups`,\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 grupDeleteChecks: {\r\n eng: `Delete user(s)`,\r\n cht: `刪除勾選權限群組`,\r\n },\r\n grupCpemis: {\r\n eng: `Permissions`,\r\n cht: `管控使用權限`,\r\n },\r\n grupEditCpemis: {\r\n eng: `Edit list of permission group`,\r\n cht: `編輯使用權限清單`,\r\n },\r\n grupEditCpemisSimple: {\r\n eng: `Edit permissions`,\r\n cht: `編輯權限`,\r\n },\r\n grupEditCpemisNoId: {\r\n eng: `Can not find the id of permission group`,\r\n cht: `無法找到權限群組Id`,\r\n },\r\n grupEditCpemisNoGrup: {\r\n eng: `Can not find the data of permission group`,\r\n cht: `無法找到權限群組資料`,\r\n },\r\n grupClearGrupsFail: {\r\n eng: `Failed to clear existing permission groups`,\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 cpemiEditNoName: {\r\n eng: `Can not find the name of permission`,\r\n cht: `無法找到權限名稱`,\r\n },\r\n cpemiEditNoPemi: {\r\n eng: `Can not find the data of permission`,\r\n cht: `無法找到權限資料`,\r\n },\r\n cpemiCheckAllYes: {\r\n eng: `Check all`,\r\n cht: `全選使用`,\r\n },\r\n cpemiCheckAllNo: {\r\n eng: `Uncheck all`,\r\n cht: `全不選使用`,\r\n },\r\n cpemiCheckAllInv: {\r\n eng: `Reverse all`,\r\n cht: `全反選使用`,\r\n },\r\n cpemiDeleteCheckTargets: {\r\n eng: `Delete item(s)`,\r\n cht: `刪除勾選權限`,\r\n },\r\n\r\n managementUsers: {\r\n eng: `Users`,\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 userDeleteChecks: {\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 userEditCgrupsSimple: {\r\n eng: `Edit permission group`,\r\n cht: `編輯權限群組`,\r\n },\r\n userEditCgrupsNoId: {\r\n eng: `Can not find the id of user`,\r\n cht: `無法找到使用者Id`,\r\n },\r\n userEditCgrupsNoUser: {\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 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 userEditNoId: {\r\n eng: `Can not find the id of user`,\r\n cht: `無法找到使用者Id`,\r\n },\r\n userEditNoUser: {\r\n eng: `Can not find the data of user`,\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 kpText: {},\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","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\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('call 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 setLang(lang = null) {\r\n // console.log('call setLang')\r\n\r\n //check lang, 若有輸入才commit\r\n if (isestr(lang)) {\r\n vo.$store.commit(vo.$store.types.UpdateLang, lang)\r\n }\r\n\r\n //getKpLang, 切換lang得調用getKpLang重算kpText\r\n getKpLang()\r\n\r\n //forceUpdate\r\n forceUpdate()\r\n\r\n}\r\n\r\n\r\nfunction getKpLang() {\r\n // console.log('call getKpLang')\r\n\r\n //merge keyLangs\r\n let keyLangs = get(vo, '$store.state.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 //lang\r\n let lang = get(vo, '$store.state.lang')\r\n\r\n //kpText\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\r\n return kpText\r\n}\r\n\r\n\r\nfunction getKpText(key) {\r\n // console.log('call getKpText')\r\n let kpText = get(vo, '$store.state.kpText')\r\n let t = get(kpText, key, '')\r\n if (!isestr(t)) {\r\n t = key\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 getKpLang,\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\n// import mDataSupport from './plugins/mDataSupport.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// //dspt\r\n// let dspt = mDataSupport(Vue.prototype)\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\n// Vue.prototype.$dspt = dspt\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() //因更新webInfor得要重刷語系才能依照語言取得顯示文字\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__(988); })\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","tgLangs","changeLang","model","value","tgLangSelect","callback","$$v","expression","syncState","panelHeight","drawerWidth","drawerWidthMin","drawerWidthMax","height","menus","menuActive","v","h","menu","menuKey","drawer","width","changeTargets","resizePanel","resizeHead","mdiGamepadCircle","mdiPlus","addItem","hasItemCheckOne","mdiContentCopy","copyItem","hasItemsCheck","mdiTrashCanOutline","deleteItemsCheck","isModified","mdiCloudUploadOutline","saveTargets","firstLoading","items","ref","contentHeight","opt","WIcon","WButtonCircle","WAggridVueDyn","type","Boolean","default","mdiStackOverflow","mdiAccountGroupOutline","mdiBallotRecountOutline","mdiPencilOutline","panelWidth","headHeight","itemsCheck","targets","rs","sortBy","pemis","grups","users","size","cloneDeep","genOpt","length","errItemsById","rows","kpErr","kpId","each","k","id","isestr","haskey","isError","c","iseobj","errItemsByName","snew","offsetWidth","offsetHeight","ks","kpHead","language","keys","defHeadFilter","defCellAlignH","kpHeadFixLeft","defHeadMinWidth","kpHeadWidth","kpHeadFilterType","kpCellEditable","kpRowDrag","kpHeadCheckBox","kpCellRender","err","cstr","$ui","getIcon","rowsChange","rowChecked","refresh","cmp","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","changePemis","savePemis","mdiVectorPolylinePlus","mdiCheckboxMarkedCircle","showVeCrulesById","kpName","kpHeadHide","kpHeadFilter","kpHeadSort","kpHeadFocusHighlight","t","kr","showVeCrules","then","crules","set","updatePemis","changeGrups","mdiSelectGroup","saveGrups","showVeCpemisById","showVeCpemis","cpemis","updateGrups","changeUsers","saveUsers","showVeCgrupsById","toggleItemIsAdminById","toggleItemIsActiveById","errItemsByEmail","kpEmail","email","kur","getUserRules","showVeCgrups","cgrups","updateUsers","WDrawer","WListVertical","LayoutContentTargets","LayoutContentPemis","LayoutContentGrups","LayoutContentUsers","ms","text","icon","find","clientWidth","clientHeight","WTextSelect","LayoutContent","mdiMenu","userName","beforeMount","setLang","viewState","document","title","lang","mdiFormatListCheckbox","fullscreen","useHeaderBtns","clickBtns","clickSave","clickClose","mdiCheckboxMultipleMarked","toggleItemsEnableAllYes","mdiCheckboxMultipleBlankOutline","toggleItemsEnableAllNo","mdiCodeTagsCheck","toggleItemsEnableAllInv","WText","WTextSuggest","WSwitch","WCheckbox","WButtonChip","mdiDeleteForever","mdiFullscreen","mdiFullscreenExit","mdiFileTree","pemi","toggleItemEnableById","kpHeaderBtns","kp","toFullscreen","tooltip","evName","toNormalscreen","bts","contentHeightMax","autoFitColumn","getDisplayData","_enable","enable","kpRow","rowsEff","kpRule","delay","JSON","stringify","JSON5","map","grup","toggleItemModeByName","toggleItemEnableByName","kpPemi","isActive","p","user","kpGrup","LoadingWinBar","CheckYesNo","CheckYes","LayoutState","Layout","VeCrules","VeCpemis","VeCgrups","ll","loginSuccess","updateConnState","updateUserToken","token","updateUserSelf","loginError","urlRedirect","Error","isDev","setTimeout","location","href","setVo","wui","timeWaitAnimation","params","login","afterGetUser","afterLogin","$vo","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","webInfor","leftDrawerWidth","heightApp","heightAppEff","userToken","keyLangs","aggridLanguage","eng","cht","systemMessage","ok","no","yes","empty","waitingData","isEditabled","saveChanges","save","close","delete","cancel","screenFull","screenNormal","checkAllYes","checkAllNo","checkAllInv","processing","anUnexpectedErrorOccurred","unknow","username","noDescription","errInNames","errInEmails","managementTargets","targetId","targetIdEmpty","targetIdDuplicate","targetAddEmpty","targetAdd","targetAddNameNew","targetAddIdNew","targetCopy","targetCopyNameNew","targetDeleteChecks","targetEnable","targetClearTargetsFail","targetSaveTargetsFail","targetSaveTargetsSuccess","managementPemis","pemiName","pemiNameEmpty","pemiNameDuplicate","pemiAddEmpty","pemiAdd","pemiAddNameNew","pemiAddIdNew","pemiCopy","pemiCopyNameNew","pemiDeleteChecks","pemiEnable","pemiMode","pemiCrules","pemiEditCrules","pemiEditCrulesSimple","pemiEditCrulesNoId","pemiEditCrulesNoPemi","pemiClearPemisFail","pemiSavePemisFail","pemiSavePemisSuccess","cruleEditNoId","cruleEditNoRule","cruleCheckAllYes","cruleCheckAllNo","cruleCheckAllInv","cruleDeleteCheckTargets","managementGrups","grupName","grupNameEmpty","grupNameDuplicate","grupAddEmpty","grupAdd","grupAddNameNew","grupAddIdNew","grupCopy","grupCopyNameNew","grupDeleteChecks","grupCpemis","grupEditCpemis","grupEditCpemisSimple","grupEditCpemisNoId","grupEditCpemisNoGrup","grupClearGrupsFail","grupSaveGrupsFail","grupSaveGrupsSuccess","cpemiEditNoName","cpemiEditNoPemi","cpemiCheckAllYes","cpemiCheckAllNo","cpemiCheckAllInv","cpemiDeleteCheckTargets","managementUsers","userNameEmpty","userNameDuplicate","userEmailEmpty","userEmailDuplicate","userAddEmpty","userAdd","userAddNameNew","userAddIdNew","userCopy","userCopyNameNew","userDeleteChecks","userCgrups","userEditCgrups","userEditCgrupsSimple","userEditCgrupsNoId","userEditCgrupsNoUser","userClearUsersFail","userSaveUsersFail","userSaveUsersSuccess","userEditNoId","userEditNoUser","allDefaults","active","showChildren","hideChildren","activateChildren","deactivateChildren","isUsernameEmpty","failedToSaveUser","successfulToSaveUser","kpText","mutations","_mutations","_defineProperty","types","tableName","path","userSelf","use","Vuex","st","getters","actions","strict","$store","vObj","commit","updateViewState","forceUpdate","broadcast","chs","$forceUpdate","$children","getKpLang","webDescription","kls","_objectSpread","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","cvKpToArr","push","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","wi","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","n","getter","__esModule","d","a","definition","defineProperty","enumerable","g","globalThis","Function","e","prop","hasOwnProperty","Symbol","toStringTag","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","self","forEach","bind","__webpack_exports__"],"sourceRoot":""}