diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..2c234be Binary files /dev/null and b/.DS_Store differ diff --git a/com.actionsoft.apps.coe.pal/App.vue b/com.actionsoft.apps.coe.pal/App.vue new file mode 100644 index 0000000..5d7c84b --- /dev/null +++ b/com.actionsoft.apps.coe.pal/App.vue @@ -0,0 +1,8 @@ + + + diff --git a/com.actionsoft.apps.coe.pal/api/commonFun.js b/com.actionsoft.apps.coe.pal/api/commonFun.js new file mode 100644 index 0000000..a784c95 --- /dev/null +++ b/com.actionsoft.apps.coe.pal/api/commonFun.js @@ -0,0 +1,83 @@ +// 通用js方法文件 + +/** + * 打开一个新的窗口,post请求, + * @param id id 唯一值,body中创建请求表单的id + * @param sid sessionId + * @param cmd 请求cmd + * @param params 参数列表{param1 : value1,param2 : value2} + * @param target 不给定则默认_blank新窗口 + */ +const newPageWin = function (id, sid, cmd, params, target) { + if (!params) { + params = {}; + } + params.cmd = cmd; + params.sid = sid; + newWin(id, wHref, params, target); +} + +/** + * 打开一个新的窗口,post请求 + * @param id 唯一值,body中创建请求表单的id + * @param url 例如 ./w,./jd + * @param params 这个{param1 : value1,param2 : value2} + * @param target 打开窗口方式 _blank,_self + */ +const newWin = function (id, url, params, target) { + // 防止反复添加 + var dom = document.getElementById(id); + if(dom) { + document.body.removeChild(dom); + } + var temp_form = document.createElement("form"); + temp_form.action = url; + temp_form.target = target == undefined ? "_blank" : target; + temp_form.method = "get"; + temp_form.style.display = "none"; + for (var x in params) { + var opt = document.createElement("textarea"); + opt.name = x; + opt.value = params[x]; + temp_form.appendChild(opt); + } + temp_form.setAttribute('id', id); + document.body.appendChild(temp_form); + temp_form.submit(); +} + +// 打开流程模型文件 +const openDesigner = function(teamId, id, sid) { + newPageWin('palDesigner', sid, 'com.actionsoft.apps.coe.pal_pl_repository_designer', {uuid: id, teamId: teamId}); +} + +// 退出pal +const logout = function(sid) { + window.location.replace("./w?sid=" + sid + "&cmd=com.actionsoft.apps.coe.pal_user_logout"); +} + +// 类jquery方法 +const closest = function(node, targetNodeName) {// 类似jquery closest函数,获得匹配选择器的第一个祖先元素,从当前元素开始沿 DOM 树向上 + let curr = node; + while (curr.nodeName != targetNodeName && curr.nodeName != 'BODY') { + curr = curr.parentNode; + } + if (curr.nodeName == targetNodeName) { + return curr; + } else { + return null; + } +} + +/** + * 修改PAL网页标题 + * @param newTitle + */ +const updateHtmlTitle = function(newTitle) { + document.getElementsByTagName("title")[0].innerText = newTitle; +} + +export {newWin, newPageWin, openDesigner, logout, closest, updateHtmlTitle} + + + diff --git a/com.actionsoft.apps.coe.pal/api/validator/validator.css b/com.actionsoft.apps.coe.pal/api/validator/validator.css new file mode 100644 index 0000000..7a61faa --- /dev/null +++ b/com.actionsoft.apps.coe.pal/api/validator/validator.css @@ -0,0 +1,8 @@ +.is-valid { + color: green; +} + +.is-invalid { + color: #F56C6C !important; + font-size: 12px; +} \ No newline at end of file diff --git a/com.actionsoft.apps.coe.pal/api/validator/validator.js b/com.actionsoft.apps.coe.pal/api/validator/validator.js new file mode 100644 index 0000000..200c794 --- /dev/null +++ b/com.actionsoft.apps.coe.pal/api/validator/validator.js @@ -0,0 +1,109 @@ +import Vue from "vue"; +import {extend} from "vee-validate"; +import {configure} from "vee-validate"; +import {required, email} from "vee-validate/dist/rules"; +import {ValidationProvider} from "vee-validate"; +import {ValidationObserver} from "vee-validate"; +//import {messages} from "vee-validate/dist/locale/en.json"; +import {setInteractionMode} from "vee-validate"; +import "./validator.css"; +// import "./validator.less"; + +const nullMsg = { + notNull: "必填", + imperfect: "{_field_}信息不完善" +}; +//过滤英文格式双引号 +extend("not_doubleQuotes", { + validate: value => { + return value.indexOf("\"") < 0; + }, + message: "{_field_}不能包含字符'\"'" +}); +//过滤英文格式冒号 +extend("not_colon", { + validate: value => { + return value.indexOf(":") < 0; + }, + message: "{_field_}不能包含字符':'" +}); +//过滤英文格式单引号 +extend("not_apostrophe", { + validate: value => { + return value.indexOf("'") < 0; + }, + message: "{_field_}不能包含字符'" +}); +//判断合法包名加合法类名 +extend("legal_class_name", { + validate: value => { + let reg = /^[a-zA-Z]+[0-9a-zA-Z_]*(\.[a-zA-Z]+[0-9a-zA-Z_]*)*\.[a-zA-Z]+[0-9a-zA-Z_]*$/g; + return reg.test(value); + }, + message: "java类名不合法" +}); +//不允许为空 +extend("not_null", { + validate: value => { + return value !== "" && value.length > 0; + }, + message: "{_field_}信息不完善" +}); +//最大长度 +extend("maxLength", { + validate: (value, {max}) => { + return value.length <= max; + }, + params: ["max"], + message: "不允许超过{max}个字符" +}); +//数值区间 +extend("minMax", { + validate: (value, {min, max}) => { + value = parseInt(value); + min = parseInt(min); + max = parseInt(max); + return min <= value && value <= max; + }, + params: ["min", "max"], + message: "{_field_}只能在{min}到{max}之间,且包含{min}和{max}" +}); +//只能是数值 +extend("is_number", { + validate: value => { + return new RegExp("^[0-9]*$").test(value); + }, + message: "{_field_}只能是正整数" +}); +//JavaScript语法校验 +extend("javaScript_required", { + validate: value => { + let reg = /^function[\n\s]+(.+)[\n\s]*\((.*)\)[\n\s]*{((.|\n)*)}[\n\s]*$/g; + return reg.test(value); + }, + message: "{_field_}语法错误,请检查" +}); +extend("required", { + ...required, + message: nullMsg.notNull +}); + +extend("teamName_formatCheck",{ + validate: value => { + let reg = /^[a-zA-Z0-9_\u4e00-\u9fa5]+$/g; + return reg.test(value); + }, + message: "只能输入字母、数字、汉字或下划线" +}) + +configure({ + classes: { + valid: "is-valid ", + invalid: "is-invalid", + dirty: ["is-dirty", "is-dirty"] // multiple classes per flag! + // ... + } +}); +Vue.component("ValidationProvider", ValidationProvider); +Vue.component("ValidationObserver", ValidationObserver); + diff --git a/com.actionsoft.apps.coe.pal/api/validator/validator.less b/com.actionsoft.apps.coe.pal/api/validator/validator.less new file mode 100644 index 0000000..b29ece3 --- /dev/null +++ b/com.actionsoft.apps.coe.pal/api/validator/validator.less @@ -0,0 +1,27 @@ +.is-invalid { + display: block; + line-height: 1; + color: #F56C6C; + font-size: 12px; + margin-left: 2px; + + &:last-child { + margin-top: 4px; + } + + .awsui-input { + //color: #F56C6C !important; + //border-color: #F56C6C !important; + margin-top: 0 !important; + } + + .awsui-border-no-right { + border-right: 1px solid red !important; + } + + .el-input__inner { + //color: #F56C6C !important; + //border-color: #F56C6C !important; + } + +} \ No newline at end of file diff --git a/com.actionsoft.apps.coe.pal/assets/iconfont/iconfont.css b/com.actionsoft.apps.coe.pal/assets/iconfont/iconfont.css new file mode 100644 index 0000000..6064b08 --- /dev/null +++ b/com.actionsoft.apps.coe.pal/assets/iconfont/iconfont.css @@ -0,0 +1,609 @@ +@font-face { + font-family: "iconfont"; + src: url('iconfont.eot?t=1619489932918'); + /* IE9 */ + src: url('iconfont.eot?t=1619489932918#iefix') format('embedded-opentype'), /* IE6-IE8 */ + url('data:application/x-font-woff2;charset=utf-8;base64,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') format('woff2'), url('iconfont.woff?t=1619489932918') format('woff'), url('iconfont.ttf?t=1619489932918') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+ */ + url('iconfont.svg?t=1619489932918#iconfont') format('svg'); + /* iOS 4.1- */ +} + +.iconfont { + font-family: "iconfont" !important; + font-size: 16px; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.icon-bianji5:before { + content: "\e8b5"; +} + +.icon-ditu:before { + content: "\e634"; +} + +.icon-renwuqingdan:before { + content: "\e6f9"; +} + +.icon-xiazai:before { + content: "\e63b"; +} + +.icon-tupian:before { + content: "\e62e"; +} + +.icon-biaozhunjianmro:before { + content: "\e6cc"; +} + +.icon-xinjian:before { + content: "\e695"; +} + +.icon-share_link:before { + content: "\e60f"; +} + +.icon-diaozhengdaxiaoresize5:before { + content: "\e720"; +} + +.icon-icon4:before { + content: "\e62c"; +} + +.icon-35:before { + content: "\e621"; +} + +.icon-bianji2:before { + content: "\e729"; +} + +.icon-diannaopcxianshiqi:before { + content: "\e76d"; +} + +.icon-shuxingliebiaoxiangqing:before { + content: "\e817"; +} + +.icon-yidongshu:before { + content: "\e646"; +} + +.icon-zhijiao-triangle:before { + content: "\e652"; +} + +.icon-tongzhi:before { + content: "\e62d"; +} + +.icon-attribute:before { + content: "\e6af"; +} + +.icon-zhixingzhongduan:before { + content: "\e762"; +} + +.icon-dagou1:before { + content: "\e660"; +} + +.icon-sanjiao:before { + content: "\e65a"; +} + +.icon-chakan:before { + content: "\e60e"; +} + +.icon-lixian:before { + content: "\e787"; +} + +.icon-zaixian:before { + content: "\e79e"; +} + +.icon-wancheng:before { + content: "\e624"; +} + +.icon-dagouyouquan:before { + content: "\e633"; +} + +.icon-yiban:before { + content: "\e64b"; +} + +.icon-daiban:before { + content: "\e805"; +} + +.icon-zuzhushouce:before { + content: "\e620"; +} + +.icon-xing1:before { + content: "\e618"; +} + +.icon-liuyan:before { + content: "\e63e"; +} + +.icon-beijingyanse:before { + content: "\e63d"; +} + +.icon-tihuantupian:before { + content: "\e66c"; +} + +.icon-bianji:before { + content: "\e622"; +} + +.icon--shangbiankuang:before { + content: "\e62b"; +} + +.icon-ziliaoshouce-xianxing:before { + content: "\e898"; +} + +.icon-tuichu:before { + content: "\e673"; +} + +.icon-wenbenduiqi:before { + content: "\e6e4"; +} + +.icon-shanchu1:before { + content: "\e644"; +} + +.icon-sousuo2:before { + content: "\e758"; +} + +.icon-keyboard_icon:before { + content: "\e672"; +} + +.icon-xing:before { + content: "\e630"; +} + +.icon-jiantou-copy-copy:before { + content: "\e63f"; +} + +.icon-dingceng:before { + content: "\e648"; +} + +.icon-diceng:before { + content: "\e649"; +} + +.icon-wenben:before { + content: "\e64f"; +} + +.icon-xiantiaoyanse:before { + content: "\e64c"; +} + +.icon-wushuju:before { + content: "\e65e"; +} + +.icon-lishi:before { + content: "\e610"; +} + +.icon-shezhi2:before { + content: "\e615"; +} + +.icon-daohang:before { + content: "\e611"; +} + +.icon-bangzhu1:before { + content: "\e629"; +} + +.icon-youxiajiao:before { + content: "\e786"; +} + +.icon-gantanhao:before { + content: "\e602"; +} + +.icon-liebiao:before { + content: "\e600"; +} + +.icon-rizhi:before { + content: "\e601"; +} + +.icon-lajitong1:before { + content: "\e626"; +} + +.icon-dingwei:before { + content: "\e761"; +} + +.icon-suoxiao:before { + content: "\e614"; +} + +.icon-fangda:before { + content: "\e623"; +} + +.icon-zichanliebiao:before { + content: "\e650"; +} + +.icon-shaixuan1:before { + content: "\e640"; +} + +.icon-shuju:before { + content: "\e694"; +} + +.icon-dakai:before { + content: "\ebdf"; +} + +.icon-liuchengguanli-:before { + content: "\e605"; +} + +.icon-Group-:before { + content: "\e686"; +} + +.icon-daochu2:before { + content: "\e7a1"; +} + +.icon-fujian:before { + content: "\e86e"; +} + +.icon-anjianliucheng:before { + content: "\e653"; +} + +.icon-zhuye:before { + content: "\e64e"; +} + +.icon-heziguanligenduoshangpinkeji:before { + content: "\e61a"; +} + +.icon-ditulianxian:before { + content: "\e64d"; +} + +.icon-fenjianguocheng_o:before { + content: "\ebbd"; +} + +.icon-shanchu:before { + content: "\e714"; +} + +.icon-shangchuan:before { + content: "\e612"; +} + +.icon-xia:before { + content: "\e61b"; +} + +.icon-xiazai1:before { + content: "\e61d"; +} + +.icon-gaojisousuo:before { + content: "\e670"; +} + +.icon-icon-:before { + content: "\e723"; +} + +.icon-zuhe:before { + content: "\e63a"; +} + +.icon-chaxun:before { + content: "\ec4c"; +} + +.icon-shouqi1:before { + content: "\e837"; +} + +.icon-zhankai:before { + content: "\e838"; +} + +.icon-fabu:before { + content: "\e61f"; +} + +.icon-tianchongxing-:before { + content: "\e636"; +} + +.icon-jiaoseguanli:before { + content: "\e645"; +} + +.icon-guanlian:before { + content: "\e68c"; +} + +.icon-wj-wjsc:before { + content: "\e771"; +} + +.icon-shijian:before { + content: "\e637"; +} + +.icon-shouqi-:before { + content: "\e651"; +} + +.icon-zhankai-:before { + content: "\e65d"; +} + +.icon-niantie:before { + content: "\e654"; +} + +.icon-zuzhi:before { + content: "\e712"; +} + +.icon-jiaoseguanli1:before { + content: "\e625"; +} + +.icon-T-yanse:before { + content: "\e721"; +} + +.icon-dagou:before { + content: "\e782"; +} + +.icon-zhuanfa:before { + content: "\e607"; +} + +.icon-quanping:before { + content: "\e613"; +} + +.icon-xuxiankuang:before { + content: "\e7cf"; +} + +.icon-fuzhi:before { + content: "\e62a"; +} + +.icon-zhihang:before { + content: "\e627"; +} + +.icon-liuchengmenhu:before { + content: "\edf6"; +} + +.icon-icon-test:before { + content: "\e60a"; +} + +.icon-zanting:before { + content: "\e67a"; +} + +.icon-renming:before { + content: "\e60b"; +} + +.icon-baocun:before { + content: "\e6fe"; +} + +.icon-bianji1:before { + content: "\e642"; +} + +.icon-daochu:before { + content: "\e62f"; +} + +.icon-yanzheng:before { + content: "\e655"; +} + +.icon-qiehuan:before { + content: "\e647"; +} + +.icon-tupian1:before { + content: "\e881"; +} + +.icon-liucheng:before { + content: "\e6d3"; +} + +.icon-shaixuan:before { + content: "\e715"; +} + +.icon-21file:before { + content: "\e6a6"; +} + +.icon-jurassic_version:before { + content: "\e696"; +} + +.icon-jurassic_add-users:before { + content: "\e6f4"; +} + +.icon-xinzeng:before { + content: "\e60c"; +} + +.icon-biaoqian_:before { + content: "\e61c"; +} + +.icon-ziyuan:before { + content: "\e641"; +} + +.icon-ziyuan1:before { + content: "\e64a"; +} + +.icon-diannao:before { + content: "\e635"; +} + +.icon-biangengguanlibeifen:before { + content: "\e616"; +} + +.icon-youxuliebiao:before { + content: "\e657"; +} + +.icon-daochuexcel:before { + content: "\e658"; +} + +.icon-xinjianwenjianjia:before { + content: "\e656"; +} + +.icon-jiugongge-:before { + content: "\e6a3"; +} + +.icon-tongji:before { + content: "\e608"; +} + +.icon-icon_huabanfuben:before { + content: "\e631"; +} + +.icon-icon_shezhi:before { + content: "\e643"; +} + +.icon-moban:before { + content: "\e606"; +} + +.icon-xiugai:before { + content: "\e60d"; +} + +.icon-juecebaogao:before { + content: "\e604"; +} + +.icon-guizhangzhidu:before { + content: "\e619"; +} + +.icon-shuxing:before { + content: "\e632"; +} + +.icon-wendangfujian:before { + content: "\e609"; +} + +.icon-gengduo:before { + content: "\e63c"; +} + +.icon-suoding1:before { + content: "\e61e"; +} + +.icon-biaodan:before { + content: "\e65b"; +} + +.icon-banben:before { + content: "\e659"; +} + +.icon-fengxian:before { + content: "\e770"; +} + +.icon-quanxian:before { + content: "\e603"; +} + +.icon-daoru:before { + content: "\e628"; +} + +.icon-kpi:before { + content: "\e617"; +} + +.icon-zhongmingming:before { + content: "\e65c"; +} + +.icon-daoruwenjian:before { + content: "\e671"; +} + +.icon-suoding:before { + content: "\e638"; +} + +.icon-jiesuo:before { + content: "\e639"; +} + +.icon-daohang1:before { + content: "\e665"; +} \ No newline at end of file diff --git a/com.actionsoft.apps.coe.pal/assets/iconfont/iconfont.eot b/com.actionsoft.apps.coe.pal/assets/iconfont/iconfont.eot new file mode 100644 index 0000000..3d57bf8 Binary files /dev/null and b/com.actionsoft.apps.coe.pal/assets/iconfont/iconfont.eot differ diff --git a/com.actionsoft.apps.coe.pal/assets/iconfont/iconfont.svg b/com.actionsoft.apps.coe.pal/assets/iconfont/iconfont.svg new file mode 100644 index 0000000..e9707f9 --- /dev/null +++ b/com.actionsoft.apps.coe.pal/assets/iconfont/iconfont.svg @@ -0,0 +1,467 @@ + + + + + +Created by iconfont + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/com.actionsoft.apps.coe.pal/assets/iconfont/iconfont.ttf b/com.actionsoft.apps.coe.pal/assets/iconfont/iconfont.ttf new file mode 100644 index 0000000..208d7a4 Binary files /dev/null and b/com.actionsoft.apps.coe.pal/assets/iconfont/iconfont.ttf differ diff --git a/com.actionsoft.apps.coe.pal/assets/iconfont/iconfont.woff b/com.actionsoft.apps.coe.pal/assets/iconfont/iconfont.woff new file mode 100644 index 0000000..595a29f Binary files /dev/null and b/com.actionsoft.apps.coe.pal/assets/iconfont/iconfont.woff differ diff --git a/com.actionsoft.apps.coe.pal/assets/logo.png b/com.actionsoft.apps.coe.pal/assets/logo.png new file mode 100644 index 0000000..f3d2503 Binary files /dev/null and b/com.actionsoft.apps.coe.pal/assets/logo.png differ diff --git a/com.actionsoft.apps.coe.pal/assets/photo.png b/com.actionsoft.apps.coe.pal/assets/photo.png new file mode 100644 index 0000000..062f895 Binary files /dev/null and b/com.actionsoft.apps.coe.pal/assets/photo.png differ diff --git a/com.actionsoft.apps.coe.pal/awsuiAxios/index.js b/com.actionsoft.apps.coe.pal/awsuiAxios/index.js new file mode 100644 index 0000000..226fadd --- /dev/null +++ b/com.actionsoft.apps.coe.pal/awsuiAxios/index.js @@ -0,0 +1,109 @@ +import axios from 'axios' +import store from '../store' +// 创建axios请求实例 +// const request = axios.create({ +// baseURL: axiosBaseUrl, +// timeout: 1000, +// headers: { +// 'Content-Type': 'application/json; charset=utf-8' +// } +// }) +axios.defaults.baseURL = typeof axiosBaseUrl == "undefined" ? "" : axiosBaseUrl; // 设置跨域代理接口统一的前置地址 +axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded; charset=utf-8'; + +// 添加请求拦截器 +axios.interceptors.request.use(function (request) { + // 在发送请求之前做些什么 + if(request.method == 'post'){ + request.params = {}; + } + return request +}, function (error) { + // 对请求错误做些什么 + return Promise.reject(error) +}) + +// 添加响应拦截器 +axios.interceptors.response.use(function (response) { + // 只返回数据 + return response.data +}, function (error) { + if(error.response == null){ + throw error; + } + const status = error.response.status + if (status >= 500) { + alert('服务繁忙请稍后再试') + } else if (status >= 400) { + alert(error.response.data.message) + } + // 对响应错误做点什么 + console.dir(error) + return Promise.reject(error) +}) + +function _toChangeData(data){ + let dataArray = []; + for(let key in data){ + dataArray.push(encodeURIComponent(key)+"="+encodeURIComponent(data[key])); + } + return dataArray.join("&"); +} + +//可能需要更改,暂时用不到 +const get = (params) => { + + return axios({ + method: "get", + url: params.url, + params: params.params + }); +} + +const post = (params) => { + let postConfig = { + method: "post", + url: params.url, + data: params.data + } + //从vuex中获取sessionId + postConfig.data.sid = store.state.sessionId; + postConfig.data = _toChangeData(postConfig.data); + return axios(postConfig); +} + +const aslp = (params) => { + // { + // portalUrl : "", + // authentication : store.state.sessionId, + // sourceAppId : "appid", + // aslp : "aslp://XXXX", + // params :{ + // aa:1, + // bb:2 + // } + // } + let datas = { + authentication : store.state.sessionId, + sourceAppId : params.sourceAppId, + aslp : params.aslp, + } + Object.assign(datas,params.params) + let postConfig = { + method: "post", + url: params.portalUrl, + params: datas + } + postConfig.data = _toChangeData(postConfig.data); + return axios(postConfig); +} +// const delete = (url, data) => request.delete(url, data) +// const head = (url, data) => request.head(url, data) +// const options = (url, data) => request.options(url, data) +// const put = (url, data) => request.put(url, data) +// const patch = (url, data) => request.patch(url, data) +export default { + get, + post, + aslp +} \ No newline at end of file diff --git a/com.actionsoft.apps.coe.pal/components/CooperationUpdate/README.md b/com.actionsoft.apps.coe.pal/components/CooperationUpdate/README.md new file mode 100644 index 0000000..c94859f --- /dev/null +++ b/com.actionsoft.apps.coe.pal/components/CooperationUpdate/README.md @@ -0,0 +1 @@ +说明:小组新建、修改组件 diff --git a/com.actionsoft.apps.coe.pal/components/CooperationUpdate/component.vue b/com.actionsoft.apps.coe.pal/components/CooperationUpdate/component.vue new file mode 100644 index 0000000..40ca7a8 --- /dev/null +++ b/com.actionsoft.apps.coe.pal/components/CooperationUpdate/component.vue @@ -0,0 +1,594 @@ + + + + + \ No newline at end of file diff --git a/com.actionsoft.apps.coe.pal/components/CooperationUpdate/index.js b/com.actionsoft.apps.coe.pal/components/CooperationUpdate/index.js new file mode 100644 index 0000000..4e05326 --- /dev/null +++ b/com.actionsoft.apps.coe.pal/components/CooperationUpdate/index.js @@ -0,0 +1,6 @@ +import CooperationUpdate from "./component"; +CooperationUpdate.install = function(Vue) { + Vue.component(CooperationUpdate.name, CooperationUpdate); +} + +export default CooperationUpdate; diff --git a/com.actionsoft.apps.coe.pal/components/common/BPMOrgAddress/README.md b/com.actionsoft.apps.coe.pal/components/common/BPMOrgAddress/README.md new file mode 100644 index 0000000..26020cb --- /dev/null +++ b/com.actionsoft.apps.coe.pal/components/common/BPMOrgAddress/README.md @@ -0,0 +1 @@ +说明:调用aws平台的部门、人员、角色组件 diff --git a/com.actionsoft.apps.coe.pal/components/common/BPMOrgAddress/component.vue b/com.actionsoft.apps.coe.pal/components/common/BPMOrgAddress/component.vue new file mode 100644 index 0000000..16bd1fc --- /dev/null +++ b/com.actionsoft.apps.coe.pal/components/common/BPMOrgAddress/component.vue @@ -0,0 +1,352 @@ + + + + + diff --git a/com.actionsoft.apps.coe.pal/components/common/BPMOrgAddress/index.js b/com.actionsoft.apps.coe.pal/components/common/BPMOrgAddress/index.js new file mode 100644 index 0000000..1ef1293 --- /dev/null +++ b/com.actionsoft.apps.coe.pal/components/common/BPMOrgAddress/index.js @@ -0,0 +1,7 @@ +import BPMOrgAddress from './component' + +BPMOrgAddress.install = function(Vue) { + Vue.component(BPMOrgAddress.name, BPMOrgAddress); +} + +export default BPMOrgAddress; diff --git a/com.actionsoft.apps.coe.pal/components/common/PALRepositoryTree/README.md b/com.actionsoft.apps.coe.pal/components/common/PALRepositoryTree/README.md new file mode 100644 index 0000000..4182cbd --- /dev/null +++ b/com.actionsoft.apps.coe.pal/components/common/PALRepositoryTree/README.md @@ -0,0 +1 @@ +说明:PAL模型树组件 diff --git a/com.actionsoft.apps.coe.pal/components/common/PALRepositoryTree/component.vue b/com.actionsoft.apps.coe.pal/components/common/PALRepositoryTree/component.vue new file mode 100644 index 0000000..6b5fa11 --- /dev/null +++ b/com.actionsoft.apps.coe.pal/components/common/PALRepositoryTree/component.vue @@ -0,0 +1,338 @@ + + + + + diff --git a/com.actionsoft.apps.coe.pal/components/common/PALRepositoryTree/index.js b/com.actionsoft.apps.coe.pal/components/common/PALRepositoryTree/index.js new file mode 100644 index 0000000..d597a2e --- /dev/null +++ b/com.actionsoft.apps.coe.pal/components/common/PALRepositoryTree/index.js @@ -0,0 +1,7 @@ +import PALRepositoryTree from './component' + +PALRepositoryTree.install = function(Vue) { + Vue.component(PALRepositoryTree.name, PALRepositoryTree); +} + +export default PALRepositoryTree; diff --git a/com.actionsoft.apps.coe.pal/components/common/PalRelationAddress/README.md b/com.actionsoft.apps.coe.pal/components/common/PalRelationAddress/README.md new file mode 100644 index 0000000..7249502 --- /dev/null +++ b/com.actionsoft.apps.coe.pal/components/common/PalRelationAddress/README.md @@ -0,0 +1 @@ +说明:调用pal的组织、数据、控制等关联属性,包括前后置流程 diff --git a/com.actionsoft.apps.coe.pal/components/common/PalRelationAddress/component.vue b/com.actionsoft.apps.coe.pal/components/common/PalRelationAddress/component.vue new file mode 100644 index 0000000..e16431e --- /dev/null +++ b/com.actionsoft.apps.coe.pal/components/common/PalRelationAddress/component.vue @@ -0,0 +1,975 @@ + + + + + diff --git a/com.actionsoft.apps.coe.pal/components/common/PalRelationAddress/index.js b/com.actionsoft.apps.coe.pal/components/common/PalRelationAddress/index.js new file mode 100644 index 0000000..6cdba49 --- /dev/null +++ b/com.actionsoft.apps.coe.pal/components/common/PalRelationAddress/index.js @@ -0,0 +1,7 @@ +import PalRelationAddress from './component' + +PalRelationAddress.install = function(Vue) { + Vue.component(PalRelationAddress.name, PalRelationAddress); +} + +export default PalRelationAddress; diff --git a/com.actionsoft.apps.coe.pal/components/common/upload/ajax.js b/com.actionsoft.apps.coe.pal/components/common/upload/ajax.js new file mode 100644 index 0000000..e5744c4 --- /dev/null +++ b/com.actionsoft.apps.coe.pal/components/common/upload/ajax.js @@ -0,0 +1,85 @@ +function getError(action, option, xhr) { + let msg; + if (xhr.response) { + msg = `${xhr.response.error || xhr.response}`; + } else if (xhr.responseText) { + msg = `${xhr.responseText}`; + } else { + msg = `fail to post ${action} ${xhr.status}`; + } + + const err = new Error(msg); + err.status = xhr.status; + err.method = 'post'; + err.url = action; + return err; +} + +function getBody(xhr) { + const text = xhr.responseText || xhr.response; + if (!text) { + return text; + } + + try { + return JSON.parse(text); + } catch (e) { + return text; + } +} + +export default function upload(option) { + if (typeof XMLHttpRequest === 'undefined') { + return; + } + + const xhr = new XMLHttpRequest(); + const action = option.action; + + if (xhr.upload) { + xhr.upload.onprogress = function progress(e) { + if (e.total > 0) { + e.percent = e.loaded / e.total * 100; + } + option.onProgress(e); + }; + } + + const formData = new FormData(); + + if (option.data) { + Object.keys(option.data).forEach(key => { + formData.append(key, option.data[key]); + }); + } + + formData.append(option.filename, option.file, option.file.name); + + xhr.onerror = function error(e) { + option.onError(e); + }; + + xhr.onload = function onload() { + if (xhr.status < 200 || xhr.status >= 300) { + return option.onError(getError(action, option, xhr)); + } + + option.onSuccess(getBody(xhr)); + }; + + xhr.open('post', action, true); + + if (option.withCredentials && 'withCredentials' in xhr) { + xhr.withCredentials = true; + } + + const headers = option.headers || {}; + + for (let item in headers) { + if (headers.hasOwnProperty(item) && headers[item] !== null) { + xhr.setRequestHeader(item, headers[item]); + } + } + xhr.send(formData); + return xhr; +} diff --git a/com.actionsoft.apps.coe.pal/components/common/upload/index.vue b/com.actionsoft.apps.coe.pal/components/common/upload/index.vue new file mode 100644 index 0000000..24c5f75 --- /dev/null +++ b/com.actionsoft.apps.coe.pal/components/common/upload/index.vue @@ -0,0 +1,353 @@ + diff --git a/com.actionsoft.apps.coe.pal/components/common/upload/upload-dragger.vue b/com.actionsoft.apps.coe.pal/components/common/upload/upload-dragger.vue new file mode 100644 index 0000000..0197010 --- /dev/null +++ b/com.actionsoft.apps.coe.pal/components/common/upload/upload-dragger.vue @@ -0,0 +1,69 @@ + + diff --git a/com.actionsoft.apps.coe.pal/components/common/upload/upload-list.vue b/com.actionsoft.apps.coe.pal/components/common/upload/upload-list.vue new file mode 100644 index 0000000..5e7e99c --- /dev/null +++ b/com.actionsoft.apps.coe.pal/components/common/upload/upload-list.vue @@ -0,0 +1,100 @@ + + diff --git a/com.actionsoft.apps.coe.pal/components/common/upload/upload.vue b/com.actionsoft.apps.coe.pal/components/common/upload/upload.vue new file mode 100644 index 0000000..338731d --- /dev/null +++ b/com.actionsoft.apps.coe.pal/components/common/upload/upload.vue @@ -0,0 +1,200 @@ + diff --git a/com.actionsoft.apps.coe.pal/eventBus b/com.actionsoft.apps.coe.pal/eventBus new file mode 100644 index 0000000..20f6a9e --- /dev/null +++ b/com.actionsoft.apps.coe.pal/eventBus @@ -0,0 +1,3 @@ +import Vue from 'Vue' + +export default new Vue; \ No newline at end of file diff --git a/com.actionsoft.apps.coe.pal/main.js b/com.actionsoft.apps.coe.pal/main.js new file mode 100644 index 0000000..838c5d9 --- /dev/null +++ b/com.actionsoft.apps.coe.pal/main.js @@ -0,0 +1,25 @@ +import Babel from 'babel-polyfill'; +import Vue from 'vue' +import App from './App.vue' +import router from './router' +import store from './store' +// awsui-vue lib,已包含element-ui +import Awsui from '../lib/awsui-vue.umd.min' +import '../lib/awsui-vue.css' +import '../static/common/common.css'; +import '../static/common/theme1.css';// 主题颜色配置 +import './assets/iconfont/iconfont.css'; +// 表单验证 +import './api/validator/validator'; + +Vue.use(Babel); +Vue.use(Awsui) +Vue.config.productionTip = false + +new Vue({ + router, + store, + render: h => { + return h(App); + }, +}).$mount('#app') \ No newline at end of file diff --git a/com.actionsoft.apps.coe.pal/router/index.js b/com.actionsoft.apps.coe.pal/router/index.js new file mode 100644 index 0000000..30985aa --- /dev/null +++ b/com.actionsoft.apps.coe.pal/router/index.js @@ -0,0 +1,123 @@ +import Vue from 'vue' +import VueRouter from 'vue-router' +import store from '../store' + +Vue.use(VueRouter) + +const routes = [ + { + path: '/', //页面主路由 + name: 'main', + component: () => import ('@/views/Main.vue'), + children: [ + {// 资产库主页 + path: '/workspace', + name: 'workspace', + component: () => import('../views/workspace/Workspace') + }, + {// 用户无任何小组情况下的显示及小组创建 + path: '/cooperationCreate', + name: 'cooperationCreate', + component: () => import('../views/cooperation/CooperationCreate') + }, + { + path: '/repository', + name: 'repository',// 模型 + component: () => import('../views/repository/Repository') + }, + { + path: '/manage', + name: '管理中心', + component: () => import('../views/manage/Manage'), + children: [ + { + path: '/workspaceManage', + name: '资产库管理', + component: () => import('../views/workspace/WorkspaceManage') + }, + { + path: '/cooperationUpdate', + name: 'PAL小组更新(管理)', + component: () => import('../views/cooperation/CooperationUpdate') + }, + { + path: '/palUser', + name: 'PAL用户', + component: () => import('../views/user/User') + }, + { + path: '/bpmOrg', + name: 'BPM组织架构', + component: () => import('../views/user/BPMOrg') + }, + { + path: '/mappingManagement_correlated', + name: 'mappingManagement_correlated', + component: () => import('../views/mappingManagement/MappingManagement') + }, + { + path: '/mappingManagement_palNotCorrelated', + name: 'mappingManagement_palNotCorrelated', + component: () => import('../views/mappingManagement/MappingManagement') + }, + { + path: '/mappingManagement_bpmNotCorrelated', + name: 'mappingManagement_bpmNotCorrelated', + component: () => import('../views/mappingManagement/MappingManagement') + }, + { + path: '/themeStyle', + component: () => import('../views/portal/ThemeStyle') + }, + { + path: '/commonRepository', + component: () => import('../views/portal/CommonRepository') + }, + { + path: '/userGroup', + component: () => import('../views/portal/UserGroup') + } + ] + } + ] + }, + { + path: '/devGetSession', //开发时获取session作用 + name: 'devGetSession', + component: () => import('../views/DevGetSession.vue') + } +] + +const router = new VueRouter({ + routes +}) + +/** + * + * to 表示将要跳转到的组件 (目标组件) + * console.log(from); //(源组件) + * next(); + * next 是一个函数 + * next() 进入下一个组件的钩子函数 + * next(false) 阻止跳转 中断导航 + * next("/login") 进入指定的组件的钩子函数 + */ +// 路由守卫 +router.beforeEach((to, from, next) => { + if (production === false && store.state.sessionId == null && to.path != "/devGetSession") { + //进入一个路由获取session,获取session后再进入主入口 + next("/devGetSession"); + } else { + //跳转前设置title + //window.document.title = to.meta.title; + next(); + } + //to.matched.some(res=>{res.meta.isLogin}) 能够获取路由配置的参数 + +}); + +//跳转后设置scroll为原点 +router.afterEach((to, from, next) => { + window.scrollTo(0, 0); +}); +export default router diff --git a/com.actionsoft.apps.coe.pal/store/index.js b/com.actionsoft.apps.coe.pal/store/index.js new file mode 100644 index 0000000..c8656e3 --- /dev/null +++ b/com.actionsoft.apps.coe.pal/store/index.js @@ -0,0 +1,115 @@ +import Vue from 'vue' +import Vuex from 'vuex' + +Vue.use(Vuex) + +export default new Vuex.Store({ + state: { + sessionId: settingParam.sessionId, + topMainHeight: '',// PAL主页面主体高度, + navigationQueryVisible: false, // 导航栏输入框的快速搜索结果显示控制 + navigationConditionQueryVisible: false, // 导航栏输入框的快速搜索结果显示控制 + wsId: '',// 资产库id + teamId: ''// 小组id + }, + getters: {// 提供获取state相关数据的方法 + getTopMainHeightFn(state) {// 获取PAL主页面主体高度 + //console.log('get height ' + state.topMainHeight); + return state.topMainHeight; + }, + getNavigationQueryVisibleFn(state) {// 获取PAL导航栏搜索框结果的显示与隐藏 + return state.navigationQueryVisible; + }, + getNavigationConditionQueryVisibleFn(state) {// 获取PAL导航栏条件搜索框结果的显示与隐藏 + return state.navigationConditionQueryVisible; + }, + getTeamIdFn(state) {// 获取小组id + return state.teamId; + }, + getWsIdFn(state) {// 获取资产库id + return state.wsId; + } + }, + actions: {// 提供跟后台接口交互的方法,并且调用mutations提供的方法进行更新提交 + setTopMainHeightFn({commit, state}, height) {// 设置PAL主页面主体高度更新 + commit("setTopMainHeightFn", height); + //console.log('dispatch update height ' + height); + }, + setNavigationQueryVisibleFn({commit, state}, visible) {// 设置PAL导航栏搜索框结果的显示与隐藏 + commit("setNavigationQueryVisibleFn", visible); + }, + setNavigationConditionQueryVisibleFn({commit, state}, visible) {// 设置PAL导航栏条件搜索框结果的显示与隐藏 + commit("setNavigationConditionQueryVisibleFn", visible); + }, + setTeamIdFn({commit, state}, teamId) { + commit('setTeamIdFn', teamId) + }, + setWsIdFn({commit, state}, wsId) { + commit('setWsIdFn', wsId) + } + }, + mutations: {// 提供存储设置state数据的方法 + setTopMainHeightFn(state, height) {// 设置PAL主页面主体高度更新 + state.topMainHeight = height; + }, + setNavigationQueryVisibleFn(state, visible) {// 设置PAL导航栏搜索框结果的显示与隐藏 + state.navigationQueryVisible = visible; + }, + setNavigationConditionQueryVisibleFn(state, visible) {// 设置PAL导航栏条件搜索框结果的显示与隐藏 + state.navigationConditionQueryVisible = visible; + }, + setTeamIdFn(state, teamId) {// 设置资产库小组Id + state.teamId = teamId; + }, + setWsIdFn(state, wsId) {// 设置资产库Id + state.wsId = wsId; + }, + edit(state, data) { + for (let p in data) { + state[p] = data[p]; + } + } + }, + modules: { + } +}) + +/* +在state中定义数据 + +Getter相当于vue中的computed计算属性,getter 的返回值会根据它的依赖被缓存起来,且只有当它的依赖值发生了改变才会被重新计算,Getters 可以用于监听、state中的值的变化,返回计算后的结果 + +给action注册事件处理函数,当这个函数被触发时候,将状态提交到mutations中处理。actions里面自定义的函数接收一个context参数和要变化的形参 + +mutations是一个对象里。面的方法 都是同步事务,是更改state初始状态的唯一合法方法,具体的用法就是给里面的方法传入参数state或额外的参数 + +代码中设置全局存储方法: + +dispatch:含有异步操作,例如向后台提交数据,写法: this.$store.dispatch('action方法名',值) + +commit:同步操作,写法:this.$store.commit('mutations方法名',值) + +代码中取值方法: +getters: 写法:this.$store.getters.getTopMainHeightFn + */ + +/* +多级嵌套组件监听用法 +父组件:Main.vue +某子组件:Child.vue +父组件进行变量赋值 + this.$store.commit('setTopMainHeightFn',this.bodyHeight);// 更新主体高度存储 +子组件获取并监听父组件设置的变量变化 + computed: { + listenTopMainHeight() { + return this.$store.getters.getTopMainHeightFn; + } + }, + watch : { + listenTopMainHeight: function (newd, old) { + console.log("old " + old); + console.log("new " + newd); + } + } + */ + diff --git a/com.actionsoft.apps.coe.pal/views/DevGetSession.vue b/com.actionsoft.apps.coe.pal/views/DevGetSession.vue new file mode 100644 index 0000000..e981784 --- /dev/null +++ b/com.actionsoft.apps.coe.pal/views/DevGetSession.vue @@ -0,0 +1,41 @@ + + + diff --git a/com.actionsoft.apps.coe.pal/views/Main.vue b/com.actionsoft.apps.coe.pal/views/Main.vue new file mode 100644 index 0000000..9b0bb03 --- /dev/null +++ b/com.actionsoft.apps.coe.pal/views/Main.vue @@ -0,0 +1,265 @@ + + + + diff --git a/com.actionsoft.apps.coe.pal/views/batch/create.vue b/com.actionsoft.apps.coe.pal/views/batch/create.vue new file mode 100644 index 0000000..54fab08 --- /dev/null +++ b/com.actionsoft.apps.coe.pal/views/batch/create.vue @@ -0,0 +1,60 @@ + + + + + \ No newline at end of file diff --git a/com.actionsoft.apps.coe.pal/views/batch/replace.vue b/com.actionsoft.apps.coe.pal/views/batch/replace.vue new file mode 100644 index 0000000..4a7b54d --- /dev/null +++ b/com.actionsoft.apps.coe.pal/views/batch/replace.vue @@ -0,0 +1,60 @@ + + + + + \ No newline at end of file diff --git a/com.actionsoft.apps.coe.pal/views/cooperation/CooperationCreate.vue b/com.actionsoft.apps.coe.pal/views/cooperation/CooperationCreate.vue new file mode 100644 index 0000000..675efc5 --- /dev/null +++ b/com.actionsoft.apps.coe.pal/views/cooperation/CooperationCreate.vue @@ -0,0 +1,32 @@ + + + + + \ No newline at end of file diff --git a/com.actionsoft.apps.coe.pal/views/cooperation/CooperationUpdate.vue b/com.actionsoft.apps.coe.pal/views/cooperation/CooperationUpdate.vue new file mode 100644 index 0000000..c4432e4 --- /dev/null +++ b/com.actionsoft.apps.coe.pal/views/cooperation/CooperationUpdate.vue @@ -0,0 +1,32 @@ + + + + + \ No newline at end of file diff --git a/com.actionsoft.apps.coe.pal/views/manage/Manage.vue b/com.actionsoft.apps.coe.pal/views/manage/Manage.vue new file mode 100644 index 0000000..a7708cf --- /dev/null +++ b/com.actionsoft.apps.coe.pal/views/manage/Manage.vue @@ -0,0 +1,168 @@ + + + + + diff --git a/com.actionsoft.apps.coe.pal/views/mappingManagement/MappingManagement.vue b/com.actionsoft.apps.coe.pal/views/mappingManagement/MappingManagement.vue new file mode 100644 index 0000000..4666849 --- /dev/null +++ b/com.actionsoft.apps.coe.pal/views/mappingManagement/MappingManagement.vue @@ -0,0 +1,20 @@ + + + + + \ No newline at end of file diff --git a/com.actionsoft.apps.coe.pal/views/method/Method.vue b/com.actionsoft.apps.coe.pal/views/method/Method.vue new file mode 100644 index 0000000..829be75 --- /dev/null +++ b/com.actionsoft.apps.coe.pal/views/method/Method.vue @@ -0,0 +1,204 @@ + + + + + \ No newline at end of file diff --git a/com.actionsoft.apps.coe.pal/views/method/MethodAttribute.vue b/com.actionsoft.apps.coe.pal/views/method/MethodAttribute.vue new file mode 100644 index 0000000..310fc67 --- /dev/null +++ b/com.actionsoft.apps.coe.pal/views/method/MethodAttribute.vue @@ -0,0 +1,1348 @@ + + + + + \ No newline at end of file diff --git a/com.actionsoft.apps.coe.pal/views/method/MethodLink.vue b/com.actionsoft.apps.coe.pal/views/method/MethodLink.vue new file mode 100644 index 0000000..7b1efca --- /dev/null +++ b/com.actionsoft.apps.coe.pal/views/method/MethodLink.vue @@ -0,0 +1,147 @@ + + + + + \ No newline at end of file diff --git a/com.actionsoft.apps.coe.pal/views/method/MethodObject.vue b/com.actionsoft.apps.coe.pal/views/method/MethodObject.vue new file mode 100644 index 0000000..2836379 --- /dev/null +++ b/com.actionsoft.apps.coe.pal/views/method/MethodObject.vue @@ -0,0 +1,457 @@ + + + + + \ No newline at end of file diff --git a/com.actionsoft.apps.coe.pal/views/method/MethodShapeAnchorDlg.vue b/com.actionsoft.apps.coe.pal/views/method/MethodShapeAnchorDlg.vue new file mode 100644 index 0000000..9d5c9b9 --- /dev/null +++ b/com.actionsoft.apps.coe.pal/views/method/MethodShapeAnchorDlg.vue @@ -0,0 +1,695 @@ + + + + + + \ No newline at end of file diff --git a/com.actionsoft.apps.coe.pal/views/portal/CommonRepository.vue b/com.actionsoft.apps.coe.pal/views/portal/CommonRepository.vue new file mode 100644 index 0000000..4647036 --- /dev/null +++ b/com.actionsoft.apps.coe.pal/views/portal/CommonRepository.vue @@ -0,0 +1,482 @@ + + + + + \ No newline at end of file diff --git a/com.actionsoft.apps.coe.pal/views/portal/ThemeStyle.vue b/com.actionsoft.apps.coe.pal/views/portal/ThemeStyle.vue new file mode 100644 index 0000000..bad71c7 --- /dev/null +++ b/com.actionsoft.apps.coe.pal/views/portal/ThemeStyle.vue @@ -0,0 +1,262 @@ + + + + + \ No newline at end of file diff --git a/com.actionsoft.apps.coe.pal/views/portal/UserGroup.vue b/com.actionsoft.apps.coe.pal/views/portal/UserGroup.vue new file mode 100644 index 0000000..0495321 --- /dev/null +++ b/com.actionsoft.apps.coe.pal/views/portal/UserGroup.vue @@ -0,0 +1,748 @@ + + + + + \ No newline at end of file diff --git a/com.actionsoft.apps.coe.pal/views/recycle/Recycle.vue b/com.actionsoft.apps.coe.pal/views/recycle/Recycle.vue new file mode 100644 index 0000000..3550dd4 --- /dev/null +++ b/com.actionsoft.apps.coe.pal/views/recycle/Recycle.vue @@ -0,0 +1,376 @@ + + + + + \ No newline at end of file diff --git a/com.actionsoft.apps.coe.pal/views/repository/Repository.vue b/com.actionsoft.apps.coe.pal/views/repository/Repository.vue new file mode 100644 index 0000000..13bfda4 --- /dev/null +++ b/com.actionsoft.apps.coe.pal/views/repository/Repository.vue @@ -0,0 +1,115 @@ + + + + + diff --git a/com.actionsoft.apps.coe.pal/views/repository/RepositoryExport.vue b/com.actionsoft.apps.coe.pal/views/repository/RepositoryExport.vue new file mode 100644 index 0000000..d8c7813 --- /dev/null +++ b/com.actionsoft.apps.coe.pal/views/repository/RepositoryExport.vue @@ -0,0 +1,13 @@ + + + + + diff --git a/com.actionsoft.apps.coe.pal/views/repository/RepositoryImport.vue b/com.actionsoft.apps.coe.pal/views/repository/RepositoryImport.vue new file mode 100644 index 0000000..f07fa63 --- /dev/null +++ b/com.actionsoft.apps.coe.pal/views/repository/RepositoryImport.vue @@ -0,0 +1,436 @@ + + + + + diff --git a/com.actionsoft.apps.coe.pal/views/repository/RepositoryInfo.vue b/com.actionsoft.apps.coe.pal/views/repository/RepositoryInfo.vue new file mode 100644 index 0000000..3f3dd21 --- /dev/null +++ b/com.actionsoft.apps.coe.pal/views/repository/RepositoryInfo.vue @@ -0,0 +1,137 @@ + + + + + diff --git a/com.actionsoft.apps.coe.pal/views/repository/RepositoryInfoProperty.vue b/com.actionsoft.apps.coe.pal/views/repository/RepositoryInfoProperty.vue new file mode 100644 index 0000000..98793dd --- /dev/null +++ b/com.actionsoft.apps.coe.pal/views/repository/RepositoryInfoProperty.vue @@ -0,0 +1,724 @@ + + + + + diff --git a/com.actionsoft.apps.coe.pal/views/repository/RepositoryInfoUpfile.vue b/com.actionsoft.apps.coe.pal/views/repository/RepositoryInfoUpfile.vue new file mode 100644 index 0000000..6280c4c --- /dev/null +++ b/com.actionsoft.apps.coe.pal/views/repository/RepositoryInfoUpfile.vue @@ -0,0 +1,450 @@ + + + + + diff --git a/com.actionsoft.apps.coe.pal/views/repository/RepositoryInfoVersion.vue b/com.actionsoft.apps.coe.pal/views/repository/RepositoryInfoVersion.vue new file mode 100644 index 0000000..fb1c2a9 --- /dev/null +++ b/com.actionsoft.apps.coe.pal/views/repository/RepositoryInfoVersion.vue @@ -0,0 +1,385 @@ + + + + + diff --git a/com.actionsoft.apps.coe.pal/views/repository/RepositoryList.vue b/com.actionsoft.apps.coe.pal/views/repository/RepositoryList.vue new file mode 100644 index 0000000..eb1609e --- /dev/null +++ b/com.actionsoft.apps.coe.pal/views/repository/RepositoryList.vue @@ -0,0 +1,1755 @@ + + + + + diff --git a/com.actionsoft.apps.coe.pal/views/repository/RepositoryMain.vue b/com.actionsoft.apps.coe.pal/views/repository/RepositoryMain.vue new file mode 100644 index 0000000..2f9004c --- /dev/null +++ b/com.actionsoft.apps.coe.pal/views/repository/RepositoryMain.vue @@ -0,0 +1,957 @@ + + + + + diff --git a/com.actionsoft.apps.coe.pal/views/repository/RepositoryMainList.vue b/com.actionsoft.apps.coe.pal/views/repository/RepositoryMainList.vue new file mode 100644 index 0000000..11e46dc --- /dev/null +++ b/com.actionsoft.apps.coe.pal/views/repository/RepositoryMainList.vue @@ -0,0 +1,552 @@ + + + + + diff --git a/com.actionsoft.apps.coe.pal/views/repository/RepositoryMove.vue b/com.actionsoft.apps.coe.pal/views/repository/RepositoryMove.vue new file mode 100644 index 0000000..f69088c --- /dev/null +++ b/com.actionsoft.apps.coe.pal/views/repository/RepositoryMove.vue @@ -0,0 +1,13 @@ + + + + + diff --git a/com.actionsoft.apps.coe.pal/views/repository/RepositoryQuery.vue b/com.actionsoft.apps.coe.pal/views/repository/RepositoryQuery.vue new file mode 100644 index 0000000..6a61c02 --- /dev/null +++ b/com.actionsoft.apps.coe.pal/views/repository/RepositoryQuery.vue @@ -0,0 +1,742 @@ + + + + + diff --git a/com.actionsoft.apps.coe.pal/views/repository/RepositorySecurityMark.vue b/com.actionsoft.apps.coe.pal/views/repository/RepositorySecurityMark.vue new file mode 100644 index 0000000..ca07893 --- /dev/null +++ b/com.actionsoft.apps.coe.pal/views/repository/RepositorySecurityMark.vue @@ -0,0 +1,693 @@ + + + \ No newline at end of file diff --git a/com.actionsoft.apps.coe.pal/views/system/Navigation.vue b/com.actionsoft.apps.coe.pal/views/system/Navigation.vue new file mode 100644 index 0000000..fe515fa --- /dev/null +++ b/com.actionsoft.apps.coe.pal/views/system/Navigation.vue @@ -0,0 +1,621 @@ + + + + + diff --git a/com.actionsoft.apps.coe.pal/views/system/PwdChange.vue b/com.actionsoft.apps.coe.pal/views/system/PwdChange.vue new file mode 100644 index 0000000..6a0fd42 --- /dev/null +++ b/com.actionsoft.apps.coe.pal/views/system/PwdChange.vue @@ -0,0 +1,207 @@ + + + + + diff --git a/com.actionsoft.apps.coe.pal/views/user/BPMOrg.vue b/com.actionsoft.apps.coe.pal/views/user/BPMOrg.vue new file mode 100644 index 0000000..aabaef7 --- /dev/null +++ b/com.actionsoft.apps.coe.pal/views/user/BPMOrg.vue @@ -0,0 +1,31 @@ + + + + + \ No newline at end of file diff --git a/com.actionsoft.apps.coe.pal/views/user/User.vue b/com.actionsoft.apps.coe.pal/views/user/User.vue new file mode 100644 index 0000000..6a47175 --- /dev/null +++ b/com.actionsoft.apps.coe.pal/views/user/User.vue @@ -0,0 +1,647 @@ + + + + + \ No newline at end of file diff --git a/com.actionsoft.apps.coe.pal/views/workspace/Workspace.vue b/com.actionsoft.apps.coe.pal/views/workspace/Workspace.vue new file mode 100644 index 0000000..6b19232 --- /dev/null +++ b/com.actionsoft.apps.coe.pal/views/workspace/Workspace.vue @@ -0,0 +1,63 @@ + + + + + diff --git a/com.actionsoft.apps.coe.pal/views/workspace/WorkspaceBackup.vue b/com.actionsoft.apps.coe.pal/views/workspace/WorkspaceBackup.vue new file mode 100644 index 0000000..e1653be --- /dev/null +++ b/com.actionsoft.apps.coe.pal/views/workspace/WorkspaceBackup.vue @@ -0,0 +1,399 @@ + + + + + diff --git a/com.actionsoft.apps.coe.pal/views/workspace/WorkspaceImport.vue b/com.actionsoft.apps.coe.pal/views/workspace/WorkspaceImport.vue new file mode 100644 index 0000000..9724d99 --- /dev/null +++ b/com.actionsoft.apps.coe.pal/views/workspace/WorkspaceImport.vue @@ -0,0 +1,311 @@ + + + + + diff --git a/com.actionsoft.apps.coe.pal/views/workspace/WorkspaceManage.vue b/com.actionsoft.apps.coe.pal/views/workspace/WorkspaceManage.vue new file mode 100644 index 0000000..346c824 --- /dev/null +++ b/com.actionsoft.apps.coe.pal/views/workspace/WorkspaceManage.vue @@ -0,0 +1,234 @@ + + + + + diff --git a/com.actionsoft.apps.coe.pal/views/workspace/WorkspaceUpdate.vue b/com.actionsoft.apps.coe.pal/views/workspace/WorkspaceUpdate.vue new file mode 100644 index 0000000..f0d6c0d --- /dev/null +++ b/com.actionsoft.apps.coe.pal/views/workspace/WorkspaceUpdate.vue @@ -0,0 +1,196 @@ + + + + +