Merge remote-tracking branch 'origin/master'
| | |
| | | import request from '@/router/axios'; |
| | | |
| | | export const getList = (page, size, params) => { |
| | | export const getList = (page, limit, params) => { |
| | | return request({ |
| | | url: '/api/ubcs-code/dockingManagement/gridSystemConfig', |
| | | method: 'get', |
| | | params: { |
| | | ...params, |
| | | page, |
| | | size |
| | | limit |
| | | } |
| | | }) |
| | | } |
| | |
| | | |
| | | export const update = (row) => { |
| | | return request({ |
| | | url: '/api/ubcs-omd/enum/submit', |
| | | url: '/api/ubcs-omd/enum/update', |
| | | method: 'post', |
| | | data: row |
| | | }) |
| | |
| | | </el-table-column> |
| | | </el-table> |
| | | <div slot="footer" class="dialog-footer"> |
| | | <el-button type="info" plain @click="selectAllButton">按钮全选</el-button> |
| | | <el-button class="el-icon-plus" type="success" plain @click="addClassifyAuth"></el-button> |
| | | <el-button class="el-icon-minus" type="warning" plain @click="subClassifyAuth"></el-button> |
| | | <el-button type="primary" plain @click="submit">提 交</el-button> |
| | |
| | | }, |
| | | // 增加行 |
| | | addClassifyAuth() { |
| | | if(this.roleList.length<=0){ |
| | | this.$message.warning("当前租户不存在角色信息!"); |
| | | return; |
| | | } |
| | | let item = { |
| | | roleData: this.roleList[0].id, |
| | | classifyItem: this.classifyData.label, |
| | |
| | | window.console.log(error); |
| | | }) |
| | | }, |
| | | // 全选按钮 |
| | | selectAllButton(){ |
| | | if(this.selectList.length!==1){ |
| | | this.$message.warning("请只选择一行需要全选的按钮的数据行!"); |
| | | return; |
| | | } |
| | | this.classifyAuthButton.forEach(item => { |
| | | //console.log("item",item); |
| | | Vue.set(this.classifyAuthData[0], item.id, true); |
| | | }); |
| | | //console.log("this.classifyAuthData",this.classifyAuthData); |
| | | }, |
| | | }, |
| | | }; |
| | | </script> |
| | |
| | | type: Boolean, |
| | | default: false |
| | | }, |
| | | btnAuthList: { |
| | | type:Array |
| | | } |
| | | }, |
| | | watch: { |
| | | crudOid: { |
| | |
| | | ...mapGetters(["permission"]), |
| | | permissionList() { |
| | | return { |
| | | busineStatus: this.vaildData(this.permission.classifyTree.attr_add, false), |
| | | fullscreenStatus: this.vaildData(this.permission.classifyTree.attr_view_edit, false), |
| | | ruleStatus: this.vaildData(this.permission.classifyTree.attr_rule, false), |
| | | attrStatus: this.vaildData(this.permission.classifyTree.attr_group, false), |
| | | saveStatus: this.vaildData(this.permission.classifyTree.attr_save, false), |
| | | resetStatus: this.vaildData(this.permission.classifyTree.attr_reset, false), |
| | | injectStatus: this.vaildData(this.permission.classifyTree.attr_inject, false), |
| | | isShowStatus: this.vaildData(this.permission.classifyTree.attr_formrule, false), |
| | | enumStatus: this.vaildData(this.permission.classifyTree.attr_enum, false), |
| | | cascadStatus: this.vaildData(this.permission.classifyTree.attr_parentcode, false), |
| | | syncStatus: this.vaildData(this.permission.classifyTree.attr_sync, false), |
| | | applicationStatus: this.vaildData(this.permission.classifyTree.attr_application, false), |
| | | orderStatus: this.vaildData(this.permission.classifyTree.attr_sort, false), |
| | | removeStatus: this.vaildData(this.permission.classifyTree.attr_delete, false), |
| | | busineStatus: this.vaildData(this.btnAuthList.attr_add, false), |
| | | fullscreenStatus: this.vaildData(this.btnAuthList.attr_view_edit, false), |
| | | ruleStatus: this.vaildData(this.btnAuthList.attr_rule, false), |
| | | attrStatus: this.vaildData(this.btnAuthList.attr_group, false), |
| | | saveStatus: this.vaildData(this.btnAuthList.attr_save, false), |
| | | resetStatus: this.vaildData(this.btnAuthList.attr_reset, false), |
| | | injectStatus: this.vaildData(this.btnAuthList.attr_inject, false), |
| | | isShowStatus: this.vaildData(this.btnAuthList.attr_formrule, false), |
| | | enumStatus: this.vaildData(this.btnAuthList.attr_enum, false), |
| | | cascadStatus: this.vaildData(this.btnAuthList.attr_parentcode, false), |
| | | syncStatus: this.vaildData(this.btnAuthList.attr_sync, false), |
| | | applicationStatus: this.vaildData(this.btnAuthList.attr_application, false), |
| | | orderStatus: this.vaildData(this.btnAuthList.attr_sort, false), |
| | | removeStatus: this.vaildData(this.btnAuthList.attr_delete, false), |
| | | } |
| | | }, |
| | | attrOids() { |
| | |
| | | <!-- 左侧菜单--> |
| | | <el-aside> |
| | | <basic-container> |
| | | <div> |
| | | <div> |
| | | <div style="display: flex; flex-direction: column;"> |
| | | <div style="display: flex;"> |
| | | <el-button v-if="permissionList.TreeAddStatus" plain size="small" type="primary" @click="TreeAdd">添加 |
| | | </el-button> |
| | | <el-button v-if="permissionList.TreeEditStatus" plain size="small" type="primary" @click="TreeEdit">修改 |
| | | </el-button> |
| | | <el-button v-if="permissionList.TreeDelStatus" plain size="small" type="primary" @click="TreeDel">删除 |
| | | </el-button> |
| | | <el-button v-if="permissionList.flushedStatus" plain size="small" type="primary" @click="flushed">刷新 |
| | | </el-button> |
| | | </div> |
| | | <div style="display: flex; margin-top: 10px"> |
| | | <el-button v-if="permissionList.EnableStatus" plain size="small" type="primary" @click="Enable">启用 |
| | | </el-button> |
| | | <el-button v-if="permissionList.DeactivateStatus" plain size="small" type="primary" @click="Deactivate"> |
| | | 停用 |
| | | </el-button> |
| | | <el-button v-if="permissionList.ImportExcelStatus" plain size="small" type="primary" |
| | | @click.native="ImportExcel">导入 |
| | | </el-button> |
| | | <el-button v-if="permissionList.ExportExcelStatus" plain size="small" type="primary" |
| | | @click="ExportExcel">导出 |
| | | </el-button> |
| | | </div> |
| | | </div> |
| | | <div style="display: flex;margin-top: 5px;margin-bottom: 5px"> |
| | | <el-button v-if="permissionList.flowingBtnStuatus" plain size="mini" type="primary" |
| | | @click="flowingDependHandler">流水处理 |
| | | </el-button> |
| | | <el-button v-if="permissionList.classifyAuth" plain size="mini" type="primary" |
| | | @click="classifyAuthHandler">分类授权 |
| | | </el-button> |
| | | </div> |
| | | <div style="height: calc(100vh - 142px);!important;"> |
| | | <div class="headerCon" style="display: flex; flex-wrap: wrap;margin-bottom: 5px"> |
| | | <el-button v-if="permissionList.TreeAddStatus" plain size="small" type="primary" @click="TreeAdd">添加</el-button> |
| | | <el-button v-if="permissionList.TreeEditStatus" plain size="small" type="primary" @click="TreeEdit">修改</el-button> |
| | | <el-button v-if="permissionList.TreeDelStatus" plain size="small" type="primary" @click="TreeDel">删除</el-button> |
| | | <el-button v-if="permissionList.flushedStatus" plain size="small" type="primary" @click="flushed">刷新</el-button> |
| | | <el-button v-if="permissionList.EnableStatus" plain size="small" type="primary" @click="Enable">启用</el-button> |
| | | <el-button v-if="permissionList.DeactivateStatus" plain size="small" type="primary" @click="Deactivate">停用</el-button> |
| | | <el-button v-if="permissionList.ImportExcelStatus" plain size="small" type="primary" @click.native="ImportExcel">导入</el-button> |
| | | <el-button v-if="permissionList.ExportExcelStatus" plain size="small" type="primary" @click="ExportExcel">导出</el-button> |
| | | <el-button style="width: 56px;text-align: center;padding-left: 3px" v-if="permissionList.flowingBtnStuatus" plain size="small" type="primary" @click="flowingDependHandler">流水处理</el-button> |
| | | <el-button style="width: 56px;text-align: center;padding-left: 3px" v-if="permissionList.classifyAuth" plain size="small" type="primary" @click="classifyAuthHandler">分类授权</el-button> |
| | | </div> |
| | | </div> |
| | | <!-- 左侧树--> |
| | | <div style="height: calc(100vh - 230px);overflow: auto"> |
| | | <!-- 左侧树--> |
| | | |
| | | <avue-tree ref="tree" v-model="CloneTreeAvueform" v-loading="loading" :data="CloneTreedata" |
| | | :defaultExpandAll="false" |
| | | :option="Treeoption" |
| | | class="classifyTree" |
| | | style="height: calc(100vh - 290px)" |
| | | style="height: 690px" |
| | | @node-click="nodeClick" |
| | | > |
| | | <template slot-scope="{ node, data }" class="el-tree-node__label"> |
| | |
| | | </el-tooltip> |
| | | </template> |
| | | </avue-tree> |
| | | </div> |
| | | |
| | | </div> |
| | | <!-- 树节点添加对话框--> |
| | | <el-dialog v-loading="AddLoading" :before-close="TreeEscHandler" |
| | | :title="this.TreeFlag ? '添加分类' :'添加主题库'" :visible.sync="TreeAddFormVisible" append-to-body |
| | |
| | | </basic-container> |
| | | <templatePro :Formlist="this.Formlist" :ProData="this.ProData" :codeClassifyOid="this.codeClassifyOid" |
| | | :crudArray="this.crudArray" :crudLCStatus="this.crudLCStatus" :crudOid="this.crudOid" |
| | | :rowIndex="this.selectRow"></templatePro> |
| | | :rowIndex="this.selectRow" :btnAuthList="btnAuthList"></templatePro> |
| | | </span> |
| | | <!-- 编码规则--> |
| | | <el-dialog :before-close="masterEscHandler" :visible.sync="MasterdialogVisible" append-to-body |
| | |
| | | import func from "@/util/func"; |
| | | import {mapGetters} from "vuex"; |
| | | import ClassifyAuth from './ClassifyAuthDialog.vue'; |
| | | import {getAuthButtonList} from '@/api/system/classifyAuth' |
| | | |
| | | export default { |
| | | components: {ClassifyAuth}, |
| | | name: "classifyTrees.vue", |
| | | data() { |
| | | return { |
| | | btnAuthList: [], |
| | | activeName: 'first', |
| | | masterRow: null, |
| | | AddLoading: false, |
| | |
| | | this.$refs.tree.setCurrentKey(null); |
| | | this.nodeClickList = {}; |
| | | this.TreeFlagCode = true; |
| | | // this.$nextTick(()=>{ |
| | | // this.btnAuthList = []; |
| | | // }) |
| | | } |
| | | }, true) |
| | | }, |
| | |
| | | ...mapGetters(["permission"]), |
| | | permissionList() { |
| | | return { |
| | | TreeAddStatus: this.vaildData(this.permission.classifyTree.tree_add, false), |
| | | TreeEditStatus: this.vaildData(this.permission.classifyTree.tree_edit, false), |
| | | TreeDelStatus: this.vaildData(this.permission.classifyTree.tree_delete, false), |
| | | flushedStatus: this.vaildData(this.permission.classifyTree.tree_break, false), |
| | | EnableStatus: this.vaildData(this.permission.classifyTree.tree_enable, false), |
| | | DeactivateStatus: this.vaildData(this.permission.classifyTree.tree_stop, false), |
| | | ImportExcelStatus: this.vaildData(this.permission.classifyTree.tree_import, false), |
| | | ExportExcelStatus: this.vaildData(this.permission.classifyTree.tree_export, false), |
| | | FindStatus: this.vaildData(this.permission.classifyTree.manage_search, false), |
| | | TemRefreshStatus: this.vaildData(this.permission.classifyTree.manage_break, false), |
| | | CloneBtnStuatus: this.vaildData(this.permission.classifyTree.manage_clone, false), |
| | | flowingBtnStuatus: this.vaildData(this.permission.classifyTree.tree_flowing, false), |
| | | classifyAuth: this.vaildData(this.permission.classifyTree.classify_auth, false), |
| | | TreeAddStatus: this.vaildData(this.btnAuthList.tree_add, false), |
| | | TreeEditStatus: this.vaildData(this.btnAuthList.tree_edit, false), |
| | | TreeDelStatus: this.vaildData(this.btnAuthList.tree_delete, false), |
| | | flushedStatus: this.vaildData(this.btnAuthList.tree_break, false), |
| | | EnableStatus: this.vaildData(this.btnAuthList.tree_enable, false), |
| | | DeactivateStatus: this.vaildData(this.btnAuthList.tree_stop, false), |
| | | ImportExcelStatus: this.vaildData(this.btnAuthList.tree_import, false), |
| | | ExportExcelStatus: this.vaildData(this.btnAuthList.tree_export, false), |
| | | FindStatus: this.vaildData(this.btnAuthList.manage_search, false), |
| | | TemRefreshStatus: this.vaildData(this.btnAuthList.manage_break, false), |
| | | CloneBtnStuatus: this.vaildData(this.btnAuthList.manage_clone, false), |
| | | flowingBtnStuatus: this.vaildData(this.btnAuthList.tree_flowing, false), |
| | | classifyAuth: this.vaildData(this.btnAuthList.classify_auth, false), |
| | | } |
| | | }, |
| | | treeStyle() { |
| | | return { |
| | | height: this.btnAuthList.length > 0 ? '620px' : '785px', |
| | | }; |
| | | }, |
| | | crudTreeOption() { |
| | | return { |
| | |
| | | }, |
| | | //树点击事件 |
| | | async nodeClick(data) { |
| | | getAuthButtonList({classifyId: data.oid}).then(res => { |
| | | this.btnAuthList = res.data.data; |
| | | }).catch(error => { |
| | | console.log(error) |
| | | }) |
| | | //操作新增和修改的业务类型隐藏 |
| | | this.TreeFlagCode = !data; |
| | | this.editTreeFLagCode = !data.parentId; |
| | |
| | | width: 500px; |
| | | } |
| | | |
| | | .headerCon{ |
| | | .el-button+.el-button { |
| | | margin-left: 5px; |
| | | } |
| | | .el-button { |
| | | margin-top: 5px; |
| | | } |
| | | } |
| | | .headerCon > .el-button:nth-child(5) { |
| | | margin-left: 0; |
| | | } |
| | | .headerCon > .el-button:nth-child(9) { |
| | | margin-left: 0; |
| | | } |
| | | </style> |
| | |
| | | <basic-container> |
| | | <avue-tabs :option="Taboption" @change="handleChange"></avue-tabs> |
| | | <span v-if="type.prop==='tab1'"> |
| | | <attrCrud :ProData="ProData" :crudOid="crudOid" :checkStatus="checkStatus" :crudLCStatus="crudLCStatus" :crudArray="crudArray" :Formlist="Formlist" :codeClassifyOid="codeClassifyOid"></attrCrud> |
| | | <attrCrud :ProData="ProData" :btnAuthList="btnAuthList" :crudOid="crudOid" :checkStatus="checkStatus" :crudLCStatus="crudLCStatus" :crudArray="crudArray" :Formlist="Formlist" :codeClassifyOid="codeClassifyOid"></attrCrud> |
| | | </span> |
| | | <span v-else-if="type.prop==='tab2'"> |
| | | <FlowPath ref="FlowPath" :code="this.crudOid" :checkStatus="checkStatus" :crudLCStatus="crudLCStatus" :Formlist="Formlist"></FlowPath> |
| | |
| | | <script> |
| | | export default { |
| | | name: "TemplatePro.vue", |
| | | props: ['ProData','crudOid','crudLCStatus','crudArray','Formlist','codeClassifyOid','rowIndex','crudArrayFlag'], |
| | | props: ['ProData','crudOid','crudLCStatus','crudArray','Formlist','codeClassifyOid','rowIndex','crudArrayFlag','btnAuthList'], |
| | | data: function () { |
| | | return { |
| | | type: {}, |
| | |
| | | closeCloneDialog(){ |
| | | this.$emit('update:visible',false); |
| | | this.cloneData = []; |
| | | this.cloneCodeRuleLoading = false; |
| | | }, |
| | | /** 上移下移基础码段*/ |
| | | async upOrderNum(row) { |
| | |
| | | }, |
| | | (error) => { |
| | | window.console.log(error); |
| | | this.cloneCodeRuleLoading = false; |
| | | }); |
| | | }, |
| | | |
| | |
| | | SaveHandler(){ |
| | | let name = this.SearchObject.searchData[this.formInline.type].prop; |
| | | const requestApi = (api) => { |
| | | api(this.page.currentPage, this.page.pageSize, { [`conditionMap[${name}_like]`]: this.formInline.text}).then(res => { |
| | | api(this.page.currentPage, this.page.pageSize,'createTime','desc',{[`conditionMap[${name}_like]`]: this.formInline.text}).then(res => { |
| | | if(!res.data.data.records){ |
| | | this.$message.error('暂未查到数据!') |
| | | }else { |
| | |
| | | const { cut, state, stateTask, Date, lastDate, taskCut } = this.formInline; |
| | | const requestParams = {}; |
| | | const requestApi = (api) => { |
| | | api(currentPage, pageSize, requestParams).then(res => { |
| | | api(currentPage, pageSize,'createTime','desc',requestParams).then(res => { |
| | | if(!res.data.data.records){ |
| | | this.$message.error('暂未查到数据!'); |
| | | } else { |
| | |
| | | <el-button v-if="permissionList.sync" icon="el-icon-share" size="small" @click="PUSH">同 步 |
| | | </el-button> |
| | | <el-button v-if="permissionList.query" icon="el-icon-search" size="small" |
| | | @click="openAdvancedQuery">查 |
| | | 询 |
| | | @click="openAdvancedQuery">查 询 |
| | | </el-button> |
| | | </template> |
| | | </avue-crud> |
| | |
| | | }, |
| | | onLoad(page, params={}) { |
| | | this.loading = true; |
| | | var query={} |
| | | var queryCondition={} |
| | | if (this.query) { |
| | | for (var key in this.query) { |
| | | query['conditionMap["' + key + '"]'] = this.query[key]; |
| | | queryCondition['conditionMap["' + key + '"]'] = this.query[key]; |
| | | } |
| | | } |
| | | getLogoList(page.currentPage, page.pageSize,'createTime','desc',Object.assign(params,this.params, query,this.query),).then(res => { |
| | | getLogoList(page.currentPage, page.pageSize,'createTime','desc',Object.assign(params,this.params, queryCondition,this.query),).then(res => { |
| | | const data = res.data.data; |
| | | this.page.total = data.total; |
| | | this.data = data.records; |
| | |
| | | <template> |
| | | <div> |
| | | <el-container style="height: 100%; border: 1px solid #fff"> |
| | | <el-card :style="{ marginRight: '10px' }"> |
| | | <el-aside style="background-color: #fff" width="220px"> |
| | | <el-card style="margin-right: 10px;height: calc(100vh - 125px);overflow: auto"> |
| | | <el-aside style="background-color: #fff;" width="210px"> |
| | | <el-input v-model="filterText" placeholder="输入关键字进行过滤"> |
| | | </el-input> |
| | | <el-menu :default-openeds="['1', '3']" > |
| | | <el-tree ref="tree" :data="treeData" :filter-node-method="filterNode" :props="defaultProps" |
| | | accordion class="filter-tree" empty-text="暂无数据" @node-click="handelTreeCell"> |
| | | <template slot-scope="{ node, data }" class="el-tree-node__label"> |
| | | <el-tooltip :content="$createElement('div', { domProps: { innerHTML: node.label } })" class="item" |
| | | effect="dark" |
| | | open-delay="500" |
| | | placement="right-start"> |
| | | <span style="font-size: 14px;"> |
| | | {{ (node || {}).label }} |
| | | </span> |
| | | </el-tooltip> |
| | | </template> |
| | | </el-tree> |
| | | </el-menu> |
| | | </el-aside> |
| | | </el-card> |
| | | <el-main> |
| | | <el-card> |
| | | <el-main > |
| | | <el-card style="height: calc(100vh - 128px)"> |
| | | <el-form :model="form"> |
| | | <el-form-item label="集团分类" label-width="70px" size="small"> |
| | | <el-form-item label="集团分类" label-width="80px" size="small"> |
| | | <el-select ref="selectTree" v-model="groupVal" clearable placeholder="请选择" |
| | | popper-class="popperTreeSelect"> |
| | | <el-option :label="groupVal" :value="groupVal"> |
| | |
| | | |
| | | </el-form-item> |
| | | </el-form> |
| | | <el-card> |
| | | <el-card style="height:38vh"> |
| | | <avue-crud ref="crudMapping" :data="mappingData" :option="optionMapping" :table-loading="loading" |
| | | @select="setCurrentRow" @row-update="handleMapingUpdate" |
| | | @row-click="handleMapingClick" @row-dblclick="handleMapingRowClick" @selection-change="selectionChange" |
| | |
| | | </template> |
| | | </avue-crud> |
| | | </el-card> |
| | | <el-card :style="{ marginTop: '20px'}"> |
| | | <el-card style="margin-top: 10px;height: 38vh"> |
| | | <avue-crud ref="crudRange" :data="rangeData" :option="optinoRange" :style="{ marginTop: '-20px'}" |
| | | @row-update="handleUpdate" |
| | | @row-dblclick="handleRowClick"> |
| | |
| | | // 属性映射取值表配置 |
| | | optinoRange: { |
| | | title: '属性映射取值范围', |
| | | maxHeight: '300px', |
| | | maxHeight: '280px', |
| | | header: false, |
| | | rowKey: 'oid', |
| | | column: [ |
| | | {label: '属性集团枚举值', prop: 'numTextValue', minWidth: 80}, |
| | | {label: '集团属性枚举显示名称', prop: 'numText', minWidth: 80}, |
| | | { |
| | | label: 'MDM枚举值', |
| | | label: 'CODE枚举值', |
| | | prop: 'targetNumTextValue', |
| | | minWidth: 80, |
| | | cell: true, |
| | | blur: (value) => window.handleBlur(value, 'range') |
| | | }, |
| | | { |
| | | label: 'MDM枚举显示名称', |
| | | label: 'CODE枚举显示名称', |
| | | prop: 'targetNumText', |
| | | minWidth: 80, |
| | | cell: true, |
| | |
| | | }, |
| | | // 属性映射表配置 |
| | | optionMapping: { |
| | | maxHeight: '500px', |
| | | maxHeight: '280px', |
| | | header: true, |
| | | rowKey: 'oid', |
| | | selection: false, |
| | |
| | | <el-main> |
| | | <basic-container> |
| | | <avue-crud v-model="form" ref="crud" :option="option" :data="data" @on-load="onLoad" :page.sync="page" :permission="permissionList" |
| | | @refresh-change="refreshChange" @row-click="rowClick"> |
| | | @refresh-change="refreshChange" @row-click="rowClick" style="height: calc(100vh - 148px)"> |
| | | <template slot="radio" slot-scope="{row}"> |
| | | <el-radio v-model="selectRow" :label="row.$index"> |
| | | </el-radio> |
| | |
| | | </el-main> |
| | | <el-aside> |
| | | <basic-container class="itemForm"> |
| | | <el-descriptions class="margin-top" :column="1" size="medium" border title="属性项"> |
| | | <div style="height: 44vh"> |
| | | <el-descriptions class="margin-top" :column="1" size="medium" border title="属性项" > |
| | | <el-descriptions-item> |
| | | <template slot="label"> |
| | | 属性编号 |
| | |
| | | </template> |
| | | {{ itemForm.itemData.typeValue }} |
| | | </el-descriptions-item> |
| | | <!-- <el-descriptions-item> |
| | | <template slot="label"> |
| | | 标签 |
| | | </template> |
| | | {{ itemForm.itemData.hashtag }} |
| | | </el-descriptions-item>--> |
| | | <!-- <el-descriptions-item> |
| | | <template slot="label"> |
| | | 标签 |
| | | </template> |
| | | {{ itemForm.itemData.hashtag }} |
| | | </el-descriptions-item>--> |
| | | <el-descriptions-item> |
| | | <template slot="label"> |
| | | 默认值 |
| | |
| | | {{ itemForm.itemData.description }} |
| | | </el-descriptions-item> |
| | | </el-descriptions> |
| | | <div style="height:15px"></div> |
| | | <el-descriptions class="margin-top" :column="1" size="medium" border title="属性配置"></el-descriptions> |
| | | <el-tabs v-model="itemForm.activeName" @tab-click="handleClick" stretch="true" style="height:235px"> |
| | | <el-tab-pane label="参照" name="referTab"> |
| | | <el-descriptions class="margin-top" :column="1" size="medium" border> |
| | | <el-descriptions-item> |
| | | <template slot="label"> |
| | | 使用参照 |
| | | </template> |
| | | {{ itemForm.itemData.referTypeValue ? '是' : '否' }} |
| | | </el-descriptions-item> |
| | | <el-descriptions-item> |
| | | <template slot="label"> |
| | | 参照类型 |
| | | </template> |
| | | {{ itemForm.itemData.referTypeValue }} |
| | | </el-descriptions-item> |
| | | <el-descriptions-item> |
| | | <template slot="label"> |
| | | 参照名称 |
| | | </template> |
| | | {{ itemForm.itemData.referToName }} |
| | | </el-descriptions-item> |
| | | </el-descriptions> |
| | | </el-tab-pane> |
| | | <el-tab-pane label="枚举" name="enumTab"> |
| | | <el-descriptions class="margin-top" :column="1" :size="small" border> |
| | | <el-descriptions-item> |
| | | <template slot="label"> |
| | | 使用枚举 |
| | | </template> |
| | | {{ itemForm.itemData.usingDict ? '是' : '否' }} |
| | | </el-descriptions-item> |
| | | <el-descriptions-item> |
| | | <template slot="label"> |
| | | 枚举类型 |
| | | </template> |
| | | {{ itemForm.itemData.dictValue }} |
| | | </el-descriptions-item> |
| | | </el-descriptions> |
| | | </el-tab-pane> |
| | | </el-tabs> |
| | | </div> |
| | | <div style="height: 40vh"> |
| | | <el-descriptions class="margin-top" :column="1" size="medium" border title="属性配置"></el-descriptions> |
| | | <el-tabs v-model="itemForm.activeName" @tab-click="handleClick" stretch="true" style="height:235px"> |
| | | <el-tab-pane label="参照" name="referTab"> |
| | | <el-descriptions class="margin-top" :column="1" size="medium" border> |
| | | <el-descriptions-item> |
| | | <template slot="label"> |
| | | 使用参照 |
| | | </template> |
| | | {{ itemForm.itemData.referTypeValue ? '是' : '否' }} |
| | | </el-descriptions-item> |
| | | <el-descriptions-item> |
| | | <template slot="label"> |
| | | 参照类型 |
| | | </template> |
| | | {{ itemForm.itemData.referTypeValue }} |
| | | </el-descriptions-item> |
| | | <el-descriptions-item> |
| | | <template slot="label"> |
| | | 参照名称 |
| | | </template> |
| | | {{ itemForm.itemData.referToName }} |
| | | </el-descriptions-item> |
| | | </el-descriptions> |
| | | </el-tab-pane> |
| | | <el-tab-pane label="枚举" name="enumTab"> |
| | | <el-descriptions class="margin-top" :column="1" :size="small" border> |
| | | <el-descriptions-item> |
| | | <template slot="label"> |
| | | 使用枚举 |
| | | </template> |
| | | {{ itemForm.itemData.usingDict ? '是' : '否' }} |
| | | </el-descriptions-item> |
| | | <el-descriptions-item> |
| | | <template slot="label"> |
| | | 枚举类型 |
| | | </template> |
| | | {{ itemForm.itemData.dictValue }} |
| | | </el-descriptions-item> |
| | | </el-descriptions> |
| | | </el-tab-pane> |
| | | </el-tabs> |
| | | </div> |
| | | </basic-container> |
| | | </el-aside> |
| | | <originalAdd ref="originalAdd" @refreshTable="refreshChange" :attribute="editAttribute"></originalAdd> |
| | |
| | | editAttribute: {}, |
| | | applyRangeData: [], |
| | | option: { |
| | | height: "auto", |
| | | height:'auto', |
| | | calcHeight:20, |
| | | headerAlign: "center", |
| | | border: true, |
| | |
| | | prop: "logType", |
| | | width:'160' |
| | | }, |
| | | { |
| | | /*{ |
| | | label: "创建时间", |
| | | prop: "createTime", |
| | | width:'160' |
| | | }, |
| | | },*/ |
| | | { |
| | | label: "最后修改时间", |
| | | prop: "lastModifier", |
| | |
| | | <template> |
| | | <basic-container > |
| | | <avue-crud v-model="form" :option="option" :data="data" ref="crud" @on-load="onLoad" @row-save="rowSave" @row-update="rowUpdate" @row-del="rowDel" :page.sync="page"> |
| | | <basic-container> |
| | | <avue-crud ref="crud" v-model="form" :data="data" :option="option" :page.sync="page" @on-load="onLoad" |
| | | @row-save="rowSave" @row-update="rowUpdate" @row-del="rowDel"> |
| | | <template slot="menu" slot-scope="{ row, index }"> |
| | | <el-button |
| | | type="text" |
| | | size="small" |
| | | icon="el-icon-edit" |
| | | v-if="permissionList.editBtn" |
| | | icon="el-icon-edit" |
| | | size="small" |
| | | type="text" |
| | | @click="handleEdit(row, index)" |
| | | > |
| | | 编辑 |
| | | </el-button> |
| | | <el-button |
| | | type="text" |
| | | size="small" |
| | | icon="el-icon-delete" |
| | | v-if="permissionList.delBtn" |
| | | icon="el-icon-delete" |
| | | size="small" |
| | | type="text" |
| | | @click="handleDel(row, index)" |
| | | > |
| | | 删除 |
| | |
| | | combination |
| | | } from "@/api/system/passwords"; |
| | | import {mapGetters} from "vuex"; |
| | | |
| | | export default { |
| | | name: "passwords.vue", |
| | | data() { |
| | | return { |
| | | //最小长度绑定value |
| | | values:"", |
| | | values: "", |
| | | //最大长度绑定value |
| | | values1:"", |
| | | form:{}, |
| | | values1: "", |
| | | form: {}, |
| | | page: { |
| | | pageSize: 10, |
| | | currentPage: 1, |
| | |
| | | data: [], |
| | | |
| | | //添加存放多选的变量,用于下拉菜单的禁用效果和必填种类是否大于组合方式然后提示用户重新选择 |
| | | checkboxlength:"", |
| | | checkboxlength: "", |
| | | //这个是下拉菜单的数据变量 |
| | | selectlength:"", |
| | | selectlength: "", |
| | | //这个是用于防止change时间冒泡,出现两次弹窗定义的变量 |
| | | checkboxlist:"", |
| | | checkboxlist: "", |
| | | //用于首次点击编辑,判断组合方式是否小于必填种类的变量 |
| | | checkboxNumber:"", |
| | | selectNumber:"", |
| | | checkboxNumber: "", |
| | | selectNumber: "", |
| | | //这个也是存放多选的变量,效果一样,只是用作在编辑模块 |
| | | checkboxedit:"", |
| | | checkboxedit: "", |
| | | // 用于判断是否是编辑 |
| | | editFlag:false |
| | | editFlag: false |
| | | } |
| | | |
| | | }, |
| | | computed:{ |
| | | computed: { |
| | | ...mapGetters(["permission"]), |
| | | permissionList() { |
| | | return { |
| | |
| | | editBtn: this.vaildData(this.permission.password.password_edit, false), |
| | | }; |
| | | }, |
| | | option(){ |
| | | return{ |
| | | headerAlign: 'center', |
| | | align: 'center', |
| | | columnBtn:false, |
| | | border: true, |
| | | index: true, |
| | | rowKey:'id', |
| | | addBtn:this.permissionList.addBtn, |
| | | editBtn:false, |
| | | height:700, |
| | | delBtn:false, |
| | | column: [ |
| | | { |
| | | label: '策略名称', |
| | | prop: 'strategyName', |
| | | align: 'left', |
| | | span:24, |
| | | labelWidth: "11%", |
| | | rules: [{ |
| | | required: true, |
| | | message: "请输入策略名称", |
| | | trigger: "blur" |
| | | }] |
| | | }, |
| | | { |
| | | label: '密码最小长度', |
| | | prop: 'minPwdLen', |
| | | span:12, |
| | | labelWidth:"22%", |
| | | rules: [{ |
| | | required: true, |
| | | validator:(rule, value,callback)=>{ |
| | | this.values=value*1 |
| | | if(value == ""){ |
| | | callback(new Error('请输入密码最小长度')); |
| | | }else if(/[^\d]/g.test(value)){ |
| | | callback(new Error('密码最小长度的输入类型只能为数字类型')); |
| | | }else if(this.values >= this.values1 && this.values1 != 0){ |
| | | callback(new Error('密码最小长度不能大于密码最大长度')) |
| | | }else { |
| | | callback(); |
| | | } |
| | | }, |
| | | trigger: 'blur' |
| | | }] |
| | | }, |
| | | { |
| | | label: '密码最大长度', |
| | | prop: 'maxPwdLen', |
| | | span:12, |
| | | labelWidth:"25%", |
| | | rules: [{ |
| | | required: true, |
| | | validator:(rule, value,callback) =>{ |
| | | this.values1=value*1 |
| | | if(value == ""){ |
| | | callback(new Error('请输入密码最大长度')); |
| | | }else if(this.values1 <= this.values){ |
| | | callback(new Error('密码最大长度不能小于密码最大长度')); |
| | | }else if(/[^\d]/g.test(value)){ |
| | | callback(new Error('密码最大长度的输入类型只能为数字类型')); |
| | | }else { |
| | | callback(); |
| | | } |
| | | }, |
| | | trigger: 'change' |
| | | }] |
| | | }, |
| | | { |
| | | label: '组合方法', |
| | | prop: 'combinationNames', |
| | | labelWidth: 91, |
| | | display:false, |
| | | |
| | | }, |
| | | { |
| | | label: '组合方法', |
| | | prop: 'combinationIds', |
| | | type: "checkbox", |
| | | span:12, |
| | | labelWidth:"22%", |
| | | id:5, |
| | | hide:true, |
| | | change: this.handleCheckboxChange, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择组合方法", |
| | | trigger: "blur" |
| | | }], |
| | | dicUrl: '/api/ubcs-system/combination/select', |
| | | dicMethod: 'get', |
| | | props: { |
| | | value: "ID", |
| | | label: "NAME", |
| | | }, |
| | | }, |
| | | { |
| | | label: '必填种类', |
| | | prop: 'requiredType', |
| | | type: 'select', |
| | | span:12, |
| | | labelWidth:"25%", |
| | | change:this.handleSelectChange, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择必填种类", |
| | | trigger: "blur" |
| | | }], |
| | | dicData:[{ |
| | | label:'1种', |
| | | value:1, |
| | | disabled:false |
| | | }, |
| | | { |
| | | label:'2种', |
| | | value:2, |
| | | disabled:false |
| | | }, |
| | | { |
| | | label:'3种', |
| | | value:3, |
| | | disabled:false |
| | | }, |
| | | { |
| | | label:'4种', |
| | | value:4, |
| | | disabled:false |
| | | option() { |
| | | return { |
| | | headerAlign: 'center', |
| | | align: 'center', |
| | | columnBtn: false, |
| | | border: true, |
| | | index: true, |
| | | rowKey: 'id', |
| | | addBtn: this.permissionList.addBtn, |
| | | editBtn: false, |
| | | height: 700, |
| | | delBtn: false, |
| | | refreshBtn: false, |
| | | column: [ |
| | | { |
| | | label: '策略名称', |
| | | prop: 'strategyName', |
| | | align: 'left', |
| | | span: 24, |
| | | labelWidth: "11%", |
| | | rules: [{ |
| | | required: true, |
| | | message: "请输入策略名称", |
| | | trigger: "blur" |
| | | }] |
| | | }, |
| | | { |
| | | label: '密码最小长度', |
| | | prop: 'minPwdLen', |
| | | span: 12, |
| | | labelWidth: "22%", |
| | | rules: [{ |
| | | required: true, |
| | | validator: (rule, value, callback) => { |
| | | this.values = value * 1 |
| | | if (value == "") { |
| | | callback(new Error('请输入密码最小长度')); |
| | | } else if (/[^\d]/g.test(value)) { |
| | | callback(new Error('密码最小长度的输入类型只能为数字类型')); |
| | | } else if (this.values >= this.values1 && this.values1 != 0) { |
| | | callback(new Error('密码最小长度不能大于密码最大长度')) |
| | | } else { |
| | | callback(); |
| | | } |
| | | ] |
| | | }, |
| | | trigger: 'blur' |
| | | }] |
| | | }, |
| | | { |
| | | label: '密码最大长度', |
| | | prop: 'maxPwdLen', |
| | | span: 12, |
| | | labelWidth: "25%", |
| | | rules: [{ |
| | | required: true, |
| | | validator: (rule, value, callback) => { |
| | | this.values1 = value * 1 |
| | | if (value == "") { |
| | | callback(new Error('请输入密码最大长度')); |
| | | } else if (this.values1 <= this.values) { |
| | | callback(new Error('密码最大长度不能小于密码最大长度')); |
| | | } else if (/[^\d]/g.test(value)) { |
| | | callback(new Error('密码最大长度的输入类型只能为数字类型')); |
| | | } else { |
| | | callback(); |
| | | } |
| | | }, |
| | | trigger: 'change' |
| | | }] |
| | | }, |
| | | { |
| | | label: '组合方法', |
| | | prop: 'combinationNames', |
| | | labelWidth: 91, |
| | | display: false, |
| | | |
| | | }, |
| | | { |
| | | label: '组合方法', |
| | | prop: 'combinationIds', |
| | | type: "checkbox", |
| | | span: 12, |
| | | labelWidth: "22%", |
| | | id: 5, |
| | | hide: true, |
| | | change: this.handleCheckboxChange, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择组合方法", |
| | | trigger: "blur" |
| | | }], |
| | | dicUrl: '/api/ubcs-system/combination/select', |
| | | dicMethod: 'get', |
| | | props: { |
| | | value: "ID", |
| | | label: "NAME", |
| | | }, |
| | | { |
| | | label: '过期时间(天)', |
| | | prop:'expirationTime', |
| | | span:12, |
| | | labelWidth:"22%", |
| | | rules: [{ |
| | | required: true, |
| | | validator: (rule, value,callback) => { |
| | | if(value == ""){ |
| | | callback(new Error('请输入过期时间')); |
| | | }else if(/[^\d]/g.test(value)){ |
| | | callback(new Error('过期时间的输入类型只能为数字类型')); |
| | | }else { |
| | | callback(); |
| | | } |
| | | }, |
| | | trigger: 'blur' |
| | | }] |
| | | }, |
| | | { |
| | | label: '必填种类', |
| | | prop: 'requiredType', |
| | | type: 'select', |
| | | span: 12, |
| | | labelWidth: "25%", |
| | | change: this.handleSelectChange, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择必填种类", |
| | | trigger: "blur" |
| | | }], |
| | | dicData: [{ |
| | | label: '1种', |
| | | value: 1, |
| | | disabled: false |
| | | }, |
| | | { |
| | | label: '提醒时间(天)', |
| | | prop:'reminderTime', |
| | | span:12, |
| | | labelWidth:"25%", |
| | | rules: [{ |
| | | required: true, |
| | | validator:(rule, value,callback) => { |
| | | if(value == ""){ |
| | | callback(new Error('请输入过期时间')); |
| | | }else if(/[^\d]/g.test(value)){ |
| | | callback(new Error('过期时间的输入类型只能为数字类型')); |
| | | }else { |
| | | callback(); |
| | | } |
| | | }, |
| | | trigger: 'blur' |
| | | }] |
| | | }, |
| | | { |
| | | label: '锁定次数(次)', |
| | | prop:'lockingNum', |
| | | span:12, |
| | | labelWidth:"22%", |
| | | rules: [{ |
| | | required: true, |
| | | validator:(rule, value,callback) => { |
| | | if(value == ""){ |
| | | callback(new Error('请输入锁定次数')); |
| | | }else if(/[^\d]/g.test(value)){ |
| | | callback(new Error('锁定次数的输入类型只能为数字类型')); |
| | | }else { |
| | | callback(); |
| | | } |
| | | }, |
| | | trigger: 'blur' |
| | | }] |
| | | }, |
| | | { |
| | | label: '锁定时间(分钟)', |
| | | prop:'lockingTime', |
| | | span:12, |
| | | labelWidth:"25%", |
| | | rules: [{ |
| | | required: true, |
| | | validator:(rule, value,callback) => { |
| | | if(value == ""){ |
| | | callback(new Error('请输入锁定时间')); |
| | | }else if(/[^\d]/g.test(value)){ |
| | | callback(new Error('锁定时间的输入类型只能为数字类型')); |
| | | }else { |
| | | callback(); |
| | | } |
| | | }, |
| | | trigger: 'blur' |
| | | }] |
| | | }, |
| | | { |
| | | label: '描述', |
| | | prop:'desc', |
| | | type: 'textarea', |
| | | span:12, |
| | | labelWidth:"22%", |
| | | rows: 5, |
| | | }, |
| | | { |
| | | label: '是否为默认策略', |
| | | prop: 'isDefault', |
| | | type: 'switch', |
| | | labelWidth: 132, |
| | | dicData:[{ |
| | | label:'否', |
| | | value:0 |
| | | },{ |
| | | label:'是', |
| | | value:1 |
| | | }] |
| | | } |
| | | ], |
| | | { |
| | | label: '2种', |
| | | value: 2, |
| | | disabled: false |
| | | }, |
| | | { |
| | | label: '3种', |
| | | value: 3, |
| | | disabled: false |
| | | }, |
| | | { |
| | | label: '4种', |
| | | value: 4, |
| | | disabled: false |
| | | } |
| | | ] |
| | | |
| | | }, |
| | | { |
| | | label: '过期时间(天)', |
| | | prop: 'expirationTime', |
| | | span: 12, |
| | | labelWidth: "22%", |
| | | rules: [{ |
| | | required: true, |
| | | validator: (rule, value, callback) => { |
| | | if (value == "") { |
| | | callback(new Error('请输入过期时间')); |
| | | } else if (/[^\d]/g.test(value)) { |
| | | callback(new Error('过期时间的输入类型只能为数字类型')); |
| | | } else { |
| | | callback(); |
| | | } |
| | | }, |
| | | trigger: 'blur' |
| | | }] |
| | | }, |
| | | { |
| | | label: '提醒时间(天)', |
| | | prop: 'reminderTime', |
| | | span: 12, |
| | | labelWidth: "25%", |
| | | rules: [{ |
| | | required: true, |
| | | validator: (rule, value, callback) => { |
| | | if (value == "") { |
| | | callback(new Error('请输入过期时间')); |
| | | } else if (/[^\d]/g.test(value)) { |
| | | callback(new Error('过期时间的输入类型只能为数字类型')); |
| | | } else { |
| | | callback(); |
| | | } |
| | | }, |
| | | trigger: 'blur' |
| | | }] |
| | | }, |
| | | { |
| | | label: '锁定次数(次)', |
| | | prop: 'lockingNum', |
| | | span: 12, |
| | | labelWidth: "22%", |
| | | rules: [{ |
| | | required: true, |
| | | validator: (rule, value, callback) => { |
| | | if (value == "") { |
| | | callback(new Error('请输入锁定次数')); |
| | | } else if (/[^\d]/g.test(value)) { |
| | | callback(new Error('锁定次数的输入类型只能为数字类型')); |
| | | } else { |
| | | callback(); |
| | | } |
| | | }, |
| | | trigger: 'blur' |
| | | }] |
| | | }, |
| | | { |
| | | label: '锁定时间(分钟)', |
| | | prop: 'lockingTime', |
| | | span: 12, |
| | | labelWidth: "25%", |
| | | rules: [{ |
| | | required: true, |
| | | validator: (rule, value, callback) => { |
| | | if (value == "") { |
| | | callback(new Error('请输入锁定时间')); |
| | | } else if (/[^\d]/g.test(value)) { |
| | | callback(new Error('锁定时间的输入类型只能为数字类型')); |
| | | } else { |
| | | callback(); |
| | | } |
| | | }, |
| | | trigger: 'blur' |
| | | }] |
| | | }, |
| | | { |
| | | label: '描述', |
| | | prop: 'desc', |
| | | type: 'textarea', |
| | | span: 12, |
| | | labelWidth: "22%", |
| | | rows: 5, |
| | | }, |
| | | { |
| | | label: '是否为默认策略', |
| | | prop: 'isDefault', |
| | | type: 'switch', |
| | | labelWidth: 132, |
| | | dicData: [{ |
| | | label: '否', |
| | | value: 0 |
| | | }, { |
| | | label: '是', |
| | | value: 1 |
| | | }] |
| | | } |
| | | ], |
| | | } |
| | | } |
| | | }, |
| | | created() { |
| | | this.onLoad() |
| | | }, |
| | | methods:{ |
| | | handleSelectChange(val){ |
| | | this.selectlength=val |
| | | methods: { |
| | | handleSelectChange(val) { |
| | | this.selectlength = val |
| | | }, |
| | | handleCheckboxChange(val) { |
| | | const arr = this.option.column[5]; |
| | |
| | | showClose: true, |
| | | }); |
| | | }, |
| | | rowDel(row){ |
| | | rowDel(row) { |
| | | this.$confirm("确定将选择数据删除?", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | |
| | | message: "操作成功!" |
| | | }); |
| | | this.onLoad(); |
| | | }).catch(res=>{ |
| | | }).catch(res => { |
| | | // console.log(res) |
| | | }) |
| | | }, |
| | | rowSave(row,done){ |
| | | rowSave(row, done) { |
| | | //将密码组合方式的数据转换为字符串 |
| | | const spliceId= row.combinationIds.toString() |
| | | row.combinationIds=spliceId |
| | | getadd(row).then((res)=>{ |
| | | const spliceId = row.combinationIds.toString() |
| | | row.combinationIds = spliceId |
| | | getadd(row).then((res) => { |
| | | // this.onLoad(this.page); |
| | | this.$message({ |
| | | type: "success", |
| | |
| | | }); |
| | | done(row) |
| | | this.onLoad() |
| | | }).catch((res)=>{ |
| | | }).catch((res) => { |
| | | this.$message.warning(res) |
| | | }) |
| | | }, |
| | | rowEdit(row){ |
| | | rowEdit(row) { |
| | | // console.log("打开编辑edit",row) |
| | | }, |
| | | handleDel(row){ |
| | | this.$refs.crud.rowDel(row,row.$index); |
| | | handleDel(row) { |
| | | this.$refs.crud.rowDel(row, row.$index); |
| | | }, |
| | | handleEdit(row){ |
| | | this.$refs.crud.rowEdit(row,row.$index); |
| | | this.editFlag=true; |
| | | this.checkboxNumber=row.combinationIds.split(",") |
| | | this.selectNumber=row.requiredType |
| | | if(this.checkboxNumber.length < this.selectNumber){ |
| | | this.$message({ |
| | | type:"warning", |
| | | message:"必填种类不能大于组合方法,请重新选择!" |
| | | }) |
| | | } |
| | | handleEdit(row) { |
| | | this.$refs.crud.rowEdit(row, row.$index); |
| | | this.editFlag = true; |
| | | this.checkboxNumber = row.combinationIds.split(",") |
| | | this.selectNumber = row.requiredType |
| | | if (this.checkboxNumber.length < this.selectNumber) { |
| | | this.$message({ |
| | | type: "warning", |
| | | message: "必填种类不能大于组合方法,请重新选择!" |
| | | }) |
| | | } |
| | | }, |
| | | rowUpdate(row,index,done){ |
| | | getupdata(row).then(()=>{ |
| | | rowUpdate(row, index, done) { |
| | | getupdata(row).then(() => { |
| | | this.onLoad() |
| | | this.$message({ |
| | | type: "success", |
| | | message: "修改成功!" |
| | | }); |
| | | done() |
| | | }).catch(res=>{ |
| | | }).catch(res => { |
| | | // console.log(res) |
| | | }) |
| | | }, |
| | |
| | | // this.loading = false; |
| | | // this.selectionClear(); |
| | | // console.log(res) |
| | | this.page.total=res.data.data.total |
| | | this.data=res.data.data.records |
| | | this.page.total = res.data.data.total |
| | | this.data = res.data.data.records |
| | | }); |
| | | } |
| | | } |
| | |
| | | </template> |
| | | <template slot="tenantName" |
| | | slot-scope="{row}"> |
| | | <el-tag>{{ row.tenantName }}</el-tag> |
| | | <el-tag v-if="row.tenantName">{{ row.tenantName }}</el-tag> |
| | | </template> |
| | | <template slot="roleName" |
| | | slot-scope="{row}"> |
| | | <el-tag>{{ row.roleName }}</el-tag> |
| | | <el-tag v-if="row.roleName">{{ row.roleName }}</el-tag> |
| | | </template> |
| | | <template slot="deptName" |
| | | slot-scope="{row}"> |
| | | <el-tag>{{ row.deptName }}</el-tag> |
| | | <el-tag v-if="row.deptName">{{ row.deptName }}</el-tag> |
| | | </template> |
| | | <template slot="userTypeName" |
| | | slot-scope="{row}"> |
| | | <el-tag>{{ row.userTypeName }}</el-tag> |
| | | <el-tag v-if="row.userTypeName">{{ row.userTypeName }}</el-tag> |
| | | </template> |
| | | </avue-crud> |
| | | </div> |
| | |
| | | <el-row> |
| | | <el-col :span="24"> |
| | | <basic-container title="待办流程任务"> |
| | | <avue-crud ref="crud" :table-loading="loading" :data="todoData" :option="todoOption" |
| | | <avue-crud ref="crud" :data="todoData" :option="todoOption" :page.sync="page" |
| | | :table-loading="loading" |
| | | @on-load="onLoad" |
| | | @cell-click="cellHandle" |
| | | :page.sync="page"> |
| | | @cell-click="cellHandle"> |
| | | <template #menu="{size,row,index}"> |
| | | <el-button @click="gotodo(row,index)" |
| | | <el-button :size="size" |
| | | icon="el-icon-check" |
| | | type="text" |
| | | :size="size">执行</el-button> |
| | | @click="gotodo(row,index)">执行 |
| | | </el-button> |
| | | </template> |
| | | </avue-crud> |
| | | </basic-container> |
| | | </el-col> |
| | | <!-- <el-col :span="8">--> |
| | | <!-- <el-row>--> |
| | | <!-- <basic-container title="消息列表">--> |
| | | <!-- <el-collapse v-model="logActiveNames" @change="handleChange">--> |
| | | <!-- <el-collapse-item v-for="item in noticeData" :title="item.title" :name="item.id">--> |
| | | <!-- <div>{{item.subtitle}}</div>--> |
| | | <!-- </el-collapse-item>--> |
| | | <!-- </el-collapse>--> |
| | | <!-- </basic-container>--> |
| | | <!-- </el-row>--> |
| | | <!-- <el-col :span="8">--> |
| | | <!-- <el-row>--> |
| | | <!-- <basic-container title="消息列表">--> |
| | | <!-- <el-collapse v-model="logActiveNames" @change="handleChange">--> |
| | | <!-- <el-collapse-item v-for="item in noticeData" :title="item.title" :name="item.id">--> |
| | | <!-- <div>{{item.subtitle}}</div>--> |
| | | <!-- </el-collapse-item>--> |
| | | <!-- </el-collapse>--> |
| | | <!-- </basic-container>--> |
| | | <!-- </el-row>--> |
| | | |
| | | <!-- </el-col>--> |
| | | <!-- </el-col>--> |
| | | </el-row> |
| | | <el-dialog title="修改密码" :visible.sync="dialogFormVisible" append-to-body :close-on-press-escape="false" :before-close="Xdelhandle"> |
| | | <el-form :model="form" :rules="rules" ref="form"> |
| | | <el-form-item label="原密码" :label-width="formLabelWidth" prop="oldPassword"> |
| | | <el-dialog :before-close="Xdelhandle" :close-on-press-escape="false" :visible.sync="dialogFormVisible" |
| | | append-to-body |
| | | title="修改密码"> |
| | | <el-form ref="form" :model="form" :rules="rules"> |
| | | <el-form-item :label-width="formLabelWidth" label="原密码" prop="oldPassword"> |
| | | <el-input v-model="form.oldPassword" autocomplete="off"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="新密码" :label-width="formLabelWidth" prop="newPassword"> |
| | | <el-form-item :label-width="formLabelWidth" label="新密码" prop="newPassword"> |
| | | <el-input v-model="form.newPassword" autocomplete="off"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="确认密码" :label-width="formLabelWidth" prop="newPassword1"> |
| | | <el-form-item :label-width="formLabelWidth" label="确认密码" prop="newPassword1"> |
| | | <el-input v-model="form.newPassword1" autocomplete="off"></el-input> |
| | | </el-form-item> |
| | | </el-form> |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import {mapGetters} from "vuex"; |
| | | import {check,updatePassword} from "@/api/system/user" |
| | | import md5 from "js-md5"; |
| | | import {removeToken} from "@/util/auth"; |
| | | import Statistic from './Statistic.vue'; |
| | | import {validatenull} from "@/util/validate"; |
| | | import {flowCategory,flowRoute} from "@/util/flow"; |
| | | import {todoList} from "@/api/work/work"; |
| | | import {mapGetters} from "vuex"; |
| | | import {check, updatePassword} from "@/api/system/user" |
| | | import md5 from "js-md5"; |
| | | import {removeToken} from "@/util/auth"; |
| | | import Statistic from './Statistic.vue'; |
| | | import {validatenull} from "@/util/validate"; |
| | | import {flowCategory, flowRoute} from "@/util/flow"; |
| | | import {todoList} from "@/api/work/work"; |
| | | |
| | | export default { |
| | | name: "wel", |
| | | components: {Statistic}, |
| | | data() { |
| | | return { |
| | | loading: false, |
| | | page: { |
| | | pageSize: 10, |
| | | currentPage: 1, |
| | | total: 0 |
| | | export default { |
| | | name: "wel", |
| | | components: {Statistic}, |
| | | data() { |
| | | return { |
| | | loading: false, |
| | | page: { |
| | | pageSize: 10, |
| | | currentPage: 1, |
| | | total: 0 |
| | | }, |
| | | // 代办流程任务data |
| | | todoData: [], |
| | | // 代办流程任务option |
| | | todoOption: { |
| | | height: 500, |
| | | addBtn: false, |
| | | header: false, |
| | | align: 'center', |
| | | index: true, |
| | | menuWidth: 80, |
| | | editBtn: false, |
| | | delBtn: false, |
| | | border: true, |
| | | column: [{ |
| | | label: '任务名称', |
| | | prop: 'taskName', |
| | | sortable: true, |
| | | headerAlign: 'center', |
| | | align: 'left', |
| | | html: true, |
| | | width: 300, |
| | | overHidden: true, |
| | | formatter: (val) => { |
| | | return '<a name="processname" href="javascript:;" style="color: #66b1ff;">' + val.variables.processName + '-' + val.taskName + '</a>' |
| | | } |
| | | }, |
| | | // 代办流程任务data |
| | | todoData: [], |
| | | // 代办流程任务option |
| | | todoOption: { |
| | | height:500, |
| | | addBtn: false, |
| | | header: false, |
| | | align: 'center', |
| | | index: true, |
| | | menuWidth: 80, |
| | | editBtn: false, |
| | | delBtn: false, |
| | | border:true, |
| | | column: [{ |
| | | label: '任务名称', |
| | | prop: 'taskName', |
| | | sortable:true, |
| | | headerAlign:'center', |
| | | align:'left', |
| | | html: true, |
| | | width:300, |
| | | overHidden:true, |
| | | { |
| | | label: '上一步处理时间', |
| | | sortable: true, |
| | | width: 150, |
| | | prop: 'createTime' |
| | | }, |
| | | { |
| | | label: '上一步操作人', |
| | | sortable: true, |
| | | width: 120, |
| | | prop: 'historyActivityAssigneName' |
| | | }, |
| | | { |
| | | label: '流程描述', |
| | | prop: 'processDesc', |
| | | overHidden: true, |
| | | formatter: (val) => { |
| | | return '<a name="processname" href="javascript:;" style="color: #66b1ff;">' + val.variables.processName+'-'+val.taskName + '</a>' |
| | | return val.variables.processDesc |
| | | } |
| | | }, |
| | | { |
| | | label: '上一步处理时间', |
| | | sortable:true, |
| | | width:150, |
| | | prop: 'createTime' |
| | | }, |
| | | { |
| | | label: '上一步操作人', |
| | | sortable:true, |
| | | width:120, |
| | | prop: 'historyActivityAssigneName' |
| | | }, |
| | | { |
| | | label: '流程描述', |
| | | prop: 'processDesc', |
| | | overHidden:true, |
| | | formatter: (val) => { |
| | | return val.variables.processDesc |
| | | } |
| | | }, |
| | | { |
| | | label: '所属流程模板', |
| | | sortable:true, |
| | | overHidden:true, |
| | | prop: 'categoryName' |
| | | } |
| | | ] |
| | | }, |
| | | noticeData: [{ |
| | | img: '/img/bg/vip1.png', |
| | | title: '史蒂夫·乔布斯 关注了你', |
| | | subtitle: '05-08 15:08', |
| | | tag: '已经开始', |
| | | status: 0 |
| | | }, { |
| | | img: '/img/bg/vip2.png', |
| | | title: '斯蒂夫·沃兹尼亚克 关注了你', |
| | | subtitle: '05-08 15:08', |
| | | tag: '未开始', |
| | | status: 1 |
| | | }, { |
| | | img: '/img/bg/vip3.png', |
| | | title: '蒂姆·库克 关注了你', |
| | | subtitle: '05-08 15:08', |
| | | status: 3, |
| | | tag: '有错误' |
| | | }, { |
| | | img: '/img/bg/vip4.png', |
| | | title: '比尔·费尔南德斯 关注了你', |
| | | subtitle: '05-08 15:08', |
| | | status: 4, |
| | | tag: '已完成' |
| | | }], |
| | | logActiveNames: ['28'], |
| | | userarr: [], |
| | | userid: '', |
| | | updataArr: [], |
| | | dialogFormVisible: false, |
| | | form: { |
| | | oldPassword: '', |
| | | newPassword: '', |
| | | newPassword1: '', |
| | | }, |
| | | rules: { |
| | | oldPassword: [ |
| | | {required: true, message: '请输入原密码', trigger: 'blur'} |
| | | ], |
| | | newPassword: [ |
| | | {required: true, message: '请输入新密码', trigger: 'blur'} |
| | | ], |
| | | newPassword1: [ |
| | | {required: true, message: '请输确认密码', trigger: 'blur'} |
| | | ] |
| | | }, |
| | | }; |
| | | { |
| | | label: '所属流程模板', |
| | | sortable: true, |
| | | overHidden: true, |
| | | prop: 'categoryName' |
| | | } |
| | | ] |
| | | }, |
| | | noticeData: [{ |
| | | img: '/img/bg/vip1.png', |
| | | title: '史蒂夫·乔布斯 关注了你', |
| | | subtitle: '05-08 15:08', |
| | | tag: '已经开始', |
| | | status: 0 |
| | | }, { |
| | | img: '/img/bg/vip2.png', |
| | | title: '斯蒂夫·沃兹尼亚克 关注了你', |
| | | subtitle: '05-08 15:08', |
| | | tag: '未开始', |
| | | status: 1 |
| | | }, { |
| | | img: '/img/bg/vip3.png', |
| | | title: '蒂姆·库克 关注了你', |
| | | subtitle: '05-08 15:08', |
| | | status: 3, |
| | | tag: '有错误' |
| | | }, { |
| | | img: '/img/bg/vip4.png', |
| | | title: '比尔·费尔南德斯 关注了你', |
| | | subtitle: '05-08 15:08', |
| | | status: 4, |
| | | tag: '已完成' |
| | | }], |
| | | logActiveNames: ['28'], |
| | | userarr: [], |
| | | userid: '', |
| | | updataArr: [], |
| | | dialogFormVisible: false, |
| | | form: { |
| | | oldPassword: '', |
| | | newPassword: '', |
| | | newPassword1: '', |
| | | }, |
| | | rules: { |
| | | oldPassword: [ |
| | | {required: true, message: '请输入原密码', trigger: 'blur'} |
| | | ], |
| | | newPassword: [ |
| | | {required: true, message: '请输入新密码', trigger: 'blur'} |
| | | ], |
| | | newPassword1: [ |
| | | {required: true, message: '请输确认密码', trigger: 'blur'} |
| | | ] |
| | | }, |
| | | }; |
| | | }, |
| | | // 拿到userid请求接口 |
| | | created() { |
| | | this.updataArr = JSON.parse(localStorage.getItem("updataid")) |
| | | this.userid = this.$store.state.user.upadatastatus.user_id |
| | | const pageFlag = localStorage.getItem("pageFlag") |
| | | if (pageFlag === null) { |
| | | this.checkhandle() |
| | | localStorage.setItem("pageFlag", true) |
| | | } |
| | | }, |
| | | computed: { |
| | | ...mapGetters(["userInfo", "flowRoutes"]), |
| | | }, |
| | | methods: { |
| | | handleChange(val) { |
| | | window.console.log(val); |
| | | }, |
| | | // 拿到userid请求接口 |
| | | created() { |
| | | this.updataArr = JSON.parse(localStorage.getItem("updataid")) |
| | | this.userid = this.$store.state.user.upadatastatus.user_id |
| | | const pageFlag = localStorage.getItem("pageFlag") |
| | | if (pageFlag === null) { |
| | | Xdelhandle() { |
| | | removeToken() |
| | | this.dialogFormVisible = false |
| | | }, |
| | | // 关闭弹窗后清除token返回到登录页面 |
| | | delhandle() { |
| | | removeToken() |
| | | this.dialogFormVisible = false |
| | | }, |
| | | // 修改密码方法 |
| | | addok() { |
| | | this.dialogFormVisible = false |
| | | updatePassword(md5(this.form.oldPassword), this.form.newPassword, this.form.newPassword1).then(res => { |
| | | if (res.data.code == 200) { |
| | | this.$message({ |
| | | type: "success", |
| | | message: "修改成功!" |
| | | }) |
| | | } |
| | | }).catch(res => { |
| | | console.log(res) |
| | | this.checkhandle() |
| | | localStorage.setItem("pageFlag", true) |
| | | } |
| | | }) |
| | | }, |
| | | computed: { |
| | | ...mapGetters(["userInfo", "flowRoutes"]), |
| | | }, |
| | | methods: { |
| | | handleChange(val) { |
| | | window.console.log(val); |
| | | }, |
| | | Xdelhandle() { |
| | | removeToken() |
| | | this.dialogFormVisible = false |
| | | }, |
| | | // 关闭弹窗后清除token返回到登录页面 |
| | | delhandle() { |
| | | removeToken() |
| | | this.dialogFormVisible = false |
| | | }, |
| | | // 修改密码方法 |
| | | addok() { |
| | | this.dialogFormVisible = false |
| | | updatePassword(md5(this.form.oldPassword), this.form.newPassword, this.form.newPassword1).then(res => { |
| | | if (res.data.code == 200) { |
| | | // 提醒时间请求,也需要判断是否为超管身份,超管身份不判断 |
| | | checkhandle() { |
| | | if (this.updataArr.user_id != '0' && this.updataArr.tenant_id !== '000000') { |
| | | check(this.userid).then(res => { |
| | | if (res.data.data > 0) { |
| | | this.$message({ |
| | | type: "success", |
| | | message: "修改成功!" |
| | | type: 'warning', |
| | | message: `你还有${res.data.data}天就要修改密码了` |
| | | }) |
| | | } else if (res.data.data == -1) { |
| | | this.$message({ |
| | | type: "warning", |
| | | message: "密码策略已被修改,请重新修改密码!" |
| | | }) |
| | | setTimeout(() => { |
| | | this.dialogFormVisible = true |
| | | }, 1500) |
| | | } else if (res.data.data == 0) { |
| | | // this.$message({ |
| | | // type: 'success', |
| | | // message: "操作成功" |
| | | // }) |
| | | } |
| | | }).catch(res => { |
| | | console.log(res) |
| | | this.checkhandle() |
| | | }) |
| | | }, |
| | | // 提醒时间请求,也需要判断是否为超管身份,超管身份不判断 |
| | | checkhandle() { |
| | | if (this.updataArr.user_id != '0' && this.updataArr.tenant_id !== '000000') { |
| | | check(this.userid).then(res => { |
| | | if (res.data.data > 0) { |
| | | this.$message({ |
| | | type: 'warning', |
| | | message: `你还有${res.data.data}天就要修改密码了` |
| | | }) |
| | | } else if (res.data.data == -1) { |
| | | this.$message({ |
| | | type: "warning", |
| | | message: "密码策略已被修改,请重新修改密码!" |
| | | }) |
| | | setTimeout(() => { |
| | | this.dialogFormVisible = true |
| | | }, 1500) |
| | | } else if (res.data.data == 0) { |
| | | // this.$message({ |
| | | // type: 'success', |
| | | // message: "操作成功" |
| | | // }) |
| | | } |
| | | }).catch(res => { |
| | | console.log(res) |
| | | }) |
| | | } |
| | | }, |
| | | onLoad(page, params = {}) { |
| | | this.loading = true; |
| | | const query = { |
| | | ...this.query, |
| | | category: (params.category) ? flowCategory(params.category) : null |
| | | }; |
| | | todoList(page.currentPage, page.pageSize, Object.assign(params, query)).then(res => { |
| | | const data = res.data.data; |
| | | this.page.total = data.total; |
| | | this.todoData = data.records; |
| | | this.loading = false; |
| | | }).catch(error => { |
| | | this.$message.error(error); |
| | | this.loading = false; |
| | | }) |
| | | }, |
| | | cellHandle(row, column, cell, event) { |
| | | if (column.property == 'taskName') { |
| | | this.gotodo(row) |
| | | } |
| | | }, |
| | | gotodo(row, index) { |
| | | this.$router.push({ path: `/work/process/${flowRoute(this.flowRoutes, row.category)}/handle/${row.taskId}/${row.processInstanceId}/${row.businessId}` }); |
| | | } |
| | | }, |
| | | onLoad(page, params = {}) { |
| | | this.loading = true; |
| | | const query = { |
| | | ...this.query, |
| | | category: (params.category) ? flowCategory(params.category) : null |
| | | }; |
| | | todoList(page.currentPage, page.pageSize, Object.assign(params, query)).then(res => { |
| | | const data = res.data.data; |
| | | this.page.total = data.total; |
| | | this.todoData = data.records; |
| | | this.loading = false; |
| | | }).catch(error => { |
| | | this.$message.error(error); |
| | | this.loading = false; |
| | | }) |
| | | }, |
| | | cellHandle(row, column, cell, event) { |
| | | if (column.property == 'taskName') { |
| | | this.gotodo(row) |
| | | } |
| | | }, |
| | | gotodo(row, index) { |
| | | this.$router.push({path: `/work/process/${flowRoute(this.flowRoutes, row.category)}/handle/${row.taskId}/${row.processInstanceId}/${row.businessId}`}); |
| | | } |
| | | }; |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <style> |
| | | .el-font-size { |
| | | font-size: 14px; |
| | | } |
| | | .el-font-size { |
| | | font-size: 14px; |
| | | } |
| | | |
| | | </style> |
| | | |
| | |
| | | import java.nio.file.Files; |
| | | import java.nio.file.Path; |
| | | import java.nio.file.attribute.BasicFileAttributes; |
| | | import java.nio.file.attribute.FileTime; |
| | | import java.rmi.ServerException; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.*; |
| | |
| | | LocalLogVO localLog = new LocalLogVO(); |
| | | localLog.setLogName(item.getName()); |
| | | localLog.setLogType(getLogType(item.getName())); |
| | | localLog.setCreateTime(getLastModifiedOrCreatTime(false,logParentPath)); |
| | | localLog.setLastModifier(getLastModifiedOrCreatTime(true,logParentPath)); |
| | | localLog.setCreateTime(getLastModifiedOrCreatTime(false,item.getPath())); |
| | | localLog.setLastModifier(getLastModifiedOrCreatTime(true,item.getPath())); |
| | | localLog.setLogPath(logParentPath); |
| | | String serviceId = getServiceId(logParentPath); |
| | | localLog.setServiceId(serviceId); |
| | |
| | | File file = new File(fullPath); |
| | | if(file.exists()){ |
| | | LocalLogVO localLogVO = new LocalLogVO(); |
| | | localLogVO.setLastModifier(getLastModifiedOrCreatTime(true,fullPath)); |
| | | localLogVO.setCreateTime(getLastModifiedOrCreatTime(false,fullPath)); |
| | | localLogVO.setLastModifier(getLastModifiedOrCreatTime(true,file.getPath())); |
| | | localLogVO.setCreateTime(getLastModifiedOrCreatTime(false,file.getPath())); |
| | | localLogVO.setLogPath(fullPath); |
| | | String serviceId = getServiceId(file.getPath()); |
| | | localLogVO.setServiceId(serviceId); |
| | |
| | | * @param dockingGroupDataVO AO/TO的信息 |
| | | * @return 执行结果 |
| | | */ |
| | | |
| | | @PostMapping("/externalMainData/receiveAddApply") |
| | | DockingResultVO receiveEditApply(@NotNull @RequestBody DockingGroupDataVO dockingGroupDataVO)throws VciBaseException; |
| | | |
| | |
| | | // 设置所有者 |
| | | baseModel.setOwner(AuthUtil.getUserId().toString()); |
| | | } |
| | | |
| | | baseModel.setVersionSeq(1); |
| | | baseModel.setVersionRule("0"); |
| | | baseModel.setVersionValue("1"); |
| | |
| | | @ApiOperationSupport(order = 2) |
| | | @ApiOperation(value = "集团码申请", notes = "dockingPreAttrMappingVOList") |
| | | public R applyGroupCode(String oids,String btmName){ |
| | | List<BaseModelVO> BaseModelVOs=new ArrayList<>(); |
| | | List<BaseModelVO> BaseModelVOS=new ArrayList<>(); |
| | | try { |
| | | return groupMdmInterService.applyGroupCode(oids,btmName); |
| | | }catch (Throwable e){ |
| | |
| | | } |
| | | query.setCurrent(queryObject.getPage()); |
| | | query.setSize(queryObject.getLimit()); |
| | | IPage<DockingSystemConfigVO> pages=dockingSystemConfigService.page(condtionMap,query); |
| | | IPage<DockingSystemConfigVO> pages= dockingSystemConfigService.page(condtionMap,query); |
| | | return R.data(pages); |
| | | } |
| | | |
| | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.baomidou.mybatisplus.extension.toolkit.SqlHelper; |
| | | import com.vci.ubcs.code.constant.FrameWorkDefaultValueConstant; |
| | | |
| | | import com.vci.ubcs.code.dto.CodeBasicSecDTO; |
| | |
| | | } |
| | | VciBaseUtil.alertNotNull(codeRuleDTO, "需要添加的数据对象"); |
| | | CodeRule codeRuleDO = new CodeRule(); |
| | | DefaultAttrAssimtUtil.addDefaultAttrAssimt(codeRuleDO,MdmBtmTypeConstant.CODE_RULE); |
| | | BeanUtilForVCI.copyPropertiesIgnoreCase(codeRuleDTO, codeRuleDO); |
| | | boolean exFlag = codeRuleMapper.insert(codeRuleDO)>0; |
| | | DefaultAttrAssimtUtil.addDefaultAttrAssimt(codeRuleDO,MdmBtmTypeConstant.CODE_RULE); |
| | | boolean exFlag = SqlHelper.retBool(codeRuleMapper.insert(codeRuleDO)); |
| | | |
| | | List<CodeBasicSecDTO> secList = codeRuleDTO.getElements(); |
| | | List<CodeBasicSec> codeBasicSecs = new ArrayList<>(); |
| | | List<CodeBasicSec> codeClassifySec = new ArrayList<>(); |
| | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.baomidou.mybatisplus.extension.toolkit.SqlHelper; |
| | | import com.vci.ubcs.code.entity.CodeShowFieldConfig; |
| | | import com.vci.ubcs.code.mapper.CodeShowFieldConfigMapper; |
| | | import com.vci.ubcs.code.service.ICodeShowFieldConfigService; |
| | |
| | | */ |
| | | @Override |
| | | public boolean insert(CodeShowFieldConfig codeShowFieldConfig) { |
| | | return this.codeShowFieldConfigMapper.insert(codeShowFieldConfig)>0; |
| | | return SqlHelper.retBool(this.codeShowFieldConfigMapper.insert(codeShowFieldConfig)); |
| | | } |
| | | |
| | | @Override |
| | |
| | | */ |
| | | @Override |
| | | public boolean deleteById(String oid) { |
| | | return this.codeShowFieldConfigMapper.deleteById(oid) > 0; |
| | | return SqlHelper.retBool(this.codeShowFieldConfigMapper.deleteById(oid)); |
| | | } |
| | | |
| | | @Override |
| | |
| | | LambdaQueryWrapper<CodeShowFieldConfig> lambdaQueryWrapper = Wrappers.<CodeShowFieldConfig>query() |
| | | .lambda() |
| | | .eq(CodeShowFieldConfig::getReferConfigOid, oid); |
| | | return this.codeShowFieldConfigMapper.delete(lambdaQueryWrapper) > 0; |
| | | return SqlHelper.retBool(this.codeShowFieldConfigMapper.delete(lambdaQueryWrapper)); |
| | | } |
| | | |
| | | } |
| | |
| | | */ |
| | | @Override |
| | | public boolean insert(CodeSrchCondConfig codeSrchcondconfig) { |
| | | return this.codeSrchcondconfigMapper.insert(codeSrchcondconfig)>0; |
| | | return this.codeSrchcondconfigMapper.insert(codeSrchcondconfig)>0; |
| | | } |
| | | |
| | | @Override |
| | |
| | | |
| | | @Override |
| | | public IPage<DockingSystemConfigVO> page(Map<String,String>codtionMap, Query query) { |
| | | |
| | | IPage<DockingSystemConfig> pages = page(Condition.getPage(query), UBCSSqlKeyword.buildConditionByMapString(codtionMap)); |
| | | List<DockingSystemConfig> dockingSystemConfigList= pages.getRecords(); |
| | | dockingSystemConfigList.stream().forEach(dockingSystemConfig -> { |
| | |
| | | // dockingSystemConfig.setSourceSysName(""); |
| | | //dockingSystemConfig.setTargetSysName(""); |
| | | }); |
| | | return DockingSystemConfigWrapper.build().pageVO(pages); |
| | | return DockingSystemConfigWrapper.build().pageVO(pages); |
| | | } |
| | | |
| | | /** |
| | |
| | | dockingLog.setClassifyName(dockingSystemConfigDTO.getClassifyName()); |
| | | dockingLog.setId(dockingSystemConfigDTO.getId()); |
| | | dockingLog.setUniqueCode(""); |
| | | dockingLog.setCreateTime(new Date()); |
| | | dockingLog.setInterfaceStatus(isSend?"true":"false"); |
| | | dockingLog.setParamString(paramString); |
| | | dockingLog.setType(DATA_LOGE_OUT); |
| | |
| | | import java.util.concurrent.ConcurrentHashMap; |
| | | import java.util.concurrent.CopyOnWriteArrayList; |
| | | import java.util.concurrent.CopyOnWriteArraySet; |
| | | import java.util.concurrent.ForkJoinPool; |
| | | import java.util.concurrent.atomic.AtomicBoolean; |
| | | import java.util.stream.Collectors; |
| | | |
| | |
| | | * 客户现场excel为老版本,导出的总数限制为65535 |
| | | */ |
| | | public static final int EXPORT_LIMIT = 65535; |
| | | |
| | | /** |
| | | * 自定义并发ForkJoinPool |
| | | */ |
| | | private static final ForkJoinPool customForkJoinPool = new ForkJoinPool(Runtime.getRuntime().availableProcessors()-1); |
| | | |
| | | /** |
| | | * 批量申请:选取选中分类下的所有模板关键属性,相似属性,必填属性,写入execl中 |
| | |
| | | // 查询不需要参与关键属性校验的除自己以外的所有分类oid |
| | | final String isParticipateCheckOids = classifyService.selectLeafByParentClassifyOid(classifyFullInfo.getTopClassifyVO().getOid(), classifyFullInfo.getCurrentClassifyVO().getOid()); |
| | | final BladeUser user = AuthUtil.getUser(); |
| | | //cboList = new CopyOnWriteArrayList<>(cboList); |
| | | // TODO:Thread limit exceeded replacing blocked 异常是这部分代码抛出的,所以暂时将parallelStream改成了stream |
| | | List<ClientBusinessObject> repeatDataMap = cboList.stream().filter(cbo -> { |
| | | //每行都得查询.如果其中出现了错误,我们就直接抛出异常,其余的显示 |
| | | //VciBaseUtil.setCurrentUserSessionInfo(sessionInfo); |
| | | Map<String, String> conditionMap = new HashMap<>(); |
| | | ketAttrMap.forEach((attrId, attrVO) -> { |
| | | String value =cbo.getAttributeValue(attrId.toLowerCase(Locale.ROOT)); |
| | | if (value == null) { |
| | | value = ""; |
| | | } |
| | | value= value.replace(REQUIRED_CHAR,SPECIAL_CHAR); |
| | | engineService.wrapperKeyAttrConditionMap(value, keyRuleVO, attrId, trim, ignoreCase, ignoreWidth, trimAll, conditionMap); |
| | | }); |
| | | if (!CollectionUtils.isEmpty(ketAttrMap)) { |
| | | // 添加不参与关键属性校验的分类oid判断 |
| | | if(Func.isNotBlank(isParticipateCheckOids)){ |
| | | conditionMap.put("t.codeclsfid",QueryOptionConstant.NOTIN+isParticipateCheckOids); |
| | | } |
| | | if(isEdit){//如果是更改则需排除系统本身 |
| | | conditionMap.put("t.id",QueryOptionConstant.NOTEQUAL+cbo.getId()); |
| | | } |
| | | conditionMap.put("t.lastr", "1"); |
| | | conditionMap.put("t.lastv", "1"); |
| | | |
| | | CodeTemplateAttrSqlBO sqlBO = engineService.getSqlByTemplateVO(classifyFullInfo.getTopClassifyVO().getBtmTypeId(), templateVO, conditionMap, null); |
| | | List<String> repeatData = commonsMapper.selectList(sqlBO.getSqlId()); |
| | | if(!repeatData.isEmpty()){ |
| | | final List<Map<String,String>> newDataList = commonsMapper.queryByOnlySqlForMap(sqlBO.getSqlUnPage()); |
| | | DefaultAttrAssimtUtil.mapToLowerCase(newDataList,true); |
| | | //List<ClientBusinessObject> newCboList=ChangeMapTOClientBusinessObjects(newDataList); |
| | | List<BaseModel> newCboList = new ArrayList<>(); |
| | | newDataList.stream().forEach(stringStringMap -> { |
| | | BaseModel baseModel=new BaseModel(); |
| | | DefaultAttrAssimtUtil.copplyDefaultAttrAssimt(stringStringMap,baseModel,false,user); |
| | | baseModel.setData(stringStringMap); |
| | | newCboList.add(baseModel); |
| | | }); |
| | | // 添加错误值 |
| | | String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX); |
| | | errorMap.put(rowIndex, "重复的记录编号为:"+repeatData.stream().collect(Collectors.joining(","))); |
| | | if(!CollectionUtils.isEmpty(newCboList)) { |
| | | indexTODataMap.put(cbo.getAttributeValue(IMPORT_ROW_INDEX), newCboList); |
| | | // TODO:Thread limit exceeded replacing blocked 异常是这部分代码抛出的 |
| | | // ,所以暂时将parallelStream改成了stream,改成了stream之后发现巨慢 |
| | | // customForkJoinPool控制并发度 |
| | | List<ClientBusinessObject> finalCboList = cboList; |
| | | List<ClientBusinessObject> repeatDataMap = (List<ClientBusinessObject>) customForkJoinPool.submit(()->{ |
| | | finalCboList.parallelStream().filter(cbo -> { |
| | | //每行都得查询.如果其中出现了错误,我们就直接抛出异常,其余的显示 |
| | | //VciBaseUtil.setCurrentUserSessionInfo(sessionInfo); |
| | | Map<String, String> conditionMap = new HashMap<>(); |
| | | ketAttrMap.forEach((attrId, attrVO) -> { |
| | | String value =cbo.getAttributeValue(attrId.toLowerCase(Locale.ROOT)); |
| | | if (value == null) { |
| | | value = ""; |
| | | } |
| | | value= value.replace(REQUIRED_CHAR,SPECIAL_CHAR); |
| | | engineService.wrapperKeyAttrConditionMap(value, keyRuleVO, attrId, trim, ignoreCase, ignoreWidth, trimAll, conditionMap); |
| | | }); |
| | | if (!CollectionUtils.isEmpty(ketAttrMap)) { |
| | | // 添加不参与关键属性校验的分类oid判断 |
| | | if(Func.isNotBlank(isParticipateCheckOids)){ |
| | | conditionMap.put("t.codeclsfid",QueryOptionConstant.NOTIN+isParticipateCheckOids); |
| | | } |
| | | if(isEdit){//如果是更改则需排除系统本身 |
| | | conditionMap.put("t.id",QueryOptionConstant.NOTEQUAL+cbo.getId()); |
| | | } |
| | | conditionMap.put("t.lastr", "1"); |
| | | conditionMap.put("t.lastv", "1"); |
| | | |
| | | CodeTemplateAttrSqlBO sqlBO = engineService.getSqlByTemplateVO(classifyFullInfo.getTopClassifyVO().getBtmTypeId(), templateVO, conditionMap, null); |
| | | List<String> repeatData = commonsMapper.selectList(sqlBO.getSqlId()); |
| | | if(!repeatData.isEmpty()){ |
| | | final List<Map<String,String>> newDataList = commonsMapper.queryByOnlySqlForMap(sqlBO.getSqlUnPage()); |
| | | DefaultAttrAssimtUtil.mapToLowerCase(newDataList,true); |
| | | //List<ClientBusinessObject> newCboList=ChangeMapTOClientBusinessObjects(newDataList); |
| | | List<BaseModel> newCboList = new ArrayList<>(); |
| | | newDataList.stream().forEach(stringStringMap -> { |
| | | BaseModel baseModel=new BaseModel(); |
| | | DefaultAttrAssimtUtil.copplyDefaultAttrAssimt(stringStringMap,baseModel,false,user); |
| | | baseModel.setData(stringStringMap); |
| | | newCboList.add(baseModel); |
| | | }); |
| | | // 添加错误值 |
| | | String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX); |
| | | errorMap.put(rowIndex, "重复的记录编号为:"+repeatData.stream().collect(Collectors.joining(","))); |
| | | if(!CollectionUtils.isEmpty(newCboList)) { |
| | | indexTODataMap.put(cbo.getAttributeValue(IMPORT_ROW_INDEX), newCboList); |
| | | } |
| | | } |
| | | return !repeatData.isEmpty(); |
| | | }else{ |
| | | return false; |
| | | } |
| | | return !repeatData.isEmpty(); |
| | | }else{ |
| | | return false; |
| | | } |
| | | }).collect(Collectors.toList()); |
| | | }).collect(Collectors.toList()); |
| | | }).join(); |
| | | if(!CollectionUtils.isEmpty(repeatDataMap)){ |
| | | resultVO.setKeyAttrRepeatRowIndexList(repeatDataMap.stream().map(s->s.getAttributeValue(IMPORT_ROW_INDEX)).collect(Collectors.toSet())); |
| | | } |
| | |
| | | resultDataObjectDetailDOs.add(xmlResultDataObjectDetailDO); |
| | | }); |
| | | }else{ |
| | | |
| | | XMLResultDataObjectDetailDO xmlResultDataObjectDetailDO = new XMLResultDataObjectDetailDO(); |
| | | xmlResultDataObjectDetailDO.setCode(""); |
| | | xmlResultDataObjectDetailDO.setId(""); |
| | |
| | | resultDataObjectDetailDOs.add(xmlResultDataObjectDetailDO); |
| | | } |
| | | e.printStackTrace(); |
| | | log.error(e.getMessage()); |
| | | }finally { |
| | | XMLResultClassfyVO resultClassfyVO = new XMLResultClassfyVO(); |
| | | resultClassfyVO.setClassCode(classVO.getClassCode()); |
| | |
| | | }catch (Throwable e){ |
| | | e.printStackTrace(); |
| | | msg="申请编码失败:"+e.getMessage(); |
| | | log.error(msg); |
| | | /* XMLResultSystemVO XMLResultSystemVO=new XMLResultSystemVO(); |
| | | XMLResultSystemVO.setErrorid(errorid); |
| | | XMLResultSystemVO.setMsg("申请编码失败:->"+e.getMessage()); |
| | |
| | | this.saveLogs(systemId, systemId, data, resultStr, issucess[0], msg, "applyCode"); |
| | | }catch (Throwable e){ |
| | | e.printStackTrace(); |
| | | log.error(e.getMessage()); |
| | | } |
| | | } |
| | | log.info("返回参数:"+resultStr); |
| | |
| | | @ApiOperationSupport(order = 5) |
| | | @ApiOperation(value = "修改", notes = "传入omdEnum") |
| | | public R update(@Valid @RequestBody Enum omdEnum) { |
| | | return R.status(omdEnumService.updateById(omdEnum)); |
| | | return R.status(omdEnumService.updateOmdEnum(omdEnum)); |
| | | } |
| | | |
| | | /** |
| | |
| | | @ApiOperationSupport(order = 6) |
| | | @ApiOperation(value = "新增或修改", notes = "传入omdEnum") |
| | | public R submit(@Valid @RequestBody Enum omdEnum) { |
| | | return R.status(omdEnumService.saveOrUpdate(omdEnum)); |
| | | return R.status(omdEnumService.submit(omdEnum)); |
| | | } |
| | | |
| | | /** |
| | |
| | | List<EnumVO> tree = omdEnumService.getList(code); |
| | | return R.data(tree); |
| | | } |
| | | |
| | | |
| | | } |
| | |
| | | package com.vci.ubcs.omd.service; |
| | | |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | import com.baomidou.mybatisplus.extension.toolkit.SqlHelper; |
| | | import com.vci.ubcs.omd.entity.Enum; |
| | | import com.vci.ubcs.omd.vo.EnumVO; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import org.apache.poi.ss.formula.functions.T; |
| | | import org.springblade.core.mp.support.Query; |
| | | |
| | | import java.util.List; |
| | |
| | | */ |
| | | IPage<EnumVO> selectOmdEnumPage(IPage<EnumVO> page, EnumVO omdEnum); |
| | | |
| | | /** |
| | | * TableId 注解存在更新记录,否插入一条记录 |
| | | * |
| | | * @param omdEnum 实体对象 |
| | | */ |
| | | boolean submit(Enum omdEnum); |
| | | |
| | | boolean deleteLogic(List<String> toStringList); |
| | | |
| | | /** |
| | | * 根据 ID 选择修改 |
| | | * |
| | | * @param omdEnum 实体对象 |
| | | */ |
| | | boolean updateOmdEnum(Enum omdEnum); |
| | | |
| | | IPage<EnumVO> parentList(Map<String, Object> dict, Query query); |
| | | /** |
| | | * 树形结构 |
| | |
| | | import com.vci.ubcs.omd.wrapper.EnumWrapper; |
| | | import org.springblade.core.mp.support.Condition; |
| | | import org.springblade.core.mp.support.Query; |
| | | import org.springblade.core.secure.utils.AuthUtil; |
| | | import org.springblade.core.tool.utils.Func; |
| | | import org.springblade.core.tool.utils.StringPool; |
| | | import org.springframework.beans.BeanUtils; |
| | |
| | | } |
| | | |
| | | @Override |
| | | public boolean submit(Enum omdEnum) { |
| | | Date date = new Date(); |
| | | omdEnum.setCreator(AuthUtil.getUserAccount()); |
| | | omdEnum.setCreatetime(date); |
| | | omdEnum.setModifier(AuthUtil.getUserAccount()); |
| | | omdEnum.setModifytime(date); |
| | | omdEnum.setTs(date); |
| | | return this.saveOrUpdate(omdEnum); |
| | | } |
| | | |
| | | @Override |
| | | public boolean deleteLogic(List<String> toStringList) { |
| | | return SqlHelper.retBool(baseMapper.deleteBatchIds(toStringList)); |
| | | } |
| | | |
| | | @Override |
| | | public boolean updateOmdEnum(Enum omdEnum) { |
| | | omdEnum.setModifier(AuthUtil.getUserAccount()); |
| | | omdEnum.setModifytime(new Date()); |
| | | return this.updateById(omdEnum); |
| | | } |
| | | |
| | | @Override |
| | | public IPage<EnumVO> parentList(Map<String, Object> dict, Query query) { |
| | | IPage<Enum> page = this.page(Condition.getPage(query), |
| | | Condition.getQueryWrapper(dict, Enum.class).lambda() |
| | |
| | | * @param classifyAuthList |
| | | * @return |
| | | */ |
| | | @PostMapping("saveOrUpdate") |
| | | @PostMapping("/saveOrUpdate") |
| | | public R saveOrUpdate(@RequestBody List<ClassifyAuth> classifyAuthList) { |
| | | return classifyAuthService.submit(classifyAuthList); |
| | | } |
| | |
| | | * @param classifyAuthVO |
| | | * @return |
| | | */ |
| | | @GetMapping("list") |
| | | @GetMapping("/list") |
| | | public R<List<ClassifyAuthVO>> getClassifyAuthList(ClassifyAuthVO classifyAuthVO) { |
| | | return R.data(classifyAuthService.getClassifyAuthList(classifyAuthVO)); |
| | | } |
| | |
| | | * @param classifyId |
| | | * @return |
| | | */ |
| | | @GetMapping("getAuthButtonList") |
| | | public R<Map<String,Boolean>> getAuthButtonList(String classifyId){ |
| | | @GetMapping("/getAuthButtonList") |
| | | public R<Map<String,Boolean>> getAuthButtonList(@RequestParam("classifyId") String classifyId){ |
| | | return R.data(classifyAuthService.getAuthButtonList(classifyId)); |
| | | } |
| | | |
| | |
| | | */ |
| | | public Map<String,Boolean> getAuthButtonList(String classifyId){ |
| | | if(Func.isBlank(classifyId)){ |
| | | return new HashMap<>(); |
| | | throw new ServiceException("必传参数分类oid不能为空!"); |
| | | } |
| | | //查询分类节点的所有父级节点 |
| | | R<List<String>> listR = codeClassifyClient.selectAllParentOid(classifyId); |