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