密码策略增删改分页 首页添加修改密码对话框 取消最近模块中dialog对话框中关闭对话框销毁对话框中元素的destroy-on-close属性(导致拖拽效果不实现)
| | |
| | | } |
| | | }); |
| | | } |
| | | |
| | | // 删除 |
| | | export function deleteDep(params) { |
| | | return request({ |
| | | url: "/api/passwordStrategyQueryController/delPasswordStrateg", |
| | | method: "delete", |
| | | params |
| | | }); |
| | | } |
| | | |
| | | // 添加 |
| | | export function addDept(params) { |
| | | return request({ |
| | | url: "/api/passwordStrategyQueryController/addPasswordStrateg", |
| | | method: "post", |
| | | data:params |
| | | }); |
| | | } |
| | | |
| | | // 编辑 |
| | | export function updatePasswordStrateg(params) { |
| | | return request({ |
| | | url: "/api/passwordStrategyQueryController/updatePasswordStrateg", |
| | | method: "put", |
| | | data:params |
| | | }); |
| | | } |
| | | |
| | |
| | | <el-dialog |
| | | v-dialogDrag |
| | | :close-on-click-modal="false" |
| | | :destroy-on-close="true" |
| | | :title="title" |
| | | :visible.sync="visible" |
| | | append-to-body="true" |
| | |
| | | <el-dialog |
| | | v-dialogDrag |
| | | :close-on-click-modal="false" |
| | | :destroy-on-close="true" |
| | | :title="title" |
| | | :visible.sync="visible" |
| | | width="40%" |
| | |
| | | <template> |
| | | <el-dialog v-dialogDrag |
| | | :close-on-click-modal="false" |
| | | :destroy-on-close="true" |
| | | :visible.sync="visible" |
| | | :width="width" |
| | | append-to-body="true" |
| | |
| | | <el-dialog |
| | | v-dialogDrag |
| | | :close-on-click-modal="false" |
| | | :destroy-on-close="true" |
| | | :visible.sync="visible" |
| | | :width="width" |
| | | append-to-body |
| | |
| | | <template> |
| | | <div class="avue-top"> |
| | | <div class="top-bar__left"> |
| | | <div class="avue-breadcrumb" |
| | | <div v-if="showCollapse" |
| | | :class="[{ 'avue-breadcrumb--active': isCollapse }]" |
| | | v-if="showCollapse"> |
| | | class="avue-breadcrumb"> |
| | | <i class="icon-navicon" |
| | | @click="setCollapse"></i> |
| | | </div> |
| | | </div> |
| | | <div class="top-bar__title"> |
| | | <div class="top-bar__item top-bar__item--show" |
| | | v-if="showMenu"> |
| | | <div v-if="showMenu" |
| | | class="top-bar__item top-bar__item--show"> |
| | | <top-menu ref="topMenu"></top-menu> |
| | | </div> |
| | | <span class="top-bar__item" |
| | | v-if="showSearch"> |
| | | <span v-if="showSearch" |
| | | class="top-bar__item"> |
| | | <top-search></top-search> |
| | | </span> |
| | | </div> |
| | | <div class="top-bar__right"> |
| | | <el-tooltip v-if="showColor" |
| | | effect="dark" |
| | | :content="$t('navbar.color')" |
| | | effect="dark" |
| | | placement="bottom"> |
| | | <div class="top-bar__item"> |
| | | <top-color></top-color> |
| | | </div> |
| | | </el-tooltip> |
| | | <el-tooltip v-if="showDebug" |
| | | effect="dark" |
| | | :content="logsFlag?$t('navbar.bug'):logsLen+$t('navbar.bugs')" |
| | | effect="dark" |
| | | placement="bottom"> |
| | | <div class="top-bar__item"> |
| | | <top-logs></top-logs> |
| | | </div> |
| | | </el-tooltip> |
| | | <el-tooltip v-if="showLock" |
| | | effect="dark" |
| | | :content="$t('navbar.lock')" |
| | | effect="dark" |
| | | placement="bottom"> |
| | | <div class="top-bar__item"> |
| | | <top-lock></top-lock> |
| | | </div> |
| | | </el-tooltip> |
| | | <el-tooltip v-if="showTheme" |
| | | effect="dark" |
| | | :content="$t('navbar.theme')" |
| | | effect="dark" |
| | | placement="bottom"> |
| | | <div class="top-bar__item top-bar__item--show"> |
| | | <top-theme></top-theme> |
| | | </div> |
| | | </el-tooltip> |
| | | <el-tooltip effect="dark" |
| | | :content="$t('navbar.notice')" |
| | | <el-tooltip :content="$t('navbar.notice')" |
| | | effect="dark" |
| | | placement="bottom"> |
| | | <div class="top-bar__item top-bar__item--show"> |
| | | <top-notice></top-notice> |
| | | </div> |
| | | </el-tooltip> |
| | | <el-tooltip effect="dark" |
| | | :content="$t('navbar.language')" |
| | | <el-tooltip :content="$t('navbar.language')" |
| | | effect="dark" |
| | | placement="bottom"> |
| | | <div class="top-bar__item top-bar__item--show"> |
| | | <top-lang></top-lang> |
| | | </div> |
| | | </el-tooltip> |
| | | <el-tooltip v-if="showFullScren" |
| | | effect="dark" |
| | | :content="isFullScren?$t('navbar.screenfullF'):$t('navbar.screenfull')" |
| | | effect="dark" |
| | | placement="bottom"> |
| | | <div class="top-bar__item"> |
| | | <i :class="isFullScren?'icon-tuichuquanping':'icon-quanping'" |
| | | @click="handleScreen"></i> |
| | | </div> |
| | | </el-tooltip> |
| | | <img class="top-bar__img" |
| | | :src="userInfo.avatar"> |
| | | <img :src="userInfo.avatar" |
| | | class="top-bar__img"> |
| | | <el-dropdown> |
| | | <span class="el-dropdown-link"> |
| | | {{userInfo.userName}} |
| | | {{ userInfo.userName }} |
| | | <i class="el-icon-arrow-down el-icon--right"></i> |
| | | </span> |
| | | <el-dropdown-menu slot="dropdown"> |
| | | <el-dropdown-item> |
| | | <router-link to="/">{{$t('navbar.dashboard')}}</router-link> |
| | | <router-link to="/">{{ $t('navbar.dashboard') }}</router-link> |
| | | </el-dropdown-item> |
| | | <el-dropdown-item> |
| | | <router-link to="/info/index">{{$t('navbar.userinfo')}}</router-link> |
| | | <el-dropdown-item @click.native="changePasswordHandler"> |
| | | <!-- <router-link to="/info/index">{{ $t('navbar.userinfo') }}</router-link>--> |
| | | 修改密码 |
| | | </el-dropdown-item> |
| | | <el-dropdown-item v-if="this.website.switchMode" @click.native="switchDept" |
| | | >{{$t('navbar.switchDept')}} |
| | | >{{ $t('navbar.switchDept') }} |
| | | </el-dropdown-item> |
| | | <el-dropdown-item @click.native="logout" |
| | | divided>{{$t('navbar.logOut')}} |
| | | <el-dropdown-item divided |
| | | @click.native="logout">{{ $t('navbar.logOut') }} |
| | | </el-dropdown-item> |
| | | </el-dropdown-menu> |
| | | </el-dropdown> |
| | | <el-dialog title="用户信息选择" |
| | | <el-dialog :visible.sync="userBox" |
| | | append-to-body |
| | | :visible.sync="userBox" |
| | | title="用户信息选择" |
| | | width="350px"> |
| | | <avue-form ref="form" :option="userOption" v-model="userForm" @submit="submitSwitch"/> |
| | | <avue-form ref="form" v-model="userForm" :option="userOption" @submit="submitSwitch"/> |
| | | </el-dialog> |
| | | |
| | | <!-- 修改密码对话框 --> |
| | | <el-dialog |
| | | v-dialogDrag |
| | | :visible.sync="passwordVisible" |
| | | append-to-body="true" |
| | | class="avue-dialog" |
| | | title="修改密码" |
| | | width="50%"> |
| | | <avue-form ref="form" v-model="passwordForm" :option="passwordOption" @submit="submitSwitch"/> |
| | | </el-dialog> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | <script> |
| | | import {resetRouter} from '@/router/router' |
| | | import {mapGetters, mapState} from "vuex"; |
| | | import {fullscreenToggel, listenfullscreen} from "@/util/util"; |
| | | import topLock from "./top-lock"; |
| | | import topMenu from "./top-menu"; |
| | | import topSearch from "./top-search"; |
| | | import topTheme from "./top-theme"; |
| | | import topLogs from "./top-logs"; |
| | | import topColor from "./top-color"; |
| | | import topNotice from './top-notice' |
| | | import topLang from "./top-lang"; |
| | | import {resetRouter} from '@/router/router' |
| | | import {mapGetters, mapState} from "vuex"; |
| | | import {fullscreenToggel, listenfullscreen} from "@/util/util"; |
| | | import topLock from "./top-lock"; |
| | | import topMenu from "./top-menu"; |
| | | import topSearch from "./top-search"; |
| | | import topTheme from "./top-theme"; |
| | | import topLogs from "./top-logs"; |
| | | import topColor from "./top-color"; |
| | | import topNotice from './top-notice' |
| | | import topLang from "./top-lang"; |
| | | |
| | | export default { |
| | | components: { |
| | | topLock, |
| | | topMenu, |
| | | topSearch, |
| | | topTheme, |
| | | topLogs, |
| | | topColor, |
| | | topNotice, |
| | | topLang |
| | | }, |
| | | name: "top", |
| | | data() { |
| | | return { |
| | | userBox: false, |
| | | userForm: { |
| | | deptId: '', |
| | | roleId: '' |
| | | }, |
| | | userOption: { |
| | | labelWidth: 70, |
| | | submitBtn: true, |
| | | emptyBtn: false, |
| | | submitText: '切换', |
| | | column: [ |
| | | { |
| | | label: '部门', |
| | | prop: 'deptId', |
| | | type: 'select', |
| | | props: { |
| | | label: 'deptName', |
| | | value: 'id' |
| | | }, |
| | | dicUrl: '/api/blade-system/dept/select', |
| | | span: 24, |
| | | display: false, |
| | | rules: [{ |
| | | export default { |
| | | components: { |
| | | topLock, |
| | | topMenu, |
| | | topSearch, |
| | | topTheme, |
| | | topLogs, |
| | | topColor, |
| | | topNotice, |
| | | topLang |
| | | }, |
| | | name: "top", |
| | | data() { |
| | | return { |
| | | passwordVisible: false, |
| | | passwordForm: {}, |
| | | passwordOption: { |
| | | submitText:'保存', |
| | | column: [ |
| | | { |
| | | label: '登陆密码', |
| | | prop: 'input', |
| | | span: 24, |
| | | labelWidth:"15%", |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: "请选择部门", |
| | | trigger: "blur" |
| | | }], |
| | | }, |
| | | { |
| | | label: '角色', |
| | | prop: 'roleId', |
| | | type: 'select', |
| | | props: { |
| | | label: 'roleName', |
| | | value: 'id' |
| | | }, |
| | | dicUrl: '/api/blade-system/role/select', |
| | | span: 24, |
| | | display: false, |
| | | rules: [{ |
| | | message: '请输入登陆密码', |
| | | trigger: 'blur' |
| | | } |
| | | ] |
| | | }, |
| | | { |
| | | label: '新登陆密码', |
| | | prop: 'input1', |
| | | span: 24, |
| | | labelWidth:"15%", |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: "请选择角色", |
| | | trigger: "blur" |
| | | }], |
| | | message: '请输入新登陆密码', |
| | | trigger: 'blur' |
| | | } |
| | | ] |
| | | }, |
| | | { |
| | | label: '新密码登陆确认', |
| | | prop: 'input2', |
| | | span: 24, |
| | | labelWidth:"15%", |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: '请确认登陆密码', |
| | | trigger: 'blur' |
| | | } |
| | | ] |
| | | } |
| | | ] |
| | | }, |
| | | userBox: false, |
| | | userForm: { |
| | | deptId: '', |
| | | roleId: '' |
| | | }, |
| | | userOption: { |
| | | labelWidth: 70, |
| | | submitBtn: true, |
| | | emptyBtn: false, |
| | | submitText: '切换', |
| | | column: [ |
| | | { |
| | | label: '部门', |
| | | prop: 'deptId', |
| | | type: 'select', |
| | | props: { |
| | | label: 'deptName', |
| | | value: 'id' |
| | | }, |
| | | ] |
| | | } |
| | | }; |
| | | }, |
| | | filters: {}, |
| | | created() { |
| | | }, |
| | | mounted() { |
| | | listenfullscreen(this.setScreen); |
| | | }, |
| | | computed: { |
| | | ...mapState({ |
| | | showDebug: state => state.common.showDebug, |
| | | showTheme: state => state.common.showTheme, |
| | | showLock: state => state.common.showLock, |
| | | showFullScren: state => state.common.showFullScren, |
| | | showCollapse: state => state.common.showCollapse, |
| | | showSearch: state => state.common.showSearch, |
| | | showMenu: state => state.common.showMenu, |
| | | showColor: state => state.common.showColor |
| | | }), |
| | | ...mapGetters([ |
| | | "userInfo", |
| | | "isFullScren", |
| | | "tagWel", |
| | | "tagList", |
| | | "isCollapse", |
| | | "tag", |
| | | "logsLen", |
| | | "logsFlag" |
| | | ]) |
| | | }, |
| | | methods: { |
| | | handleScreen() { |
| | | fullscreenToggel(); |
| | | }, |
| | | setCollapse() { |
| | | this.$store.commit("SET_COLLAPSE"); |
| | | }, |
| | | setScreen() { |
| | | this.$store.commit("SET_FULLSCREN"); |
| | | }, |
| | | switchDept() { |
| | | const userId = this.userInfo.user_id; |
| | | const deptColumn = this.findObject(this.userOption.column, "deptId"); |
| | | deptColumn.dicUrl = `/api/blade-system/dept/select?userId=${userId}`; |
| | | deptColumn.display = true; |
| | | const roleColumn = this.findObject(this.userOption.column, "roleId"); |
| | | roleColumn.dicUrl = `/api/blade-system/role/select?userId=${userId}`; |
| | | roleColumn.display = true; |
| | | this.userBox = true; |
| | | }, |
| | | submitSwitch (form, done) { |
| | | this.$store.dispatch("refreshToken", form).then(() => { |
| | | this.userBox = false; |
| | | this.$router.push({path: "/"}); |
| | | }) |
| | | done(); |
| | | }, |
| | | logout() { |
| | | this.$confirm(this.$t("logoutTip"), this.$t("tip"), { |
| | | confirmButtonText: this.$t("submitText"), |
| | | cancelButtonText: this.$t("cancelText"), |
| | | type: "warning" |
| | | }).then(() => { |
| | | this.$store.dispatch("LogOut").then(() => { |
| | | resetRouter(); |
| | | this.$router.push({path: "/login"}); |
| | | }); |
| | | }); |
| | | dicUrl: '/api/blade-system/dept/select', |
| | | span: 24, |
| | | display: false, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择部门", |
| | | trigger: "blur" |
| | | }], |
| | | }, |
| | | { |
| | | label: '角色', |
| | | prop: 'roleId', |
| | | type: 'select', |
| | | props: { |
| | | label: 'roleName', |
| | | value: 'id' |
| | | }, |
| | | dicUrl: '/api/blade-system/role/select', |
| | | span: 24, |
| | | display: false, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择角色", |
| | | trigger: "blur" |
| | | }], |
| | | }, |
| | | ] |
| | | } |
| | | }; |
| | | }, |
| | | filters: {}, |
| | | created() { |
| | | }, |
| | | mounted() { |
| | | listenfullscreen(this.setScreen); |
| | | }, |
| | | computed: { |
| | | ...mapState({ |
| | | showDebug: state => state.common.showDebug, |
| | | showTheme: state => state.common.showTheme, |
| | | showLock: state => state.common.showLock, |
| | | showFullScren: state => state.common.showFullScren, |
| | | showCollapse: state => state.common.showCollapse, |
| | | showSearch: state => state.common.showSearch, |
| | | showMenu: state => state.common.showMenu, |
| | | showColor: state => state.common.showColor |
| | | }), |
| | | ...mapGetters([ |
| | | "userInfo", |
| | | "isFullScren", |
| | | "tagWel", |
| | | "tagList", |
| | | "isCollapse", |
| | | "tag", |
| | | "logsLen", |
| | | "logsFlag" |
| | | ]) |
| | | }, |
| | | methods: { |
| | | // 修改密码 |
| | | changePasswordHandler() { |
| | | console.log('123'); |
| | | this.passwordVisible = true; |
| | | }, |
| | | handleScreen() { |
| | | fullscreenToggel(); |
| | | }, |
| | | setCollapse() { |
| | | this.$store.commit("SET_COLLAPSE"); |
| | | }, |
| | | setScreen() { |
| | | this.$store.commit("SET_FULLSCREN"); |
| | | }, |
| | | switchDept() { |
| | | const userId = this.userInfo.user_id; |
| | | const deptColumn = this.findObject(this.userOption.column, "deptId"); |
| | | deptColumn.dicUrl = `/api/blade-system/dept/select?userId=${userId}`; |
| | | deptColumn.display = true; |
| | | const roleColumn = this.findObject(this.userOption.column, "roleId"); |
| | | roleColumn.dicUrl = `/api/blade-system/role/select?userId=${userId}`; |
| | | roleColumn.display = true; |
| | | this.userBox = true; |
| | | }, |
| | | submitSwitch(form, done) { |
| | | this.$store.dispatch("refreshToken", form).then(() => { |
| | | this.userBox = false; |
| | | this.$router.push({path: "/"}); |
| | | }) |
| | | done(); |
| | | }, |
| | | logout() { |
| | | this.$confirm(this.$t("logoutTip"), this.$t("tip"), { |
| | | confirmButtonText: this.$t("submitText"), |
| | | cancelButtonText: this.$t("cancelText"), |
| | | type: "warning" |
| | | }).then(() => { |
| | | this.$store.dispatch("LogOut").then(() => { |
| | | resetRouter(); |
| | | this.$router.push({path: "/login"}); |
| | | }); |
| | | }); |
| | | } |
| | | }; |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | |
| | | <el-menu :default-active="activeIndex" |
| | | mode="horizontal" |
| | | text-color="#333"> |
| | | <el-menu-item index="0" @click.native="openHome(itemHome)" key="0"> |
| | | <el-menu-item key="0" index="0" @click.native="openHome(itemHome)"> |
| | | <template slot="title"> |
| | | <i :class="itemHome.source"></i> |
| | | <span>{{generateTitle(itemHome)}}</span> |
| | | <span>{{ generateTitle(itemHome) }}</span> |
| | | </template> |
| | | </el-menu-item> |
| | | <template v-for="(item,index) in items"> |
| | | <el-menu-item :index="item.id+''" @click.native="openMenu(item)" :key="index"> |
| | | <el-menu-item :key="index" :index="item.id+''" @click.native="openMenu(item)"> |
| | | <template slot="title"> |
| | | <i :class="item.source" style="padding-right: 5px;"></i> |
| | | <span>{{generateTitle(item)}}</span> |
| | | <span>{{ generateTitle(item) }}</span> |
| | | </template> |
| | | </el-menu-item> |
| | | </template> |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import {mapGetters} from "vuex"; |
| | | import {mapGetters} from "vuex"; |
| | | |
| | | export default { |
| | | name: "top-menu", |
| | | data() { |
| | | return { |
| | | itemHome: { |
| | | name: '首页', |
| | | source: 'el-icon-menu', |
| | | }, |
| | | activeIndex: "0", |
| | | items: [], |
| | | }; |
| | | export default { |
| | | name: "top-menu", |
| | | data() { |
| | | return { |
| | | itemHome: { |
| | | name: '首页', |
| | | source: 'el-icon-menu', |
| | | }, |
| | | activeIndex: "0", |
| | | items: [], |
| | | }; |
| | | }, |
| | | inject: ["index"], |
| | | created() { |
| | | this.getMenu(); |
| | | }, |
| | | computed: { |
| | | ...mapGetters(["tagCurrent", "menu"]) |
| | | }, |
| | | methods: { |
| | | openHome(itemHome) { |
| | | this.index.openMenu(itemHome); |
| | | this.$router.push({ |
| | | path: this.$router.$avueRouter.getPath({name: itemHome.name, src: ''}, {}) |
| | | }); |
| | | }, |
| | | inject: ["index"], |
| | | created() { |
| | | this.getMenu(); |
| | | openMenu(item) { |
| | | this.index.openMenu(item) |
| | | }, |
| | | computed: { |
| | | ...mapGetters(["tagCurrent", "menu"]) |
| | | getMenu() { |
| | | /*this.$store.dispatch("GetTopMenu").then(res => { |
| | | this.items = res; |
| | | });*/ |
| | | }, |
| | | methods: { |
| | | openHome(itemHome) { |
| | | this.index.openMenu(itemHome); |
| | | this.$router.push({ |
| | | path: this.$router.$avueRouter.getPath({name: itemHome.name, src: ''}, {}) |
| | | }); |
| | | }, |
| | | openMenu(item) { |
| | | this.index.openMenu(item) |
| | | }, |
| | | getMenu() { |
| | | /*this.$store.dispatch("GetTopMenu").then(res => { |
| | | this.items = res; |
| | | });*/ |
| | | }, |
| | | generateTitle(item) { |
| | | return this.$router.$avueRouter.generateTitle( |
| | | item.name, |
| | | (item.meta || {}).i18n |
| | | ); |
| | | }, |
| | | } |
| | | }; |
| | | generateTitle(item) { |
| | | return this.$router.$avueRouter.generateTitle( |
| | | item.name, |
| | | (item.meta || {}).i18n |
| | | ); |
| | | }, |
| | | } |
| | | }; |
| | | </script> |
| | |
| | | <el-dialog |
| | | v-dialogDrag |
| | | v-loading="statisticsLoading" |
| | | :destroy-on-close="true" |
| | | :visible.sync="statisticsVisible" |
| | | append-to-body="true" |
| | | class="avue-dialog" |
| | |
| | | <basic-container> |
| | | <avue-crud |
| | | ref="passWordCrud" |
| | | v-model="form" |
| | | :data="tableData" |
| | | :option="option" |
| | | :page.sync="page" |
| | | :table-loading="tableLoading" |
| | | v-model="form" |
| | | @on-load="getTableList" |
| | | @refresh-change="handleRefresh" |
| | | @size-change="sizeChange" |
| | | @current-change="currentChange" |
| | | @row-save="rowSaveHandler" |
| | | @row-update="rowUpdateHandler" |
| | | @row-del="rowDeleteHandler" |
| | | > |
| | | <template slot="menu" slot-scope="{ row, index }"> |
| | | <el-button |
| | |
| | | |
| | | |
| | | <template slot="name" slot-scope="{row}"> |
| | | <el-tag>{{row.name}}</el-tag> |
| | | <el-tag>{{ row.name }}</el-tag> |
| | | </template> |
| | | <template slot="defaultFlag" slot-scope="{row}"> |
| | | <el-tag v-if="row.defaultFlag" type="success">是</el-tag> |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import {refDataGrid} from "@/api/system/password/api" |
| | | import {refDataGrid, deleteDep, addDept, updatePasswordStrateg} from "@/api/system/password/api" |
| | | import basicOption from "@/util/basic-option"; |
| | | import {column} from "@/views/system/password/option"; |
| | | import Vue from "vue"; |
| | | |
| | | export default { |
| | | name: "index", |
| | | data(){ |
| | | return{ |
| | | form:{}, |
| | | tableData:[], |
| | | option:{ |
| | | data() { |
| | | return { |
| | | form: {}, |
| | | tableData: [], |
| | | option: { |
| | | ...basicOption, |
| | | selection:false, |
| | | calcHeight:-60, |
| | | menuWidth:150, |
| | | column:[ |
| | | selection: false, |
| | | calcHeight: -60, |
| | | menuWidth: 150, |
| | | editBtn: false, |
| | | delBtn: false, |
| | | column: [ |
| | | { |
| | | label: '策略名称', |
| | | prop: 'name', |
| | |
| | | callback(new Error('请输入密码最小长度')); |
| | | } else if (/[^\d]/g.test(value)) { |
| | | callback(new Error('密码最小长度的输入类型只能为数字类型')); |
| | | } else if ( this.minValue >= this.maxValue && this.maxValue != 0) { |
| | | } else if (this.minValue >= this.maxValue && this.maxValue != 0) { |
| | | callback(new Error('密码最小长度不能大于密码最大长度')) |
| | | } else { |
| | | callback(); |
| | |
| | | this.maxValue = value * 1 |
| | | if (value == "") { |
| | | callback(new Error('请输入密码最大长度')); |
| | | } else if ( this.maxValue <= this.minValue) { |
| | | } else if (this.maxValue <= this.minValue) { |
| | | callback(new Error('密码最大长度不能小于密码最大长度')); |
| | | } else if (/[^\d]/g.test(value)) { |
| | | callback(new Error('密码最大长度的输入类型只能为数字类型')); |
| | |
| | | prop: 'defaultFlag', |
| | | type: 'switch', |
| | | labelWidth: "30%", |
| | | value: 0, |
| | | dicData: [{ |
| | | label: '否', |
| | | value: 0 |
| | |
| | | total: 0, |
| | | pageSizes: [10, 30, 50, 100], |
| | | }, |
| | | tableLoading:false, |
| | | checkboxlength: "", //添加存放多选的变量,用于下拉菜单的禁用效果和必填种类是否大于组合方式然后提示用户重新选择 |
| | | selectlength: 0, //这个是下拉菜单的数据变量 |
| | | checkboxlist: "" , //这个是用于防止change时间冒泡,出现两次弹窗定义的变量 |
| | | checkboxNumber: "", //用于首次点击编辑,判断组合方式是否小于必填种类的变量 |
| | | selectNumber: "", //这个也是存放多选的变量,效果一样,只是用作在编辑模块 |
| | | tableLoading: false, |
| | | checkboxlength: "", // 添加存放多选的变量,用于下拉菜单的禁用效果和必填种类是否大于组合方式然后提示用户重新选择 |
| | | selectlength: 0, // 下拉菜单的数据变量 |
| | | checkboxlist: "", // 用于防止change时间冒泡,出现两次弹窗定义的变量 |
| | | checkboxNumber: "", // 用于首次点击编辑,判断组合方式是否小于必填种类的变量 |
| | | selectNumber: "", // 存放多选的变量,效果一样,只是用作在编辑模块 |
| | | checkboxedit: "", // 用于判断是否是编辑 |
| | | editFlag: false, |
| | | minValue:"", // 最小长度value |
| | | maxValue:"" // 最大长度value |
| | | minValue: "", // 最小长度value |
| | | maxValue: "" // 最大长度value |
| | | } |
| | | }, |
| | | methods:{ |
| | | methods: { |
| | | // 表格初始化请求 |
| | | getTableList() { |
| | | this.tableLoading = true; |
| | | refDataGrid(this.page.currentPage, this.page.pageSize).then(res =>{ |
| | | console.log(res); |
| | | refDataGrid(this.page.currentPage, this.page.pageSize).then(res => { |
| | | this.tableData = res.data.data; |
| | | this.page.total = res.data.total; |
| | | this.tableLoading = false; |
| | |
| | | }, |
| | | |
| | | // 表格头部刷新 |
| | | handleRefresh(){ |
| | | handleRefresh() { |
| | | this.getTableList(); |
| | | }, |
| | | |
| | | // 条数 |
| | | sizeChange(val){ |
| | | sizeChange(val) { |
| | | this.page.pageSize = val; |
| | | }, |
| | | |
| | | // 页码 |
| | | currentChange(val){ |
| | | currentChange(val) { |
| | | this.page.currentPage = val; |
| | | }, |
| | | |
| | | // 添加 |
| | | rowSaveHandler(){ |
| | | console.log(this.form.requireCharCount); |
| | | rowSaveHandler(row, done, loading) { |
| | | row.combinations = row.requireCharType.join(','); |
| | | delete row.requireCharType; |
| | | addDept(row).then(res => { |
| | | if (res.data.code === 200) { |
| | | this.$message.success(res.data.obj); |
| | | this.getTableList(); |
| | | done() |
| | | } |
| | | }).catch(err => { |
| | | loading() |
| | | console.log(err); |
| | | }) |
| | | }, |
| | | |
| | | // 编辑按钮 |
| | | handleEdit(row,index){ |
| | | handleEdit(row, index) { |
| | | this.$refs.passWordCrud.rowEdit(row, index); |
| | | this.editFlag = true; |
| | | this.checkboxNumber = row.requireCharType.split(","); |
| | |
| | | }, |
| | | |
| | | // 修改 |
| | | rowUpdateHandler(){ |
| | | |
| | | }, |
| | | |
| | | // 删除按钮 |
| | | handleDel(){ |
| | | |
| | | rowUpdateHandler(row, index, done,loading) { |
| | | row.combinations = row.requireCharType; |
| | | delete row.requireCharType; |
| | | updatePasswordStrateg(row).then(res => { |
| | | if (res.data.code === 200) { |
| | | this.$message.success(res.data.obj); |
| | | this.getTableList(); |
| | | done() |
| | | } |
| | | }).catch(err => { |
| | | loading() |
| | | console.log(err); |
| | | }) |
| | | }, |
| | | |
| | | // 删除 |
| | | rowDeleteHandler(){ |
| | | handleDel(row, index) { |
| | | let params = { |
| | | pwdIds: row.oid |
| | | } |
| | | |
| | | this.$confirm('您确定要删除当前的密码策略吗?', '提示', { |
| | | confirmButtonText: '确定', |
| | | cancelButtonText: '取消', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | deleteDep(params).then(res => { |
| | | if (res.data.code === 200) { |
| | | this.$message.success(res.data.obj); |
| | | this.getTableList(); |
| | | } |
| | | }); |
| | | }).catch(() => { |
| | | this.$message({ |
| | | type: 'info', |
| | | message: '已取消删除' |
| | | }); |
| | | }); |
| | | }, |
| | | |
| | | // 必填种类changge事件 |
| | | handleSelectChange(val){ |
| | | handleSelectChange(val) { |
| | | this.selectlength = val.value; |
| | | }, |
| | | |
| | |
| | | } |
| | | }, |
| | | |
| | | // 循环找到对应必填种类禁用选项 |
| | | // 过滤找到对应必填种类禁用选项 |
| | | setDisabled(arr, indices) { |
| | | arr.dicData.forEach((item, index) => { |
| | | item.disabled = !indices.includes(index); |
| | |
| | | } |
| | | </script> |
| | | |
| | | <style scoped lang="scss"> |
| | | .avue-form__group--flex{ |
| | | <style lang="scss" scoped> |
| | | .avue-form__group--flex { |
| | | padding-bottom: 25px !important; |
| | | } |
| | | |
| | |
| | | <el-dialog |
| | | v-dialogDrag |
| | | v-loading="statisticsLoading" |
| | | :destroy-on-close="true" |
| | | :visible.sync="statisticsVisible" |
| | | append-to-body="true" |
| | | class="avue-dialog" |
| | |
| | | <el-dialog |
| | | v-dialogDrag |
| | | v-loading="pwdLoading" |
| | | :destroy-on-close="true" |
| | | :visible.sync="pwdVisible" |
| | | append-to-body="true" |
| | | class="avue-dialog" |
| | |
| | | <el-dialog |
| | | v-dialogDrag |
| | | v-loading="departLoading" |
| | | :destroy-on-close="true" |
| | | :visible.sync="departVisible" |
| | | append-to-body="true" |
| | | class="avue-dialog" |