From bdf3026858cbe53ca31861d9e3cb073469d0992e Mon Sep 17 00:00:00 2001 From: mg <maokecheng@163.com> Date: 星期二, 01 十一月 2022 16:30:54 +0800 Subject: [PATCH] 新增短信页面和短信模板页面 --- src/views/operate/sms/smsIndex/index.vue | 30 src/views/systemSetting/device/grid/components/header/index.vue | 110 ++ src/views/operate/sms/smsTemplate/index.vue | 52 src/views/systemSetting/device/grid/components/createUser/index.vue | 555 +++++++++++++ src/views/systemSetting/device/grid/index.vue | 50 + src/views/operate/rectification/taskList/index.vue | 44 src/views/systemSetting/device/grid/components/myView/index.vue | 202 ++++ src/views/systemSetting/device/grid/components/main/index.vue | 508 ++++++++++++ src/router/index.js | 4 src/views/systemSetting/device/grid/components/password/index.vue | 145 +++ src/views/operate/sms/smsTemplate/createTemplate/index.vue | 432 ++++++++++ src/views/systemSetting/device/grid/components/updateUser/index.vue | 291 +++++++ 12 files changed, 2,366 insertions(+), 57 deletions(-) diff --git a/src/router/index.js b/src/router/index.js index 38af357..0c4f355 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -276,8 +276,8 @@ component: () => import('@/views/operate/sms/smsIndex'), }, { - path: 'smstemplate', - name: 'smstemplate', + path: 'smsTemplate', + name: 'smsTemplate', component: () => import('@/views/operate/sms/smsTemplate'), }, ] diff --git a/src/views/operate/rectification/taskList/index.vue b/src/views/operate/rectification/taskList/index.vue index 2861eba..bc326e6 100644 --- a/src/views/operate/rectification/taskList/index.vue +++ b/src/views/operate/rectification/taskList/index.vue @@ -112,15 +112,41 @@ methods: { // 鑾峰彇鎺ュ彛鍒楄〃 getUserList() { - const that = this; - // const { currentPage, pageSize, search } = this; - this.dialogCreate = false; - this.$axios.get("sccg/system/portal/thirdApp/search").then(res => { - const { code, data } = res; - if (code == 200) { - this.tableData = data; - } - }) + // const that = this; + // // const { currentPage, pageSize, search } = this; + // this.dialogCreate = false; + // this.$axios.get("/sccg/task/list").then(res => { + // const { code, data } = res; + // if (code == 200) { + // this.tableData = data; + // } + // }) + + // let arr = []; + // const { currentPage, pageSize,context,messageStatus,messageKind } = this; + // await this.$axios({ + // method: 'post', + // url: '/sccg/task/list', + // data: { + // body: "", + // channelCode: messageKind === '00' ?'':messageKind, + // createUser: '', + // current: currentPage, + // head: context, + // messageType: "", + // pageSize: pageSize, + // randomCode: "", + // remark: "", + // sendTime: "", + // status: messageStatus === 2 ? '':messageStatus, + // targetFrom: "", + // targetTo: "" + // } + // }) + // .then(res => { + // this.tableData = res.data; + // }) + // return arr; }, // 璁剧疆琛ㄦ牸鏂戦┈绾� tableRowClassName({ row, rowIndex }) { diff --git a/src/views/operate/sms/smsIndex/index.vue b/src/views/operate/sms/smsIndex/index.vue index e753649..f511252 100644 --- a/src/views/operate/sms/smsIndex/index.vue +++ b/src/views/operate/sms/smsIndex/index.vue @@ -11,19 +11,19 @@ <el-input placeholder="娑堟伅鏍囬" v-model="context"></el-input> </div> <div class="message-status"> - <span>娑堟伅鐘舵��:</span> - <el-select v-model="messageStatus" placeholder="璇烽�夋嫨娑堟伅鐘舵��"> + <span>鐭俊鍥炴墽:</span> + <el-select v-model="messageStatus" placeholder="璇烽�夋嫨"> <el-option v-for="item in statusList" :key="item.value" :label="item.label" :value="item.value"> </el-option> </el-select> </div> - <div class="message-kind"> + <!-- <div class="message-kind"> <span>娑堟伅鍒嗙被:</span> <el-select v-model="messageKind" placeholder="璇烽�夋嫨娑堟伅鍒嗙被"> <el-option v-for="item in kindList" :key="item.id" :label="item.columnName" :value="item.id"> </el-option> </el-select> - </div> + </div> --> <div class="find"> <el-button type="primary" icon="el-icon-search" @click="handleSearch">鏌ヨ</el-button> <el-button icon="el-icon-delete-solid" @click="handleReset">閲嶇疆</el-button> @@ -48,31 +48,24 @@ </el-table-column> <el-table-column prop="head" label="鏍囬" min-width="10"> </el-table-column> - <el-table-column prop="updateTime" label="淇敼鏃堕棿" min-width="10"> + <el-table-column prop="updateTime" label="鍙戦�佹椂闂�" min-width="10"> <template slot-scope="scope"> <span>{{changeTime(scope.row)}}</span> </template> </el-table-column> - <el-table-column prop="targetFrom" label="鍙戝竷浜哄憳" min-width="15"> - </el-table-column> - <el-table-column prop="channelCode" label="娑堟伅鍒嗙被" min-width="10"> - <template slot-scope="scope"> - <span>{{scope.row.channelCode === '01' ? '绔欏唴淇�':scope.row.channelCode - ==='02'?"閭欢":'鐭俊'}}</span> - </template> + <el-table-column prop="targetFrom" label="鍙戦�佽处鍙�" min-width="15"> </el-table-column> <el-table-column prop="status" label="鍙戝竷鐘舵��" min-width="5"> <template slot-scope="scope"> - {{scope.row.status === 0 ? '鏈彂甯�' :'宸插彂甯�'}} + {{scope.row.status === 0 ? '鍙戦�佸け璐�' :'鍙戦�佹垚鍔�'}} </template> </el-table-column> <el-table-column prop="operation" label="鎿嶄綔" min-width="15"> <template slot-scope="scope"> <div class="operation"> - <el-link icon="el-icon-view" :underline="false" @click="handleView(scope.row)">鏌ョ湅</el-link> - <el-link icon="el-icon-edit" class="leftPx" :underline="false" @click="handleEdit(scope.row)">缂栬緫</el-link> <el-link class="leftPx" icon="el-icon-delete-solid" :underline="false" @click="handleDelete([scope.row.id])">鍒犻櫎</el-link> + <el-link icon="el-icon-edit" class="leftPx" :underline="false" @click="handleEdit(scope.row)">閲嶆柊鍙戦��</el-link> </div> </template> </el-table-column> @@ -121,6 +114,7 @@ </div> </template> <script> +import helper from '@/utils/mydate' export default { components: { // MyView, MyCreate,MyEdit @@ -167,11 +161,11 @@ value: 2, }, { - label: '鏈彂甯�', + label: '鍙戦�佸け璐�', value: 0, }, { - label: '宸插彂甯�', + label: '鍙戦�佹垚鍔�', value: 1, } ], @@ -257,7 +251,7 @@ url: 'sccg/message/list', data: { body: "", - channelCode: messageKind === '00' ?'':messageKind, + channelCode: '03', createUser: '', current: currentPage, head: context, diff --git a/src/views/operate/sms/smsTemplate/createTemplate/index.vue b/src/views/operate/sms/smsTemplate/createTemplate/index.vue new file mode 100644 index 0000000..5720e60 --- /dev/null +++ b/src/views/operate/sms/smsTemplate/createTemplate/index.vue @@ -0,0 +1,432 @@ +<template> + <div class="createUser"> + <main> + <div class="mainContent"> + <el-form ref="user" label-width="140px" autoComplete="on" :model="role" :rules="createRoleRules" + label-position="right"> + <!-- 娑堟伅鏍忕洰 --> + <el-form-item class="optionItem" label="妯℃澘绫诲瀷:" prop="messageType"> + <div class="message-item"> + <div class="message-item__left"> + <el-select v-model="role.messageType" placeholder="璇烽�夋嫨"> + <el-option v-for="item in colList" :key="item.id" :label="item.columnName" + :value="item.id"> + </el-option> + </el-select> + </div> + </div> + </el-form-item> + <!-- 娑堟伅鏍囬 --> + <el-form-item class="optionItems" label="娑堟伅鏍囬:" prop="head"> + <div class="message-item__left"> + <el-input v-model="role.head" placeholder="璇烽�夋嫨娑堟伅鏍囬"></el-input> + </div> + </el-form-item> + <!-- 鎺ユ敹瀵硅薄 --> + <!-- <el-form-item class="optionItem" label="鎺ユ敹瀵硅薄:" prop="targetTo"> + <div class="message-item__left"> + <el-select v-model="role.targetTo" placeholder="璇烽�夋嫨鎺ユ敹瀵硅薄" > + <el-option :value="role.targetTo"> + <el-tree ref="tree" :data="departList" :props="defaultProps" show-checkbox + @check="handleCheck" default-expand-all node-key="id"> + </el-tree> + </el-option> + </el-select> + </div> + </el-form-item> --> + <!-- 娑堟伅鍐呭 --> + <el-form-item class="optionItem" label="娑堟伅鍐呭:" prop="body"> + <MyEditor ref="edit" @getMyBody="getMyBody"></MyEditor> + <!-- <el-input type="textarea" v-model="role.description" placeholder="璇疯緭鍏ユ弿杩板唴瀹�200瀛椾互鍐�"></el-input> --> + </el-form-item> + <!-- 鎻愰啋鏂瑰紡 --> + <!-- <el-form-item class="optionItem" label="鎻愰啋鏂瑰紡:" prop="channelCode"> + <el-radio-group v-model="role.channelCode"> + <el-radio label="01">绔欏唴淇�</el-radio> + <el-radio label="02">閭欢</el-radio> + <el-radio label="03">鐭俊</el-radio> + </el-radio-group> + <span class="message-tip">(鐭俊鍙敤鏁�: 1000鏉�)</span> + </el-form-item> --> + <el-form-item> + <div class="optionBtn"> + <el-button type="primary" @click.native.prevent="handleSubmit(0)" class="btn save">淇濆瓨 + </el-button> + <!-- <el-button type="primary" @click.native.prevent="handleSubmit(1)" class="btn submit">鍙戝竷 + </el-button> + <el-button type="primary" @click.native.prevent="handleView" class="btn submit">棰勮 + </el-button> --> + <el-button class="btn cancel" @click.native.prevent="handleReset">閲嶇疆</el-button> + </div> + </el-form-item> + </el-form> + <!-- 鏂板鏍忕洰 --> + <el-dialog title="娣诲姞鏍忕洰" :visible.sync="dialogCreate" v-if="dialogCreate" width="60%" + :before-close="handleConfirmClose" append-to-body> + <MyColumnAdd @closeDialog="closeDialog"></MyColumnAdd> + </el-dialog> + <!-- 棰勮娑堟伅 --> + <el-dialog title="娑堟伅棰勮" :visible.sync="dialogView" v-if="dialogView" width="60%" + :before-close="handleConfirmClose" append-to-body> + <MyColView :info="info" @closeDialog="closeDialog"></MyColView> + </el-dialog> + </div> + </main> + </div> +</template> +<script> +import MyEditor from '@/components/edit' +export default { + components: { MyEditor, }, + data() { + const validateNickname = (rule, value, callback) => { + if (!value) { + callback(new Error("璇峰~鍐欐秷鎭爮鐩�")); + } else { + callback(); + } + }; + const validatePass = (rule, value, callback) => { + if (!value) { + callback(); + } else { + callback(); + } + }; + const validateTruename = (rule, value, callback) => { + if (value.length !== 0) { + callback(); + } else { + callback(new Error('璇烽�夋嫨鎺ユ敹瀵硅薄')); + } + }; + return { + role: { + messageType: '', + head: '', + targetTo: '', + targetFrom: null, + body: '', + channelCode: '01', + }, + createRoleRules: { + messageType: [ + { required: true, trigger: "blur", validator: validateNickname }, + ], + head: [ + { required: false, trigger: "blur", validator: validatePass }, + ], + targetTo: [ + { required: false, trigger: "blur", validator: validateTruename }, + ], + }, + colList: [], + departList: [], + typeList: [], + dialogCreate: false, + dialogView: false, + defaultProps: { + children: 'children', + label: 'departName', + // disabled: function (data, node) { + // if (data.createTime) { + // return !data.leaf + // } + // } + }, + checkedList: [], + tempNameArr:[], + info:{}, + sendUser:"" + } + }, + created() { + this.setColumnList(); + this.setDepartList(); + this.getLoginUserInfo(); + }, + methods: { + // 鍏抽棴寮圭獥 + handleConfirmClose(done) { + this.$confirm('纭鍏抽棴?') + .then(_ => { + done(); + }) + }, + // 璁剧疆鏍忕洰 + async setColumnList() { + this.colList = [{"id":"1","columnName":"楠岃瘉鐮佹ā鏉�"},{"id":"2","columnName":"娲诲姩妯℃澘"}]; + }, + // 鑾峰彇鏍忕洰 + async getColumnList() { + let arr; + await this.$axios({ + method: 'get', + url: 'sccg/message_column/getAllColumn' + }) + .then(res => { + console.log(res); + arr = res.data; + }) + return arr; + }, + // 鍏抽棴寮圭獥 + closeDialog({ flag, index }) { + this.dialogCreate = flag; + if (index === 1) { + // 閲嶆柊璁剧疆鏍忕洰 + this.setColumnList(); + } + }, + // 鑾峰彇閮ㄩ棬鏍� + async getDepartList() { + let arr + await this.$axios({ + method: 'get', + url: 'sccg/depart/tree' + }) + .then(res => { + arr = res.data + }) + return arr; + }, + // 璁剧疆閮ㄩ棬鏍� + async setDepartList() { + this.departList = await this.filterDepartList(); + }, + // 澶勭悊閮ㄩ棬鏍� + async filterDepartList() { + let arr = await this.getDepartList(); + const { setChildren } = this; + // console.log(setChildren); + arr.forEach(item => { + setChildren(item); + }) + return arr; + }, + // 閫掑綊children + setChildren(obj) { + if (obj.children !== null) { + if (obj.children.length !== 0) { + obj.children.forEach(item => { + return this.setChildren(item); + }) + } + } else { + if (obj.userInfoDTOS.length !== 0) { + obj.children = []; + obj.userInfoDTOS.forEach(item => { + obj.children.push({ id: item.userId, departName: item.username }) + }) + } + } + }, + // 閫変腑id + handleCheck(data, node) { + let arr = [],nameArr = [] + console.log(node.checkedNodes) + node.checkedNodes.forEach(item => { + if(!item.hasOwnProperty('departType')){ + arr.push(item.id) + nameArr.push(item.departName) + } + }) + this.checkedList = arr + this.tempNameArr = nameArr + console.log(this.tempNameArr) + this.role.targetTo = arr.length + '浜�' + }, + // 鏂板缓/淇濆瓨娑堟伅(1:鏂板缓,0淇濆瓨娑堟伅) + handleSubmit(mystatus) { + this.$refs.user.validate((valid) => { + if (valid) { + const { role, checkedList } = this; + console.log(checkedList); + this.$axios({ + method: 'post', + url: 'sccg/message_sms_template/addSmsTemplate', + data: { + body: role.body, + channelCode: `${role.channelCode}`, + title: role.head, + type: role.messageType, + sendTime: new Date(), + targetTo: checkedList.join(','), + targetFrom: `${role.targetFrom}`, + status: mystatus, + } + }) + .then(res => { + if (res.code === 200) { + this.$message({ + type: 'success', + message: mystatus === 1 ? '鍙戦�佹垚鍔�' : '淇濆瓨鎴愬姛', + }) + this.$emit('closeMyDialog', { flag: false, index: 1 }); + } + }) + } else { + return false; + } + }) + }, + // 鑾峰緱娑堟伅浣� + getMyBody(obj) { + console.log(obj); + this.role.body = obj; + }, + // 閲嶇疆琛ㄥ崟 + handleReset() { + this.$refs.edit.editor.txt.clear(); + // this.$refs.edit.wangEditor.txt.html('<p><br></p>') + this.setDepartList(); + this.$refs.user.resetFields(); + }, + // 鑾峰彇褰撳墠鐧诲綍鐢ㄦ埛淇℃伅 + getLoginUserInfo() { + const name = sessionStorage.getItem('name'); + this.$axios({ + method: 'get', + url: 'sccg/admin/info?name=' + name, + }) + .then(res => { + this.role.targetFrom = res.data.userId + this.sendUser = res.data.username + }) + }, + // 娑堟伅棰勮 + handleView() { + this.$refs.user.validate((valid) => { + if (valid) { + const { role,getColText,tempNameArr,sendUser } = this + this.dialogView = true; + let info = {} + // 鑾峰緱鏍忕洰娑堟伅 + info.channelCode = role.channelCode === '01'? '绔欏唴淇�': role.channelCode === '02' ? '閭欢':'鐭俊' + info.messageType = getColText(role.messageType) + info.body = role.body + info.head = role.head + info.targetTo = tempNameArr + info.targetFrom = sendUser + this.info = info + } else { + return false + } + }) + }, + // 鑾峰緱鏍忕洰娑堟伅 + getColText(id){ + console.log(id) + const {colList} = this + let str = '' + colList.forEach(item=>{ + item.id === id ? str = item.columnName : '' + }) + return str + } + }, + props: ['closeMyDialog'] +} +</script> +<style lang="scss" scoped> +.createUser { + border-radius: 1px; + background-color: #09152f; + + main { + text-align: left; + padding: 0 55px; + background-color: #09152f; + padding-bottom: 50px; + + .mainContent { + display: flex; + justify-content: center; + padding-top: 50px; + &:deep(.el-dialog__title) { + color: #4b9bb7; + } + &::v-deep .el-form-item__label { + color: #4b9bb7; + } + + &::v-deep .el-input__inner { + width: 400px; + background-color: #09152f; + border: 1px solid #17324c; + } + + .message-item__left { + width: 400px; + } + + .message-add { + &:hover { + cursor: pointer; + } + } + + .el-form-item__content :deep(.el-select) { + width: 400px; + } + + :deep(.el-input) { + width: 400px; + } + + .message-item { + display: flex; + + span { + margin-left: 20px; + color: #4b9bb7; + } + } + + .message-tip { + margin-left: 20px; + } + + :deep(.el-input--suffix) { + width: 400px; + } + + &::v-deep .el-textarea__inner { + background-color: #09152f; + border: 1px solid #17324c; + } + + .el-form-item__content { + width: 400px; + + .el-select { + width: 100%; + } + } + + .optionHandleSp { + display: flex; + + .areaNumber, + .moreNumber { + flex: 1; + } + + .telNumber { + flex: 2; + } + } + + .optionBtn { + display: flex; + margin-top: 20px; + + .btn { + padding: 12px 50px; + } + } + + } + } +} +</style> \ No newline at end of file diff --git a/src/views/operate/sms/smsTemplate/index.vue b/src/views/operate/sms/smsTemplate/index.vue index e753649..b63c1a6 100644 --- a/src/views/operate/sms/smsTemplate/index.vue +++ b/src/views/operate/sms/smsTemplate/index.vue @@ -11,19 +11,19 @@ <el-input placeholder="娑堟伅鏍囬" v-model="context"></el-input> </div> <div class="message-status"> - <span>娑堟伅鐘舵��:</span> - <el-select v-model="messageStatus" placeholder="璇烽�夋嫨娑堟伅鐘舵��"> + <span>妯℃澘绫诲瀷:</span> + <el-select v-model="messageStatus" placeholder="璇烽�夋嫨"> <el-option v-for="item in statusList" :key="item.value" :label="item.label" :value="item.value"> </el-option> </el-select> </div> - <div class="message-kind"> + <!-- <div class="message-kind"> <span>娑堟伅鍒嗙被:</span> <el-select v-model="messageKind" placeholder="璇烽�夋嫨娑堟伅鍒嗙被"> <el-option v-for="item in kindList" :key="item.id" :label="item.columnName" :value="item.id"> </el-option> </el-select> - </div> + </div> --> <div class="find"> <el-button type="primary" icon="el-icon-search" @click="handleSearch">鏌ヨ</el-button> <el-button icon="el-icon-delete-solid" @click="handleReset">閲嶇疆</el-button> @@ -46,26 +46,26 @@ <el-table-column label="ID" min-width="5"> <template slot-scope="scope">{{ scope.row.id }}</template> </el-table-column> - <el-table-column prop="head" label="鏍囬" min-width="10"> + <el-table-column prop="title" label="鏍囬" min-width="10"> </el-table-column> - <el-table-column prop="updateTime" label="淇敼鏃堕棿" min-width="10"> + <el-table-column prop="createTime" label="鍒涘缓鏃堕棿" min-width="10"> <template slot-scope="scope"> <span>{{changeTime(scope.row)}}</span> </template> </el-table-column> - <el-table-column prop="targetFrom" label="鍙戝竷浜哄憳" min-width="15"> - </el-table-column> - <el-table-column prop="channelCode" label="娑堟伅鍒嗙被" min-width="10"> + <!-- <el-table-column prop="targetFrom" label="鍙戝竷浜哄憳" min-width="15"> + </el-table-column> --> + <el-table-column prop="type" label="妯℃澘绫诲瀷" min-width="10"> <template slot-scope="scope"> - <span>{{scope.row.channelCode === '01' ? '绔欏唴淇�':scope.row.channelCode - ==='02'?"閭欢":'鐭俊'}}</span> + <span>{{scope.row.type === 1 ? '楠岃瘉鐮佹ā鏉�':scope.row.type + ===2?"娲诲姩妯℃澘":'鍏朵粬妯℃澘'}}</span> </template> </el-table-column> - <el-table-column prop="status" label="鍙戝竷鐘舵��" min-width="5"> + <!-- <el-table-column prop="status" label="鍙戝竷鐘舵��" min-width="5"> <template slot-scope="scope"> {{scope.row.status === 0 ? '鏈彂甯�' :'宸插彂甯�'}} </template> - </el-table-column> + </el-table-column> --> <el-table-column prop="operation" label="鎿嶄綔" min-width="15"> <template slot-scope="scope"> <div class="operation"> @@ -78,10 +78,10 @@ </el-table-column> </el-table> <!-- 鏂板缓娑堟伅 --> - <!-- <el-dialog title="鏂板缓娑堟伅" :visible.sync="dialogCreate" v-if="dialogCreate" width="80%" + <el-dialog title="鏂板缓鐭俊妯℃澘" :visible.sync="dialogCreate" v-if="dialogCreate" width="80%" :before-close="handleConfirmClose"> <MyCreate @closeMyDialog="closeDialog"></MyCreate> - </el-dialog> --> + </el-dialog> <!-- 娑堟伅璇︽儏 --> <!-- <el-dialog title="娑堟伅璇︽儏" :visible.sync="dialogView" v-if="dialogView" width="45%" :before-close="handleClose"> @@ -121,9 +121,11 @@ </div> </template> <script> +import helper from '@/utils/mydate' +import MyCreate from './createTemplate' export default { components: { - // MyView, MyCreate,MyEdit + MyCreate, }, data() { return { @@ -159,20 +161,20 @@ } ], tempList: [], - messageStatus: 2, + messageStatus: 0, messageKind: '00', statusList: [ { label: '鍏ㄩ儴', - value: 2, - }, - { - label: '鏈彂甯�', value: 0, }, { - label: '宸插彂甯�', + label: '楠岃瘉鐮佹ā鏉�', value: 1, + }, + { + label: '娲诲姩妯℃澘', + value: 2, } ], kindList: [ @@ -254,19 +256,19 @@ const { currentPage, pageSize,context,messageStatus,messageKind } = this; await this.$axios({ method: 'post', - url: 'sccg/message/list', + url: 'sccg/message_sms_template/list', data: { body: "", channelCode: messageKind === '00' ?'':messageKind, createUser: '', current: currentPage, - head: context, + title: context, messageType: "", pageSize: pageSize, randomCode: "", remark: "", sendTime: "", - status: messageStatus === 2 ? '':messageStatus, + type: messageStatus === 0 ? '':messageStatus, targetFrom: "", targetTo: "" } diff --git a/src/views/systemSetting/device/grid/components/createUser/index.vue b/src/views/systemSetting/device/grid/components/createUser/index.vue new file mode 100644 index 0000000..274dda7 --- /dev/null +++ b/src/views/systemSetting/device/grid/components/createUser/index.vue @@ -0,0 +1,555 @@ +<template> + <div class="createUser"> + <main> + <div class="mainContent"> + <el-form ref="user" label-width="140px" autoComplete="on" :model="user" :rules="createUserRules" + label-position="right"> + <!-- 鐢ㄦ埛鍚嶇О --> + <div class="user-item"> + <div class="item-left"> + <el-form-item class="optionItem" label="鐢ㄦ埛鍚嶇О:" prop="username"> + <el-input v-model="user.username" placeholder="濉啓鐢ㄦ埛鍚嶇О" autoComplete="new-username"> + </el-input> + </el-form-item> + </div> + <div class="item-right"></div> + </div> + <!-- 鐢ㄦ埛瀵嗙爜 --> + <div class="user-item"> + <div class="item-left"> + <el-form-item class="optionItems" label="鐢ㄦ埛瀵嗙爜:" prop="password"> + <el-input v-model="user.password" type="password" autoComplete="new-password" + placeholder="璇疯緭鍏ョ敤鎴峰瘑鐮�"></el-input> + </el-form-item> + </div> + <div class="item-right"></div> + <!-- 閲嶆柊杈撳叆瀵嗙爜鍗充负淇敼锛屽瘑鐮佹湁鏁堟湡榛樿涓�3涓湀 --> + </div> + <!-- 鎵�灞炵敤鎴峰鍚� --> + <div class="user-item"> + <div class="item-left"> + <el-form-item class="optionItem" label="鎵�灞炵敤鎴峰鍚�:" prop="nickName"> + <el-input v-model="user.nickName" placeholder="璇峰~鍐欑敤鎴峰鍚�"></el-input> + </el-form-item> + </div> + <div class="item-right"></div> + </div> + <!-- 鎬у埆 --> + <div class="user-item"> + <div class="item-left"> + <el-form-item class="optionItem" label="鎬у埆:" prop="sex"> + <el-radio-group v-model="user.sex"> + <el-radio :label="1">鐢�</el-radio> + <el-radio :label="0">濂�</el-radio> + </el-radio-group> + </el-form-item> + </div> + <div class="item-right"></div> + </div> + <!-- 鏄惁鍏氬憳 --> + <div class="user-item"> + <div class="item-left"> + <el-form-item class="optionItem" label="鏄惁鍏氬憳:" prop="isDy"> + <el-radio-group v-model="user.isDy"> + <el-radio :label="1">鏄�</el-radio> + <el-radio :label="0">鍚�</el-radio> + </el-radio-group> + </el-form-item> + </div> + <div class="item-right"></div> + </div> + <!-- 鎵�灞炴墜鏈哄彿鐮� --> + <div class="user-item"> + <div class="item-left"> + <el-form-item class="optionItem" label="鎵�灞炴墜鏈哄彿鐮�:" prop="mobile"> + <el-input v-model="user.mobile" maxlength="11" placeholder="璇峰~鍐欐墜鏈哄彿鐮�"></el-input> + </el-form-item> + </div> + <div class="item-right"></div> + </div> + <!-- 閭鍦板潃 --> + <div class="user-item"> + <div class="item-left"> + <el-form-item class="optionItem" label="閭鍦板潃:" prop="email"> + <el-input v-model="user.email" placeholder="璇峰~鍐欓偖绠卞湴鍧�"></el-input> + </el-form-item> + </div> + <div class="item-right"></div> + </div> + <!-- 閫夋嫨瑙掕壊 --> + <div class="user-item"> + <div class="item-left"> + <el-form-item class="optionItem" label="閫夋嫨瑙掕壊:" prop="role"> + <el-select v-model="user.role" placeholder="璇烽�夋嫨鎵�灞炶鑹�" multiple collapse-tags> + <el-option v-for="item in roleList" :key="item.id" :label="item.name" + :value="item.id"> + </el-option> + </el-select> + </el-form-item> + </div> + <div class="item-right"></div> + </div> + <!-- 鐢ㄦ埛绫诲瀷 --> + <div class="user-item"> + <div class="item-left"> + <el-form-item class="optionItem" label="鐢ㄦ埛绫诲瀷:" prop="userType"> + <el-select v-model="user.userType" placeholder="璇烽�夋嫨鐢ㄦ埛绫诲瀷"> + <el-option v-for="item in typeList" :key="item.id" :label="item.name" + :value="item.id"> + </el-option> + </el-select> + </el-form-item> + </div> + <div class="item-right"></div> + </div> + <!-- 搴ф満/鍒嗘満 --> + <div class="user-item sp-item"> + <div class="item-left"> + <el-form-item label="搴ф満/鍒嗘満:" prop="zjarea"> + <el-input v-model="user.zjarea" placeholder="鐢佃瘽鍖哄彿"> + </el-input> + </el-form-item> + <el-form-item prop="zjnumber" class="left-px"> + <el-input v-model="user.zjnumber" placeholder="鐢佃瘽鍙风爜"> + </el-input> + </el-form-item> + <el-form-item prop="zjother" class="left-px"> + <el-input v-model="user.zjother" placeholder="鍒嗘満鍙风爜"> + </el-input> + </el-form-item> + </div> + <div class="item-right"></div> + </div> + <!-- 鎵�灞為儴闂� --> + <div class="user-item"> + <div class="item-left"> + <el-form-item class="optionItem" label="鎵�灞為儴闂�:" prop="departmentId"> + <el-select v-model="user.departmentId" placeholder="璇烽�夋嫨鎵�灞為儴闂�" @change="getDepartName"> + <el-option :value="mylabel"> + <el-tree ref="tree" :check-strictly="true" :data="departList" + :props="defaultProps" show-checkbox @check-change="handleCheck" + default-expand-all node-key="id"> + </el-tree> + </el-option> + </el-select> + </el-form-item> + </div> + <div class="item-right"></div> + </div> + <!-- 褰撳墠鑱屽姟 --> + <div class="user-item"> + <div class="item-left"> + <el-form-item class="optionItem" label="褰撳墠鑱屽姟:" prop="jobTitle"> + <el-input v-model="user.jobTitle" placeholder="璇疯緭鍏ュ綋鍓嶈亴鍔�"></el-input> + </el-form-item> + </div> + <div class="item-right"></div> + </div> + <!-- 濉啓鎵�灞瀖ac鍦板潃 --> + <div class="user-item"> + <div class="item-left"> + <el-form-item class="optionItem" label="濉啓鎵�灞瀖ac鍦板潃:" prop="mac"> + <el-input v-model="user.mac" placeholder="璇峰~鍐欐墍灞瀖ac鍦板潃"></el-input> + </el-form-item> + </div> + <div class="item-right"></div> + </div> + <!-- 濉啓鎵�灞瀒p鍦板潃 --> + <div class="user-item"> + <div class="item-left"> + <el-form-item class="optionItem" label="濉啓鎵�灞瀒p鍦板潃:" prop="ip"> + <el-input v-model="user.ip" placeholder="璇峰~鍐欐墍灞瀒p鍦板潃"></el-input> + </el-form-item> + </div> + <div class="item-right"></div> + </div> + <el-form-item> + <div class="optionBtn"> + <el-button type="primary" class="btn submit" @click.native.prevent="handleUser">鎻愪氦 + </el-button> + <el-button class="btn reset" @click.native.prevent="resetForm">閲嶇疆</el-button> + </div> + </el-form-item> + </el-form> + + </div> + </main> + </div> +</template> +<script> +import { getTypeList } from '@/utils/helper' +export default { + data() { + const validateNickname = (rule, value, callback) => { + if (!value) { + callback(new Error("鎵�灞炲鍚嶄笉鑳戒负绌�")); + } else { + callback(); + } + }; + const validatePass = (rule, value, callback) => { + if (!value) { + callback(new Error("鐢ㄦ埛瀵嗙爜涓嶈兘涓虹┖")); + } else { + const rep = /^\w+$/; + if (!rep.test(value)) { + callback(new Error("瀵嗙爜鍙兘鏄互鏁板瓧銆�26涓嫳鏂囧瓧姣嶆垨鑰呬笅鍒掔嚎缁勬垚鐨勫瓧绗︿覆")); + } else { + callback(); + } + } + }; + const validateTruename = (rule, value, callback) => { + if (!value) { + callback(new Error("鐢ㄦ埛濮撳悕涓嶈兘涓虹┖")); + } else { + callback(); + } + }; + const validatePhone = (rule, value, callback) => { + if (!value) { + callback(new Error("鎵嬫満鍙风爜涓嶈兘涓虹┖")); + } else { + const rep = /(^1[3|4|5|7|8|9]\d{9}$)|(^09\d{8}$)/ + if (!rep.test(value)) { + callback("璇疯緭鍏ユ纭殑鎵嬫満鍙风爜"); + } else { + callback(); + } + } + }; + const validateMail = (rule, value, callback) => { + if (value) { + const rep = /^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/; + if (!rep.test(value)) { + callback(new Error("璇疯緭鍏ユ纭殑閭")) + } else { + callback(); + } + } else { + callback(); + } + }; + const validateRole = (rule, value, callback) => { + if (!value) { + callback(new Error("鎵�灞炶鑹蹭笉鑳戒负绌�")); + } else { + callback() + } + }; + const validateType = (rule, value, callback) => { + if (!value) { + callback(new Error("鐢ㄦ埛绫诲瀷涓嶈兘涓虹┖")); + } else { + callback() + } + }; + const validateDepartment = (rule, value, callback) => { + if (!value) { + callback(new Error("璇烽�夋嫨鐢ㄦ埛閮ㄩ棬")); + } else { + callback() + } + }; + const validateWork = (rule, value, callback) => { + if (!value) { + callback(new Error("鐢ㄦ埛褰撳墠鑱屽姟涓嶈兘涓虹┖")); + } else { + callback(); + } + }; + const validateMac = (rule, value, callback) => { + if (value) { + callback(); + } else { + callback() + } + }; + const validateIp = (rule, value, callback) => { + if (value) { + callback(); + } else { + callback() + } + }; + return { + user: { + nickName: '', + password: '', + username: '', + sex: 1, + isDy: 0, + mobile: '', + email: '', + role: null, + userType: null, + zjarea: '', + zjnumber: '', + zjother: '', + departmentId: null, + jobTitle: null, + mac: '', + ip: '', + }, + createUserRules: { + nickName: [ + { required: true, trigger: "blur", validator: validateNickname }, + ], + password: [ + { required: true, trigger: "blur", validator: validatePass }, + ], + username: [ + { required: true, trigger: "blur", validator: validateTruename }, + ], + sex: [ + { required: true, trigger: "blur" }, + ], + isDy: [ + { required: true, trigger: "blur" }, + ], + mobile: [ + { required: true, trigger: "blur", validator: validatePhone }, + ], + email: [ + { required: true, trigger: "blur", validator: validateMail }, + ], + role: [ + { required: true, trigger: "change", validator: validateRole }, + ], + userType: [ + { required: true, trigger: "change", validator: validateType }, + ], + zj: [ + { required: false, trigger: "blur" }, + ], + departmentId: [ + { required: true, trigger: "change", validator: validateDepartment }, + ], + jobTitle: [ + { required: true, trigger: "blur", validator: validateWork }, + ], + mac: [ + { required: false, trigger: "blur", validator: validateMac }, + ], + ip: [ + { required: false, trigger: "blur", validator: validateIp }, + ], + }, + roleList: [ + + ], + typeList: [ + + ], + departList: [], + mylabel: '', + defaultProps: { + children: 'children', + label: 'departName', + disabled: (data, node) => { + if (node.level === 1 && node.childNodes.length !== 0) { + return !data.leaf + } + } + }, + selectOrg: { + orgsid: [] + }, + } + }, + created() { + // 鑾峰彇瑙掕壊鍒楄〃 + this.getRoleList(); + // 鑾峰彇鐢ㄦ埛绫诲瀷 + this.getUserTypeList(); + // 鑾峰彇閮ㄩ棬 + this.getDepartList(); + }, + methods: { + // 鎻愪氦娉ㄥ唽 + handleUser() { + this.$refs['user'].validate((valid) => { + console.log(valid); + if (valid) { + const { user, selectOrg } = this; + console.log(user); + this.$axios.post('sccg/admin/register', { + departmentId: selectOrg.orgsid[0], + email: user.email, + icon: '', + isDy: `${user.isDy}`, + jobTitle: user.jobTitle, + mobile: user.mobile, + note: '', + roleIds: user.role, + // nickName: user.nickName, + sex: `${user.sex}`, + password: user.password, + userType: user.userType, + username: user.username, + zj: user.zjarea + `${user.zjnumber}` + user.zjother, + nickName: user.nickName + // departName:user.departName, + }).then(res => { + if (res.code === 200) { + console.log(1); + this.$message({ + type: 'success', + message: res.message, + }) + this.$emit('sendDialog', { flag: false }); + } else if (res.code === 500 && res.message === "鎿嶄綔澶辫触") { + this.$message({ + type: 'warning', + message: '璇ョ敤鎴峰凡娉ㄥ唽' + }) + } else { + this.$message({ + type: 'warning', + message: res.message + }) + } + }) + } else { + return false + } + }) + }, + // 鑾峰彇瑙掕壊鍒楄〃 + getRoleList() { + this.$axios({ + method: 'get', + url: 'sccg/role/listAll', + }) + .then(res => { + this.roleList = res.data; + }) + }, + // 閲嶇疆琛ㄥ崟 + resetForm() { + this.$refs['user'].resetFields(); + }, + // 鑾峰緱閮ㄩ棬鍚嶇О + getDepartName(data) { + this.departList.forEach(item => { + if (item.id === data) { + this.user.departName = item.departName + } + }) + }, + // 鑾峰彇鐢ㄦ埛绫诲瀷 + async getUserTypeList() { + this.typeList = await getTypeList(1, '07'); + }, + // 鑾峰彇閮ㄩ棬鏍� + getDepartList() { + this.$axios({ + method: 'get', + url: 'sccg/depart/tree' + }) + .then(res => { + this.departList = res.data; + }) + }, + handleCheck(data, checked) { + this.user.departmentId = data.departName; + // 鑾峰彇褰撳墠閫夋嫨鐨刬d鍦ㄦ暟缁勪腑鐨勭储寮� + const indexs = this.selectOrg.orgsid.indexOf(data.id) + // 濡傛灉涓嶅瓨鍦ㄦ暟缁勪腑锛屽苟涓旀暟缁勪腑宸茬粡鏈変竴涓猧d骞朵笖checked涓簍rue鐨勬椂鍊欙紝浠h〃涓嶈兘鍐嶆閫夋嫨銆� + if (indexs < 0 && this.selectOrg.orgsid.length === 1 && checked) { + this.$message({ + message: '鍙兘閫夋嫨涓�涓儴闂紒', + type: 'warning', + showClose: true + }) + // 璁剧疆宸查�夋嫨鐨勮妭鐐逛负false 寰堥噸瑕� + this.$refs.tree.setChecked(data, false) + } else if (this.selectOrg.orgsid.length === 0 && checked) { + // 鍙戠幇鏁扮粍涓虹┖ 骞朵笖鏄凡閫夋嫨 + // 闃叉鏁扮粍鏈夊�硷紝棣栧厛娓呯┖锛屽啀push + this.selectOrg.orgsid = [] + this.selectOrg.orgsid.push(data.id) + } else if ( + indexs >= 0 && + this.selectOrg.orgsid.length === 1 && + !checked + ) { + // 鍐嶆鐩存帴杩涜璧嬪�间负绌烘搷浣� + this.selectOrg.orgsid = [] + this.user.departmentId = ''; + } + }, + }, + props: ['sendDialog'] +} +</script> +<style lang="scss" scoped> +.createUser { + border-radius: 1px; + background-color: #09152f; + + main { + text-align: left; + padding: 0 55px; + background-color: #09152f; + padding-bottom: 50px; + padding-top: 20px; + + .mainContent { + display: flex; + // justify-content: center; + margin-top: 50px; + width: 100%; + &::v-deep .el-form-item__label { + color: #4b9bb7; + } + + &::v-deep .el-input__inner { + background-color: #09152f; + border: 1px solid #17324c; + } + + .el-form-item__content { + width: 400px; + .el-select { + width: 100%; + } + } + + .sp-item { + .item-left{ + display: flex; + } + } + + .user-item { + display: flex; + justify-content: space-between; + .item-left { + width: 500px; + } + .item-right { + line-height: 40px; + color: #4b9bb7; + font-size: 12px; + // margin-left: 16px; + } + + .left-px :deep(.el-form-item__content) { + margin-left: 0px !important; + } + } + + .optionBtn { + display: flex; + margin-top: 20px; + + .btn { + padding: 12px 50px; + } + } + + } + } +} +</style> \ No newline at end of file diff --git a/src/views/systemSetting/device/grid/components/header/index.vue b/src/views/systemSetting/device/grid/components/header/index.vue new file mode 100644 index 0000000..d5e5dea --- /dev/null +++ b/src/views/systemSetting/device/grid/components/header/index.vue @@ -0,0 +1,110 @@ +<template> + <header> + <div class="headerContent"> + <div class="search"> + <span>绛涢�夋潯浠�:</span> + <el-input placeholder="璇疯緭鍏ュ唴瀹�" v-model="search"></el-input> + <div class="findBtn"> + <el-button type="primary" @click="setSearch">鏌ヨ</el-button> + </div> + </div> + <div class="addUser"> + <!-- :before-close="handleClose" --> + <el-button class="addBtn" type="primary" @click="dialogCreate = true">娣诲姞鐢ㄦ埛</el-button> + <el-dialog :visible.sync="dialogCreate" title="鏂板璐︽埛" width="60%" v-if="dialogCreate" + :before-close="handleClose"> + <createUser @sendDialog="sendDialog" /> + </el-dialog> + </div> + </div> + </header> +</template> +<script> +import createUser from "../createUser"; +export default { + components: { + createUser, + }, + data() { + return { + dialogCreate: false, + search: '', + } + }, + methods: { + setSearch() { + this.$emit('getSearch', { text: this.search }) + }, + sendDialog(flag) { + console.log(flag); + this.dialogCreate = flag.flag; + this.$emit('setDialog', { flag: true }) + }, + handleClose(done) { + this.$confirm('纭鍏抽棴锛�') + .then(_ => { + this.dialogCreate = false; + done(); + }) + .catch(_ => { }); + } + }, + props: ['setDialog', 'getSearch', 'flag'], +} +</script> +<style lang="scss" scoped> +header { + background-color: #09152f; + border: 1pox solid #fff; + + .headerContent { + padding: 0 40px; + display: flex; + line-height: 100px; + justify-content: space-between; + align-items: center; + + .search { + display: flex; + justify-content: flex-start; + + span { + flex: 1; + } + + .el-input { + flex: 2; + color: #1d3f57; + + &::v-deep .el-input__inner { + background-color: #09152f; + border: 1px solid #17324c; + } + } + + } + + .findBtn { + line-height: 100px; + margin-left: 15px; + display: flex; + align-items: center; + margin-top: -2px; + + .el-button { + padding: 12px 25px; + border-radius: 20px; + } + } + + .addBtn { + background-color: #eb5d01; + border: none; + border-radius: 20px; + padding: 12px 30px; + } + + + } +} +</style> \ No newline at end of file diff --git a/src/views/systemSetting/device/grid/components/main/index.vue b/src/views/systemSetting/device/grid/components/main/index.vue new file mode 100644 index 0000000..4ccec1b --- /dev/null +++ b/src/views/systemSetting/device/grid/components/main/index.vue @@ -0,0 +1,508 @@ +<template> + <main> + <div class="mainContent"> + <!-- 鏁版嵁灞曠ず --> + <el-table ref="multipleTable" + :header-cell-style="{background:'#06122c','font-size':'12px',color:'#4b9bb7','font-weight':'650','line-height':'45px'}" + :data="tableData" style="width: 100%" :row-class-name="tableRowClassName" + @selection-change="tableChange"> + <el-table-column type="selection" min-width="5"> + </el-table-column> + <el-table-column label="鐢ㄦ埛ID" min-width="6"> + <template slot-scope="scope">{{ scope.row.id }}</template> + </el-table-column> + <el-table-column prop="nickName" label="鐢ㄦ埛鍚嶇О" min-width="10"> + </el-table-column> + <el-table-column prop="username" label="鎵�灞炲鍚�" min-width="8"> + </el-table-column> + <el-table-column prop="mobile" label="鑱旂郴鏂瑰紡" min-width="7"> + </el-table-column> + <el-table-column prop="note" label="鎵�灞炶鑹�" min-width="8"> + <template slot-scope="scope"> + <span>{{filterRole(scope.row.roles)}}</span> + </template> + </el-table-column> + <el-table-column prop="departName" label="鎵�灞為儴闂�" min-width="8"> + </el-table-column> + <el-table-column prop="jobTitle" label="鎵�灞炶亴鍔�" min-width="8"> + </el-table-column> + <el-table-column prop="createTime" label="鍒涘缓鏃堕棿" min-width="10"> + <template slot-scope="scope"> + <span>{{changeTime(scope.row)}}</span> + </template> + </el-table-column> + <el-table-column prop="status" label="鍚敤" min-width="5"> + <template slot-scope="scope"> + <!-- @change="handleChangeStatus(scope.row)" --> + <el-switch class="switchStyle" v-model="scope.row.status" + active-color="#3fef9a" inactive-color="#000212" disabled> + </el-switch> + </template> + </el-table-column> + <el-table-column prop="operation" label="鎿嶄綔" min-width="20"> + <template slot-scope="scope"> + <div class="operation"> + <span @click="handleChangeRole(scope.row,'role')">淇敼瑙掕壊</span> + <span class="line">|</span> + <span @click="handleFind(scope.row)">鏌ョ湅</span> + <span class="line">|</span> + <span @click="handleChangeRole(scope.row,'password')">淇敼瀵嗙爜</span> + <span class="line">|</span> + <span @click="handleDelete(scope.row)">鍒犻櫎</span> + <span class="line">|</span> + <span @click="handleChangeRole(scope.row,'depart')">淇敼閮ㄩ棬</span> + </div> + </template> + </el-table-column> + </el-table> + <!-- 鏌ョ湅椤甸潰 --> + <el-dialog :visible.sync="dialogView" width="45%" v-if="dialogView" + title="鏌ョ湅鐢ㄦ埛淇℃伅"> + <MyView :userInfo=userInfo></MyView> + </el-dialog> + <!-- 淇敼椤甸潰 --> + <el-dialog :visible.sync="dialogUpdate" width="45%" v-if="dialogUpdate" + :title="updateFlag ? flag.role ? '淇敼鐢ㄦ埛瑙掕壊淇℃伅' : flag.depart ? '淇敼鐢ㄦ埛閮ㄩ棬淇℃伅': '淇敼鐢ㄦ埛瀵嗙爜' :''" + :before-close="handleClose"> + <updateUser :updateFlag="updateFlag" :userInfo=userInfo :flag=flag @closeDialog="closeDialog" + :getUserList="getUserList" v-if="!flag.password" /> + <MyPwd v-else :userInfo=userInfo @closeDialog="closeDialog"></MyPwd> + </el-dialog> + <!-- tools --> + <div class="tools"> + <div class="funs"> + <div class="funsItem funs-sp"> + <el-checkbox v-model="all" @change="selectAll()">鍏ㄩ��</el-checkbox> + </div> + <div class="funsItem funs-sp"> + <el-checkbox v-model="unsame" @change="disSame(tableData)">鍙嶉��</el-checkbox> + </div> + <div class="funsItem"> + <el-select v-model="myIdx" placeholder="鎵归噺鎿嶄綔" @change="selectChange"> + <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" + :disabled="item.disabled"> + </el-option> + </el-select> + </div> + </div> + <div class="pagination"> + <el-pagination background :current-page="currentPage" layout="prev, pager, next" :total="totalNum" + :page-size="pageSize" @current-change="changeCurrentPage" @prev-click="handlePrev" + @next-click="handleNext"> + </el-pagination> + </div> + </div> + </div> + </main> +</template> +<script> +import helper from '@/utils/mydate' +import updateUser from '../updateUser'; +import MyPwd from '../password' +import MyView from '../myView' +export default { + components: { + updateUser, MyPwd,MyView + }, + data() { + return { + tableData: [], + search: "", + dialogUpdate: false, + dialogView:false, + updateFlag: false, + userInfo: '', + totalNum: 0, + pageSize: 10, + currentPage: 1, + renderFlag: false, + flag: { + role: false, + password: false, + depart: false, + }, + all: false, + unsame: false, + myIdx: 0, + preMyIdx: 0, + options: [ + { + value: 0, + label: '鎵归噺鎿嶄綔', + disabled: true, + }, + { + value: 1, + label: '鎵归噺鍚敤', + }, + { + value: 2, + label: '鎵归噺绂佺敤', + }, + { + value: 3, + label: '鎵归噺鍒犻櫎', + } + ], + tempList: [] + } + }, + created() { + this.getUserList(); + }, + methods: { + async selectChange(list) { + console.log(this.tempList); + if (this.tempList.length !== 0) { + this.preMyIdx = list; + if (list === 3) { + await this.mulDelte(this.tempList); + } else if (list === 2) { + await this.mulUpdateStatus(this.tempList, 0); + } else { + await this.mulUpdateStatus(this.tempList, 1); + } + this.myIdx = 0; + } else { + this.myIdx = this.preMyIdx; + this.$message({ + type: 'warning', + message: '鎮ㄨ繕娌¢�変腑浠讳綍鏁版嵁', + }) + } + }, + tableChange(list) { + this.tempList = []; + list.forEach(item => { + this.tempList.push(item.id); + }) + if (list.length === this.tableData.length) { + this.all = true; + } else { + this.all = false + } + }, + // 鎵归噺鍒犻櫎鐢ㄦ埛淇℃伅 + mulDelte(idArr) { + console.log(idArr); + this.$confirm("鎮ㄧ‘瀹氳杩涜鎵归噺鍒犻櫎鐢ㄦ埛鍚�?") + .then(_ => { + this.$axios({ + method: 'post', + url: 'sccg/admin/deleteBatch?ids=' + idArr, + }) + .then(res => { + if (res.code === 200) { + this.$message({ + type: 'success', + message: '鍒犻櫎鐢ㄦ埛淇℃伅鎴愬姛', + }) + this.getUserList(); + } else { + this.$message({ + type: 'error', + message: res.message + }) + } + console.log(res); + }) + }) + .catch(err => { console.log(err) }) + }, + // 鎵归噺淇敼璐﹀彿 + mulUpdateStatus(idArr, flag) { + console.log(flag); + this.$confirm(flag === 1 ? "鎮ㄧ‘瀹氳杩涜鎵归噺鍚敤鐢ㄦ埛鍚�?" : '鎮ㄧ‘瀹氳杩涜鎵归噺绂佺敤鐢ㄦ埛鍚�?') + .then(_ => { + this.$axios({ + method: 'post', + url: 'sccg/admin/updateStatusBatch?ids=' + idArr + '&status=' + flag, + }) + .then(res => { + if (res.code === 200) { + this.$message({ + type: 'success', + message: '鏇存敼鐢ㄦ埛鐘舵�佹垚鍔�', + }) + this.getUserList(); + } else { + this.$message({ + type: 'error', + message: res.message + }) + } + console.log(res); + }) + }) + .catch(err => { console.log(err) }) + }, + changeTime({ createTime }) { + return helper(createTime); + }, + selectAll() { + this.$refs.multipleTable.toggleAllSelection(); + }, + disSame(list) { + list.forEach(row => { + this.$refs.multipleTable.toggleRowSelection(row) + }) + }, + // 鍒犻櫎鐢ㄦ埛 + handleDelete({ id }) { + this.$confirm('纭鍒犻櫎锛�').then(_ => { + this.$axios({ + method: 'post', + url: 'sccg/admin/delete/' + id, + }).then(res => { + console.log(res); + this.$message({ + message: res.message, + type: 'success' + }) + this.getUserList(); + }) + }).catch(_ => { }) + }, + closeDialog({ flag }) { + this.dialogUpdate = flag; + this.getUserList(); + }, + handleClose(done) { + if (this.updateFlag) { + this.$confirm('纭鍏抽棴锛�') + .then(_ => { + this.dialogUpdate = false; + this.updateFlag = false; + done(); + }) + .catch(_ => { }); + }else{ + done(); + } + }, + // 褰撳墠椤垫敼鍙樿Е鍙戜簨浠� + changeCurrentPage(page) { + this.currentPage = page; + this.getUserList(); + }, + // 涓婁竴椤电偣鍑讳簨浠� + handlePrev(page) { + this.currentPage = page; + this.getUserList(); + }, + // 涓嬩竴椤电偣鍑讳簨浠� + handleNext(page) { + this.currentPage = page; + this.getUserList(); + }, + // 淇敼瑙掕壊 + handleChangeRole(obj, mykey) { + this.dialogUpdate = true; + this.updateFlag = true; + for (let key in this.flag) { + if (key == mykey) { + this.flag[key] = true; + } else { + this.flag[key] = false; + } + } + this.userInfo = obj; + }, + // 淇敼鐢ㄦ埛鐘舵�� + handleChangeStatus(obj) { + let { id, status } = obj; + status == true ? status = 1 : status = 0; + this.$axios.post(`sccg/admin/updateStatus/` + id + '?status=' + status).then(res => { + console.log(res); + }) + }, + // 鑾峰彇鐢ㄦ埛鍒楄〃 + getUserList() { + const that = this; + const { currentPage, pageSize, search } = this; + // 鑾峰彇鎵�鏈夌敤鎴蜂俊鎭�佺敤鎴锋煡璇�(鏆傛椂鏀寔鐢佃瘽鍙风爜) + this.$axios.get(`sccg/admin/list?keyword=${search}¤t=${currentPage}&pageSize=${pageSize}`).then(res => { + if (res.code === 200) { + res.data.records.forEach(item => { + item.status == 1 ? item.status = true : item.status = false; + }) + that.totalNum = res.data.total; + that.tableData = res.data.records; + this.renderFlag = true; + } + }) + }, + // 鏌ョ湅鐢ㄦ埛淇℃伅(涓嶅彲淇敼) + handleFind(rowData) { + this.dialogView = true; + this.userInfo = rowData; + }, + // 璁剧疆琛ㄦ牸鏂戦┈绾� + tableRowClassName({ row, rowIndex }) { + if ((rowIndex + 1) % 2 == 0) { + return 'warning-row'; + } else { + return 'success-row'; + } + return ''; + }, + // 澶勭悊鐢ㄦ埛鎵�灞炶鑹� + filterRole(arr){ + let str = ''; + if(arr.length === 0){ + return; + } + arr.forEach((item,index)=>{ + if(item!==null){ + if(index<arr.length-1){ + str+=item.name +','; + }else{ + str+=item.name; + } + } + }) + return str; + } + }, + props: ['refresh', 'keyword', 'resetFresh'], + watch: { + refresh: { + handler(newValue, oldValue) { + if (newValue == true) { + this.search = ''; + if (this.keyword != '') { + this.search = this.keyword; + } + this.currentPage = 1; + this.getUserList(); + this.$emit('resetFresh', { flag: false }) + } + }, + immediate: true + } + } +} +</script> +<style lang="scss" scoped> +main { + background-color: #09152f; + margin-top: 20px; + padding-bottom: 50px; + border: 1pox solid #fff; + + .mainTitle { + line-height:60px; + } + + .tools { + display : flex; + justify-content: space-between; + align-items: center; + padding: 0 20px; + + .funs { + display: flex; + .funs-sp{ + border: 1px solid #17324c; + } + .funsItem { + line-height: 28px; + display: flex; + align-items: center; + border-radius: 4px; + font-size: 12px; + margin-left: 10px; + + .el-checkbox { + width: 80px; + padding: 0 10px; + } + + .el-select { + width: 120px; + } + + &::v-deep .el-input__inner { + border: none; + background-color: #09152f; + } + + &:hover { + border: 1px solid #4b9bb7; + } + + &:hover .el-checkbox { + color: #4b9bb7; + } + } + + } + + .pagination { + margin-top: 50px; + display: flex; + line-height: 50px; + justify-content: center; + + .el-pagination { + + &::v-deep li, + &::v-deep .btn-prev, + &::v-deep .btn-next { + background-color: #071f39; + color: #4b9bb7; + } + + &::v-deep .active { + background-color: #409eff; + color: #fff; + } + } + } + } + + .el-table { + color: #4b9bb7; + font-size: 10px; + .operation { + display: flex; + font-size: 10px; + .line { + padding: 0 1px; + } + + span:hover { + cursor: pointer; + } + } + } + // &::v-deep .switchStyle .el-switch__label { + // position: absolute; + // display: none; + // color: #fff; + // } + + // &::v-deep .el-switch__core { + // background-color: rgba(166, 166, 166, 1); + // } + + // &::v-deep .switchStyle .el-switch__label--left { + // z-index: 9; + // left: 20px; + // } + + // &::v-deep .switchStyle .el-switch__label--right { + // z-index: 9; + // left: 4px; + // } + + // &::v-deep .switchStyle .el-switch__label.is-active { + // display: block; + // } + + // &::v-deep .switchStyle.el-switch .el-switch__core, + // &::v-deep .el-switch .el-switch__label { + // width: 56px !important; + // } +} +</style> \ No newline at end of file diff --git a/src/views/systemSetting/device/grid/components/myView/index.vue b/src/views/systemSetting/device/grid/components/myView/index.vue new file mode 100644 index 0000000..8608360 --- /dev/null +++ b/src/views/systemSetting/device/grid/components/myView/index.vue @@ -0,0 +1,202 @@ +<template> + <div class="updateUser"> + <main> + <div class="mainContent"> + <el-form ref="user" label-width="140px" autoComplete="on" :model="user" :rules="createUserRules" + label-position="right"> + <!-- 鐢ㄦ埛鍚嶇О --> + <el-form-item class="optionItem" label="鐢ㄦ埛鍚嶇О:" prop="username"> + <el-input v-model="user.username" placeholder="濉啓鐢ㄦ埛鍚嶇О" disabled></el-input> + </el-form-item> + <!-- 鐢ㄦ埛瀵嗙爜 --> + <el-form-item class="optionItems" label="鐢ㄦ埛瀵嗙爜:" prop="password"> + <el-input v-model="user.password" type="password" placeholder="璇疯緭鍏ョ敤鎴峰瘑鐮�" disabled> + </el-input> + </el-form-item> + <!-- 鎵�灞炵敤鎴峰鍚� --> + <el-form-item class="optionItem" label="鎵�灞炵敤鎴峰鍚�:" prop="nickName"> + <el-input v-model="user.nickName" placeholder="璇峰~鍐欑敤鎴峰鍚�" disabled></el-input> + </el-form-item> + <!-- 鎬у埆 --> + <el-form-item class="optionItem" label="鎬у埆:" prop="sex"> + <el-radio-group v-model="user.sex" disabled> + <el-radio :label="1">鐢�</el-radio> + <el-radio :label="0">濂�</el-radio> + </el-radio-group> + </el-form-item> + <!-- 鏄惁鍏氬憳 --> + <el-form-item class="optionItem" label="鏄惁鍏氬憳:" prop="isDy"> + <el-radio-group v-model="user.isDy" disabled> + <el-radio :label="1">鏄�</el-radio> + <el-radio :label="0">鍚�</el-radio> + </el-radio-group> + </el-form-item> + <!-- 鎵�灞炴墜鏈哄彿鐮� --> + <el-form-item class="optionItem" label="鎵�灞炴墜鏈哄彿鐮�:" prop="mobile"> + <el-input v-model="user.mobile" placeholder="璇峰~鍐欐墜鏈哄彿鐮�" disabled></el-input> + </el-form-item> + <!-- 閭鍦板潃 --> + <el-form-item class="optionItem" label="閭鍦板潃:" prop="email"> + <el-input v-model="user.email" placeholder="璇峰~鍐欓偖绠卞湴鍧�" disabled></el-input> + </el-form-item> + <!-- 閫夋嫨瑙掕壊 --> + <el-form-item class="optionItem" label="閫夋嫨瑙掕壊:" prop="role"> + <el-select v-model="user.role" placeholder="璇烽�夋嫨鎵�灞炶鑹�" multiple collapse-tags + disabled> + <el-option v-for="item in roleList" :key="item.id" :label="item.name" :value="item.id"> + </el-option> + </el-select> + </el-form-item> + <!-- 鐢ㄦ埛绫诲瀷 --> + <el-form-item class="optionItem" label="鐢ㄦ埛绫诲瀷:" prop="userType"> + <el-select v-model="user.userType" placeholder="璇烽�夋嫨鐢ㄦ埛绫诲瀷" disabled> + <el-option v-for="item in typeList" :key="item.id" :label="item.name" :value="item.id"> + </el-option> + </el-select> + </el-form-item> + <!-- 鎵�灞為儴闂� --> + <el-form-item class="optionItem" label="鎵�灞為儴闂�:" prop="departmentId"> + <el-input v-model="user.departName"></el-input> + </el-form-item> + <!-- 褰撳墠鑱屽姟 --> + <el-form-item class="optionItem" label="褰撳墠鑱屽姟:" prop="jobTitle"> + <el-input v-model="user.jobTitle" placeholder="璇疯緭鍏ュ綋鍓嶈亴鍔�" disabled></el-input> + </el-form-item> + <!-- 濉啓鎵�灞瀖ac鍦板潃 --> + <el-form-item class="optionItem" label="濉啓鎵�灞瀖ac鍦板潃:" prop="mac"> + <el-input v-model="user.mac" placeholder="璇峰~鍐欐墍灞瀖ac鍦板潃" disabled></el-input> + </el-form-item> + <!-- 濉啓鎵�灞瀒p鍦板潃 --> + <el-form-item class="optionItem" label="濉啓鎵�灞瀒p鍦板潃:" prop="ip"> + <el-input v-model="user.ip" placeholder="璇峰~鍐欐墍灞瀒p鍦板潃" disabled></el-input> + </el-form-item> + </el-form> + </div> + </main> + </div> +</template> +<script> +export default { + data() { + return { + user: { + }, + createUserRules: { + }, + roleList: [ + + ], + typeList: [], + departList: [], + } + }, + created() { + const that = this; + this.user = JSON.parse(JSON.stringify(that.userInfo)); + this.user.departName = this.user.departName ? this.user.departName : '鏆傛棤鎵�灞為儴闂�' + // 鑾峰彇鎵�鏈夎鑹插垪琛� + this.getRoleList(); + // 鑾峰彇褰撳墠鐢ㄦ埛瑙掕壊鍒楄〃 + this.getUserRole(this.user.id) + // 鑾峰彇鍏ㄩ儴閮ㄩ棬鍒楄〃 + this.$axios.get('/sccg/depart/tree').then(res => { + this.departList = res.data; + }) + }, + methods: { + // 鑾峰彇瑙掕壊鍒楄〃 + getRoleList() { + this.$axios({ + method: 'get', + url: 'sccg/role/listAll', + }) + .then(res => { + this.roleList = res.data; + }) + }, + // 鑾峰彇鐢ㄦ埛鐨勮鑹插垪琛� + getUserRole(id) { + this.$axios({ + method: 'get', + url: `sccg/admin/role/${id}` + }) + .then(res => { + const arr = []; + res.data.forEach(item => { + arr.push(item.id); + }) + this.user.role = arr; + }) + }, + }, + props: ['userInfo'] +} +</script> +<style lang="scss" scoped> +.updateUser { + border-radius: 1px; + background-color: #09152f; + + :deep(.el-tag) { + background-color: #09152f; + } + + .el-select-dropdown.is-multiple .el-select-dropdown__item.selected { + background-color: #09152f; + color: #4b9bb7; + } + + main { + text-align: left; + padding: 0 55px; + background-color: #09152f; + padding-bottom: 50px; + + .mainContent { + display: flex; + justify-content: center; + padding-top: 50px; + + .el-form-item__content { + width: 400px; + + .el-select { + width: 100%; + } + } + + .optionHandleSp { + display: flex; + + .areaNumber, + .moreNumber { + flex: 1; + } + + .telNumber { + flex: 2; + } + } + + .optionBtn { + display: flex; + margin-top: 20px; + + .btn { + padding: 12px 50px; + } + } + + } + } +} + +.updateUser::v-deep .el-form-item__label { + color: #4b9bb7; +} + +.updateUser::v-deep .el-input__inner { + background-color: #09152f; + border: 1px solid #17324c; +} +</style> \ No newline at end of file diff --git a/src/views/systemSetting/device/grid/components/password/index.vue b/src/views/systemSetting/device/grid/components/password/index.vue new file mode 100644 index 0000000..90e5ed3 --- /dev/null +++ b/src/views/systemSetting/device/grid/components/password/index.vue @@ -0,0 +1,145 @@ +<template> + <div class="password"> + <el-form ref="pwd" label-width="140px" autoComplete="on" :model="user" :rules="passrules"> + <!-- 鍒濆瀵嗙爜 --> + <el-form-item class="optionItem" label="鍒濆瀵嗙爜:" prop="password"> + <el-input v-model="user.password" type="password" placeholder="璇峰~鍐欏垵濮嬪瘑鐮�"></el-input> + </el-form-item> + <!-- 鏂板瘑鐮� --> + <el-form-item class="optionItem" label="鏂板瘑鐮�:" prop="newPwd"> + <el-input v-model="user.newPwd" type="password" placeholder="璇峰~鍐欐柊瀵嗙爜"></el-input> + </el-form-item> + <!-- 鏂板瘑鐮� --> + <el-form-item class="optionItem" label="纭鏂板瘑鐮�:" prop="secondPwd"> + <el-input v-model="user.secondPwd" type="password" placeholder="纭鎮ㄧ殑鏂板瘑鐮�"></el-input> + </el-form-item> + + </el-form> + <div class="pwd-footer"> + <el-button @click="resetForm">鍙栨秷</el-button> + <el-button type="primary" @click="handleSubmit">鎻愪氦</el-button> + </div> + </div> +</template> +<script> +export default { + data() { + const checkPwd = (rule, value, callback) => { + if (!value) { + callback(new Error('鍒濆瀵嗙爜涓嶈兘涓虹┖')) + } else { + callback(); + } + } + const checkNewPwd = (rule, value, callback) => { + if (!value) { + callback(new Error('鏂板瘑鐮佷笉鑳戒负绌�')) + }else if(value === this.user.password){ + callback(new Error('鏂板瘑鐮佷笉鑳藉拰鏃у瘑鐮佷竴鏍�')) + } else { + callback(); + } + } + const checkSame = (rule, value, callback) => { + if (!value) { + callback(new Error('纭瀵嗙爜涓嶈兘涓虹┖')) + } else if (value !== this.user.newPwd) { + console.log(111); + callback(new Error('鎮ㄨ緭鍏ョ殑涓ゆ瀵嗙爜缁撴灉涓嶅悓')); + } else { + + callback(); + } + } + return { + user: { + password: '', + secondPwd: '', + newPwd: '', + }, + passrules: { + password: [ + { + required: true, + trigger: 'blur', + validator: checkPwd + }, + ], + secondPwd: [ + { + required: true, + trigger: 'blur', + validator: checkSame + } + ], + newPwd: [ + { + required: true, + trigger: 'blur', + validator: checkNewPwd + } + ] + } + } + }, + props: ['userInfo', 'closeDialog'], + created() { + + }, + methods: { + // 鎻愪氦 + handleSubmit() { + const { userInfo,user } = this; + this.$refs.pwd.validate((valid) => { + if (valid) { + this.$axios({ + method:'post', + url:'sccg/admin/updatePassword', + data:{ + newPassword:user.newPwd, + oldPassword:user.password, + username:userInfo.username + } + }) + .then(res=>{ + if(res.code === 200){ + this.$emit('closeDialog',{flag:false}); + this.$message({ + type:'success', + message:'瀵嗙爜淇敼鎴愬姛' + }) + }else{ + this.$message({ + type:'warning', + message:res.message + }) + } + }) + } else { + return false; + } + }) + }, + // 娓呯┖琛ㄥ崟 + resetForm() { + this.$refs.pwd.resetFields(); + this.$emit('closeDialog',{flag:false}); + } + } +} +</script> +<style lang="scss" scoped> +.password { + padding: 50px 100px; + + ::v-deep .el-input__inner { + background-color: #09152f; + border: 1px solid #17324c; + } + + .pwd-footer { + display: flex; + justify-content: center; + } +} +</style> \ No newline at end of file diff --git a/src/views/systemSetting/device/grid/components/updateUser/index.vue b/src/views/systemSetting/device/grid/components/updateUser/index.vue new file mode 100644 index 0000000..80a74ab --- /dev/null +++ b/src/views/systemSetting/device/grid/components/updateUser/index.vue @@ -0,0 +1,291 @@ +<template> + <div class="updateUser"> + <main> + <div class="mainContent"> + <el-form ref="user" label-width="140px" autoComplete="on" :model="user" :rules="createUserRules" + label-position="right"> + <!-- 閫夋嫨瑙掕壊 --> + <el-form-item class="optionItem" label="閫夋嫨瑙掕壊:" prop="role" v-if="flag.role"> + <el-select v-model="user.role" placeholder="璇烽�夋嫨鎵�灞炶鑹�" multiple collapse-tags> + <el-option v-for="item in roleList" :key="item.id" :label="item.name" :value="item.id"> + </el-option> + </el-select> + </el-form-item> + <!-- 鎵�灞為儴闂� --> + <el-form-item class="optionItem" label="鎵�灞為儴闂�:" prop="departmentId" v-else> + <el-select v-model="user.departName" placeholder="璇烽�夋嫨鎵�灞為儴闂�" :disabled="!flag.depart"> + <el-option :value="mylabel"> + <el-tree ref="tree" :check-strictly="true" :data="departList" :props="defaultProps" + show-checkbox @check-change="handleCheck" + :default-checked-keys="[selectOrg.orgsid[0],]" default-expand-all node-key="id"> + </el-tree> + </el-option> + </el-select> + </el-form-item> + <el-form-item> + <div class="optionBtn"> + <el-button type="primary" class="btn submit" @click.native.prevent="handleUser">鎻愪氦 + </el-button> + </div> + </el-form-item> + </el-form> + + </div> + </main> + </div> +</template> +<script> +export default { + data() { + return { + user: { + }, + createUserRules: { + }, + roleList: [ + + ], + departList: [], + mylabel: "", + defaultProps: { + children: "children", + label: "departName", + }, + selectOrg: { + orgsid: [], + }, + tempName: '', + tempRole: [] + } + }, + created() { + this.user = JSON.parse(JSON.stringify(this.userInfo)); + this.tempName = this.user.departName; + this.selectOrg.orgsid.push(this.user.departmentId); + // 鑾峰彇鎵�鏈夎鑹插垪琛� + this.getRoleList(); + // 鑾峰彇褰撳墠鐢ㄦ埛瑙掕壊鍒楄〃 + this.getUserRole(this.user.id) + // 鑾峰彇鍏ㄩ儴閮ㄩ棬鍒楄〃 + this.$axios.get('/sccg/depart/tree').then(res => { + this.departList = res.data; + }) + }, + methods: { + // 淇敼閮ㄩ棬 + changeDepart(data) { + this.departList.forEach(item => { + if (item.id === data) { + this.user.departName = item.departName; + } + }) + }, + // 淇敼鐢ㄦ埛淇℃伅 + handleUser() { + const { flag, user, tempName, selectOrg, tempRole, isArraySame } = this; + let umsDepartManage={userId:user.id,departId:selectOrg.orgsid[0]} + this.$refs.user.validate((valid) => { + if (valid) { + user.isDy = `${user.isDy}`; + if (flag.depart) { + if (tempName === user.departName) { + this.$message({ + type: 'warning', + message: '鎮ㄧ殑閮ㄩ棬杩樻湭鏇存敼' + }) + } else { + if (user.departName) { + this.$axios({ + method: 'put', + url: `/sccg/depart/user_update_depart?userId=`+user.id+'&departId='+selectOrg.orgsid[0] + }) + .then(res => { + this.$message({ + type: res.code === 200 ? 'success' : 'warning', + message: res.message, + }) + this.getUserList(); + this.$emit('closeDialog', { flag: false }); + }) + } else { + this.$message({ + type: 'warning', + message: '鐢ㄦ埛閮ㄩ棬涓嶈兘涓虹┖' + }) + } + } + + } else { + if (user.role.length === 0) { + this.$message({ + type: 'warning', + message: '鐢ㄦ埛瑙掕壊涓嶈兘涓虹┖', + }) + } + else if (isArraySame(tempRole, user.role) && tempRole.length === user.role.length) { + this.$message({ + type: 'warning', + message: '鎮ㄨ繕鏈洿鏀硅鑹�', + }) + } + else { + this.$axios({ + method: 'post', + url: 'sccg/admin/role/update?adminId=' + user.id + '&roleIds=' + user.role, + }) + .then(res => { + this.$message({ + type: res.code === 200 ? 'success' : 'warning', + message: res.message, + }) + this.getUserList(); + this.$emit('closeDialog', { flag: false }); + }) + } + } + } else { + return false; + } + }) + }, + // 鑾峰彇瑙掕壊鍒楄〃 + getRoleList() { + this.$axios({ + method: 'get', + url: 'sccg/role/listAll', + }) + .then(res => { + this.roleList = res.data; + }) + }, + // 鑾峰彇鐢ㄦ埛鐨勮鑹插垪琛� + getUserRole(id) { + this.$axios({ + method: 'get', + url: `sccg/admin/role/${id}` + }) + .then(res => { + const arr = []; + res.data.forEach(item => { + arr.push(item.id); + }) + this.user.role = arr; + this.tempRole = arr; + }) + }, + // 閮ㄩ棬淇敼 + handleCheck(data, checked) { + console.log(this.selectOrg.orgsid[0]) + this.user.departName = data.departName; + // 鑾峰彇褰撳墠閫夋嫨鐨刬d鍦ㄦ暟缁勪腑鐨勭储寮� + const indexs = this.selectOrg.orgsid.indexOf(data.id); + // 濡傛灉涓嶅瓨鍦ㄦ暟缁勪腑锛屽苟涓旀暟缁勪腑宸茬粡鏈変竴涓猧d骞朵笖checked涓簍rue鐨勬椂鍊欙紝浠h〃涓嶈兘鍐嶆閫夋嫨銆� + if (indexs < 0 && this.selectOrg.orgsid.length === 1 && checked) { + this.$message({ + message: "鍙兘閫夋嫨涓�涓儴闂紒", + type: "warning", + showClose: true, + }); + // 璁剧疆宸查�夋嫨鐨勮妭鐐逛负false 寰堥噸瑕� + this.$refs.tree.setChecked(data, false); + } else if (this.selectOrg.orgsid.length === 0 && checked) { + // 鍙戠幇鏁扮粍涓虹┖ 骞朵笖鏄凡閫夋嫨 + // 闃叉鏁扮粍鏈夊�硷紝棣栧厛娓呯┖锛屽啀push + this.selectOrg.orgsid = []; + this.selectOrg.orgsid.push(data.id); + } else if ( + indexs >= 0 && + this.selectOrg.orgsid.length === 1 && + !checked + ) { + // 鍐嶆鐩存帴杩涜璧嬪�间负绌烘搷浣� + this.selectOrg.orgsid = []; + this.user.departName = '' + } + }, + // 鍒ゆ柇鏁扮粍鏄惁鐩哥瓑 + isArraySame(arr1, arr2) { + let flag = true + arr1.sort((a, b) => a - b) + arr2.sort((a, b) => a - b) + arr1.forEach(item => { + arr2.forEach(child => { + if (item !== child) { + flag = false + } + }) + }) + return flag + } + }, + props: ['userInfo', 'flag', 'closeDialog', 'getUserList'] +} +</script> +<style lang="scss" scoped> +.updateUser { + border-radius: 1px; + background-color: #09152f; + + :deep(.el-tag) { + background-color: #09152f; + } + + .el-select-dropdown.is-multiple .el-select-dropdown__item.selected { + background-color: #09152f; + color: #4b9bb7; + } + + main { + text-align: left; + padding: 0 55px; + background-color: #09152f; + padding-bottom: 50px; + + .mainContent { + display: flex; + justify-content: center; + padding-top: 50px; + + .el-form-item__content { + width: 400px; + + .el-select { + width: 100%; + } + } + + .optionHandleSp { + display: flex; + + .areaNumber, + .moreNumber { + flex: 1; + } + + .telNumber { + flex: 2; + } + } + + .optionBtn { + display: flex; + margin-top: 20px; + + .btn { + padding: 12px 50px; + } + } + + } + } +} + +.updateUser::v-deep .el-form-item__label { + color: #4b9bb7; +} + +.updateUser::v-deep .el-input__inner { + background-color: #09152f; + border: 1px solid #17324c; +} +</style> \ No newline at end of file diff --git a/src/views/systemSetting/device/grid/index.vue b/src/views/systemSetting/device/grid/index.vue index 2baad4a..4faf378 100644 --- a/src/views/systemSetting/device/grid/index.vue +++ b/src/views/systemSetting/device/grid/index.vue @@ -1,5 +1,49 @@ <template> - <div class="grid"> - 222 + <div class="userList"> + <myHeader @setDialog="changeDialog" @getSearch="getSearch"></myHeader> + <myMain :refresh="isFresh" :keyword="keyword" @resetFresh="resetFresh" /> </div> -</template> \ No newline at end of file +</template> +<script> +import myHeader from "./components/header" +import myMain from "./components/main" +export default { + components: { + myHeader, + myMain + }, + data() { + return { + isFresh: false, + keyword: '', + } + }, + created(){ + + }, + methods: { + // 鑾峰彇鎼滅储杩斿洖缁撴灉 + getSearch({ text }) { + this.keyword = text; + this.isFresh = true; + }, + // 鑾峰彇鍒锋柊缁撴灉 + changeDialog({ flag }) { + console.log(flag); + this.isFresh = flag; + }, + // 閲嶇疆isFresh + resetFresh({ flag }) { + this.isFresh = flag; + console.log(this.isFresh); + }, + } +} +</script> +<style lang="scss" scoped> +.userList { + text-align: left; + margin: 10px 20px; + color: #4b9bb7; +} +</style> \ No newline at end of file -- Gitblit v1.8.0