| | |
| | | <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> |
| | |
| | | <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, |
| | | 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: '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 |
| | | }); |
| | | } |
| | | } |
| | |
| | | <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> |
| | | |