From 8915ff12351461dada679348805563d60a2c3c34 Mon Sep 17 00:00:00 2001 From: herenshan112 Date: Fri, 14 Jul 2023 13:20:30 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BD=8E=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E8=A1=A8=E6=A0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 10 +- src/api/DesignForm/flow.ts | 4 + src/api/DesignForm/form.ts | 19 + src/api/DesignForm/index.ts | 73 + src/api/DesignForm/system.ts | 22 + src/api/DesignForm/types.ts | 87 + src/api/DesignForm/utils.ts | 108 + src/api/displayboardapi/indexapi.ts | 12 +- src/api/displayboardapi/types.ts | 52 +- src/api/hr/people/index.ts | 14 +- src/api/hr/people/type.ts | 24 + src/api/matrixapi/index.ts | 33 +- src/api/matrixapi/type.ts | 21 + src/assets/data.json | 139 ++ src/assets/iconfont/demo.css | 539 +++++ src/assets/iconfont/demo_index.html | 1959 +++++++++++++++++ src/assets/iconfont/iconfont.css | 323 +++ src/assets/iconfont/iconfont.js | 1 + src/assets/iconfont/iconfont.json | 548 +++++ src/assets/iconfont/iconfont.ttf | Bin 0 -> 21424 bytes src/assets/iconfont/iconfont.woff | Bin 0 -> 13064 bytes src/assets/iconfont/iconfont.woff2 | Bin 0 -> 11024 bytes src/assets/icons/select1.svg | 1 + src/assets/icons/select3.svg | 1 + src/assets/image/icon_file.png | Bin 0 -> 209 bytes src/assets/image/icon_people.png | Bin 0 -> 1185 bytes src/assets/image/next_level.png | Bin 0 -> 245 bytes src/assets/image/next_level_active.png | Bin 0 -> 266 bytes src/assets/img/data.png | Bin 0 -> 6192 bytes src/assets/img/echarts.png | Bin 0 -> 5384 bytes src/assets/img/flow.png | Bin 0 -> 5552 bytes src/assets/img/form-list.png | Bin 0 -> 6355 bytes src/assets/img/form.png | Bin 0 -> 5691 bytes src/assets/img/ruler.png | Bin 0 -> 1160 bytes src/assets/scss/element-var.scss | 9 + src/assets/scss/flow.scss | 125 ++ src/assets/scss/form.scss | 296 +++ src/assets/scss/index.scss | 1 + src/assets/scss/layout.scss | 120 + src/assets/scss/screen.scss | 111 + src/components/DesignForm/assembly/index.ts | 322 +++ src/components/DesignForm/dragControl.vue | 166 ++ .../DesignForm/public/form/childTable.vue | 14 + .../DesignForm/public/form/flexBox.vue | 14 + .../DesignForm/public/form/form.vue | 483 ++++ .../DesignForm/public/form/formGroup.vue | 436 ++++ .../DesignForm/public/form/formItem.vue | 14 + .../DesignForm/public/headTools.vue | 68 + src/components/DesignForm/template.vue | 49 + src/components/DesignForm/tooltip.vue | 19 + src/main.ts | 7 + src/store/DesignForm/designForm.ts | 22 + src/store/DesignForm/layout.ts | 42 + src/utils/DesignForm/form.ts | 87 + src/utils/DesignForm/formChangeValue.ts | 16 + src/utils/DesignForm/formatResult.ts | 34 + src/utils/DesignForm/formatScreen.ts | 18 + src/utils/DesignForm/index.ts | 95 + src/utils/DesignForm/request.ts | 35 + src/views/matrix/index.vue | 7 +- .../matrix/matrixcont/setupmatrixfield.vue | 21 +- .../matrix/matrixcont/setupmatrixuser.vue | 183 +- .../matrixcont/setupmatrixuser_black.vue | 182 ++ src/views/matrix/orgoruser/pickorg.vue | 613 ++++++ src/views/matrix/orgoruser/pickuser.vue | 256 +++ src/views/sysworkflow/codepage/index.vue | 244 +- 66 files changed, 8070 insertions(+), 29 deletions(-) create mode 100644 src/api/DesignForm/flow.ts create mode 100644 src/api/DesignForm/form.ts create mode 100644 src/api/DesignForm/index.ts create mode 100644 src/api/DesignForm/system.ts create mode 100644 src/api/DesignForm/types.ts create mode 100644 src/api/DesignForm/utils.ts create mode 100644 src/assets/data.json create mode 100644 src/assets/iconfont/demo.css create mode 100644 src/assets/iconfont/demo_index.html create mode 100644 src/assets/iconfont/iconfont.css create mode 100644 src/assets/iconfont/iconfont.js create mode 100644 src/assets/iconfont/iconfont.json create mode 100644 src/assets/iconfont/iconfont.ttf create mode 100644 src/assets/iconfont/iconfont.woff create mode 100644 src/assets/iconfont/iconfont.woff2 create mode 100644 src/assets/icons/select1.svg create mode 100644 src/assets/icons/select3.svg create mode 100644 src/assets/image/icon_file.png create mode 100644 src/assets/image/icon_people.png create mode 100644 src/assets/image/next_level.png create mode 100644 src/assets/image/next_level_active.png create mode 100644 src/assets/img/data.png create mode 100644 src/assets/img/echarts.png create mode 100644 src/assets/img/flow.png create mode 100644 src/assets/img/form-list.png create mode 100644 src/assets/img/form.png create mode 100644 src/assets/img/ruler.png create mode 100644 src/assets/scss/element-var.scss create mode 100644 src/assets/scss/flow.scss create mode 100644 src/assets/scss/form.scss create mode 100644 src/assets/scss/index.scss create mode 100644 src/assets/scss/layout.scss create mode 100644 src/assets/scss/screen.scss create mode 100644 src/components/DesignForm/assembly/index.ts create mode 100644 src/components/DesignForm/dragControl.vue create mode 100644 src/components/DesignForm/public/form/childTable.vue create mode 100644 src/components/DesignForm/public/form/flexBox.vue create mode 100644 src/components/DesignForm/public/form/form.vue create mode 100644 src/components/DesignForm/public/form/formGroup.vue create mode 100644 src/components/DesignForm/public/form/formItem.vue create mode 100644 src/components/DesignForm/public/headTools.vue create mode 100644 src/components/DesignForm/template.vue create mode 100644 src/components/DesignForm/tooltip.vue create mode 100644 src/store/DesignForm/designForm.ts create mode 100644 src/store/DesignForm/layout.ts create mode 100644 src/utils/DesignForm/form.ts create mode 100644 src/utils/DesignForm/formChangeValue.ts create mode 100644 src/utils/DesignForm/formatResult.ts create mode 100644 src/utils/DesignForm/formatScreen.ts create mode 100644 src/utils/DesignForm/index.ts create mode 100644 src/utils/DesignForm/request.ts create mode 100644 src/views/matrix/matrixcont/setupmatrixuser_black.vue create mode 100644 src/views/matrix/orgoruser/pickorg.vue create mode 100644 src/views/matrix/orgoruser/pickuser.vue diff --git a/package.json b/package.json index 98b90dce7..f0330c0ce 100644 --- a/package.json +++ b/package.json @@ -40,6 +40,7 @@ ] }, "dependencies": { + "@element-plus/icons-vue": "^2.1.0", "@vitejs/plugin-vue": "^4.2.3", "@vueuse/core": "^10.1.2", "@wangeditor/editor": "^5.1.23", @@ -48,19 +49,26 @@ "axios": "^1.4.0", "echarts": "^5.2.2", "element-plus": "^2.3.4", + "js-beautify": "^1.14.8", + "js-md5": "^0.7.3", + "md5": "^2.3.0", "nprogress": "^0.2.0", "path-browserify": "^1.0.1", "path-to-regexp": "^6.2.0", "pinia": "^2.0.33", "screenfull": "^6.0.0", + "ts-md5": "^1.3.1", "vue": "^3.3.1", "vue-i18n": "9.2.2", - "vue-router": "^4.2.0" + "vue-router": "^4.2.0", + "vuedraggable": "^4.1.0", + "vuedraggable-es": "^4.1.1" }, "devDependencies": { "@commitlint/cli": "^17.6.3", "@commitlint/config-conventional": "^17.6.3", "@iconify-json/ep": "^1.1.10", + "@types/md5": "^2.3.2", "@types/nprogress": "^0.2.0", "@types/path-browserify": "^1.0.0", "@typescript-eslint/eslint-plugin": "^5.59.6", diff --git a/src/api/DesignForm/flow.ts b/src/api/DesignForm/flow.ts new file mode 100644 index 000000000..e686c482d --- /dev/null +++ b/src/api/DesignForm/flow.ts @@ -0,0 +1,4 @@ +export default { + flowSave: 'flow/save', + flowList: 'flow/list' +} diff --git a/src/api/DesignForm/form.ts b/src/api/DesignForm/form.ts new file mode 100644 index 000000000..62b626c88 --- /dev/null +++ b/src/api/DesignForm/form.ts @@ -0,0 +1,19 @@ +export default { + designSave: 'design/save', // 保存设计的表单 + designEdit: 'design/edit', // 保存设计的表单 + designList: 'design/list', // 获取所有已设计的表单 + designChange: 'design/change', // 改变设计表单部分设置内容 + designDelete: 'design/delete', // 根据id删除已设计 + designById: 'design/id', // 根据id获取已设计的表单 + sourceList: 'dataSource/list', // 获取数据源列表 + sourceDelete: 'dataSource/delete', + sourceCreat: 'dataSource/creat', // 创建数据源 + sourceEdit: 'dataSource/edit', // 编辑数据源 + sourceById: 'dataSource/id', // 根据id获取数据源 + saveFormContent: 'content/save', // 往已设计好的表单里添加内容 + editFormContent: 'content/edit', // 往已设计好的表单里添加内容 + getContentList: 'content/list', // 获取表单内容列表 + delFormContent: 'content/delete', // 删除表单内容 + getFormContent: 'content/id', // 获取表单内容 + upload: 'upload/single' // 默认el-upload上传url,也可单独在设计时填写上传地址 +} diff --git a/src/api/DesignForm/index.ts b/src/api/DesignForm/index.ts new file mode 100644 index 000000000..d503cf3e5 --- /dev/null +++ b/src/api/DesignForm/index.ts @@ -0,0 +1,73 @@ +import request from '@/utils/DesignForm/request' +import form from './form' +import system from './system' +import flow from './flow' +const allApi: any = Object.assign(form, system, flow) +export const getRequest = (apiKey: string, data?: any, options: any = {}) => { + let url = allApi[apiKey] || apiKey + // 解决动态url 如/api/delete/id(id为动态时) + // url设置为:/api/delete/$id + // options参数设置:options:{apikey:$id:xx} + if (Object.keys(options.apiKey || {}).length) { + for (const key in options.apiKey) { + url = url.replace(key, options.apiKey[key]) + } + } + let obj: any = Object.assign( + { + url: '/api/' + url, // 添加个前缀 + method: 'POST', + data + }, + options + ) + // github演示时使用下面地址 + if (window.location.host.indexOf('github') !== -1) { + let id = '' + if (url.indexOf('/id') !== -1 && data.id) { + id = data.id + '' + } + if (url.indexOf('/id') !== -1 && data.formId) { + id += data.formId + } + if (url.indexOf('design/list') !== -1 && data.type) { + id = data.type + } + if (url.indexOf('content/list') !== -1 && data.formId) { + id = data.formId + } + if ( + url.includes('/save') || + url.includes('/edit') || + url.includes('/delete') || + url.includes('/creat') || + url.includes('/change') || + url.includes('/single') + ) { + url = 'ok' + } + if (options.method) { + delete options.method + } + obj = Object.assign( + { + url: `./mock/${url}${id}.json`, + method: 'GET', + params: data + }, + options + ) + } + return request(obj) +} +export const uploadUrl = '/api/' + allApi.upload +/*export function uploadFiledTinymce(data, url) { + return request({ + url: url || '/upload/single', + method: 'post', + data, + headers: { + 'Content-Type': 'multipart/form-data' + } + }) +}*/ diff --git a/src/api/DesignForm/system.ts b/src/api/DesignForm/system.ts new file mode 100644 index 000000000..acc1f1cf3 --- /dev/null +++ b/src/api/DesignForm/system.ts @@ -0,0 +1,22 @@ +export default { + dictSave: 'system/dict/save', + dictList: 'system/dict/list', + dictDelete: 'system/dict/delete', + dictEdit: 'system/dict/edit', + deptSave: 'system/dept/save', + deptEdit: 'system/dept/edit', + deptList: 'system/dept/list', + deptDelete: 'system/dept/delete', + menuSave: 'system/menu/save', + menuEdit: 'system/menu/edit', + menuList: 'system/menu/list', + menuDelete: 'system/menu/delete', + roleSave: 'system/role/save', + roleEdit: 'system/role/edit', + roleList: 'system/role/list', + roleDelete: 'system/role/delete', + userSave: 'system/user/save', + userEdit: 'system/user/edit', + userList: 'system/user/list', + userDelete: 'system/user/delete' +} diff --git a/src/api/DesignForm/types.ts b/src/api/DesignForm/types.ts new file mode 100644 index 000000000..1f72ebbd4 --- /dev/null +++ b/src/api/DesignForm/types.ts @@ -0,0 +1,87 @@ +export interface FormList { + name: string + type: string + control: any // 当前type表单控件所有props + item?: FormItem // formItem组件所有props + config: any // 其他配置信息 + customRules?: any // 自定义检验规则,这个规则会合并进item.rules + columns?: any // 布局字段 + tableData?: any // 子表时 + options?: Options[] // radio,checkbox,select选项 +} +export interface Options { + label: string + value: string + disabled?: boolean +} +export interface FormItem { + label?: string + labelWidth?: string + required?: boolean + rules?: any + error?: string + showMessage?: boolean + inlineMessage?: boolean + size?: string + showLabel?: boolean +} + +export interface FormData { + list: FormList[] + form: any // form所有props + config?: { + style?: string // 表单css样式,相当于scope + hideField?: string[] // 使用v-if隐藏的字段,用于交互 + requestUrl?: string // 表单数据请求url + addUrl?: string // 提交表单 + editUrl?: string // 编辑保存 + addLoad?: boolean + expand?: boolean // 用于设置筛选条件默认展开/收起状态 + } + events?: { + beforeRequest?: Function + afterResponse?: Function | string + beforeSubmit?: Function + afterSubmit?: Function + change?: Function + } +} + +export interface TableData { + tableProps?: any + columns: any + controlBtn?: any + events?: any + treeData?: { + show: boolean + beforeRequest?: Function + afterResponse?: Function | string + method: string + requestUrl: string + name: string + } + operateBtn?: any + config?: any +} + +export interface OpenDrawer { + //visible: boolean + title?: string + direction?: string + content?: any + codeType?: string + callback?: Function | string + type?: string +} + + +//文件 +export interface FileAttribute{ + imgPath:any; + title:any; + formData:any; +} +export interface FileAttributeAll{ + visible:boolean; + list:FileAttribute[]; +} diff --git a/src/api/DesignForm/utils.ts b/src/api/DesignForm/utils.ts new file mode 100644 index 000000000..d141c7039 --- /dev/null +++ b/src/api/DesignForm/utils.ts @@ -0,0 +1,108 @@ +import { EDITTYPE } from '@/utils/DesignForm/form' + +export const aceEdit = (data: any, id?: string, type?: string | undefined) => { + id = id || 'editJson' + type = type || EDITTYPE + // @ts-ignore + const editor = ace.edit(id) + editor.setOptions({ + enableBasicAutocompletion: true, + enableSnippets: true, + enableLiveAutocompletion: true + }) + editor.setFontSize(14) + editor.setShowPrintMargin(false) + editor.session.setMode('ace/mode/' + type) + editor.setTheme('ace/theme/tomorrow_night') + editor.setValue(data) + return editor +} +// 将字符类数字转为数值类 +export const formatNumber = (val: any) => { + // 将字符类数字转为数值类 + if (typeof val === 'string' && /^\d+(\.\d+)?$/.test(val.toString())) { + // 为数字 + return Number(val) + } else { + return val + } +} +// 转所有值转为字符串类型 +export const formatToString = (val: any) => { + if (val !== undefined) { + return val.toString() + } else { + return val + } +} +// 将{key:value}转[{label:'key',value:'value'}] +export const objectToArray = (obj: any) => { + if (Object.prototype.toString.call(obj) === '[object Object]') { + const temp: any = [] + for (const key in obj) { + temp.push({ + label: obj[key], + value: key + }) + } + return temp + } + return obj +} +/**** + * 动态插入移除css + * @param id 标签id + * @param cssContent 要插入的css内容 + * @param append true插入false移除 + */ +export const appendOrRemoveStyle = ( + id: string, + cssContent: string, + append?: boolean +) => { + const styleId: any = document.getElementById(id) + if (styleId && append) { + // 存在时直接修改,不用多次插入 + styleId.innerText = cssContent + return + } + if (cssContent && append) { + const styleEl = document.createElement('style') + styleEl.id = id + styleEl.type = 'text/css' + styleEl.appendChild(document.createTextNode(cssContent)) + document.head.appendChild(styleEl) + } + if (!append || !cssContent) { + // 移除 + styleId && styleId.parentNode.removeChild(styleId) + } +} +// 定义两个空方法,用于在编辑事件时作为默认值 +export const beforeRequest = + 'opt=(data, route) => {\n' + + ' // data经过处理后返回\n' + + " console.log('beforeRequest',data)\n" + + ' return data\n' + + '}' +export const afterResponse = + 'opt=(res) => {\n' + + ' // res返回数据\n' + + " console.log('afterResponse',res)\n" + + ' return res\n' + + '}' + +export const onChange = + 'opt=(key,model) => {\n' + + ' // name当前改变组件的值,model表单的值\n' + + " console.log('onChange',key)\n" + + ' return model\n' + + '}' + +// provide 方法定义的key +const prefix = 'AK' +export const constControlChange = prefix + 'ControlChange' // 表单组件改变事件 +export const constSetFormOptions = prefix + 'SetFormOptions' // 使用setOptions设置下拉值 +export const constGetControlByName = prefix + 'GetControlByName' // 根据name从formData.list查找数据 +export const constFormBtnEvent = prefix + 'FormBtnEvent' // 按钮组件事件 +export const constFormProps = prefix + 'FormProps' // 按钮组件事件 diff --git a/src/api/displayboardapi/indexapi.ts b/src/api/displayboardapi/indexapi.ts index f8831eea3..8e8c1454b 100644 --- a/src/api/displayboardapi/indexapi.ts +++ b/src/api/displayboardapi/indexapi.ts @@ -1,6 +1,6 @@ import request from '@/utils/request'; import { AxiosPromise } from 'axios'; -import { dimissionRateQuery,publicId,eduStruCont,sendOrgCont } from './types'; +import { dimissionRateQuery,publicId,eduStruCont,sendOrgCont,outputOrgAndUser } from './types'; /** * 获取离职率 */ @@ -51,3 +51,13 @@ import { dimissionRateQuery,publicId,eduStruCont,sendOrgCont } from './types'; data: data }); } +/** + * 根据行政组织编号获取组织及人员 + */ + export function getBasisOrgChiled(data?: publicId): AxiosPromise{ + return request({ + url: '/hrapi/org/basis_org_obtain_sonorg_and_man', + method: 'post', + data: data + }); +} diff --git a/src/api/displayboardapi/types.ts b/src/api/displayboardapi/types.ts index ce20a62bb..1ad82c20e 100644 --- a/src/api/displayboardapi/types.ts +++ b/src/api/displayboardapi/types.ts @@ -1,5 +1,5 @@ export interface publicId{ - id?:number; + id?:number|string; } /** * 获取离职率参数 @@ -34,14 +34,17 @@ export interface orgInfo{ schoole: number; kingdeeid: string; ispower: number; - sort: number + sort: number; + ischild: boolean; + isActiveItem: boolean; } /** * 输出行政组织 */ export interface sendOrgCont{ current:number; - list:orgInfo[] + list:orgInfo[]; + tabval:any; } /** * 学历结构 @@ -50,3 +53,46 @@ export interface eduStruCont{ education:string; percentage:number; } +/** + * 面包屑 + */ +export interface breadCrumbs{ + departmentId:string // "309", + id:string // "309", + departmentKey:string // "GK00", + departmentName:string // "山东恒信高科能源有限公司", + parentId:string // "313", + departmentNames:string // "山东恒信高科能源有限公司" +} +/** + * 输出根据行政组织编号获取组织及人员 + */ +export interface outputOrgAndUser{ + childDepartments:childDepartmentsCont[]; + employees:employeesCont[]; + titleDepartments:breadCrumbs[]; +} +export interface employeesCont{ + id:string //"95196156539179008", + employeeName:string //"胡齐帅", + isLeave:string //"0", + open:boolean //"false", + icon:string //"", + iconToBase64:string //"", + wechat:string //"", + departmentid:number //102, + departmentname:string //"企管部", + postid:number //798, + postname:string //"岗监员", + tema:number //0, + temaname:string //"" + ispick:boolean // +} +export interface childDepartmentsCont{ + id:string; //"103", + departmentKey:string; //"GK0302", + departmentName:string; //"IT", + parentId:string; //"102", + departmentNames:string; //"IT" + isActiveItem:boolean; // +} diff --git a/src/api/hr/people/index.ts b/src/api/hr/people/index.ts index f44cf4b86..76b0298ed 100644 --- a/src/api/hr/people/index.ts +++ b/src/api/hr/people/index.ts @@ -20,7 +20,9 @@ import { groupInnerWorkCont, editUserIcon, editUserAboutOrg, - teamClassQueay + teamClassQueay, + searchPeoleCont, + queryPeopleCont } from './type'; /** * 获取人员档案 @@ -344,3 +346,13 @@ import { data: data }); } +/** + * 搜索成员 + */ + export function searchUserCont(data: searchPeoleCont): AxiosPromise>{ + return request({ + url: '/kpiapi/powerpc/search_people', + method: 'post', + data: data + }); +} diff --git a/src/api/hr/people/type.ts b/src/api/hr/people/type.ts index c02d0418a..60ddc2f03 100644 --- a/src/api/hr/people/type.ts +++ b/src/api/hr/people/type.ts @@ -542,3 +542,27 @@ export interface teamClassCont{ rule:teamRule[]; list:teamList[]; } +/** + * 搜索成员条件 + */ + export interface searchPeoleCont extends PageQuery{ + name?:number|string; //关键字 +} +/** + * 搜索成员结果 + */ +export interface queryPeopleCont{ + id:string // "15993815826844528", + employeeName:string // "秦东", + isLeave:string // "0", + open:boolean // "false", + icon:string // "https://wework.qpic.cn/wwhead/duc2TvpEgSTPk74IwG7BswsATgrfz6BGVPpX5QU5uvaCiaxk3ReIlRhdUwIeiaBBazzCLiaHI8VuA4/0", + iconToBase64:string // + wechat:string // "KaiXinGuo", + departmentid:number // 102, + departmentname:string // "企管部", + postid:number // 794, + postname:string // "主管", + tema:number // 1, + temaname:string // "长白班" +} diff --git a/src/api/matrixapi/index.ts b/src/api/matrixapi/index.ts index ad0c0775e..9fe50c02e 100644 --- a/src/api/matrixapi/index.ts +++ b/src/api/matrixapi/index.ts @@ -1,6 +1,6 @@ import request from '@/utils/request'; import { AxiosPromise } from 'axios'; -import { searchMatrix,matrixCont,editMatrixCont,editMatrixInfo,editStatus,chineseInitialFirstWord,sendMatrixField,getMatrixWord } from './type'; +import { searchMatrix,matrixCont,editMatrixCont,editMatrixInfo,editStatus,chineseInitialFirstWord,sendMatrixField,getMatrixWord,orgAndUserMatrixCont } from './type'; /** * 获取矩阵权限分页列表 @@ -72,3 +72,34 @@ export function editMatrixCont(queryParams: editMatrixInfo){ data: queryParams }); } +/** + * 获取编号 + */ +export function getNumber(queryParams: getMatrixWord){ + return request({ + url: '/systemapi/public/send_number', + method: 'post', + data: queryParams + }); +} +/** + * 提交矩阵取值数据 + */ + export function submitMatrixData(queryParams: any){ + return request({ + url: '/systemapi/matrix/submit_matrix_data', + method: 'post', + data: queryParams + }); +} +/** + * 获取已经存在的矩阵信息 + */ + export function haveMatrixCont(queryParams: getMatrixWord){ + return request({ + url: '/systemapi/matrix/gain_matrix_data', + // url: 'http://localhost:9999/src/assets/data.json', + method: 'post', + data: queryParams + }); +} diff --git a/src/api/matrixapi/type.ts b/src/api/matrixapi/type.ts index cfd70219c..07d946742 100644 --- a/src/api/matrixapi/type.ts +++ b/src/api/matrixapi/type.ts @@ -81,6 +81,7 @@ export interface matrixTable{ id:number; label:string; prop:string + types:number; } /** * 自定义对象结构体 @@ -88,3 +89,23 @@ export interface matrixTable{ export interface objectStruct{ [idx: string]: any } +/** + * 穿梭框已选定值 + */ +export interface shuttleFramePickData{ + id:number|string; + name:string; + icon:string; +} +/** + * 权限矩阵具体行政组织和使用人 + */ +export interface orgAndUserMatrixCont{ + id:number|string; + number:string; + userlist:shuttleFramePickData[]; + types:number; + mcid:number; + mhid:number; +} + diff --git a/src/assets/data.json b/src/assets/data.json new file mode 100644 index 000000000..93bc38124 --- /dev/null +++ b/src/assets/data.json @@ -0,0 +1,139 @@ +{ + "code": 0, + "msg": "成功", + "data": { + "childDepartments": [ + { + "id": "103", + "departmentKey": "GK0302", + "departmentName": "IT", + "parentId": "102", + "departmentNames": "IT" + }, + { + "id": "272", + "departmentKey": "GK0301", + "departmentName": "企管", + "parentId": "102", + "departmentNames": "企管" + }, + { + "id": "273", + "departmentKey": "GK0303", + "departmentName": "岗监", + "parentId": "102", + "departmentNames": "岗监" + } + ], + "employees": [ + { + "id": "10638305678856192", + "employeeName": "庞富镇", + "isLeave": "0", + "open": "false", + "icon": "", + "iconToBase64": "data:image/jpeg;base64,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", + "wechat": "PangFuZhen", + "departmentid": 102, + "departmentname": "企管部", + "postid": 1949, + "postname": "开发专员", + "tema": 0, + "temaname": "" + }, + { + "id": "20833135155482624", + "employeeName": "薛中国", + "isLeave": "0", + "open": "false", + "icon": "", + "iconToBase64": "data:image/jpeg;base64,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", + "wechat": "XueZhongGuo", + "departmentid": 102, + "departmentname": "企管部", + "postid": 797, + "postname": "IT", + "tema": 0, + "temaname": "" + }, + { + "id": "95196156539179008", + "employeeName": "胡齐帅", + "isLeave": "0", + "open": "false", + "icon": "", + "iconToBase64": "", + "wechat": "", + "departmentid": 102, + "departmentname": "企管部", + "postid": 798, + "postname": "岗监员", + "tema": 0, + "temaname": "" + }, + { + "id": "95196160066588672", + "employeeName": "高宇", + "isLeave": "0", + "open": "false", + "icon": "", + "iconToBase64": "data:image/jpeg;base64,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", + "wechat": "", + "departmentid": 102, + "departmentname": "企管部", + "postid": 798, + "postname": "岗监员", + "tema": 0, + "temaname": "" + }, + { + "id": "112229905093103616", + "employeeName": "孙殿泉", + "isLeave": "0", + "open": "false", + "icon": "", + "iconToBase64": "data:image/jpeg;base64,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", + "wechat": "", + "departmentid": 102, + "departmentname": "企管部", + "postid": 1120, + "postname": "新员工", + "tema": 0, + "temaname": "" + }, + { + "id": "134825671351341056", + "employeeName": "李文轩", + "isLeave": "0", + "open": "false", + "icon": "", + "iconToBase64": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAgAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0a\r\nHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIy\r\nMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAB4AGQDASIA\r\nAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA\r\nAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3\r\nODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm\r\np6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA\r\nAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx\r\nBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK\r\nU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3\r\nuLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD2M0ma\r\nU1GTUgOzRmoy1YfiDxTY+HYPMu5Bk8hR1NIZ0G6kJrze6+MvhyG3keFbqaRfux7Au4/UnpXMJ8dr\r\ngzvnRYzCfugT8j6nHP5U7Ae37qN1eOW/xzt9xFzpTckY8uUfj1rsvDvxG0HxC8cMc/2e6ccQzHBJ\r\n9AehoA7HdSZpAcj2NFADgaTOKSikAuaKKKBDyaiY09jioHbFAyC/u0s7Ka4c/LGhY/hXy34n1q41\r\nnWLiaSeRo952AngD0GK+hvGdw8XhDVXj+8tuxr5hs7a71O58mAdPvN6CmmtwtfREJ2luV4Hc0rtH\r\ngAsBXUR+DHdPmuHye9MbwK2f+PhvxFT7WHc09jPscqx3kBMGnxyNEyFWYMOcqeQa6xfAmSD55+mK\r\nbe+CPLhLQSN5gHfpR7WAexn2PRvhj8Rp9QC6VqkhlkRAIpT1IHY+p6V68DmvkTRL250HXonkUJLG\r\n3O7IGPw/nX1fp1wLrT7ecEESRqwI6ciqZmXc0DmkBzTlpCFxRS0UWGMeqkzVac1TnoAxtctP7R0a\r\n9syM+dC6D6kcfrXivg6xS2sruecKmJCpJ7Y617lO20E4zgZrzRLW2e3uJPJAhmmaby8Zxk5xWVR6\r\nWN6EW5XKlvqukzSCP7Rt9ypArdh06JowwkWTPcVhSajaQmKM2MxDnAIRfl+vORWxZSo0aGE4SQZA\r\nxj9K55JdDupu+jHz21tbJullWMDqScVkPq2kmfyhdKT06Vq38kUMZkmwVHBzzWTHqmlXKtGbN1Ab\r\nYzNEMZoik0E3Z2Ry/jDR999aTW6585hGCvcnpX0Pp0H2PTra2znyYljznOcDFeXpa2azadLcKxt7\r\nW4WbaoyTtDEfrj8q9TgkEsSSLkK6hhketdVKXu2OCvFqVy2pqRTUCmpVNaGJLRQOlFAELmqk3SrL\r\nmq0vIpAZ83WuOuoY7a6kiUcBiQPTPP8AWuxnFcrrkey8Eg/iXn6j/IrGotDow7tKxnvFEVLMOBUV\r\nvMrTFlwQvAA7U2SXdGwJ7VlC+nhmVUEawom0rjlj65/piudK56N0jbeWKS4aKQDB7GpktYowcKMf\r\nSsKC4uJ5XEuzBYMhAwVH1zz+lbQuMRgHJNFrBo1cs2NiuoX8UBXMe7Lj/Zwa9AQAAAcCuT8LRbri\r\n4mP8KhR+PP8ASusTpXTSVkebiJXlbsSipFqNakWtjAlB4opo6UUAQsahenu1Qs1ICtOvBrmtdiL2\r\n/mDqh/Q/5FdLMw2msS/eNYpDIwCYOcniokrqxcHZpnC3Tt5bKhwx9aoP56jLyRAHtsOKumRWJD8H\r\n9DTHWNwd2OOxrlR6Ka3K4+1smVeIjt8ladtKXjUH7w61WVkVQAOPapYLiNbiM7fkDAscds0A5JbH\r\nomg2ptdPQMMPJ87fj0/SttKzreZXRXRgynkEHg1djfIrrjoebJtu7LIqRaiVqlU1ZJIOlFA6UUAZ\r\nzyY71VluAookJPU1CF5yKzuOww75m5+UVR1/TjcaBN5K5kjYSnHUgdf0OfwrTAxzU8b4ak9Slo7n\r\nlPlh/SgQuBhG6diMiuq1zwnL5jXWkgMrHLW+cYP+z/h+XpXPfPCxS4jeKQdVkUg/rXM4tHbCakVv\r\nIZ/9YScdh0pTGAuKkeXryKs6dpd7q0gFvEfLz80rcKPx7/Skk2U2ludB4Mic2d4WJ8sONns2Dn+l\r\ndKHaNsHmo9O09NNslt48kLyzHue5p0i5Oa6YqyOGbu7lyOXcKso1Y6u8ZyDVuC5DEBuDVpkNGkG4\r\noqJW460VYjMIUnmk2Y56inMv74/Wk6EisyhcDFGcHimE0ZoAnWUZ+bg+op0iwzptkVJF9GGf51Wz\r\nRuoGPXTNPVty2VqD6iNasbkUADoOgFVd1KGosGpM8m7joBUZwabk0c0xWEKAnpTSNoz6VKvWknXE\r\nDH2oAlSV0UAcj3opoICjPpRQAvG7P51EeWJoooAjPWm7ec5oopAPFKBRRQAYooopjFzS55oooEOF\r\nPYbrdh3FFFCEVpXCsAT2FFFFBR//2Q==", + "wechat": "", + "departmentid": 102, + "departmentname": "企管部", + "postid": 1120, + "postname": "新员工", + "tema": 0, + "temaname": "" + } + ], + "titleDepartments": [ + { + "departmentId": "309", + "id": "309", + "departmentKey": "GK00", + "departmentName": "山东恒信高科能源有限公司", + "parentId": "313", + "departmentNames": "山东恒信高科能源有限公司" + }, + { + "departmentId": "102", + "id": "102", + "departmentKey": "GK03", + "departmentName": "企管部", + "parentId": "309", + "departmentNames": "企管部" + } + ] + } +} diff --git a/src/assets/iconfont/demo.css b/src/assets/iconfont/demo.css new file mode 100644 index 000000000..a67054a0a --- /dev/null +++ b/src/assets/iconfont/demo.css @@ -0,0 +1,539 @@ +/* Logo 字体 */ +@font-face { + font-family: "iconfont logo"; + src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834'); + src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834#iefix') format('embedded-opentype'), + url('https://at.alicdn.com/t/font_985780_km7mi63cihi.woff?t=1545807318834') format('woff'), + url('https://at.alicdn.com/t/font_985780_km7mi63cihi.ttf?t=1545807318834') format('truetype'), + url('https://at.alicdn.com/t/font_985780_km7mi63cihi.svg?t=1545807318834#iconfont') format('svg'); +} + +.logo { + font-family: "iconfont logo"; + font-size: 160px; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +/* tabs */ +.nav-tabs { + position: relative; +} + +.nav-tabs .nav-more { + position: absolute; + right: 0; + bottom: 0; + height: 42px; + line-height: 42px; + color: #666; +} + +#tabs { + border-bottom: 1px solid #eee; +} + +#tabs li { + cursor: pointer; + width: 100px; + height: 40px; + line-height: 40px; + text-align: center; + font-size: 16px; + border-bottom: 2px solid transparent; + position: relative; + z-index: 1; + margin-bottom: -1px; + color: #666; +} + + +#tabs .active { + border-bottom-color: #f00; + color: #222; +} + +.tab-container .content { + display: none; +} + +/* 页面布局 */ +.main { + padding: 30px 100px; + width: 960px; + margin: 0 auto; +} + +.main .logo { + color: #333; + text-align: left; + margin-bottom: 30px; + line-height: 1; + height: 110px; + margin-top: -50px; + overflow: hidden; + *zoom: 1; +} + +.main .logo a { + font-size: 160px; + color: #333; +} + +.helps { + margin-top: 40px; +} + +.helps pre { + padding: 20px; + margin: 10px 0; + border: solid 1px #e7e1cd; + background-color: #fffdef; + overflow: auto; +} + +.icon_lists { + width: 100% !important; + overflow: hidden; + *zoom: 1; +} + +.icon_lists li { + width: 100px; + margin-bottom: 10px; + margin-right: 20px; + text-align: center; + list-style: none !important; + cursor: default; +} + +.icon_lists li .code-name { + line-height: 1.2; +} + +.icon_lists .icon { + display: block; + height: 100px; + line-height: 100px; + font-size: 42px; + margin: 10px auto; + color: #333; + -webkit-transition: font-size 0.25s linear, width 0.25s linear; + -moz-transition: font-size 0.25s linear, width 0.25s linear; + transition: font-size 0.25s linear, width 0.25s linear; +} + +.icon_lists .icon:hover { + font-size: 100px; +} + +.icon_lists .svg-icon { + /* 通过设置 font-size 来改变图标大小 */ + width: 1em; + /* 图标和文字相邻时,垂直对齐 */ + vertical-align: -0.15em; + /* 通过设置 color 来改变 SVG 的颜色/fill */ + fill: currentColor; + /* path 和 stroke 溢出 viewBox 部分在 IE 下会显示 + normalize.css 中也包含这行 */ + overflow: hidden; +} + +.icon_lists li .name, +.icon_lists li .code-name { + color: #666; +} + +/* markdown 样式 */ +.markdown { + color: #666; + font-size: 14px; + line-height: 1.8; +} + +.highlight { + line-height: 1.5; +} + +.markdown img { + vertical-align: middle; + max-width: 100%; +} + +.markdown h1 { + color: #404040; + font-weight: 500; + line-height: 40px; + margin-bottom: 24px; +} + +.markdown h2, +.markdown h3, +.markdown h4, +.markdown h5, +.markdown h6 { + color: #404040; + margin: 1.6em 0 0.6em 0; + font-weight: 500; + clear: both; +} + +.markdown h1 { + font-size: 28px; +} + +.markdown h2 { + font-size: 22px; +} + +.markdown h3 { + font-size: 16px; +} + +.markdown h4 { + font-size: 14px; +} + +.markdown h5 { + font-size: 12px; +} + +.markdown h6 { + font-size: 12px; +} + +.markdown hr { + height: 1px; + border: 0; + background: #e9e9e9; + margin: 16px 0; + clear: both; +} + +.markdown p { + margin: 1em 0; +} + +.markdown>p, +.markdown>blockquote, +.markdown>.highlight, +.markdown>ol, +.markdown>ul { + width: 80%; +} + +.markdown ul>li { + list-style: circle; +} + +.markdown>ul li, +.markdown blockquote ul>li { + margin-left: 20px; + padding-left: 4px; +} + +.markdown>ul li p, +.markdown>ol li p { + margin: 0.6em 0; +} + +.markdown ol>li { + list-style: decimal; +} + +.markdown>ol li, +.markdown blockquote ol>li { + margin-left: 20px; + padding-left: 4px; +} + +.markdown code { + margin: 0 3px; + padding: 0 5px; + background: #eee; + border-radius: 3px; +} + +.markdown strong, +.markdown b { + font-weight: 600; +} + +.markdown>table { + border-collapse: collapse; + border-spacing: 0px; + empty-cells: show; + border: 1px solid #e9e9e9; + width: 95%; + margin-bottom: 24px; +} + +.markdown>table th { + white-space: nowrap; + color: #333; + font-weight: 600; +} + +.markdown>table th, +.markdown>table td { + border: 1px solid #e9e9e9; + padding: 8px 16px; + text-align: left; +} + +.markdown>table th { + background: #F7F7F7; +} + +.markdown blockquote { + font-size: 90%; + color: #999; + border-left: 4px solid #e9e9e9; + padding-left: 0.8em; + margin: 1em 0; +} + +.markdown blockquote p { + margin: 0; +} + +.markdown .anchor { + opacity: 0; + transition: opacity 0.3s ease; + margin-left: 8px; +} + +.markdown .waiting { + color: #ccc; +} + +.markdown h1:hover .anchor, +.markdown h2:hover .anchor, +.markdown h3:hover .anchor, +.markdown h4:hover .anchor, +.markdown h5:hover .anchor, +.markdown h6:hover .anchor { + opacity: 1; + display: inline-block; +} + +.markdown>br, +.markdown>p>br { + clear: both; +} + + +.hljs { + display: block; + background: white; + padding: 0.5em; + color: #333333; + overflow-x: auto; +} + +.hljs-comment, +.hljs-meta { + color: #969896; +} + +.hljs-string, +.hljs-variable, +.hljs-template-variable, +.hljs-strong, +.hljs-emphasis, +.hljs-quote { + color: #df5000; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-type { + color: #a71d5d; +} + +.hljs-literal, +.hljs-symbol, +.hljs-bullet, +.hljs-attribute { + color: #0086b3; +} + +.hljs-section, +.hljs-name { + color: #63a35c; +} + +.hljs-tag { + color: #333333; +} + +.hljs-title, +.hljs-attr, +.hljs-selector-id, +.hljs-selector-class, +.hljs-selector-attr, +.hljs-selector-pseudo { + color: #795da3; +} + +.hljs-addition { + color: #55a532; + background-color: #eaffea; +} + +.hljs-deletion { + color: #bd2c00; + background-color: #ffecec; +} + +.hljs-link { + text-decoration: underline; +} + +/* 代码高亮 */ +/* PrismJS 1.15.0 +https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript */ +/** + * prism.js default theme for JavaScript, CSS and HTML + * Based on dabblet (http://dabblet.com) + * @author Lea Verou + */ +code[class*="language-"], +pre[class*="language-"] { + color: black; + background: none; + text-shadow: 0 1px white; + font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; + text-align: left; + white-space: pre; + word-spacing: normal; + word-break: normal; + word-wrap: normal; + line-height: 1.5; + + -moz-tab-size: 4; + -o-tab-size: 4; + tab-size: 4; + + -webkit-hyphens: none; + -moz-hyphens: none; + -ms-hyphens: none; + hyphens: none; +} + +pre[class*="language-"]::-moz-selection, +pre[class*="language-"] ::-moz-selection, +code[class*="language-"]::-moz-selection, +code[class*="language-"] ::-moz-selection { + text-shadow: none; + background: #b3d4fc; +} + +pre[class*="language-"]::selection, +pre[class*="language-"] ::selection, +code[class*="language-"]::selection, +code[class*="language-"] ::selection { + text-shadow: none; + background: #b3d4fc; +} + +@media print { + + code[class*="language-"], + pre[class*="language-"] { + text-shadow: none; + } +} + +/* Code blocks */ +pre[class*="language-"] { + padding: 1em; + margin: .5em 0; + overflow: auto; +} + +:not(pre)>code[class*="language-"], +pre[class*="language-"] { + background: #f5f2f0; +} + +/* Inline code */ +:not(pre)>code[class*="language-"] { + padding: .1em; + border-radius: .3em; + white-space: normal; +} + +.token.comment, +.token.prolog, +.token.doctype, +.token.cdata { + color: slategray; +} + +.token.punctuation { + color: #999; +} + +.namespace { + opacity: .7; +} + +.token.property, +.token.tag, +.token.boolean, +.token.number, +.token.constant, +.token.symbol, +.token.deleted { + color: #905; +} + +.token.selector, +.token.attr-name, +.token.string, +.token.char, +.token.builtin, +.token.inserted { + color: #690; +} + +.token.operator, +.token.entity, +.token.url, +.language-css .token.string, +.style .token.string { + color: #9a6e3a; + background: hsla(0, 0%, 100%, .5); +} + +.token.atrule, +.token.attr-value, +.token.keyword { + color: #07a; +} + +.token.function, +.token.class-name { + color: #DD4A68; +} + +.token.regex, +.token.important, +.token.variable { + color: #e90; +} + +.token.important, +.token.bold { + font-weight: bold; +} + +.token.italic { + font-style: italic; +} + +.token.entity { + cursor: help; +} diff --git a/src/assets/iconfont/demo_index.html b/src/assets/iconfont/demo_index.html new file mode 100644 index 000000000..2bd670b61 --- /dev/null +++ b/src/assets/iconfont/demo_index.html @@ -0,0 +1,1959 @@ + + + + + iconfont Demo + + + + + + + + + + + + + +
+

+ + +

+ +
+
+
    + +
  • + +
    箭头
    +
    
    +
  • + +
  • + +
    手,手势
    +
    
    +
  • + +
  • + +
    24gl-unlock4
    +
    
    +
  • + +
  • + +
    解锁
    +
    
    +
  • + +
  • + +
    眼睛_隐藏_o
    +
    
    +
  • + +
  • + +
    设置边框
    +
    
    +
  • + +
  • + +
    文字边框
    +
    
    +
  • + +
  • + +
    m-滚动文字
    +
    
    +
  • + +
  • + +
    发起的
    +
    
    +
  • + +
  • + +
    工作台
    +
    
    +
  • + +
  • + +
    待办任务_o
    +
    
    +
  • + +
  • + +
    我发起的
    +
    
    +
  • + +
  • + +
    我的已办
    +
    
    +
  • + +
  • + +
    符号-按钮
    +
    
    +
  • + +
  • + +
    设计
    +
    
    +
  • + +
  • + +
    数据源管理
    +
    
    +
  • + +
  • + +
    审批
    +
    
    +
  • + +
  • + +
    抄送
    +
    
    +
  • + +
  • + +
    代码,分支,分流,分叉
    +
    
    +
  • + +
  • + +
    文档
    +
    
    +
  • + +
  • + +
    系统管理
    +
    
    +
  • + +
  • + +
    创建图表
    +
    
    +
  • + +
  • + +
    可视化
    +
    
    +
  • + +
  • + +
    菜单
    +
    
    +
  • + +
  • + +
    icon-user
    +
    
    +
  • + +
  • + +
    表单管理
    +
    
    +
  • + +
  • + +
    列表
    +
    
    +
  • + +
  • + +
    操作日志
    +
    
    +
  • + +
  • + +
    字典管理
    +
    
    +
  • + +
  • + +
    岗位
    +
    
    +
  • + +
  • + +
    角色管理
    +
    
    +
  • + +
  • + +
    管理登录日志
    +
    
    +
  • + +
  • + +
    系统工具
    +
    
    +
  • + +
  • + +
    柱状图
    +
    
    +
  • + +
  • + +
    407饼图
    +
    
    +
  • + +
  • + +
    折线图
    +
    
    +
  • + +
  • + +
    Directory tree
    +
    
    +
  • + +
  • + +
    流式布局
    +
    
    +
  • + +
  • + +
    divide
    +
    
    +
  • + +
  • + +
    树状图_o
    +
    
    +
  • + +
  • + +
    时间
    +
    
    +
  • + +
  • + +
    富文本框
    +
    
    +
  • + +
  • + +
    评分
    +
    
    +
  • + +
  • + +
    滑块
    +
    
    +
  • + +
  • + +
    分割线
    +
    
    +
  • + +
  • + +
    颜色库
    +
    
    +
  • + +
  • + +
    导入
    +
    
    +
  • + +
  • + +
    图片
    +
    
    +
  • + +
  • + +
    卡片
    +
    
    +
  • + +
  • + +
    help
    +
    
    +
  • + +
  • + +
    table
    +
    
    +
  • + +
  • + +
    component
    +
    
    +
  • + +
  • + +
    11.符号-级联选择
    +
    
    +
  • + +
  • + +
    cascader
    +
    
    +
  • + +
  • + +
    计数器
    +
    
    +
  • + +
  • + +
    标题
    +
    
    +
  • + +
  • + +
    bootstrap_tabs
    +
    
    +
  • + +
  • + +
    close
    +
    
    +
  • + +
  • + +
    加号
    +
    
    +
  • + +
  • + +
    arrow on
    +
    
    +
  • + +
  • + +
    check
    +
    
    +
  • + +
  • + +
    vue
    +
    
    +
  • + +
  • + +
    开关
    +
    
    +
  • + +
  • + +
    保存
    +
    
    +
  • + +
  • + +
    move
    +
    
    +
  • + +
  • + +
    clone
    +
    
    +
  • + +
  • + +
    删 除 (1)
    +
    
    +
  • + +
  • + +
    eye
    +
    
    +
  • + +
  • + +
    json
    +
    
    +
  • + +
  • + +
    GRID
    +
    
    +
  • + +
  • + +
    文字
    +
    
    +
  • + +
  • + +
    date
    +
    
    +
  • + +
  • + +
    input
    +
    
    +
  • + +
  • + +
    check_box-24px
    +
    
    +
  • + +
  • + +
    textarea
    +
    
    +
  • + +
  • + +
    radio
    +
    
    +
  • + +
  • + +
    下拉选择
    +
    
    +
  • + +
+
+

Unicode 引用

+
+ +

Unicode 是字体在网页端最原始的应用方式,特点是:

+
    +
  • 支持按字体的方式去动态调整图标大小,颜色等等。
  • +
  • 默认情况下不支持多色,直接添加多色图标会自动去色。
  • +
+
+

注意:新版 iconfont 支持两种方式引用多色图标:SVG symbol 引用方式和彩色字体图标模式。(使用彩色字体图标需要在「编辑项目」中开启「彩色」选项后并重新生成。)

+
+

Unicode 使用步骤如下:

+

第一步:拷贝项目下面生成的 @font-face

+
@font-face {
+  font-family: 'iconfont';
+  src: url('iconfont.woff2?t=1683511822799') format('woff2'),
+       url('iconfont.woff?t=1683511822799') format('woff'),
+       url('iconfont.ttf?t=1683511822799') format('truetype');
+}
+
+

第二步:定义使用 iconfont 的样式

+
.iconfont {
+  font-family: "iconfont" !important;
+  font-size: 16px;
+  font-style: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+
+

第三步:挑选相应图标并获取字体编码,应用于页面

+
+<span class="iconfont">&#x33;</span>
+
+
+

"iconfont" 是你项目下的 font-family。可以通过编辑项目查看,默认是 "iconfont"。

+
+
+
+
+
    + +
  • + +
    + 箭头 +
    +
    .icon-mouse +
    +
  • + +
  • + +
    + 手,手势 +
    +
    .icon-hand +
    +
  • + +
  • + +
    + 24gl-unlock4 +
    +
    .icon-lock-open +
    +
  • + +
  • + +
    + 解锁 +
    +
    .icon-lock +
    +
  • + +
  • + +
    + 眼睛_隐藏_o +
    +
    .icon-eye-close +
    +
  • + +
  • + +
    + 设置边框 +
    +
    .icon-border +
    +
  • + +
  • + +
    + 文字边框 +
    +
    .icon-text2 +
    +
  • + +
  • + +
    + m-滚动文字 +
    +
    .icon-stext +
    +
  • + +
  • + +
    + 发起的 +
    +
    .icon-apply +
    +
  • + +
  • + +
    + 工作台 +
    +
    .icon-work +
    +
  • + +
  • + +
    + 待办任务_o +
    +
    .icon-todo +
    +
  • + +
  • + +
    + 我发起的 +
    +
    .icon-applyed +
    +
  • + +
  • + +
    + 我的已办 +
    +
    .icon-done +
    +
  • + +
  • + +
    + 符号-按钮 +
    +
    .icon-button +
    +
  • + +
  • + +
    + 设计 +
    +
    .icon-design +
    +
  • + +
  • + +
    + 数据源管理 +
    +
    .icon-data-source +
    +
  • + +
  • + +
    + 审批 +
    +
    .icon-sp +
    +
  • + +
  • + +
    + 抄送 +
    +
    .icon-cs +
    +
  • + +
  • + +
    + 代码,分支,分流,分叉 +
    +
    .icon-branch +
    +
  • + +
  • + +
    + 文档 +
    +
    .icon-doc +
    +
  • + +
  • + +
    + 系统管理 +
    +
    .icon-sys +
    +
  • + +
  • + +
    + 创建图表 +
    +
    .icon-creat +
    +
  • + +
  • + +
    + 可视化 +
    +
    .icon-data +
    +
  • + +
  • + +
    + 菜单 +
    +
    .icon-menu +
    +
  • + +
  • + +
    + icon-user +
    +
    .icon-user +
    +
  • + +
  • + +
    + 表单管理 +
    +
    .icon-form +
    +
  • + +
  • + +
    + 列表 +
    +
    .icon-list +
    +
  • + +
  • + +
    + 操作日志 +
    +
    .icon-log +
    +
  • + +
  • + +
    + 字典管理 +
    +
    .icon-dict +
    +
  • + +
  • + +
    + 岗位 +
    +
    .icon-post +
    +
  • + +
  • + +
    + 角色管理 +
    +
    .icon-role +
    +
  • + +
  • + +
    + 管理登录日志 +
    +
    .icon-log2 +
    +
  • + +
  • + +
    + 系统工具 +
    +
    .icon-tool +
    +
  • + +
  • + +
    + 柱状图 +
    +
    .icon-bar +
    +
  • + +
  • + +
    + 407饼图 +
    +
    .icon-pie +
    +
  • + +
  • + +
    + 折线图 +
    +
    .icon-line +
    +
  • + +
  • + +
    + Directory tree +
    +
    .icon-tree2 +
    +
  • + +
  • + +
    + 流式布局 +
    +
    .icon-flex +
    +
  • + +
  • + +
    + divide +
    +
    .icon-div +
    +
  • + +
  • + +
    + 树状图_o +
    +
    .icon-tree +
    +
  • + +
  • + +
    + 时间 +
    +
    .icon-time +
    +
  • + +
  • + +
    + 富文本框 +
    +
    .icon-tinymce +
    +
  • + +
  • + +
    + 评分 +
    +
    .icon-rate +
    +
  • + +
  • + +
    + 滑块 +
    +
    .icon-slider +
    +
  • + +
  • + +
    + 分割线 +
    +
    .icon-divider +
    +
  • + +
  • + +
    + 颜色库 +
    +
    .icon-color +
    +
  • + +
  • + +
    + 导入 +
    +
    .icon-import +
    +
  • + +
  • + +
    + 图片 +
    +
    .icon-image +
    +
  • + +
  • + +
    + 卡片 +
    +
    .icon-card +
    +
  • + +
  • + +
    + help +
    +
    .icon-help +
    +
  • + +
  • + +
    + table +
    +
    .icon-table +
    +
  • + +
  • + +
    + component +
    +
    .icon-component +
    +
  • + +
  • + +
    + 11.符号-级联选择 +
    +
    .icon-link +
    +
  • + +
  • + +
    + cascader +
    +
    .icon-cascader +
    +
  • + +
  • + +
    + 计数器 +
    +
    .icon-number +
    +
  • + +
  • + +
    + 标题 +
    +
    .icon-title +
    +
  • + +
  • + +
    + bootstrap_tabs +
    +
    .icon-tabs +
    +
  • + +
  • + +
    + close +
    +
    .icon-close +
    +
  • + +
  • + +
    + 加号 +
    +
    .icon-plus +
    +
  • + +
  • + +
    + arrow on +
    +
    .icon-arrow +
    +
  • + +
  • + +
    + check +
    +
    .icon-check +
    +
  • + +
  • + +
    + vue +
    +
    .icon-vue +
    +
  • + +
  • + +
    + 开关 +
    +
    .icon-switch +
    +
  • + +
  • + +
    + 保存 +
    +
    .icon-save +
    +
  • + +
  • + +
    + move +
    +
    .icon-move +
    +
  • + +
  • + +
    + clone +
    +
    .icon-clone +
    +
  • + +
  • + +
    + 删 除 (1) +
    +
    .icon-del +
    +
  • + +
  • + +
    + eye +
    +
    .icon-eye +
    +
  • + +
  • + +
    + json +
    +
    .icon-json +
    +
  • + +
  • + +
    + GRID +
    +
    .icon-grid +
    +
  • + +
  • + +
    + 文字 +
    +
    .icon-text +
    +
  • + +
  • + +
    + date +
    +
    .icon-date +
    +
  • + +
  • + +
    + input +
    +
    .icon-input +
    +
  • + +
  • + +
    + check_box-24px +
    +
    .icon-checkbox +
    +
  • + +
  • + +
    + textarea +
    +
    .icon-textarea +
    +
  • + +
  • + +
    + radio +
    +
    .icon-radio +
    +
  • + +
  • + +
    + 下拉选择 +
    +
    .icon-select +
    +
  • + +
+
+

font-class 引用

+
+ +

font-class 是 Unicode 使用方式的一种变种,主要是解决 Unicode 书写不直观,语意不明确的问题。

+

与 Unicode 使用方式相比,具有如下特点:

+
    +
  • 相比于 Unicode 语意明确,书写更直观。可以很容易分辨这个 icon 是什么。
  • +
  • 因为使用 class 来定义图标,所以当要替换图标时,只需要修改 class 里面的 Unicode 引用。
  • +
+

使用步骤如下:

+

第一步:引入项目下面生成的 fontclass 代码:

+
<link rel="stylesheet" href="./iconfont.css">
+
+

第二步:挑选相应图标并获取类名,应用于页面:

+
<span class="iconfont icon-xxx"></span>
+
+
+

" + iconfont" 是你项目下的 font-family。可以通过编辑项目查看,默认是 "iconfont"。

+
+
+
+
+
    + +
  • + +
    箭头
    +
    #icon-mouse
    +
  • + +
  • + +
    手,手势
    +
    #icon-hand
    +
  • + +
  • + +
    24gl-unlock4
    +
    #icon-lock-open
    +
  • + +
  • + +
    解锁
    +
    #icon-lock
    +
  • + +
  • + +
    眼睛_隐藏_o
    +
    #icon-eye-close
    +
  • + +
  • + +
    设置边框
    +
    #icon-border
    +
  • + +
  • + +
    文字边框
    +
    #icon-text2
    +
  • + +
  • + +
    m-滚动文字
    +
    #icon-stext
    +
  • + +
  • + +
    发起的
    +
    #icon-apply
    +
  • + +
  • + +
    工作台
    +
    #icon-work
    +
  • + +
  • + +
    待办任务_o
    +
    #icon-todo
    +
  • + +
  • + +
    我发起的
    +
    #icon-applyed
    +
  • + +
  • + +
    我的已办
    +
    #icon-done
    +
  • + +
  • + +
    符号-按钮
    +
    #icon-button
    +
  • + +
  • + +
    设计
    +
    #icon-design
    +
  • + +
  • + +
    数据源管理
    +
    #icon-data-source
    +
  • + +
  • + +
    审批
    +
    #icon-sp
    +
  • + +
  • + +
    抄送
    +
    #icon-cs
    +
  • + +
  • + +
    代码,分支,分流,分叉
    +
    #icon-branch
    +
  • + +
  • + +
    文档
    +
    #icon-doc
    +
  • + +
  • + +
    系统管理
    +
    #icon-sys
    +
  • + +
  • + +
    创建图表
    +
    #icon-creat
    +
  • + +
  • + +
    可视化
    +
    #icon-data
    +
  • + +
  • + +
    菜单
    +
    #icon-menu
    +
  • + +
  • + +
    icon-user
    +
    #icon-user
    +
  • + +
  • + +
    表单管理
    +
    #icon-form
    +
  • + +
  • + +
    列表
    +
    #icon-list
    +
  • + +
  • + +
    操作日志
    +
    #icon-log
    +
  • + +
  • + +
    字典管理
    +
    #icon-dict
    +
  • + +
  • + +
    岗位
    +
    #icon-post
    +
  • + +
  • + +
    角色管理
    +
    #icon-role
    +
  • + +
  • + +
    管理登录日志
    +
    #icon-log2
    +
  • + +
  • + +
    系统工具
    +
    #icon-tool
    +
  • + +
  • + +
    柱状图
    +
    #icon-bar
    +
  • + +
  • + +
    407饼图
    +
    #icon-pie
    +
  • + +
  • + +
    折线图
    +
    #icon-line
    +
  • + +
  • + +
    Directory tree
    +
    #icon-tree2
    +
  • + +
  • + +
    流式布局
    +
    #icon-flex
    +
  • + +
  • + +
    divide
    +
    #icon-div
    +
  • + +
  • + +
    树状图_o
    +
    #icon-tree
    +
  • + +
  • + +
    时间
    +
    #icon-time
    +
  • + +
  • + +
    富文本框
    +
    #icon-tinymce
    +
  • + +
  • + +
    评分
    +
    #icon-rate
    +
  • + +
  • + +
    滑块
    +
    #icon-slider
    +
  • + +
  • + +
    分割线
    +
    #icon-divider
    +
  • + +
  • + +
    颜色库
    +
    #icon-color
    +
  • + +
  • + +
    导入
    +
    #icon-import
    +
  • + +
  • + +
    图片
    +
    #icon-image
    +
  • + +
  • + +
    卡片
    +
    #icon-card
    +
  • + +
  • + +
    help
    +
    #icon-help
    +
  • + +
  • + +
    table
    +
    #icon-table
    +
  • + +
  • + +
    component
    +
    #icon-component
    +
  • + +
  • + +
    11.符号-级联选择
    +
    #icon-link
    +
  • + +
  • + +
    cascader
    +
    #icon-cascader
    +
  • + +
  • + +
    计数器
    +
    #icon-number
    +
  • + +
  • + +
    标题
    +
    #icon-title
    +
  • + +
  • + +
    bootstrap_tabs
    +
    #icon-tabs
    +
  • + +
  • + +
    close
    +
    #icon-close
    +
  • + +
  • + +
    加号
    +
    #icon-plus
    +
  • + +
  • + +
    arrow on
    +
    #icon-arrow
    +
  • + +
  • + +
    check
    +
    #icon-check
    +
  • + +
  • + +
    vue
    +
    #icon-vue
    +
  • + +
  • + +
    开关
    +
    #icon-switch
    +
  • + +
  • + +
    保存
    +
    #icon-save
    +
  • + +
  • + +
    move
    +
    #icon-move
    +
  • + +
  • + +
    clone
    +
    #icon-clone
    +
  • + +
  • + +
    删 除 (1)
    +
    #icon-del
    +
  • + +
  • + +
    eye
    +
    #icon-eye
    +
  • + +
  • + +
    json
    +
    #icon-json
    +
  • + +
  • + +
    GRID
    +
    #icon-grid
    +
  • + +
  • + +
    文字
    +
    #icon-text
    +
  • + +
  • + +
    date
    +
    #icon-date
    +
  • + +
  • + +
    input
    +
    #icon-input
    +
  • + +
  • + +
    check_box-24px
    +
    #icon-checkbox
    +
  • + +
  • + +
    textarea
    +
    #icon-textarea
    +
  • + +
  • + +
    radio
    +
    #icon-radio
    +
  • + +
  • + +
    下拉选择
    +
    #icon-select
    +
  • + +
+
+

Symbol 引用

+
+ +

这是一种全新的使用方式,应该说这才是未来的主流,也是平台目前推荐的用法。相关介绍可以参考这篇文章 + 这种用法其实是做了一个 SVG 的集合,与另外两种相比具有如下特点:

+
    +
  • 支持多色图标了,不再受单色限制。
  • +
  • 通过一些技巧,支持像字体那样,通过 font-size, color 来调整样式。
  • +
  • 兼容性较差,支持 IE9+,及现代浏览器。
  • +
  • 浏览器渲染 SVG 的性能一般,还不如 png。
  • +
+

使用步骤如下:

+

第一步:引入项目下面生成的 symbol 代码:

+
<script src="./iconfont.js"></script>
+
+

第二步:加入通用 CSS 代码(引入一次就行):

+
<style>
+.icon {
+  width: 1em;
+  height: 1em;
+  vertical-align: -0.15em;
+  fill: currentColor;
+  overflow: hidden;
+}
+</style>
+
+

第三步:挑选相应图标并获取类名,应用于页面:

+
<svg class="icon" aria-hidden="true">
+  <use xlink:href="#icon-xxx"></use>
+</svg>
+
+
+
+ +
+
+ + + diff --git a/src/assets/iconfont/iconfont.css b/src/assets/iconfont/iconfont.css new file mode 100644 index 000000000..aca20b140 --- /dev/null +++ b/src/assets/iconfont/iconfont.css @@ -0,0 +1,323 @@ +@font-face { + font-family: "iconfont"; /* Project id 2578019 */ + src: url('iconfont.woff2?t=1683511822799') format('woff2'), + url('iconfont.woff?t=1683511822799') format('woff'), + url('iconfont.ttf?t=1683511822799') format('truetype'); +} + +.iconfont,[class*="icon-"] { + font-family: "iconfont" !important; + font-size: 16px; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.icon-mouse:before { + content: "\e60b"; +} + +.icon-hand:before { + content: "\e6cf"; +} + +.icon-lock-open:before { + content: "\e9d6"; +} + +.icon-lock:before { + content: "\e669"; +} + +.icon-eye-close:before { + content: "\ebcd"; +} + +.icon-border:before { + content: "\e673"; +} + +.icon-text2:before { + content: "\e607"; +} + +.icon-stext:before { + content: "\e801"; +} + +.icon-apply:before { + content: "\e606"; +} + +.icon-work:before { + content: "\e68c"; +} + +.icon-todo:before { + content: "\ebb1"; +} + +.icon-applyed:before { + content: "\e633"; +} + +.icon-done:before { + content: "\e60d"; +} + +.icon-button:before { + content: "\e690"; +} + +.icon-design:before { + content: "\e62c"; +} + +.icon-data-source:before { + content: "\e617"; +} + +.icon-sp:before { + content: "\e626"; +} + +.icon-cs:before { + content: "\e605"; +} + +.icon-branch:before { + content: "\e993"; +} + +.icon-doc:before { + content: "\e7d0"; +} + +.icon-sys:before { + content: "\e634"; +} + +.icon-creat:before { + content: "\e661"; +} + +.icon-data:before { + content: "\e602"; +} + +.icon-menu:before { + content: "\e62f"; +} + +.icon-user:before { + content: "\e66b"; +} + +.icon-form:before { + content: "\e625"; +} + +.icon-list:before { + content: "\ec6b"; +} + +.icon-log:before { + content: "\e604"; +} + +.icon-dict:before { + content: "\e668"; +} + +.icon-post:before { + content: "\e658"; +} + +.icon-role:before { + content: "\e618"; +} + +.icon-log2:before { + content: "\ea45"; +} + +.icon-tool:before { + content: "\e628"; +} + +.icon-bar:before { + content: "\e6ce"; +} + +.icon-pie:before { + content: "\e902"; +} + +.icon-line:before { + content: "\ec66"; +} + +.icon-tree2:before { + content: "\e892"; +} + +.icon-flex:before { + content: "\e608"; +} + +.icon-div:before { + content: "\e60f"; +} + +.icon-tree:before { + content: "\ebb3"; +} + +.icon-time:before { + content: "\e600"; +} + +.icon-tinymce:before { + content: "\e66f"; +} + +.icon-rate:before { + content: "\e69d"; +} + +.icon-slider:before { + content: "\e627"; +} + +.icon-divider:before { + content: "\e638"; +} + +.icon-color:before { + content: "\ee22"; +} + +.icon-import:before { + content: "\e616"; +} + +.icon-image:before { + content: "\e63e"; +} + +.icon-card:before { + content: "\e622"; +} + +.icon-help:before { + content: "\e61c"; +} + +.icon-table:before { + content: "\e6a9"; +} + +.icon-component:before { + content: "\e620"; +} + +.icon-link:before { + content: "\e623"; +} + +.icon-cascader:before { + content: "\e624"; +} + +.icon-number:before { + content: "\e647"; +} + +.icon-title:before { + content: "\e61d"; +} + +.icon-tabs:before { + content: "\e6d4"; +} + +.icon-close:before { + content: "\e615"; +} + +.icon-plus:before { + content: "\e603"; +} + +.icon-arrow:before { + content: "\e61b"; +} + +.icon-check:before { + content: "\e6c1"; +} + +.icon-vue:before { + content: "\e69a"; +} + +.icon-switch:before { + content: "\e646"; +} + +.icon-save:before { + content: "\e61f"; +} + +.icon-move:before { + content: "\e696"; +} + +.icon-clone:before { + content: "\e692"; +} + +.icon-del:before { + content: "\e67d"; +} + +.icon-eye:before { + content: "\e601"; +} + +.icon-json:before { + content: "\e60e"; +} + +.icon-grid:before { + content: "\e652"; +} + +.icon-text:before { + content: "\e621"; +} + +.icon-date:before { + content: "\e64c"; +} + +.icon-input:before { + content: "\e629"; +} + +.icon-checkbox:before { + content: "\e61e"; +} + +.icon-textarea:before { + content: "\e60a"; +} + +.icon-radio:before { + content: "\e6b1"; +} + +.icon-select:before { + content: "\e64d"; +} + diff --git a/src/assets/iconfont/iconfont.js b/src/assets/iconfont/iconfont.js new file mode 100644 index 000000000..97f39d9c5 --- /dev/null +++ b/src/assets/iconfont/iconfont.js @@ -0,0 +1 @@ +window._iconfont_svg_string_2578019='',function(l){var c=(c=document.getElementsByTagName("script"))[c.length-1],h=c.getAttribute("data-injectcss"),c=c.getAttribute("data-disable-injectsvg");if(!c){var a,t,v,o,i,s=function(c,h){h.parentNode.insertBefore(c,h)};if(h&&!l.__iconfont__svg__cssinject__){l.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(c){console&&console.log(c)}}a=function(){var c,h=document.createElement("div");h.innerHTML=l._iconfont_svg_string_2578019,(h=h.getElementsByTagName("svg")[0])&&(h.setAttribute("aria-hidden","true"),h.style.position="absolute",h.style.width=0,h.style.height=0,h.style.overflow="hidden",h=h,(c=document.body).firstChild?s(h,c.firstChild):c.appendChild(h))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(a,0):(t=function(){document.removeEventListener("DOMContentLoaded",t,!1),a()},document.addEventListener("DOMContentLoaded",t,!1)):document.attachEvent&&(v=a,o=l.document,i=!1,m(),o.onreadystatechange=function(){"complete"==o.readyState&&(o.onreadystatechange=null,z())})}function z(){i||(i=!0,v())}function m(){try{o.documentElement.doScroll("left")}catch(c){return void setTimeout(m,50)}z()}}(window); \ No newline at end of file diff --git a/src/assets/iconfont/iconfont.json b/src/assets/iconfont/iconfont.json new file mode 100644 index 000000000..006d59d6c --- /dev/null +++ b/src/assets/iconfont/iconfont.json @@ -0,0 +1,548 @@ +{ + "id": "2578019", + "name": "formDemo", + "font_family": "iconfont", + "css_prefix_text": "icon-", + "description": "", + "glyphs": [ + { + "icon_id": "13644674", + "name": "箭头", + "font_class": "mouse", + "unicode": "e60b", + "unicode_decimal": 58891 + }, + { + "icon_id": "18372381", + "name": "手,手势", + "font_class": "hand", + "unicode": "e6cf", + "unicode_decimal": 59087 + }, + { + "icon_id": "7577422", + "name": "24gl-unlock4", + "font_class": "lock-open", + "unicode": "e9d6", + "unicode_decimal": 59862 + }, + { + "icon_id": "658044", + "name": "解锁", + "font_class": "lock", + "unicode": "e669", + "unicode_decimal": 58985 + }, + { + "icon_id": "5388071", + "name": "眼睛_隐藏_o", + "font_class": "eye-close", + "unicode": "ebcd", + "unicode_decimal": 60365 + }, + { + "icon_id": "3294800", + "name": "设置边框", + "font_class": "border", + "unicode": "e673", + "unicode_decimal": 58995 + }, + { + "icon_id": "11179879", + "name": "文字边框", + "font_class": "text2", + "unicode": "e607", + "unicode_decimal": 58887 + }, + { + "icon_id": "21529713", + "name": "m-滚动文字", + "font_class": "stext", + "unicode": "e801", + "unicode_decimal": 59393 + }, + { + "icon_id": "33172809", + "name": "发起的", + "font_class": "apply", + "unicode": "e606", + "unicode_decimal": 58886 + }, + { + "icon_id": "1206679", + "name": "工作台", + "font_class": "work", + "unicode": "e68c", + "unicode_decimal": 59020 + }, + { + "icon_id": "5388003", + "name": "待办任务_o", + "font_class": "todo", + "unicode": "ebb1", + "unicode_decimal": 60337 + }, + { + "icon_id": "7158013", + "name": "我发起的", + "font_class": "applyed", + "unicode": "e633", + "unicode_decimal": 58931 + }, + { + "icon_id": "20438918", + "name": "我的已办", + "font_class": "done", + "unicode": "e60d", + "unicode_decimal": 58893 + }, + { + "icon_id": "1766470", + "name": "符号-按钮", + "font_class": "button", + "unicode": "e690", + "unicode_decimal": 59024 + }, + { + "icon_id": "1150901", + "name": "设计", + "font_class": "design", + "unicode": "e62c", + "unicode_decimal": 58924 + }, + { + "icon_id": "12771491", + "name": "数据源管理", + "font_class": "data-source", + "unicode": "e617", + "unicode_decimal": 58903 + }, + { + "icon_id": "6321263", + "name": "审批", + "font_class": "sp", + "unicode": "e626", + "unicode_decimal": 58918 + }, + { + "icon_id": "12911863", + "name": "抄送", + "font_class": "cs", + "unicode": "e605", + "unicode_decimal": 58885 + }, + { + "icon_id": "18170243", + "name": "代码,分支,分流,分叉", + "font_class": "branch", + "unicode": "e993", + "unicode_decimal": 59795 + }, + { + "icon_id": "5371107", + "name": "文档", + "font_class": "doc", + "unicode": "e7d0", + "unicode_decimal": 59344 + }, + { + "icon_id": "12959365", + "name": "系统管理", + "font_class": "sys", + "unicode": "e634", + "unicode_decimal": 58932 + }, + { + "icon_id": "24007617", + "name": "创建图表", + "font_class": "creat", + "unicode": "e661", + "unicode_decimal": 58977 + }, + { + "icon_id": "24069228", + "name": "可视化", + "font_class": "data", + "unicode": "e602", + "unicode_decimal": 58882 + }, + { + "icon_id": "339044", + "name": "菜单", + "font_class": "menu", + "unicode": "e62f", + "unicode_decimal": 58927 + }, + { + "icon_id": "397442", + "name": "icon-user", + "font_class": "user", + "unicode": "e66b", + "unicode_decimal": 58987 + }, + { + "icon_id": "4329375", + "name": "表单管理", + "font_class": "form", + "unicode": "e625", + "unicode_decimal": 58917 + }, + { + "icon_id": "5961366", + "name": "列表", + "font_class": "list", + "unicode": "ec6b", + "unicode_decimal": 60523 + }, + { + "icon_id": "7474663", + "name": "操作日志", + "font_class": "log", + "unicode": "e604", + "unicode_decimal": 58884 + }, + { + "icon_id": "8605754", + "name": "字典管理", + "font_class": "dict", + "unicode": "e668", + "unicode_decimal": 58984 + }, + { + "icon_id": "8949009", + "name": "岗位", + "font_class": "post", + "unicode": "e658", + "unicode_decimal": 58968 + }, + { + "icon_id": "10213489", + "name": "角色管理", + "font_class": "role", + "unicode": "e618", + "unicode_decimal": 58904 + }, + { + "icon_id": "26876046", + "name": "管理登录日志", + "font_class": "log2", + "unicode": "ea45", + "unicode_decimal": 59973 + }, + { + "icon_id": "34047671", + "name": "系统工具", + "font_class": "tool", + "unicode": "e628", + "unicode_decimal": 58920 + }, + { + "icon_id": "1057386", + "name": "柱状图", + "font_class": "bar", + "unicode": "e6ce", + "unicode_decimal": 59086 + }, + { + "icon_id": "1727592", + "name": "407饼图", + "font_class": "pie", + "unicode": "e902", + "unicode_decimal": 59650 + }, + { + "icon_id": "5961328", + "name": "折线图", + "font_class": "line", + "unicode": "ec66", + "unicode_decimal": 60518 + }, + { + "icon_id": "11307823", + "name": "Directory tree", + "font_class": "tree2", + "unicode": "e892", + "unicode_decimal": 59538 + }, + { + "icon_id": "20360961", + "name": "流式布局", + "font_class": "flex", + "unicode": "e608", + "unicode_decimal": 58888 + }, + { + "icon_id": "12225038", + "name": "divide", + "font_class": "div", + "unicode": "e60f", + "unicode_decimal": 58895 + }, + { + "icon_id": "5388006", + "name": "树状图_o", + "font_class": "tree", + "unicode": "ebb3", + "unicode_decimal": 60339 + }, + { + "icon_id": "77110", + "name": "时间", + "font_class": "time", + "unicode": "e600", + "unicode_decimal": 58880 + }, + { + "icon_id": "2471358", + "name": "富文本框", + "font_class": "tinymce", + "unicode": "e66f", + "unicode_decimal": 58991 + }, + { + "icon_id": "8687733", + "name": "评分", + "font_class": "rate", + "unicode": "e69d", + "unicode_decimal": 59037 + }, + { + "icon_id": "11121364", + "name": "滑块", + "font_class": "slider", + "unicode": "e627", + "unicode_decimal": 58919 + }, + { + "icon_id": "11121454", + "name": "分割线", + "font_class": "divider", + "unicode": "e638", + "unicode_decimal": 58936 + }, + { + "icon_id": "22385724", + "name": "颜色库", + "font_class": "color", + "unicode": "ee22", + "unicode_decimal": 60962 + }, + { + "icon_id": "6244963", + "name": "导入", + "font_class": "import", + "unicode": "e616", + "unicode_decimal": 58902 + }, + { + "icon_id": "145454", + "name": "图片", + "font_class": "image", + "unicode": "e63e", + "unicode_decimal": 58942 + }, + { + "icon_id": "646357", + "name": "卡片", + "font_class": "card", + "unicode": "e622", + "unicode_decimal": 58914 + }, + { + "icon_id": "737945", + "name": "help", + "font_class": "help", + "unicode": "e61c", + "unicode_decimal": 58908 + }, + { + "icon_id": "1467412", + "name": "table", + "font_class": "table", + "unicode": "e6a9", + "unicode_decimal": 59049 + }, + { + "icon_id": "13253956", + "name": "component", + "font_class": "component", + "unicode": "e620", + "unicode_decimal": 58912 + }, + { + "icon_id": "15196938", + "name": "11.符号-级联选择", + "font_class": "link", + "unicode": "e623", + "unicode_decimal": 58915 + }, + { + "icon_id": "16880964", + "name": "cascader", + "font_class": "cascader", + "unicode": "e624", + "unicode_decimal": 58916 + }, + { + "icon_id": "17374561", + "name": "计数器", + "font_class": "number", + "unicode": "e647", + "unicode_decimal": 58951 + }, + { + "icon_id": "19657932", + "name": "标题", + "font_class": "title", + "unicode": "e61d", + "unicode_decimal": 58909 + }, + { + "icon_id": "8017649", + "name": "bootstrap_tabs", + "font_class": "tabs", + "unicode": "e6d4", + "unicode_decimal": 59092 + }, + { + "icon_id": "7826085", + "name": "close", + "font_class": "close", + "unicode": "e615", + "unicode_decimal": 58901 + }, + { + "icon_id": "6756281", + "name": "加号", + "font_class": "plus", + "unicode": "e603", + "unicode_decimal": 58883 + }, + { + "icon_id": "902007", + "name": "arrow on", + "font_class": "arrow", + "unicode": "e61b", + "unicode_decimal": 58907 + }, + { + "icon_id": "1176866", + "name": "check", + "font_class": "check", + "unicode": "e6c1", + "unicode_decimal": 59073 + }, + { + "icon_id": "13744032", + "name": "vue", + "font_class": "vue", + "unicode": "e69a", + "unicode_decimal": 59034 + }, + { + "icon_id": "20905073", + "name": "开关", + "font_class": "switch", + "unicode": "e646", + "unicode_decimal": 58950 + }, + { + "icon_id": "11493812", + "name": "保存", + "font_class": "save", + "unicode": "e61f", + "unicode_decimal": 58911 + }, + { + "icon_id": "384286", + "name": "move", + "font_class": "move", + "unicode": "e696", + "unicode_decimal": 59030 + }, + { + "icon_id": "836441", + "name": "clone", + "font_class": "clone", + "unicode": "e692", + "unicode_decimal": 59026 + }, + { + "icon_id": "18367976", + "name": "删 除 (1)", + "font_class": "del", + "unicode": "e67d", + "unicode_decimal": 59005 + }, + { + "icon_id": "925051", + "name": "eye", + "font_class": "eye", + "unicode": "e601", + "unicode_decimal": 58881 + }, + { + "icon_id": "15214524", + "name": "json", + "font_class": "json", + "unicode": "e60e", + "unicode_decimal": 58894 + }, + { + "icon_id": "350628", + "name": "GRID", + "font_class": "grid", + "unicode": "e652", + "unicode_decimal": 58962 + }, + { + "icon_id": "4521248", + "name": "文字", + "font_class": "text", + "unicode": "e621", + "unicode_decimal": 58913 + }, + { + "icon_id": "15167569", + "name": "date", + "font_class": "date", + "unicode": "e64c", + "unicode_decimal": 58956 + }, + { + "icon_id": "16880988", + "name": "input", + "font_class": "input", + "unicode": "e629", + "unicode_decimal": 58921 + }, + { + "icon_id": "18536117", + "name": "check_box-24px", + "font_class": "checkbox", + "unicode": "e61e", + "unicode_decimal": 58910 + }, + { + "icon_id": "18727247", + "name": "textarea", + "font_class": "textarea", + "unicode": "e60a", + "unicode_decimal": 58890 + }, + { + "icon_id": "19457233", + "name": "radio", + "font_class": "radio", + "unicode": "e6b1", + "unicode_decimal": 59057 + }, + { + "icon_id": "20962223", + "name": "下拉选择", + "font_class": "select", + "unicode": "e64d", + "unicode_decimal": 58957 + } + ] +} diff --git a/src/assets/iconfont/iconfont.ttf b/src/assets/iconfont/iconfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..fd0000aa08f66c885be82e77d8a18397e882a23e GIT binary patch literal 21424 zcmd^nd7K<&op(LY(^b`7ec#j5)Au!*d!}c)Cv#=UeJA7s*#t67CI=*$VKNEfaE*#9 z3Q7nXHJ}?^7sP8_4@49QsKAOrS6KlC4KB7^>nfrzy3>{S`>X0nCLFH&c|ZHtJ6+FH z&s|SF&+mSIH4>8~$u1p|gw(NQ{l@vp8**1m66;0jhBfQky9R=5UqSvxAE(=&FDkB&U_p|8A%{sGi~V$aCI2{z7T)YT!M+&i*o%<~TeUy`KN-;pG~ zV`6;Y)W_eOzE_gYZ$bWD66P)rojxROws0ENf{y4n`){>Tg3{mq>4o$q?two@cC^CZ zslU}eICDRJ`t%`-B;JXb7N-Y+N9hUI^{C)iUD7(qLvzMeUhMruK z1xnxKZ|(L)+oTf}={IR(JtXn8bO_C8j%WWkJ@Bo=>C z*;tqV$y_ir_5>IrNq{@*Di)e+%ZE@(tK5P+pabO=?nC|}X&8O#E7pp=;;z(H=2TiL z?Un9IZ)K>mq_V2Au5w{zq_V4Wd1bt^uk!ZFjg`ZdBbB3-W0j9r?yUTC<$=l%Dv$sA zhtIR;kG#NNxaEbPytwG4e}3sJFP(gO`^%UACQZ;@kt$lnSqWC6#@Iz;?8TLpwXt{p zg|Q#|@5aU({BQg*tjlH6ZfQa~ARRG&ACl;IRQhP`cT9Tg-)+)c|0HRSv=F%3FEvO$ z$tI~%URr^jaY~D%g48FqOCBj94M<&5ue2O{(=9ELI;9?|1dR1!_fpa_$t~4M4k;+L z0;}gqWofCjN?I(%rH~ZEo=2o6;OPSFvP+sTod>*cmWt9!X;4Z7G3QDFU~*2%NPa*< z5)`!&`=6DfQX9~a@caMwKL;&<_ZW2ngLKGRYGO}JV_OrA8`i{?%-Dx0Ao@mY6d`?RH3;d0Pdtp%nX1)sS-B> zU{R`29|S<9R7siv@F`VNW&os0m9!ZEvr;8v20*V=$(jLhELC!507Od_dS?W{wp5{a zKp@&xX*2`iU8>N!BLMQH3e_P12c!zU8v?LFsuaxtypSq1Cj?-KRH1i30Io=tAu|AL zq{?D50Dq(k%^LxjBvn?L0XQX9Xzvk#T~cM88GvU}u)c0XQmE_L+gWYUS-_0NzTK8_hs;x^mbIz-6g�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 l%C2#QI)L7n~_kEuB(k}>#`Lz3g%!kJ>d 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 literal 0 HcmV?d00001 diff --git a/src/assets/iconfont/iconfont.woff b/src/assets/iconfont/iconfont.woff new file mode 100644 index 0000000000000000000000000000000000000000..c9c54907f24ff41ecd96a7155d7b73eb49750c7d GIT binary patch literal 13064 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 BEN%b* literal 0 HcmV?d00001 diff --git a/src/assets/iconfont/iconfont.woff2 b/src/assets/iconfont/iconfont.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..d60d375947bcbeb3be17596eb1b42ce05f43f9e6 GIT binary patch literal 11024 zcmV+rEAP~IPew8T0RR9104opx3jhEB08_9404l!#0RR9100000000000000000000 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 Ku_IgBHUI!m3>U)y literal 0 HcmV?d00001 diff --git a/src/assets/icons/select1.svg b/src/assets/icons/select1.svg new file mode 100644 index 000000000..e6812fe7e --- /dev/null +++ b/src/assets/icons/select1.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/select3.svg b/src/assets/icons/select3.svg new file mode 100644 index 000000000..82ff6d3a2 --- /dev/null +++ b/src/assets/icons/select3.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/image/icon_file.png b/src/assets/image/icon_file.png new file mode 100644 index 0000000000000000000000000000000000000000..857d35b4de37fd6ff712a3a580390057db4b6186 GIT binary patch literal 209 zcmeAS@N?(olHy`uVBq!ia0vp^{2(?58;~rMGjRk`jKx9jP7LeL$-D$|x;EB_$>J{v;=N@`|O_^y#oB8?USW^xLq_ZHCT_v>GOp z6eecj$KE>(9`BECoRqV?VOIU$cJ4`s5|Y-WD7o5p-KzgT`NZ`z2Tr&)rm?jJp4BLH zoWaava4f!MYGUxm|LWWU#Zt&0^}RUG+eY-qHWk>Puu(#==9Sq*{CV(@hJb6Mw< G&;$T3$4$Th literal 0 HcmV?d00001 diff --git a/src/assets/image/icon_people.png b/src/assets/image/icon_people.png new file mode 100644 index 0000000000000000000000000000000000000000..ae4e7af25e01b872f3ebd0cda003d43719ed8698 GIT binary patch literal 1185 zcmV;S1YY}zP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00006 zVoOIv00000008+zyMF)x010qNS#tmY3labT3lag+-G2N400ad|L_t(o!@ZbKY#T)s z#(z6&Z`#-)QT{j)36PW?aDhavBAg1^q#z_hDh@;y5LrU1gb=dG33}iV1l-ya6idK? z1F`}VDwon234ut`LpQ3ZlF~YdhBQT1o5YElI*zCtdpUTWuAQ|#OaFY*Xm{Sc{pQ;@ zGjDcQ!2trnun%|@=mnku+JQ&R=3Bs3;4fet_(hL|Zpd;gk^&9@$ADJ=mn3%vhyus; zNNDn&gam@&UBDN>fRo7C;0!RVM?!x)77_@C-vYkkZs_k7w}AKbNNCiqQ7s{21o#rD zx=$i7xdz)h2aNd4*my-DfnfL};IsQEpcseRItMo6Gh+qwreJ8y;TUy9`~NYdM?&9k z6A}o9JAi4R<{=450$q9}G!Gyw4JRL>2+Y1t7DOZv48H(WTwZxVo|<#lQ1 z#Oj74;euSMl|t-FLYml#FOU?#ysY*O;A4kW8h?W(~4ggJder>|BDgQ`ZoR^t8)k zTsp=38a#A7R)^Q4ZQ1hcLMgfjSWl&y|L11e=$Y6ATJyW_Y2dJ(SCyvn>{HEKo167z z4I@`K%BIN5Q7rC9zlyW((M?$aVqj20#NNvpydiJ$arOBQkw&T&}8tUtIqF;!! zmi*Vw<%Bho1cKq8u^by}YpUq&X-9LbwnJbyB!-2sI7oNyWEekpm9^w;tNDx`2_1&Q zFSPeDbBd;^^zCoQQ|-p>7HDpP+a(I`Ep^Q;aJkGjccDFBJk@Uc_P3*HTi@$RU^rjd zvc_k|Znkv}EC7SgcRx-`lNVKpyG1R!H|xS;6V|#-*-_=f>(N+vFoL8lW$3mPnU<^3%X79dn% z;4`C>|55V$wf6(|LR~3;&5)b%A^7t~Z$kNlq}E8AN1RO8GXkqpE)N-}Qo#aTtbxhaS57X@a%Z7`+Tg@(f_!baaxJfU{aF va?ZOZ)dZ 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%0AROsMB6fqc1T zJsy<|C9#y(48P}eG9G!5!m0dtJTvACADH?EAe@0nCROB_?g?!x0~a3$VM$5}H}sJv z%_LAQQ7Xq+Ha3&n$Ks7|eH4AhFnvz$oP=@CY#&T_7d z&S|Ob-d*5NdvYpK?jB+%A=5ecsS#64ln2%k7nvZu<7L%_q5@mo5Sc&#ikuHMea1Bx z7&w05=C2VJSAW~=+dxt0*%5JoY&1evV5sE1d=Cf0-sW(VPpA#tmu^CLGM>+b?tLey znI4prr^grN^Mu*>vg(@}E>9+C1fzvn>@Jn1;~@*?-mWg6mmK=6y~(|2?`z1?8I99M z{F}V5cSgToT{5~JjUF10MsQSSe}0;;wF|iu6zM6m9-#D*5%7u)z-qb>Nj&<|`~m1D zUXeBX%*4V-v?tk}MQ`N$cWAe!kt;kmWA26xA5d%u@pi(Y$1YsLPqs}*&>MflD&m8~ zRm9Zn8&v62o+(}nO>V9NV8(90)z+svpWu$MogINq+G%|61Ltpdt}q68K)If#CfsNz zofVj4&7prK_{S}v7)~Mgt&;J_uW`z+HRbtPa!GDdw#a#b&L#hhn{dbCKU>nqgt{(fT1c5&eY=gTffUa2Qxi}Kj# zL3~gN1~)y_yXztovJ>p9soS;AkeDH*JNa*5*=k^0L}H&Sc?Qf(D7y`^^(llsry~M1 zSvdl&N}c?q;;U@hbl<0vykC`&8buKE0Pv)P_!+cQMr;rrN)U>?4r6+V%B*ci2YQ0) zPegUBY~Q)6cTJR1Qf8sg>6Ws5VlH_2b3Jf2*GvY;mZNKYp#`T|k*4^=kkh+x$2$UJ z6I5>=ar2=ezIE;RYnk0aW&LnZQO6LFzgDRGnI7tkp-$$>&$)!s4N~b+s_wO?*>?b? zI!bM6PwP$;px~p9sc^%>aNbN3)~Cd$qo4dKZY;EG>{a*MYYr--cXhm!ki9`y`tbWl zPak=3s4#~ADZt$iAq;x*NSN%b*##&6X=csjZy7gwAlrXN!8&o)*dGaS2 z@~fulC;g=t*s7F)Z{68vH7^$Bb=+KJG+X?-_|}KoYoZ@J6zvNyoWxA@qAPO#D1{cT zY11%PJtN3WAXg+%$loSr0Uap*PI$0|0hu|rb0W{PZby9kC$K3-z0jdvbYi!`qILxM z6-%m*Y@X3+FxM>FSt(k>?p=|!zBBF?hbw#|&9 zm`6KoZ3S1IxauISs(o;n=JM_rH(69!sA~WIjtYFS5BCJ-N4eH^ATe=t>ivSXhkW{v zGCJEmgpKdcY51%39Go<-AZBtx#`u+GVCrO|o#)1v)1w7k!ORDS8L@*;7V@e;i4}u2 zEBQat=sKNe{eyzuU6(Fxivkj2;U>hggSFm*+(AU_0nj3 vAl*|WwT!20JEGWp44@0H$JQLS02lzQGHCvfXA4|@|C=<>H9?hWJBR-d*c-;c literal 0 HcmV?d00001 diff --git a/src/assets/img/flow.png b/src/assets/img/flow.png new file mode 100644 index 0000000000000000000000000000000000000000..1650d1e3e076e6117b5d879a84b5467eb98badf4 GIT binary patch literal 5552 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 F{s+1*Dw_ZR literal 0 HcmV?d00001 diff --git a/src/assets/img/form-list.png b/src/assets/img/form-list.png new file mode 100644 index 0000000000000000000000000000000000000000..144f3e092043227f0ccc075dc37294fa93c421a8 GIT binary patch literal 6355 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

H{r{={EToF&Ydnc)Hh003Y%H8He0TP=UTbhKyR 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 literal 0 HcmV?d00001 diff --git a/src/assets/img/ruler.png b/src/assets/img/ruler.png new file mode 100644 index 0000000000000000000000000000000000000000..6b516cbbaafdd5b1b24933744e518f4a761021df GIT binary patch literal 1160 zcmaJ>TWB0r7#?GhkhTy+rLBmE34#UZa(3=x);PP9H4APMw%aB|s69J#l1!7CGtQjN zZjy>^X}vsEkVuQSH>qgzB1O=Lwv;@GKKK%`0kIE#DWvhK&=$O$$!60$ln%_C3;*~1 z-+!BrMu*?n+jF3YWK)8QAVXW$ZOs5%56`?M{-j-XOIyC! zDbG(+8rzc8Y&ONFB9dfEf|kWNa#AiQFbg4_k0@#hQQFsGaB=D-K}-V@fs7H=NrUEj zrnDVG7*{IW#8JAHD3&s*g<=VcvJ{3{T$|P@t>T9=9%-G{=3^{XaY`DA$LcZJ*8#KK zJ>F4f$kf;)Nx+JNW?kYnLLAYuo9A`I)y-1Taa;|$nxVmBQP*^+=#FEmW@cVZZu z=m)-?GYnT%<$~)vB?t#yGpA`LbYaP~3`HHZI@ofQQWSYO^Os?Rhgj#aSi6{DL`hO3 zWVTcJ(P=_SI!$7bV@U)rj|GuWn(4u;F6}T~oCI^&FC`=dn~Al9M+xw-I*Fk#Ky0!; z!Kxu3gj7LMW!cm*ta}yHB&^+-?1lvqceL2PrF&4W8v-^U5=^LK0cpA^c%FsS z95#_6o4mv%N?EV$=$+0LYshT7JqhfvJxe%Z1C+2y`E2Rj9GkLl%C1vut*xK`v*#q( zb5=QVllPTp3%_)&etNlZf8zMk_iugo--GKv-2CUI-zEk&PHo)1v9j;Q4}L7I9_?ED z^}^ZJdyC)hKe7APh1#CRNzmQZduDOy-T3%dW8(G8^;g%HgL~(0j_HS2e*gNYeX)1q ixz~GlJ#oq0wU1l-a`^tn^N0Jge?xh2*j+9hJN-XWXM!*Q literal 0 HcmV?d00001 diff --git a/src/assets/scss/element-var.scss b/src/assets/scss/element-var.scss new file mode 100644 index 000000000..83ec5b9b5 --- /dev/null +++ b/src/assets/scss/element-var.scss @@ -0,0 +1,9 @@ +@charset "UTF-8"; +:root { + /*--el-border-base: 1px solid red*/ + --el-menu-item-height:44px; + --el-menu-base-level-padding:10px; + .el-header{ + --el-header-height:40px + } +} diff --git a/src/assets/scss/flow.scss b/src/assets/scss/flow.scss new file mode 100644 index 000000000..8fe30bb6b --- /dev/null +++ b/src/assets/scss/flow.scss @@ -0,0 +1,125 @@ +.flow-container { + $background: #fff; + $borderColor: #eee; + overflow-x: auto; + .flow-main { min-width: min-content;display: flex;flex-direction: column;align-items: center;} + .flow-group {position: relative;background: $background;min-width: min-content} + .flow-item {border: 1px solid $borderColor;box-shadow: 0 0 6px rgba(102, 102, 102, 0.1);height: 80px;border-radius: 5px;overflow: hidden;display: flex;flex-direction: column;transition: all .3s;position: relative;z-index: 2;background: $background;width: 180px; + &:hover {border-color: rgb(85, 197, 192); + .title .close {visibility: visible;opacity: 1} + } + .title {background: rgb(85, 197, 192);color: #fff;display: flex;align-items: center;padding: 3px 10px;justify-content: space-between; + span {flex: 2} + .close {transform: scale(.8);visibility: hidden;transition: all .3s;opacity: 0;cursor: pointer} + i {font-size: 14px;margin-right: 3px} + &.bg-2 {background: rgb(255, 148, 62)} + &.bg-5 {background: none;color: #666} + &.bg-3 {background: rgb(50, 150, 250)} + } + .text {flex: 1;display: flex;align-items: center;padding: 5px 15px;cursor: pointer; + div {display: block;max-height: 38px;overflow: hidden;color: #666;text-overflow: ellipsis;display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 2;} + } + } + .flow-add {padding: 8px 0;position: relative;font-size: 12px; + i {width: 30px;height: 30px;border-radius: 50%;border: 1px solid #eee;box-shadow: 0 0 6px rgba(102, 102, 102, 0.1);display: flex;align-items: center;justify-content: center;margin: 0 auto;background: $background;position: relative;z-index: 2;cursor: pointer;transform: scale(.7); + } + &:before {content: '';display: block;width: 1px;left: 50%;background: #eee;position: absolute;top: 0;bottom: 0} + } + .flow-col {flex: 1;margin: 0 5px;display: flex;flex-direction: column;align-items: center;position: relative; + &:before {content: '';display: block;width: 1px;top: 0; bottom: 0;left: 50%;background: #eee;position: absolute} + } + .flow-row {display: flex;position: relative} + .flow-branch-btn {display: none} + .flow-branch {padding: 40px 0 1px;display: flex;flex-direction: column; + .flow-branch-btn {display: block;position: absolute;left: 50%;top: 0;transform: translateX(-50%);z-index: 2} + &:before {content: '';display: block;left: 0;right: 0;bottom: 46px;top: 12px;border: 1px solid #eee;position: absolute} + .flow-col { // 中线 + &:before {top: -28px} + &:after {content: '';display: none;width: 50%;top: 0;background: $borderColor;} + } + .mask-left, .mask-right {position: absolute;background: $background;top: -28px;display: block;bottom: -1px;width: calc(50% + 9px)} + .mask-left {left: -10px} + .mask-right {right: -10px} + } + .flow-end { + box-shadow: 0 2px 10px 0 rgb(145 145 153 / 50%);margin: 0 auto 30px;border-radius: 50%;position: relative;background: #bcbcc5;width: 50px;height: 50px;color: #fff;display: flex;align-items: center;justify-content: center; + } + &.type-show { + // 展示模式 + .flow-branch {padding-top: 28px} + .flow-item {margin-bottom: 20px} + .flow-branch:before {bottom: 0;top: 0} + .flow-end {position: relative;margin-top: 20px; + &:before {content: '';width: 1px;background: $borderColor;position: absolute;left: 50%;top: -20px;height: 20px;} + } + } + .tools {text-align: right} +} +.flow-node-down { + h3 {font-size: 14px;margin-bottom: 10px} + div {display: flex} + i {font-size: 14px;margin-right: 5px} +} +.flow-container.horizontal { + $borderColor: #eee; + .flow-main {flex-direction: row;justify-content: center} + .flow-group:first-child {overflow: hidden;} + .flow-col {flex-direction: row;margin: 8px 0; + &:before {width: auto; right: 0;height: 1px;left: -29px;top: 50%} + } + .flow-add {padding: 0 8px; + &:before {left: 0;top: 50%;height: 1px;width: 100%} + } + .flow-row {flex-direction: column} + .flow-branch {flex-direction: row;align-items: center;padding: 0; + .flow-branch-btn {position: static;transform: translateX(0);margin-right: 8px; + button {width: 50px;white-space: normal;padding: 15px 10px;overflow: hidden;line-height: 14px} + } + &:before {bottom: 0;top: 0;left: 30px;right: 45px} + .mask-left, .mask-right {left: -29px;right: -1px;width: auto; height: calc(50% + 8px)} + .mask-left {top: -8px;} + .mask-right {bottom: -9px;top: auto} + .flow-col { + + } + } + .flow-end {margin: 0} + &.type-show { + .flow-branch {margin-left: 20px} + .flow-item {margin-right: 20px;margin-bottom: 0} + .flow-branch .flow-col:before {left: -20px} + .flow-branch:before {left: -20px;right: -1px} + .flow-end {position: relative;margin-left: 20px; + &:before {content: '';height: 1px;background: $borderColor;position: absolute;top: 50%;left: -20px;width: 20px;} + } + } +} +// 侧栏drawer +.flow-modal-class { + $borderColor: #eee; + .el-drawer__header {border-bottom: 1px solid $borderColor;margin-bottom: 0;padding-bottom: 20px} +} +.flow-drawer { + .tip {margin-bottom: 20px;color: #999;line-height: 22px} +} +// 设计主页 +.design-flow-container {position: relative; + .tools {position: absolute;right: 20px;top: 13px;z-index: 2} + .tabs-info {display: flex;justify-content: center; + form {width: 680px;} + } +} +//工作台 +.task-apply { + .item {margin-bottom: 20px; + h3 {font-size: 14px;margin-bottom: 10px} + } + .list {display: flex;margin: 0 -8px; + > div {border: 1px solid #dcdfe6;padding: 16px;border-radius: 8px;height: 100px;margin: 0 8px;width: 24%;display: flex;align-items: center;font-weight: 700;transition: all .3s;cursor: pointer;box-shadow: 0 0 2px #ddd; + &:hover {border-color: #409eff} + } + .icon {font-size: 36px;width: 50px;height: 50px;display: flex;align-items: center;justify-content: center;border-radius: 4px;overflow: hidden;color: #fff;margin-right: 10px; + &:before {font-weight: 400} + } + } +} diff --git a/src/assets/scss/form.scss b/src/assets/scss/form.scss new file mode 100644 index 000000000..28742b847 --- /dev/null +++ b/src/assets/scss/form.scss @@ -0,0 +1,296 @@ +@charset "UTF-8"; +// 左侧栏 +$mainColor: #66b1ff; +.design-container {margin: 10px !important;display: flex; background-color: #FFFFFF;} +.components-list {width: 250px;padding: 8px 0;overflow-y: auto;height: calc(100vh - 104px);position: relative;overflow-x: hidden; + .title {padding: 8px 12px;position: relative; + .template {position: absolute;right: 12px;top: 0;padding: 8px;cursor: pointer} + } + ul { position: relative;overflow: hidden;padding: 0 10px 10px;margin: 0; + li {font-size: 13px;display: flex;width: 48%;line-height: 28px;position: relative;float: left;left: 0;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;margin: 0 1% 5px;color: #333;padding: 0 10px;border: 1px solid transparent;background: #f4f6fc;user-select: none;align-items: center; + i {margin-right: 5px} + &:hover { + color: $mainColor;border: 1px dashed $mainColor;cursor: move; + } + &.title {padding: 0 10px} + } + } + .content {margin-left: 12px} +} +.use-template {position: absolute;left: -100%;top: 0;width: 100%;bottom: 0;background: #fff;opacity: 0; + &.active {animation: templateAni .5s forwards;} + .close {position: absolute;right: 5px;top: 5px;font-size: 14px;cursor: pointer} + .list {padding: 30px 10px;overflow-y: auto; + .item {box-shadow: 0 0 4px rgba(0, 21, 41, 0.1);padding: 10px;text-align: center;transition: all .5s;cursor: pointer;margin-bottom: 10px; + img {display: block;width: 100%;margin: 0 auto 10px} + &:hover {box-shadow: 0 0 4px rgba(0, 21, 41, 0.25);} + } + } + .no-date {text-align: center;padding-top: 20px;color: #999} +} +@keyframes templateAni { + 100% {opacity: 1;left: 0} +} +// 框架 +.main-body {flex: 2; border-left: 1px solid #e0e0e0;border-right: 1px solid #e0e0e0;margin: 0;overflow: hidden; + .empty-tips {text-align: center;width: 100%;font-size: 20px;color: #ccc;position: absolute;left: 0;top: 100px; + } + .main-form { background: #fff;border: 1px dashed #999;margin: 10px;height: calc(100vh - 165px);overflow-y: auto;overflow-x: hidden;position: relative} +} +// 中间按钮工具 +.main-tools {line-height: 26px;border-bottom: 2px solid #e4e7ed;margin-right: 10px;padding: 8px 0;display: flex;align-items: center;justify-content: flex-end; + button {color: $mainColor; + i {padding-right: 5px} + } +} +.add-form {padding: 0px;box-sizing: border-box; + // 格珊 + .form-row { + .form-col { + &.active-col {border: 3px solid $mainColor;position: relative; + > .drag-control {display: block;} + > .tooltip {display: block;} + } + } + } + .title {border-bottom: 1px solid #ddd;font-weight: 700;font-size: 14px;height: 30px;padding: 0 5px;margin-bottom: 22px} + .form-tabs { + .drag {min-height: 80px;} + } + .group-card { + .el-collapse {border: 0} + .el-collapse-item__header {font-weight: 700;border-bottom: 1px solid #ddd;margin-bottom: 20px} + .el-collapse-item__wrap {border: 0} + } + .group-inputSlot {display: none} + .form-table {margin-bottom: 22px; + .drag {border: 0;display: flex;overflow-x: auto;white-space: nowrap;padding: 0;flex-wrap: nowrap; + > div {min-width: 150px;width: auto} + } + .el-form-item {display: block} + } + .table-btn {padding-top: 10px} + .el-collapse-item__content {padding-bottom: 5px } + .form-table-add { + .el-form-item__label {display: none} + .el-form-item {margin: 0} + .el-table .cell {overflow: inherit; + .el-form-item__error {padding-top: 0} + } + } + .gray {color: #999} + > .drag {border: 0 !important;} + .group-flex { + .flex-group {display: flex;justify-content: space-between; + button {margin-left: 10px} + } + .flex-item {flex: 2;} + } + .group-txt {margin-bottom: 18px} + .div-layout { + /*&.inline { + .drag {display: inline-flex} + .group {width: auto;margin-right: 10px} + }*/ + &.right { + .drag {text-align: right;justify-content: flex-end} + } + &.center { + .drag {text-align: center;justify-content: center} + } + &.left { + + } + } + // 设置默认下input和select一样宽 + .el-select {width: 100%;} + .el-select { + .el-input__wrapper .el-input__suffix {position: absolute;right: 10px} + } + .group {width: 100%} + .drag {display: flex;flex-wrap: wrap} + &.form-row-2 { + .group {width: 50%} + } + &.form-row-3 { + .group {width: 33%} + } + &.form-row-4 { + .group {width: 25%} + } +} +.sidebar-tools {width: 300px;right: 0;top: 0;overflow-y: auto;box-sizing: border-box;padding-bottom: 10px;bottom: 0; height: calc(100vh - 60px); + .form { + .el-form-item {margin-bottom: 10px;} + } + .h3 {font-size: 14px;margin-bottom: 10px;display: flex;align-items: center; + h3 {font-size: 14px} + } + .el-tabs__nav-wrap {padding: 0 10px} + .el-tabs__content {padding: 0 10px} + .icon-del {cursor: pointer} + .option-radio { + > label {margin-right: 8px} + } + .event-btn { + button {margin: 0 12px 5px 0} + } +} +#editJson, #editJsonCopy {width: 100%;height: calc(100vh - 65px)} +#editJsonCopy {height: calc(100vh - 350px)} +.ace-dialog {background: #1e1e1e; + .el-drawer__body {padding: 0} + .el-drawer__header {margin: 0;color: #e9e9e9;font-size: 12px;padding: 3px 10px} + .dialog-footer {text-align: center;padding-top: 5px;} +} +.export-dialog { + .el-dialog__body {padding: 0 20px} +} +.design-form {min-height: calc(100vh - 170px); + > div {height: 100%} + > .drag {min-height: calc(100vh - 170px) !important;} + .ghost { + background: #F56C6C; + border: 2px solid #F56C6C; + outline-width: 0; + height: 3px; + box-sizing: border-box; + font-size: 0; + content: ''; + overflow: hidden; + padding: 0; + width: 100%; + } + .group {border: 1px dashed #ddd;margin: 2px 2px 10px 2px;padding: 5px;position: relative;min-height: 50px; + &.active {border: 3px solid $mainColor;position: relative; + > .drag-control {display: block} + > .tooltip {display: block;} + } + &:hover {border-color: $mainColor;background: #ecf5ff} + > div {margin-bottom: 0} + &:after{content: '';position: absolute;left: 0;top:0;right: 0;bottom: 0;opacity: 0;z-index: 1;display: block;} + &.group-grid,&.group-tabs,&.group-card,&.group-flex,&.group-div,&.group-table{ + &:after{display: none} + } + } + .group-inputSlot {border-color: #eebe77;display: inline-block; + &:hover, &.active {border-color: #eebe77 !important;} + } + .tooltip {display: none;position: absolute;font-size: 12px;top: 0;right: 0;z-index: 5} + .drag-control {display: none; + .item-control {position: absolute;right: 0;bottom: 0;z-index: 2; display: flex;align-items: center;height: 24px;background: $mainColor; + i {width: 24px;height: 24px;color: #fff;display: flex;align-items: center;justify-content: center;cursor: pointer} + } + .drag-move {position: absolute;left: 0;top: 0;z-index: 2;width: 24px;height: 24px;background: $mainColor;color: #fff;text-align: center;line-height: 24px;cursor: move} + } + .drag {height: 100%;border: 1px dashed #ddd;min-height: 40px;margin: 0 2px;padding: 5px;align-content: flex-start;} + &.form-row-2 { + .group {width: 48%} + } + &.form-row-3 { + .group {width: 32%} + } + &.form-row-4 { + .group {width: 23%} + } +} +/*表格设计*/ +.design-table { + .main-body {border-left: 0} + .header {position: relative; + .field {position: absolute;left: 10px;top: 7px;display: flex; + } + } + .components-list { + .content {padding: 0 12px; + > div {display: flex;flex-wrap: wrap;justify-content: flex-start; + label {margin: 0 10px 8px 0 !important;} + } + } + } + .main-table {padding: 10px 20px; + .add-form {min-height: auto;display: flex; + > .drag {height: auto;min-height: auto !important;} + } + .el-divider {margin: 8px 0 0} + .table-tip {color: #999;padding: 30px 0;line-height: 22px} + .search-box {position: relative; + &:after {content: '';width: 100%;height: 100%;position: absolute;left: 0;right: 0;bottom: 0;top: 0;z-index: 2;cursor: pointer;} + .group {width: auto;margin-right: 10px} + } + .control-btn {padding: 10px 0; + margin-bottom: 10px;display: flex;justify-content: space-between;align-items: center + } + .tip {border: 1px dotted #ddd;padding: 3px 5px;border-radius: 5px;color: #999;text-align: center;cursor: pointer} + .el-table__header { + th { + .cell {position: relative;} + .icon-close {display: none;font-size: 12px;margin-left: 12px;cursor: pointer;position: absolute;} + &:hover { + .icon-close {display: inline-block} + } + } + } + } + .table-tag { + .el-form-item__content {display: flex; + > div {flex: 2;margin-right: 5px;} + } + } +} +.table-field-list { + h3 {font-size: 14px} + .item {margin-bottom: 20px} + .list {display: flex;justify-content: flex-start;flex-wrap: wrap; + label {width: 25%;margin: 0} + } +} +.table-list-comm {display: flex;justify-content: space-between; + .tree-sidebar {width: 180px;border-right: 1px solid #ddd;padding-right: 10px;margin-right: 10px;flex-shrink: 0; + .el-input {margin-bottom: 10px} + } + .table-list {display: block;width: 100%} + .table-main {margin-bottom: 20px; + &.hide-vertical-scroll { // 固定了横向滚动条时,禁用表格固定头部的滚动 + .el-scrollbar__wrap {overflow: hidden;} + .is-vertical {display: none !important;} + } + .table-operate-btn {display: flex;align-items: center} + } + .table-search {position: relative; + form {display: flex;flex-wrap: wrap;padding-bottom: 0;border-bottom: 1px solid #dcdfe6;margin-bottom: 10px;} + .drag {display: flex;flex-wrap: wrap; + > div {margin-right: 10px} + } + .group {width: auto} + .search-icon {margin-left: 10px;height: 30px;cursor: pointer;position: absolute;right: 0;top: 0} + .autoHeight-enter-active, + .autoHeight-leave-active { + max-height: 200px; + transition: all .6s; + overflow: hidden; + } + .autoHeight-enter-from, + .autoHeight-leave-to { + max-height: 0; + } + } + .control-btn {margin-bottom: 10px;display: flex;justify-content: space-between;align-items: center} +} +/*图片文件上传*/ +.upload-style { + .limit { + .el-upload {display: none} + // 超出limit时不显示上传按钮 + } + .el-upload-list__item-preview {display: none !important;} + // 不显示点击放大按钮 + .el-upload--picture { + .icon-plus {font-size: 28px;display: flex;align-items: center;justify-content: center;color: #8c939d;width: 148px;height: 148px;border: 1px dashed #d9d9d9;border-radius: 6px;cursor: pointer;overflow: hidden;background: #fbfdff} + } +} +/*分页*/ +.table-page {padding-top: 10px;display: flex;justify-content: flex-end} +//.el-scrollbar__wrap{overflow: hidden!important;} +//.el-scrollbar__bar.is-vertical{display: none} + diff --git a/src/assets/scss/index.scss b/src/assets/scss/index.scss new file mode 100644 index 000000000..aad4dbbe5 --- /dev/null +++ b/src/assets/scss/index.scss @@ -0,0 +1 @@ +@import "layout","form","flow","screen"; diff --git a/src/assets/scss/layout.scss b/src/assets/scss/layout.scss new file mode 100644 index 000000000..e176391c6 --- /dev/null +++ b/src/assets/scss/layout.scss @@ -0,0 +1,120 @@ +html, body, div, span, ul, li, i, h3, p {margin: 0;padding: 0;} +ul, li {list-style: none} +body {font-size: 14px; font-family: "Microsoft YaHei UI"} +* {box-sizing: border-box} +a{color: #409eff;text-decoration: none} +::-webkit-scrollbar { + width: 8px; + height: 8px; + position: relative; + z-index: 100; +} +::-webkit-scrollbar-thumb { + background-color: #babdc2; + background-clip: padding-box; + min-height: 28px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} +::-webkit-scrollbar-corner { + background: #babdc2; +} +/*&::-webkit-scrollbar:$colorGray2; //滚动条整体部分 +::-webkit-scrollbar-button:''; //滚动条两端的按钮 +::-webkit-scrollbar-track:''; //外层轨道 +::-webkit-scrollbar-track-piece:''; //内层滚动槽 +::-webkit-scrollbar-thumb:$colorGray3; //滚动的滑块 +::-webkit-scrollbar-corner:''; //边角 +::-webkit-resizer //定义右下角拖动块的样式*/ +.common-layout { + .common-sidebar { + transition: all 0.3s; + box-shadow: 2px 0 6px rgb(0 21 41 / 35%); + color: #fff; + background-color: rgb(48 65 86); + height: 100vh; + overflow-x: hidden; + .logo { + display: flex; + align-items: center; + font-size: 14px; + height: 40px; + justify-content: center; + cursor: pointer; + font-weight: 700; + img { + width: 14px; + height: 14px; + } + } + .el-menu { + border-right: 0; + .icon{margin-right: 5px;font-size: 15px;opacity: .8} + } + .el-sub-menu .el-menu-item{min-width: 180px} + } + .common-header { + box-shadow: 0 1px 4px rgba(0, 21, 41, 0.08); + display: flex; + align-items: center; + justify-content: space-between; + .collapse-icon { + cursor: pointer; + font-size: 18px; + margin-right: 15px; + } + .breadcrumb {flex: 2;} + .comm-header-tool {margin: 0 10px;display: flex; + i {margin: 0 5px;cursor: pointer} + } + } + // 使用整个右侧滚动,没必要固定那个头部浪费空间 + .overflow-scroll{overflow-y: auto;display: block;height: 100vh} + .common-main { + background: #f0f2f5; + padding: 10px; + overflow: hidden; + > div:first-child {border-radius: 5px;padding: 10px 15px;background: #fff;overflow-x: auto; // 横向滚动条放在这里 + &.bg-none{background: none;} + } + } + .tag-tabs {display: flex;justify-content: space-between;align-items: center; + padding: 0 20px; + box-shadow: 0 1px 4px rgba(0, 21, 41, 0.08); + .el-tabs__content { + display: none; + } + .el-tabs__nav-wrap::after { + display: none; + } + .el-tabs__item { + padding: 0 10px !important; + } + .el-tabs__header { + margin: 0; + } + .tabs-label { + i {margin-left: 3px} + } + .clear-tag {cursor: pointer} + } + .quit-full {position: fixed;right: 10px;top: 10px;cursor: pointer;z-index: 101} +} +// 设置el-tooltip最大宽度 +.el-popper { + max-width: 400px; +} +.fade-transform-leave-active, +.fade-transform-enter-active { + transition: all .3s; +} +.fade-transform-enter-from{opacity: .3;transform: translateX(-30px)} +.fade-transform-enter-active { +} +.fade-transform-enter-to{transform: translateX(0);opacity: 1} + +.fade-transform-leave-active { + opacity: 0; + transform: translateX(30px); +} diff --git a/src/assets/scss/screen.scss b/src/assets/scss/screen.scss new file mode 100644 index 000000000..6ee5384cd --- /dev/null +++ b/src/assets/scss/screen.scss @@ -0,0 +1,111 @@ +.bg-black { /*background: rgb(48, 65, 86) !important;margin: -10px;border-radius: 0 !important;color: #fff*/ +} + +.container-screen {display: flex;justify-content: space-between;padding: 0 !important; + .tabs { + .el-tabs__nav {display: flex;justify-content: space-between;width: 100%} + .el-tabs__item {flex: 2;padding: 0;text-align: center} + } + .main-left {width: 180px;transition: all .3s; + .scroll {height: calc(100vh - 114px)} + .components-list {width: 100%; + ul { + li {padding: 0 5px; + i {font-size: 13px;margin-right: 3px} + } + } + } + .layer-list {font-size: 14px;overflow-y: auto; + ul {height: 100%} + li {line-height: 36px;padding: 0 8px;background: #f4f6fc;transition: all .3s;display: flex;justify-content: space-between;align-items: center;border: 1px solid transparent;border-bottom-color: #fff; + span {flex: 2;cursor: move;} + i {margin: 0 3px} + .icon {font-size: 20px;cursor: pointer} + &:hover {color: #66b1ff} + &.active { color: #fff;background: #66b1ff} + &.lock { color: #eebe77; + span {cursor: not-allowed} + } + &.display {opacity: .5} + &.isGroup{padding-left: 20px} + } + } + } + .main-box {flex: 2;border-left: 1px solid #e0e0e0;border-right: 1px solid #e0e0e0;height: calc(100vh - 66px);display: flex;flex-direction: column;color: #fff;width: 100%;position: relative;overflow: hidden; + .main-tools {line-height: 20px; + .control-tools {flex: 2;color: #999;margin-left: 20px; + i {margin-right: 5px;cursor: pointer} + .active {color: #409eff} + } + } + .design-box {background: rgb(48, 65, 86);flex: 2;padding: 0 0 0 20px;position: relative;overflow: auto;} + .draw-react {border: 1px solid #409eff;position: absolute;z-index: 999} + .design-canvas {height: 100%;position: absolute;cursor: pointer;top: 20px;left: 20px;transform-origin: left top; + .drag {height: 100%} + .resize-box { + position: absolute;left: 0;top: 0;width: 100%;height: 100%;border: 1px dotted #409eff;z-index: 5; + span {width: 8px;height: 8px;display: block;border-radius: 50%;background: #409eff;position: absolute;border: 1px solid rgba(255, 255, 255, .8); + } + .rs1 {left: -4px;top: -4px;cursor: se-resize;} + .rs2 {left: 50%;top: -4px;margin-left: -4px;cursor: s-resize} + .rs3 {right: -4px;top: -4px;cursor: sw-resize} + .rs4 {left: -4px;top: 50%;margin-top: -4px;cursor: e-resize} + .rs5 {right: -4px;top: 50%;margin-top: -4px;cursor: e-resize} + .rs6 {left: -4px;bottom: -4px;cursor: sw-resize} + .rs7 {left: 50%;bottom: -4px;margin-left: -4px;cursor: s-resize} + .rs8 {right: -4px;bottom: -4px;cursor: se-resize;} + &:hover {background: rgba(64, 158, 255, .5);cursor: move} + .position {font-size: 12px;position: absolute;left: 0;top: -20px} + } + &.preview {position: fixed;left: 0;top: 0;z-index: 50; + transform: scale(1) translate(0px, 0px) !important;transition: all .3s; + .resize-box {display: none} + } + } + .design-footer {background: rgb(48, 65, 86);display: flex;justify-content: space-between;padding: 0 5px;align-items: center; + .center {flex: 2;display: flex;justify-content: center} + .item {display: flex;align-items: center;margin: 0 10px; + .label {margin-right: 5px;display: block;white-space: nowrap} + } + .slider { + .label {margin-right: 10px} + .el-slider {width: 150px} + } + .icon {cursor: pointer} + //.offset{width: 120px;text-align: center;color: red} + } + .el-slider__marks-stop {background: red} + .no-date {color: #ccc;position: absolute;left: 50%;top: 30%;transform: translateX(-50%);font-size: 20px} + } + .main-right {width: 220px;transition: all .3s;position: relative; + form {padding: 0 10px} + .el-form-item {margin-bottom: 8px} + .color-picker { + .el-color-picker__trigger, .el-color-picker {width: 100%} + } + .upload-image { + .el-form-item__content {display: flex} + .el-input {flex: 2} + .el-upload-list {display: none} + } + &.lock { + &:after {position: absolute;left: 0;top: 0;bottom: 0;right: 0;content: '';background: rgba(255, 255, 255, .3)} + .lock {z-index: 2} + } + } + .close-preview {position: fixed;right: 10px;top: 10px;z-index: 51;color: #999;cursor: pointer} + .screen-right-menu {position: absolute;z-index: 100;background: #fff;width: 160px;transform: translateY(-50%); + li {padding: 5px 15px;cursor: pointer; + &:hover {background: #409eff;color: #fff} + &.display{cursor: not-allowed;opacity: .5; + &:hover{background: #fff;color: #333}} + } + } +} + +.design-canvas { + .group { + position: absolute; + } + .default-img, .default-bg {display: block;width: 100%;height: 100%} +} diff --git a/src/components/DesignForm/assembly/index.ts b/src/components/DesignForm/assembly/index.ts new file mode 100644 index 000000000..677de78ca --- /dev/null +++ b/src/components/DesignForm/assembly/index.ts @@ -0,0 +1,322 @@ +const selectOption: any = [ + /*{ + label: '标签1', + value: 'value1' + }, + { + label: '标签2', + value: 'value2' + }, + { + label: '标签3', + value: 'value3' + }*/ + ] + const config: { optionsType: number } = { + optionsType: 0 // 0固定 1数据源 2 接口字典 + } + export default [ + { + title: '基础字段', + children: [ + { + type: 'input', + label: '单行文本', + icon: 'input', + control: { + // 组件所有属性 + modelValue: '' + }, + config: {} // 其他配置信息 + }, + { + type: 'textarea', + label: '多行文本', + icon: 'textarea', + control: { + modelValue: '' + }, + config: {} + }, + { + type: 'radio', + label: '单选框组', + icon: 'radio', + control: { + modelValue: '' + }, + options: selectOption, // 下拉选项数据集合 + config: config + }, + { + type: 'checkbox', + label: '多选框组', + icon: 'checkbox', + control: { + modelValue: [] + }, + options: selectOption, + config: config + }, + { + type: 'select', + label: '下拉选择框', + icon: 'select', + control: { + modelValue: '', + appendToBody: true + }, + options: selectOption, + config: config + }, + { + type: 'datePicker', + label: '日期选择器', + icon: 'date', + control: { + modelValue: '', + type: 'date' + }, + config: {} + }, + { + type: 'timePicker', + label: '时间选择器', + icon: 'time', + control: { + modelValue: '' + }, + config: {} + }, + { + type: 'colorPicker', + label: '取色器', + icon: 'color', + control: { + modelValue: '' + }, + config: {} + }, + { + type: 'switch', + label: '开关', + icon: 'switch', + control: { + modelValue: false + }, + config: {} + }, + { + type: 'inputNumber', + label: '计数器', + icon: 'number', + control: { + modelValue: 0 + }, + config: {} + }, + { + type: 'cascader', + label: '级联选择器', + icon: 'cascader', + control: { + modelValue: [] + }, + options: [], + config: config + }, + { + type: 'rate', + label: '评分', + icon: 'rate', + control: { + modelValue: 0 + }, + config: {} + }, + { + type: 'slider', + label: '滑块', + icon: 'slider', + control: { + modelValue: 0 + }, + config: {} + }, + { + type: 'treeSelect', + label: '树形控件', + icon: 'tree2', + control: { + modelValue: '', + data: [], + renderAfterExpand: false + }, + config: { + optionsType: 0 + } + }, + { + type: 'txt', + label: '文字', + icon: 'text', + control: { + modelValue: '' + }, + config: {} + }, + { + type: 'title', + label: '标题', + icon: 'title', + control: { + modelValue: '标题' + }, + config: {} + }, + { + type: 'button', + label: '按钮', + icon: 'button', + control: { + label: '保存' + }, + config: {} + } + ] + }, + { + title: '高级字段', + children: [ + { + type: 'table', + label: '子表', + icon: 'table', + list: [], + tableData: [], // 子表表格列表数据集合 + control: { + border: true + }, + config: { + addBtnText: '添加一行' + } + }, + { + type: 'component', + label: '自定义组件', + icon: 'component', + control: { + modelValue: '' + }, + config: {} + /*template: '', // 组件模板名称 + component: '' // 根据template注入的组件*/ + }, + { + type: 'upload', + label: '图片/文件', + icon: 'image', + control: { + modelValue: '' // 也可以是[{name:'',url:''}]形式 + }, + config: {} + }, + { + type: 'tinymce', + label: 'tinymce富文本', + icon: 'tinymce', + control: { + modelValue: '' + }, + config: {} + } + ] + }, + { + title: '布局字段', + children: [ + { + type: 'grid', + label: '格栅布局', + icon: 'grid', + columns: [ + // 格栅列数据 + { + attr: { span: 12 }, + list: [] + }, + { + attr: { span: 12 }, + list: [] + } + ], + control: {}, + config: {} + }, + { + type: 'tabs', + label: '标签页', + icon: 'tabs', + columns: [ + { + label: 'Tab1', + list: [] + } + ], + control: {}, + config: {} + }, + { + type: 'card', + label: '卡片布局', + icon: 'card', + list: [], + control: {}, + config: {}, + item: {} // label标题相关 + }, + { + type: 'flex', + label: '弹性布局', + icon: 'flex', + list: [], + tableData: [], // 值集合 + control: {}, + config: { + addBtnText: '添加一行' + } + }, + { + type: 'divider', + label: '分割线', + icon: 'divider', + control: {}, + config: {} + }, + { + type: 'div', + label: 'div容器', + icon: 'div', + control: {}, + config: {}, + list: [] + } + ] + }, + { + title: '扩展组件', + children: [ + { + type: 'expand-user', + label: '选择用户', + icon: 'user', + control: { + // 组件所有属性 + modelValue: '' + }, + config: {} // 其他配置信息 + } + ] + } + ] + \ No newline at end of file diff --git a/src/components/DesignForm/dragControl.vue b/src/components/DesignForm/dragControl.vue new file mode 100644 index 000000000..11e66d52f --- /dev/null +++ b/src/components/DesignForm/dragControl.vue @@ -0,0 +1,166 @@ + + + + diff --git a/src/components/DesignForm/public/form/childTable.vue b/src/components/DesignForm/public/form/childTable.vue new file mode 100644 index 000000000..3bba3c899 --- /dev/null +++ b/src/components/DesignForm/public/form/childTable.vue @@ -0,0 +1,14 @@ + + + + diff --git a/src/components/DesignForm/public/form/flexBox.vue b/src/components/DesignForm/public/form/flexBox.vue new file mode 100644 index 000000000..abcfc4cce --- /dev/null +++ b/src/components/DesignForm/public/form/flexBox.vue @@ -0,0 +1,14 @@ + + + + diff --git a/src/components/DesignForm/public/form/form.vue b/src/components/DesignForm/public/form/form.vue new file mode 100644 index 000000000..b2f25b637 --- /dev/null +++ b/src/components/DesignForm/public/form/form.vue @@ -0,0 +1,483 @@ + + + + diff --git a/src/components/DesignForm/public/form/formGroup.vue b/src/components/DesignForm/public/form/formGroup.vue new file mode 100644 index 000000000..109bea647 --- /dev/null +++ b/src/components/DesignForm/public/form/formGroup.vue @@ -0,0 +1,436 @@ + + + + diff --git a/src/components/DesignForm/public/form/formItem.vue b/src/components/DesignForm/public/form/formItem.vue new file mode 100644 index 000000000..90dbddffe --- /dev/null +++ b/src/components/DesignForm/public/form/formItem.vue @@ -0,0 +1,14 @@ + + + + diff --git a/src/components/DesignForm/public/headTools.vue b/src/components/DesignForm/public/headTools.vue new file mode 100644 index 000000000..7833142bd --- /dev/null +++ b/src/components/DesignForm/public/headTools.vue @@ -0,0 +1,68 @@ + + + + diff --git a/src/components/DesignForm/template.vue b/src/components/DesignForm/template.vue new file mode 100644 index 000000000..3d8077868 --- /dev/null +++ b/src/components/DesignForm/template.vue @@ -0,0 +1,49 @@ + + + + diff --git a/src/components/DesignForm/tooltip.vue b/src/components/DesignForm/tooltip.vue new file mode 100644 index 000000000..dab812ea1 --- /dev/null +++ b/src/components/DesignForm/tooltip.vue @@ -0,0 +1,19 @@ + + + + diff --git a/src/main.ts b/src/main.ts index e75d30e7d..8d75cece9 100644 --- a/src/main.ts +++ b/src/main.ts @@ -24,5 +24,12 @@ const app = createApp(App); setupDirective(app); // 全局注册 状态管理(store) setupStore(app); +import * as ElementPlusIconsVue from '@element-plus/icons-vue' + +for (const [key, component] of Object.entries(ElementPlusIconsVue)) { + app.component(key, component) +} app.use(router).use(i18n).mount('#app'); + + diff --git a/src/store/DesignForm/designForm.ts b/src/store/DesignForm/designForm.ts new file mode 100644 index 000000000..005106c97 --- /dev/null +++ b/src/store/DesignForm/designForm.ts @@ -0,0 +1,22 @@ +import { defineStore } from 'pinia' + +export const useDesignFormStore = defineStore('designForm', { + state: () => { + return { + controlAttr: {}, + activeKey: '' + //type: 1, //当前表单状态 1新增;2查看(表单模式) ;3查看; 4设计 + //isEdit: false, //编辑状态,type=1新增模式下有编辑状态,主要用于控制编辑模式下某些字段的禁用状态,即可新增但不能修改 + //model: {}, // 给form-group提供联动条件设置 + //hideField: [], // 设置了使用v-if隐藏的字段 + } + }, + actions: { + setControlAttr(data: any) { + this.controlAttr = data + }, + setActiveKey(key: string) { + this.activeKey = key + } + } +}) diff --git a/src/store/DesignForm/layout.ts b/src/store/DesignForm/layout.ts new file mode 100644 index 000000000..8406027d8 --- /dev/null +++ b/src/store/DesignForm/layout.ts @@ -0,0 +1,42 @@ +import { defineStore } from 'pinia' +import { nextTick } from 'vue' +/*interface Breadcrumb { + label: string + to?: string +}*/ +interface TabsViews { + title: string + path: string + name: string // 路由名称name +} +const getSession = window.sessionStorage.getItem('tagViews') +let tabs: any = [] +if (getSession) { + tabs = JSON.parse(getSession) +} +export const useLayoutStore = defineStore('layout', { + state: () => { + return { + breadcrumb: [], + tabs: tabs, + reloadFlag: true // 用于刷新路由 + } + }, + // 也可以定义为 + // state: () => ({ count: 0 }) + actions: { + changeBreadcrumb(data: any) { + this.breadcrumb = data + }, + setTabsViews(obj: TabsViews[]) { + this.tabs = obj + window.sessionStorage.setItem('tagViews', JSON.stringify(obj)) + }, + setReloadRouter() { + this.reloadFlag = false + nextTick(() => { + this.reloadFlag = true + }) + } + } +}) diff --git a/src/utils/DesignForm/form.ts b/src/utils/DesignForm/form.ts new file mode 100644 index 000000000..e7f5f092b --- /dev/null +++ b/src/utils/DesignForm/form.ts @@ -0,0 +1,87 @@ +// @ts-ignore +import jsBeautify from 'js-beautify' + +export const EDITTYPE = 'javascript' // 弹出编辑器可输入类型 json/javascript + +export function evil(fn: any) { + const Fn = Function // 一个变量指向Function,防止有些前端编译工具报错 + return new Fn('return ' + fn)() +} + +export function obj2string(o: any) { + let r: any = [] + if (o === null) { + // 这里有个问题 因typeOf null=object,下面判断会报错 + return null + } + if (typeof o === 'string') { + return ( + '"' + + o + .replace(/([\\'\\"\\])/g, '\\$1') + .replace(/(\n)/g, '\\n') + .replace(/(\r)/g, '\\r') + .replace(/(\t)/g, '\\t') + + '"' + ) + } + if (typeof o === 'object') { + if (!o.sort) { + for (const i in o) { + if (o.hasOwnProperty(i)) { + let iii = i + if (i.indexOf('-') !== -1) { + iii = `"${i}"` + } + r.push(iii + ':' + obj2string(o[i])) + } + } + if ( + !!document.all && + !/^\n?function\s*toString\(\)\s*\{\n?\s*\[native code\]\n?\s*\}\n?\s*$/.test( + o.toString + ) + ) { + r.push('toString:' + o.toString.toString()) + } + r = '{' + r.join() + '}' + } else { + for (let i = 0; i < o.length; i++) { + r.push(obj2string(o[i])) + } + r = '[' + r.join() + ']' + } + return r + } + return o && o.toString() +} + +export function objToStringify(obj: any, isBeautify?: boolean) { + if (EDITTYPE === 'javascript') { + if (isBeautify) { + return jsBeautify('opt=' + obj2string(obj), { + indent_size: 2, + brace_style: 'expand' + }) + } else { + return obj2string(obj) + } + } else { + return isBeautify ? JSON.stringify(obj, null, 2) : JSON.stringify(obj) + } +} + +export function stringToObj(string: string) { + if (EDITTYPE === 'javascript') { + return evil(string) + } else { + return JSON.parse(string) + } +} + +export function string2json(string: string) { + return JSON.parse(string || '{}') +} +export function json2string(obj: any, isBeautify?: boolean) { + return isBeautify ? JSON.stringify(obj, null, 2) : JSON.stringify(obj) +} diff --git a/src/utils/DesignForm/formChangeValue.ts b/src/utils/DesignForm/formChangeValue.ts new file mode 100644 index 000000000..069e06d0d --- /dev/null +++ b/src/utils/DesignForm/formChangeValue.ts @@ -0,0 +1,16 @@ +// 用于在线模式表单值改变事件,此方法可实际如A组件改变时,自动对B组件设值或修改 +// 必须要return +/* + @params name 当前改变的组件name值 + @params model当前表单的值 + @params key 当前设置的方法标识 + */ +const formChangeValue = ( + name: string, + model: { [key: string]: any }, + key: string +) => { + console.log(key, model, name) + return model +} +export default formChangeValue diff --git a/src/utils/DesignForm/formatResult.ts b/src/utils/DesignForm/formatResult.ts new file mode 100644 index 000000000..ce6f977a7 --- /dev/null +++ b/src/utils/DesignForm/formatResult.ts @@ -0,0 +1,34 @@ +// 处理返回结果,当数据比较复杂时,使用在线编辑器如afterResponse方法不太适合,key即为afterResponse的字符串值 +// 必须要return +const formatResult = (res: any, key: string) => { + // console.log('formatResult', res, key) + switch (key) { + case 'transformDataToChild': + return transformDataToChild(res.list || res) + } + return res +} +// 根据id及parentId扁平数据转为children嵌套格式 +const transformDataToChild = (res: any) => { + const temp: any = [] + transformDataList(res, 0, temp) + return temp +} +const transformDataList = (data: any, parentId: number, temp: any) => { + data.forEach((item: any) => { + item.value = item.id // tree组件只能修改label取值,不能指定value,这里添加一个 + item.label = item.name + if (item.parentId === parentId) { + const childrenList = data.filter((ch: any) => { + return ch.parentId === item.id + }) + if (childrenList?.length) { + item.children = [] + transformDataList(data, item.id, item.children) + } + temp.push(item) + } + }) +} +// 部门侧栏树列表数据处理结束 +export default formatResult diff --git a/src/utils/DesignForm/formatScreen.ts b/src/utils/DesignForm/formatScreen.ts new file mode 100644 index 000000000..fc790ace1 --- /dev/null +++ b/src/utils/DesignForm/formatScreen.ts @@ -0,0 +1,18 @@ +// 用于在线模式表单值改变事件,此方法可实际如A组件改变时,自动对B组件设值或修改 +// 必须要return +/* + @params key 当前指定的事件字符串标识 + @params result api接口返回结果 + @params options 静态或图片options数据,需按此格式返回 + @params global 全局的数据 + */ +const formatScreen = ( + key: string, + result: any, + options?: any, + global?: any +) => { + console.log(key, result, options, global) + return options +} +export default formatScreen diff --git a/src/utils/DesignForm/index.ts b/src/utils/DesignForm/index.ts new file mode 100644 index 000000000..ba2590138 --- /dev/null +++ b/src/utils/DesignForm/index.ts @@ -0,0 +1,95 @@ +export function debounce void>(func: T, delay = 500, immediate?: boolean): T { + let timerId: any + + return function (this: any, ...args: any[]) { + if (timerId) { + clearTimeout(timerId) + } + if (immediate) { + const callNow = !timerId + timerId = setTimeout(() => { + timerId = null + }, delay) + if (callNow) { + func.apply(this, args) + } + } else { + timerId = setTimeout(() => { + func.apply(this, args) + }, delay) + } + } as T +} +// 时间格式化 +export const dateFormatting = (time: any, cFormat?: string) => { + const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}' + // 字符串数字形式的时间戳要转换下 + let newTime = time + if (/^\d+?$/.test(time)) { + newTime = parseInt(time) + } + const date = typeof time === 'object' ? time : new Date(newTime) + const formatObj: any = { + y: date.getFullYear(), + m: date.getMonth() + 1, + d: date.getDate(), + h: date.getHours(), + i: date.getMinutes(), + s: date.getSeconds(), + w: date.getDay() + } + return format.replace(/{(y|m|d|h|i|s|w)+}/g, (result, key) => { + let value = formatObj[key] + if (key === 'w') { + return ['日', '一', '二', '三', '四', '五', '六'][value] + } + if (result.length > 0 && value < 10) { + value = '0' + value + } + return value || 0 + }) +} +// 动态远程加载script脚本 +export function loadScript(src: string) { + return new Promise((resolve, reject) => { + const script = document.createElement('script') + script.type = 'text/javascript' + script.onload = resolve + script.onerror = reject + script.src = src + document.head.appendChild(script) + }) +} +// 随机数字符串 +export const randomString = (len: number) => { + len = len || 32 + const str = 'ABCDEFGHIJKMNOPQSTWXYZabcdefghijklmnopqrstwxyz1234567890' + let n = '' + for (let i = 0; i < len; i++) { + n += str.charAt(Math.floor(Math.random() * str.length)) + } + return n +} + +export const jsonParseStringify = (val: any) => { + if (typeof val === 'object') { + return JSON.parse(JSON.stringify(val)) + } else { + return val + } +} +/** + * 设置或获取local session storage + * @param key + * @param data 有值时set,否则get + * @param type local/session默认 + */ +export const getSetStorage = (key: string, data?: string, type = 'session') => { + //console.log(key, data) + const winType = type === 'session' ? 'sessionStorage' : 'localStorage' + if (data) { + window[winType].setItem(key, data) + } else { + return window[winType].getItem(key) + } +} diff --git a/src/utils/DesignForm/request.ts b/src/utils/DesignForm/request.ts new file mode 100644 index 000000000..7a4fd68a2 --- /dev/null +++ b/src/utils/DesignForm/request.ts @@ -0,0 +1,35 @@ +import axios from 'axios' +// 全局设置 +/* axios.defaults.baseURL = window.APP_CONFIG.BASE_URL +axios.defaults.headers.common['Authorization'] = getToken() */ + +const service = axios.create({ + baseURL: import.meta.env.VITE_APP_URL, // api的base_url + //baseURL: 'http://localhost:3001/api', // api的base_url + timeout: 3000, // request timeout + headers: {} +}) + +service.interceptors.request.use( + (config) => { + return config + }, + (error) => { + Promise.reject(error) + } +) + +service.interceptors.response.use( + (response) => { + if (response.data.code === 1) { + return response.data + } else { + // 这里面需增加统一拦截 + return Promise.reject(response.data) + } + }, + (error) => { + return Promise.reject(error) + } +) +export default service diff --git a/src/views/matrix/index.vue b/src/views/matrix/index.vue index 0fa0209b8..7da44670d 100644 --- a/src/views/matrix/index.vue +++ b/src/views/matrix/index.vue @@ -8,7 +8,7 @@ import { orgInfo } from '@/api/hr/org/type' import { getOrgTreeList } from '@/api/hr/org/index' import { searchMatrix,matrixCont } from '@/api/matrixapi/type' import { getMatrixList,editMatrixStatus } from '@/api/matrixapi/index' - +import { getOrgChiled } from '@/api/displayboardapi/indexapi' /** * 引入页面 */ @@ -17,6 +17,7 @@ import MatrixContEdit from '@/views/matrix/matrixcont/matrixcontedit.vue' import SetupMatrixField from '@/views/matrix/matrixcont/setupmatrixfield.vue' import SetupMatrixUser from '@/views/matrix/matrixcont/setupmatrixuser.vue' + const ids = ref([]); //批量删除的ID const queryFormRef = ref(ElForm); //查询表单 const orgTreeLoading = ref(false); //加载行政组织树 @@ -144,10 +145,12 @@ function openEditMatriexDialog(cont:matrixCont){ editCont.value = cont matrixEditBox.value = true; } + //加载数据 onMounted(() => { haveOrgTreeInfo(); searchMatrixList(); + }); diff --git a/src/views/matrix/matrixcont/setupmatrixfield.vue b/src/views/matrix/matrixcont/setupmatrixfield.vue index f6df544c1..f37282988 100644 --- a/src/views/matrix/matrixcont/setupmatrixfield.vue +++ b/src/views/matrix/matrixcont/setupmatrixfield.vue @@ -65,6 +65,12 @@ function handleCloseBox(){ * 初始化数据 */ function initData(){ + // if(tjAndZhi.factor && tjAndZhi.factor.length > 0){ + // tjAndZhi.factor.splice(0,tjAndZhi.factor.length); + // } + // if(tjAndZhi.outcome && tjAndZhi.outcome.length > 0){ + // tjAndZhi.outcome.splice(0,tjAndZhi.outcome.length); + // } tjAndZhi.factor.splice(0,tjAndZhi.factor.length); tjAndZhi.outcome.splice(0,tjAndZhi.outcome.length); addMatrixField(1); @@ -116,10 +122,17 @@ watch(() => props.fieldShow,() => { getMatrixField({id:props.matrixcont.id}) .then(({data})=>{ console.log("监听数据---->",data) - tjAndZhi.factor.splice(0,tjAndZhi.factor.length); - tjAndZhi.outcome.splice(0,tjAndZhi.outcome.length); - tjAndZhi.factor = data.factor - tjAndZhi.outcome = data.outcome + if(data.factor && data.factor.length > 0){ + tjAndZhi.factor.splice(0,tjAndZhi.factor.length); + tjAndZhi.factor = data.factor + console.log("监听数据--1-->",data) + } + if(data.outcome && data.outcome.length > 0){ + tjAndZhi.outcome.splice(0,tjAndZhi.outcome.length); + tjAndZhi.outcome = data.outcome + console.log("监听数据--2-->",data) + } + }); } }); diff --git a/src/views/matrix/matrixcont/setupmatrixuser.vue b/src/views/matrix/matrixcont/setupmatrixuser.vue index 408d16e6f..ba05ce45b 100644 --- a/src/views/matrix/matrixcont/setupmatrixuser.vue +++ b/src/views/matrix/matrixcont/setupmatrixuser.vue @@ -4,8 +4,15 @@ @ 备注: 设置字段值 --> diff --git a/src/views/matrix/matrixcont/setupmatrixuser_black.vue b/src/views/matrix/matrixcont/setupmatrixuser_black.vue new file mode 100644 index 000000000..a0da94ce0 --- /dev/null +++ b/src/views/matrix/matrixcont/setupmatrixuser_black.vue @@ -0,0 +1,182 @@ + + + + diff --git a/src/views/matrix/orgoruser/pickorg.vue b/src/views/matrix/orgoruser/pickorg.vue new file mode 100644 index 000000000..09270b7f7 --- /dev/null +++ b/src/views/matrix/orgoruser/pickorg.vue @@ -0,0 +1,613 @@ + + + + diff --git a/src/views/matrix/orgoruser/pickuser.vue b/src/views/matrix/orgoruser/pickuser.vue new file mode 100644 index 000000000..0ad559c43 --- /dev/null +++ b/src/views/matrix/orgoruser/pickuser.vue @@ -0,0 +1,256 @@ + + + + diff --git a/src/views/sysworkflow/codepage/index.vue b/src/views/sysworkflow/codepage/index.vue index ddc46391e..ddb28413a 100644 --- a/src/views/sysworkflow/codepage/index.vue +++ b/src/views/sysworkflow/codepage/index.vue @@ -4,10 +4,252 @@ @ 备注: -->