From a8cd3010f037e14cf0207fced9c7c0c4d6e8c547 Mon Sep 17 00:00:00 2001 From: zhanghua <314079846@qq.com> Date: 星期二, 01 十一月 2022 17:50:25 +0800 Subject: [PATCH] Merge branch 'master' of http://42.193.1.25:9521/r/sccg_ui --- src/views/operate/viewEvent/index.vue | 630 ++++ src/views/systemSetting/device/grid/components/header/index.vue | 110 src/views/systemSetting/device/grid/components/createUser/index.vue | 555 +++ src/views/operate/management/message/index.vue | 12 src/store/system/handheldTerminal/index.js | 12 src/views/systemSetting/device/grid/components/updateUser/index.vue | 291 + src/views/operate/images/index.vue | 640 ++++ src/views/operate/viewEvent/components/illExamine/index.vue | 284 + src/views/operate/sms/smsTemplate/index.vue | 640 ++++ src/views/operate/viewEvent/components/examine/index.vue | 283 + src/views/operate/rectification/renovationList/index.vue | 139 src/views/operate/viewEvent/components/closure/index.vue | 336 ++ src/views/systemSetting/device/grid/components/password/index.vue | 145 src/views/operate/video/index.vue | 296 + src/views/operate/rectification/surveyList/components/createInterface/index.vue | 550 ++- src/views/operate/images/createUser/index.vue | 459 +++ src/views/operate/rectification/surveyList/components/viewInterface/index.vue | 488 +- src/views/systemSetting/device/grid/index.vue | 50 src/views/operate/rectification/surveyList/index.vue | 608 ++- src/views/operate/rectification/taskList/index.vue | 44 src/views/systemSetting/device/grid/components/myView/index.vue | 202 + src/views/operate/viewEvent/components/illclosure/index.vue | 334 ++ src/router/index.js | 17 src/views/operate/rectification/renovationList/components/createInterface/index.vue | 77 src/views/operate/images/updateUser/index.vue | 317 ++ src/views/operate/sms/smsIndex/index.vue | 632 ++++ src/views/operate/sms/index.vue | 3 src/views/operate/rectification/renovationList/components/viewInterface/index.vue | 80 src/views/video/index.vue | 2 src/views/systemSetting/device/grid/components/main/index.vue | 508 +++ src/views/operate/sms/smsTemplate/createTemplate/index.vue | 432 ++ 31 files changed, 8,320 insertions(+), 856 deletions(-) diff --git a/src/router/index.js b/src/router/index.js index a36d7c7..e058d65 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -249,6 +249,23 @@ path: 'log', name: 'log', component: () => import('@/views/operate/log'), + }, + { + path:'sms', + name:'sms', + component:() => import('@/views/operate/sms'), + children: [ + { + path: 'smsIndex', + name: 'smsIndex', + component: () => import('@/views/operate/sms/smsIndex'), + }, + { + path: 'smsTemplate', + name: 'smsTemplate', + component: () => import('@/views/operate/sms/smsTemplate'), + }, + ] } ] }, diff --git a/src/store/system/handheldTerminal/index.js b/src/store/system/handheldTerminal/index.js index 2f447bb..09286ec 100644 --- a/src/store/system/handheldTerminal/index.js +++ b/src/store/system/handheldTerminal/index.js @@ -5,14 +5,14 @@ userInfo: {}, }, actions: { - getHandheldTerminalList(context, params) { - return handheldTerminalApi.getHandheldTerminalList(params); + getLoudspeakerList(context, params) { + return loudspeakerApi.getLoudspeakerList(params); }, - saveHandheldTerminal(context, params) { - return handheldTerminalApi.saveHandheldTerminal(params); + saveLoudspeaker(context, params) { + return loudspeakerApi.saveLoudspeaker(params); }, - updateHandheldTerminal(context, params) { - return handheldTerminalApi.updateHandheldTerminal(params); + updateLoudspeaker(context, params) { + return loudspeakerApi.updateLoudspeaker(params); }, }, }; \ No newline at end of file diff --git a/src/views/operate/images/createUser/index.vue b/src/views/operate/images/createUser/index.vue new file mode 100644 index 0000000..4b72bdc --- /dev/null +++ b/src/views/operate/images/createUser/index.vue @@ -0,0 +1,459 @@ +<template> + <div class="createUser"> + <main> + <div class="mainContent"> + <el-form + ref="user" + label-width="140px" + autoComplete="on" + :model="depart" + :rules="createDepartRules" + label-position="right" + > + <!-- 閮ㄩ棬鍚嶇О --> + <el-form-item class="optionItem" label="闂绫诲瀷:" prop="departName"> + <el-input + v-model="depart.departName" + placeholder="璇疯緭鍏ラ棶棰樼被鍨�" + ></el-input> + </el-form-item> + <!-- 涓婄骇閮ㄩ棬 --> + <el-form-item class="optionItems" label="澶х被鍚嶇О:" prop="parentId"> + <el-select v-model="depart.parentId" placeholder="璇疯緭鍏ュぇ绫诲悕绉�"> + <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> + <!-- 閮ㄩ棬绫诲瀷 --> + <el-form-item class="optionItem" label="灏忕被鍚嶇О:" prop="departType"> + <el-select v-model="depart.departType" placeholder="璇烽�夋嫨灏忕被鍚嶇О"> + <el-option + v-for="item in departTypeList" + :key="item.id" + :label="item.name" + :value="item.id" + > + </el-option> + </el-select> + </el-form-item> + <!--娣诲姞浜哄憳 --> + <el-form-item class="optionItem add" label="娣诲姞鍥剧墖:"> + <ul class="addPerson"> + <li + v-for="(item, index) in checkedList" + :key="index" + @click="setLeader(index)" + > + <div class="li-item"> + <div class="li-icon"> + <i + :class="[ + 'el-icon-user-solid', + item.leader ? 'leader' : '', + ]" + ></i> + </div> + <label + style="font-size: 12px" + :class="[item.leader ? 'leader' : '']" + >{{ item.username }}</label + > + </div> + </li> + <li class="li-btn"> + <i class="el-icon-plus" @click="openUser = true"></i> + </li> + </ul> + <div class="card" v-if="openUser"> + <el-card class="box-card"> + <div slot="header" class="myclear"> + <span>宸ヤ綔浜哄憳</span> + <div @click="addUser">纭</div> + </div> + <div class="scrollWrap"> + <el-checkbox-group v-model="checkedUser"> + <el-checkbox + v-for="user in userList" + :label="user.id" + :key="user.id" + > + {{ user.username}} + </el-checkbox> + </el-checkbox-group> + </div> + <div class="hidebar"></div> + </el-card> + </div> + </el-form-item> + </el-form> + </div> + </main> + <footer> + <div class="optionBtn"> + <el-button @click="handleClose">鍙栨秷</el-button> + <el-button type="primary" class="btn submit" @click="handleUser" + >纭畾</el-button + > + </div> + </footer> + </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(); + } else { + callback(); + } + }; + const validatePhone = (rule, value, callback) => { + if (!value) { + callback(); + } else { + callback(); + } + }; + return { + depart: { + departName: "", + parentId: "", + departType: "", + departDes: "", + }, + createDepartRules: { + departName: [ + { required: true, trigger: "blur", validator: validateNickname }, + ], + parentId: [ + { required: false, trigger: "blur", validator: validatePass }, + ], + departType: [ + { required: false, trigger: "blur", validator: validatePhone }, + ], + departDes: [{ required: false, trigger: "blur" }], + }, + userList: [], + departList: [], + checkedUser: [], + checkedList: [], + openUser: false, + departTypeList: [], + selectOrg: { + orgsid: [], + }, + mylabel: "", + defaultProps: { + children: "children", + label: "departName", + }, + }; + }, + created() { + const that = this; + // 鑾峰彇閮ㄩ棬鏍戝舰缁撴瀯鍥� + this.getDepartTree(); + // 鑾峰彇鐢ㄦ埛鍒楄〃 + this.getUserList(); + // 鑾峰彇閮ㄩ棬绫诲瀷鍒楄〃 + this.getDepartTypeList(); + }, + methods: { + handleUser() { + this.$refs.user.validate((valid) => { + if (valid) { + const { depart, checkedList, selectOrg } = this; + const arr = []; + checkedList.forEach((item) => { + arr.push({ leader: item.leader, userId: item.id }); + }); + console.log(arr); + this.$axios({ + method: "post", + url: "/sccg/depart/create", + data: { + departName: depart.departName, + parentId: selectOrg.orgsid[0], + departType: depart.departType, + departDes: depart.departDes, + departManagerList: arr, + }, + }).then((res) => { + if (res.code === 200) { + this.$message({ + message: res.message, + type: "success", + }); + this.refresh(); + } else if (res.code === 2001) { + this.$message({ + message: res.message, + type: "error", + }); + this.refresh(); + } + }); + } else { + return false; + } + }); + }, + // 鑾峰彇閮ㄩ棬鏍戝舰缁撴瀯鍥� + getDepartTree() { + this.$axios({ + method: "get", + url: "sccg/depart/tree", + }).then((res) => { + // console.log(res); + // res.data.unshift({ id: 0, departName: "椤剁骇鑿滃崟" }); + this.departList = res.data; + }); + }, + // 鑾峰彇鎵�鏈夌敤鎴蜂俊鎭� + getUserList() { + // 鑾峰彇鎵�鏈夌敤鎴蜂俊鎭�佺敤鎴锋煡璇�(鏆傛椂鏀寔鐢佃瘽鍙风爜) + this.$axios.get(`/sccg/depart/query_surplus_user`).then((res) => { + if (res.code === 200) { + this.userList = res.data; + } + }); + }, + addUser() { + console.log(this.checkedUser); + console.log(this.userList); + this.checkedList = []; + this.userList.forEach((item) => { + this.checkedUser.forEach((child) => { + if (item.id == child) { + this.checkedList.push({ + id: item.id, + username: item.username, + leader: false, + }); + } + }); + }); + this.checkedList[0].leader = true; + this.openUser = false; + }, + handleClose() { + this.$emit("changMyDialog", { flag: false }); + }, + // 鑾峰彇閮ㄩ棬绫诲瀷 + async getDepartTypeList() { + this.departTypeList = await getTypeList(1, "08"); + }, + handleCheck(data, checked) { + this.depart.parentId = 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.depart.parentId = ""; + } + }, + // 璁剧疆棰嗗 + setLeader(idx) { + this.checkedList.forEach((item, index) => { + item.leader = index === idx; + }); + }, + }, + props: ["refresh", "changMyDialog"], +}; +</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; + + &::v-deep .el-form-item__label { + color: #4b9bb7; + } + + &::v-deep .el-input__inner { + background-color: #09152f; + border: 1px solid #17324c; + } + + &::v-deep .el-textarea__inner { + background-color: #09152f; + border: 1px solid #17324c; + } + + .addPerson { + display: flex; + list-style: none; + padding: 0; + flex-wrap: wrap; + max-width: 280px; + li { + color: #fff; + text-align: center; + font-size: 30px; + margin-left: 10px; + } + } + .li-icon { + background-color: #cccccc; + width: 36px; + height: 36px; + border-radius: 50%; + margin: 0 auto; + } + .li-btn { + background-color: #cccccc; + width: 36px; + height: 36px; + border-radius: 50%; + } + .el-form-item__content { + width: 400px; + + .el-select { + width: 100%; + } + } + + .optionHandleSp { + display: flex; + + .areaNumber, + .moreNumber { + flex: 1; + } + + .telNumber { + flex: 2; + } + } + } + + .add { + position: relative; + + .card { + position: absolute; + z-index: 2000; + right: 0; + + .box-card { + min-height: 240px; + max-height: 260px; + overflow: hidden; + background-color: #09152f; + position: relative; + max-width: 220px; + + .scrollWrap { + overflow: scroll; + height: 180px; + position: relative; + color: #4b9bb7; + + .el-checkbox-group { + display: flex; + flex-direction: column; + + .el-checkbox { + line-height: 20px; + } + } + } + + .myclear { + width: 100%; + line-height: 20px; + color: #4b9bb7; + display: flex; + justify-content: space-between; + } + + .hidebar { + position: absolute; + top: 77px; + right: 20px; + width: 20px; + height: 180px; + background-color: #09152f; + } + + .item { + line-height: 40px; + } + } + } + } + } + + .li-item { + display: flex; + flex-direction: column; + } + + .leader { + color: red; + } + .el-input { + width: 280px !important; + } + footer { + border-top: 1px solid #fff; + height: 80px; + display: flex; + align-items: center; + justify-content: flex-end; + padding-right: 20px; + } +} +</style> \ No newline at end of file diff --git a/src/views/operate/images/index.vue b/src/views/operate/images/index.vue new file mode 100644 index 0000000..c0d8ecd --- /dev/null +++ b/src/views/operate/images/index.vue @@ -0,0 +1,640 @@ +<template> + <div class="userList"> + <header> + <div class="headerContent"> + <div class="search"> + <span>绫诲瀷鏌ヨ:</span> + <div class="option"> + <el-input v-model="info.type" placeholder="璇疯緭鍏ラ棶棰樻煡璇�"></el-input> + </div> + <span>涓婁紶鏃堕棿:</span> + <div class="option"> + <el-input v-model="info.startTime" placeholder="閫夋嫨涓婁紶鏃堕棿"></el-input> + </div> + <div class="findBtn"> + <el-button type="primary" @click="getUserList">鏌ヨ</el-button> + </div> + <div class="findBtn"> + <el-button type="primary" @click="addImages">娣诲姞鍥剧墖</el-button> + </div> + </div> + </div> + </header> + <main> + <div class="mainContent"> + <div class="type-nav"> + <div @click="changeTypeChecked(index)" v-for="(item, index) in typeList" :key="item.name" + :class="[item.checked ? 'is-active' : '', 'type-item']">{{ item.name }}</div> + </div> + <!-- 鏁版嵁灞曠ず --> + <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 prop="code" label="鎵�灞炰簨浠剁紪鍙�" min-width="18"> + </el-table-column> + <el-table-column prop="questionType" label="闂绫诲瀷" min-width="8"> + </el-table-column> + <el-table-column prop="bigType" label="澶х被鍚嶇О" min-width="8"> + </el-table-column> + <el-table-column prop="smallType" label="灏忕被鍚嶇О" min-width="8"> + </el-table-column> + <el-table-column prop="imagesId" label="鍥剧墖Id" min-width="8"> + </el-table-column> + <el-table-column prop="uploadTime" label="涓婁紶鏃堕棿" min-width="15" v-if="mystatus === 1"> + </el-table-column> + <el-table-column prop="operation" label="鎿嶄綔" min-width="15"> + <template slot-scope="scope"> + <div class="operation"> + <span @click="handleFind(scope.row)">鏌ョ湅</span> + <span class="line">|</span> + <span @click="handleUpdate(scope.row)">淇敼</span> + <span class="line">|</span> + <span @click="handleDelete(scope.row)">鍒犻櫎</span> + </div> + </template> + </el-table-column> + </el-table> + <!-- 璇︽儏椤靛睍绀� --> + <el-dialog :visible.sync="dialogView" width="80%" title="鍩虹淇℃伅(浜哄伐)" v-if="dialogView" + :before-close="handleClose"> + <MyDetail :info=info v-if="mystatus == 1 ? true : false"></MyDetail> + <MyIllDetail :info=info v-else></MyIllDetail> + </el-dialog> + <!-- 涓婁紶椤甸潰 --> + <!-- <el-dialog :visible.sync="dialogUpload" width="80%" title="涓婁紶澶勭疆缁撴灉" v-if="dialogUpload" + :before-close="handleClose"> --> + <!-- <uploadVio v-if="mystatus === 1" :caseId="caseId" :mycode="caseCode" @closeDialog="closeDialog"></uploadVio> + <uploadIll v-else :caseId="caseId" :mycode="caseCode" @closeDialog="closeDialog"></uploadIll> --> + <!-- </el-dialog> --> + <!-- tools --> + <!-- 鏌ョ湅淇敼椤甸潰 --> + <el-dialog + :visible.sync="dialogUpdate" + width="40%" + title="淇敼" + v-if="dialogUpdate" + :before-close="handleClose" + > + <updateUser + /> + <!-- :updateFlag="updateFlag" + :userInfo="userInfo" + :getDepartList="context === '' ? getUserList : search" + @changeDialog="changMyDialog" --> + </el-dialog> + <el-dialog + :visible.sync="dialogcheck" + width="40%" + title="鏌ョ湅" + v-if="dialogcheck" + :before-close="handleClose" + > + <updateUser + /> + <!-- :updateFlag="updateFlag" + :userInfo="userInfo" + :getDepartList="context === '' ? getUserList : search" + @changeDialog="changMyDialog" --> + </el-dialog> + + <el-dialog + :visible.sync="dialogAdd" + width="40%" + title="娣诲姞" + v-if="dialogAdd" + :before-close="handleClose" + > + <createUser + /> + <!-- :updateFlag="updateFlag" + :userInfo="userInfo" + :getDepartList="context === '' ? getUserList : search" + @changeDialog="changMyDialog" --> + </el-dialog> + + <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" disabled> + <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> + </div> +</template> +<script> +// import uploadVio from './updateUser/uploadResult/vio' +// import uploadIll from "./updateUser/uploadResult/ill" +import createUser from "./createUser"; +import updateUser from "./updateUser"; +export default { + components: { + // updateUser, + // uploadVio, uploadIll, + updateUser, createUser + }, + data() { + return { + dialogUpdate:false, + dialogcheck:false, + tableData: [ + { + code: "SJ202211010001", + questionType: "杩濊", + bigType: "杩濆弽鍥藉鏈夊叧鏍囧噯缂栧埗鍩庝埂瑙勫垝", + smallType: "鍦ㄥ眳姘戜綇瀹呮ゼ銆佹湭閰嶅璁剧珛涓撶敤鐑熼亾鐨勫晢浣忕患鍚堟ゼ銆佸晢浣忕患鍚堟ゼ鍐呬笌灞呬綇灞傜浉閭荤殑鍟嗕笟妤煎眰鍐呮柊寤恒�佹敼寤恒�佹墿寤轰骇鐢熸补鐑熴�佸紓鍛炽�佸簾姘旂殑椁愰ギ鏈嶅姟椤圭洰", + imagesId: "1", + uploadTime: "2022-10-31 20:20:01" + }, + { + code: "SJ202211010001", + questionType: "杩濊", + bigType: "杩濆弽鍥藉鏈夊叧鏍囧噯缂栧埗鍩庝埂瑙勫垝", + smallType: "鍦ㄥ眳姘戜綇瀹呮ゼ銆佹湭閰嶅璁剧珛涓撶敤鐑熼亾鐨勫晢浣忕患鍚堟ゼ銆佸晢浣忕患鍚堟ゼ鍐呬笌灞呬綇灞傜浉閭荤殑鍟嗕笟妤煎眰鍐呮柊寤恒�佹敼寤恒�佹墿寤轰骇鐢熸补鐑熴�佸紓鍛炽�佸簾姘旂殑椁愰ギ鏈嶅姟椤圭洰", + imagesId: "1", + uploadTime: "2022-10-31 20:20:01" + }, + { + code: "SJ202211010001", + questionType: "杩濊", + bigType: "杩濆弽鍥藉鏈夊叧鏍囧噯缂栧埗鍩庝埂瑙勫垝", + smallType: "鍦ㄥ眳姘戜綇瀹呮ゼ銆佹湭閰嶅璁剧珛涓撶敤鐑熼亾鐨勫晢浣忕患鍚堟ゼ銆佸晢浣忕患鍚堟ゼ鍐呬笌灞呬綇灞傜浉閭荤殑鍟嗕笟妤煎眰鍐呮柊寤恒�佹敼寤恒�佹墿寤轰骇鐢熸补鐑熴�佸紓鍛炽�佸簾姘旂殑椁愰ギ鏈嶅姟椤圭洰", + imagesId: "1", + uploadTime: "2022-10-31 20:20:01" + }, + { + code: "SJ202211010001", + questionType: "杩濊", + bigType: "杩濆弽鍥藉鏈夊叧鏍囧噯缂栧埗鍩庝埂瑙勫垝", + smallType: "鍦ㄥ眳姘戜綇瀹呮ゼ銆佹湭閰嶅璁剧珛涓撶敤鐑熼亾鐨勫晢浣忕患鍚堟ゼ銆佸晢浣忕患鍚堟ゼ鍐呬笌灞呬綇灞傜浉閭荤殑鍟嗕笟妤煎眰鍐呮柊寤恒�佹敼寤恒�佹墿寤轰骇鐢熸补鐑熴�佸紓鍛炽�佸簾姘旂殑椁愰ギ鏈嶅姟椤圭洰", + imagesId: "1", + uploadTime: "2022-10-31 20:20:01" + } + ], + context: "", + dialogUpload: false, + // dialogUpdate: false, + dialogView: false, + updateFlag:false, + userInfo:{}, + info: {}, + totalNum: 5, + pageSize: 10, + currentPage: 1, + all: false, + unsame: false, + myIdx: 0, + preMyIdx: 0, + options: [ + { + value: 0, + label: '鎵归噺鎿嶄綔', + disabled: true, + }, + { + value: 1, + label: '鎵归噺鍚敤', + }, + { + value: 2, + label: '鎵归噺绂佺敤', + }, + { + value: 3, + label: '鎵归噺鍒犻櫎', + } + ], + tempList: [], + typeList: [ + { + name: '鎽勫儚澶存帹閫�', + value: 1, + checked: true + }, + { + name: '鍗曞叺鎺ㄩ��', + value: 2, + checked: false, + }, + ], + statusArr: [], + mystatus: 1, + caseId: '', + caseCode: null, + dialogAdd:false, + } + }, + created() { + this.statusArr[0] = 6; + this.typeList.forEach(item => { + if (item.checked) { + this.statusArr[1] = item.value; + } + }) + this.getUserList(); + }, + methods: { + //淇敼 + handleUpdate(){ + this.dialogUpdate=true; + }, + // 鏌ョ湅 + handleFind(){ + this.dialogcheck=true; + }, + // 椤堕儴涓嬫媺妗� + setMystatus(value) { + console.log(value); + this.statusArr[1] = value; + this.changeTypeChecked(value - 1); + this.getUserList(); + }, + // 鎵归噺鍒犻櫎 + mulDelete(idArr) { + console.log(idArr); + this.$axios({ + method: 'delete', + url: 'sccg/violations/batch_delete?ids=' + idArr, + }).then(res => { + this.getUserList(); + this.$message({ + message: res.message, + type: res.code === 200 ? 'success' : 'warning' + }) + }) + }, + // 鎵ц涓嬫媺妗嗘搷浣� + selectChange(list) { + console.log(this.tempList); + if (this.tempList.length !== 0) { + if (list === 3) { + this.preMyIdx = list; + this.mulDelete(this.tempList); + } + } else { + this.myIdx = this.preMyIdx; + this.$message({ + type: 'warning', + message: '鎮ㄨ繕娌¢�変腑浠讳綍鏁版嵁', + }) + } + }, + // 鐩戝惉琛ㄦ牸 + tableChange(list) { + this.tempList = []; + list.forEach(item => { + this.tempList.push(item.code); + }) + if (list.length === this.tableData.length) { + this.all = true; + } else { + this.all = false + } + }, + // 鍏ㄩ�� + selectAll() { + this.$refs.multipleTable.toggleAllSelection(); + }, + // 鍙嶉�� + disSame(list) { + list.forEach(row => { + this.$refs.multipleTable.toggleRowSelection(row) + }) + }, + // 鍒犻櫎鍗曟潯鏁版嵁 + handleDelete({ number }) { + console.log(number); + this.$confirm('纭鍒犻櫎锛�') + .then(_ => { + console.log(1); + this.$axios({ + method: 'delete', + url: `sccg/violations/delete?id=${number}`, + }) + .then(res => { + console.log(res); + this.$message({ + type: res.code === 200 ? 'success' : 'warning', + message: res.message + }) + + this.getUserList(); + }) + }) + .catch(_ => { console.log(2) }); + }, + // 鑾峰彇鐢ㄦ埛鍒楄〃 + getUserList() { + const { currentPage, pageSize, context, statusArr } = this; + console.log(statusArr); + // this.$axios({ + // method: 'get', + // url: `sccg/base_case/query?state=${statusArr[0]}¤t=${currentPage}&size=${pageSize}&resource=2&type=${statusArr[1]}` + // }).then(res => { + // this.totalNum = res.data.total; + // this.tableData = res.data.records; + // console.log(res); + // }) + }, + // 鏇存敼杩濊/杩濆缓 + changeTypeChecked(idx) { + this.typeList.forEach((item, index) => { + if (index === idx) { + item.checked = true; + } else { + item.checked = false; + } + }) + this.mystatus = idx + 1; + console.log(this.mystatus); + this.statusArr[1] = this.typeList[idx].value; + this.getUserList(); + }, + // 璁剧疆琛ㄦ牸鏂戦┈绾� + tableRowClassName({ row, rowIndex }) { + if ((rowIndex + 1) % 2 == 0) { + return 'warning-row'; + } else { + return 'success-row'; + } + return ''; + }, + // 褰撳墠椤垫敼鍙樿Е鍙戜簨浠� + changeCurrentPage(page) { + this.currentPage = page; + this.getUserList(); + }, + // 涓婁竴椤电偣鍑讳簨浠� + handlePrev(page) { + this.currentPage = page; + this.getUserList(); + }, + // 涓嬩竴椤电偣鍑讳簨浠� + handleNext(page) { + this.currentPage = page; + this.getUserList(); + }, + addImages(){ + this.dialogAdd=true; + }, + handleClose(done) { + this.$confirm('纭鍏抽棴锛�') + .then(_ => { + this.dialogUpload = false; + // this.dialogUpdate = false; + done(); + }) + .catch(_ => { }); + }, + handleClose(done) { + this.$confirm('纭鍏抽棴锛�') + .then(_ => { + this.dialogUpload = false; + // this.dialogUpdate = false; + done(); + }) + .catch(_ => { }); + }, + async JumpView(data) { + await this.getEventInfo(data.code); + }, + // 鑾峰彇妗堜欢淇℃伅 + async getEventInfo(code) { + await this.$axios({ + method: 'get', + url: `sccg/base_case/baseCaseDetail/${code}` + }) + .then(res => { + this.info = res.data; + this.dialogView = true; + }) + }, + opernDialog(data) { + this.dialogUpload = true; + this.caseId = data.id; + this.caseCode = data.code + // console.log(data); + }, + // 鍏抽棴涓婁紶鐣岄潰 + closeDialog({ flag }) { + this.dialogUpload = flag; + this.getUserList(); + }, + // 澶勭悊鏃堕棿 + filterTime(time) { + return helper(time); + } + } +} +</script> +<style lang="scss" scoped> +.userList { + text-align: left; + margin: 10px 20px; + color: #4b9bb7; + + 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; + } + } + } + + &::v-deep .el-input__inner { + background-color: #09152f; + border: 1px solid #17324c; + } + + main { + background-color: #09152f; + margin-top: 20px; + padding-bottom: 50px; + border: 1pox solid #fff; + + .btn span:hover { + cursor: pointer; + } + + .type-nav { + display: flex; + line-height: 40px; + margin-left: 30px; + padding-top: 10px; + margin-bottom: 10px; + + .type-item { + width: 80px; + text-align: center; + + &:hover { + cursor: pointer; + } + } + + .is-active { + background-color: #070f22; + border-radius: 4px; + color: #fff; + } + } + + .tools { + display: flex; + justify-content: space-between; + align-items: center; + padding: 0 20px; + + .funs-sp { + border: 1px solid #17324c; + } + + .funs { + display: flex; + + .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; + } + + &: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; + + &::v-deep .cell { + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + } + + + .operation { + display: flex; + + .line { + padding: 0 5px; + } + + span:hover { + cursor: pointer; + } + } + } + } + + .line { + padding: 0 5px; + } +} +</style> \ No newline at end of file diff --git a/src/views/operate/images/updateUser/index.vue b/src/views/operate/images/updateUser/index.vue new file mode 100644 index 0000000..c25a5e3 --- /dev/null +++ b/src/views/operate/images/updateUser/index.vue @@ -0,0 +1,317 @@ +<template> + <div class="updateUser"> + <main> + <div class="mainContent"> + <el-form ref="user" style="width: 100%;"> + <el-form-item prop="code" label="鎵�灞炰簨浠剁紪鍙�" > + <el-input v-model="imagedata.code"></el-input> + </el-form-item> + <el-form-item prop="code" label="澶х被鍚嶇О" > + <el-input v-model="imagedata.questionType"></el-input> + </el-form-item> + <el-form-item prop="code" label="灏忕被鍚嶇О" > + <el-input v-model="imagedata.bigType"></el-input> + </el-form-item> + <el-form-item prop="code" label="鍥剧墖Id" > + <el-input v-model="imagedata.imagesId"></el-input> + </el-form-item> + <el-form-item prop="code" label="涓婁紶鏃堕棿" > + <el-input v-model="imagedata.uploadTime"></el-input> + </el-form-item> + <!-- <el-form-item prop="questionType" label="闂绫诲瀷" min-width="8" v-model="imagedata.questionType"> + </el-form-item> + <el-form-item prop="bigType" label="澶х被鍚嶇О" min-width="8" v-model="imagedata.bigType"> + </el-form-item> + <el-form-item prop="smallType" label="灏忕被鍚嶇О" min-width="8" v-model="imagedata.smallType"> + </el-form-item> + <el-form-item prop="imagesId" label="鍥剧墖Id" min-width="8" v-model="imagedata.imagesId"> + </el-form-item> + <el-form-item prop="uploadTime" label="涓婁紶鏃堕棿" min-width="15" v-model="imagedata.uploadTime"> --> + </el-form-item> + <!-- <el-form-item v-if="updateFlag"> --> + <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> +import { getTypeList } from "@/utils/helper"; +export default { + data() { + + return { + + imagedata: { + code: "SJ202211010001", + questionType: "杩濊", + bigType: "杩濆弽鍥藉鏈夊叧鏍囧噯缂栧埗鍩庝埂瑙勫垝", + smallType: "鍦ㄥ眳姘戜綇瀹呮ゼ銆佹湭閰嶅璁剧珛涓撶敤鐑熼亾鐨勫晢浣忕患鍚堟ゼ銆佸晢浣忕患鍚堟ゼ鍐呬笌灞呬綇灞傜浉閭荤殑鍟嗕笟妤煎眰鍐呮柊寤恒�佹敼寤恒�佹墿寤轰骇鐢熸补鐑熴�佸紓鍛炽�佸簾姘旂殑椁愰ギ鏈嶅姟椤圭洰", + imagesId: "1", + uploadTime: "2022-10-31 20:20:01" + }, + } + }, + created() { + // const that = this; + // this.user = JSON.parse(JSON.stringify(that.userInfo)); + // console.log(this.user); + // this.user.parentId = this.user.parentId === 0 ? '鏆傛棤涓婄骇閮ㄩ棬' : this.user.parentId; + // this.checkedList = this.user.userInfoDTOS; + // this.checkedList.forEach((e) => { + // this.checkedUser.push(e.userId); + // }); + // console.log(this.checkedUser) + // this.$axios({ + // method: "get", + // url: "sccg/depart/tree", + // }).then((res) => { + // that.departList = res.data; + // }); + // this.getUserList(this.user.id); + // // 鑾峰彇閮ㄩ棬绫诲瀷 + // this.getDepartType(); + }, + methods: { + // handleUser() { + // this.$refs["user"].validate((valid) => { + // if (valid) { + // const { user, checkedList } = this; + // const arr = []; + // checkedList.forEach((item) => { + // arr.push({ leader: item.leader, userId: item.id ? item.id : item.userId }); + // }); + // if (arr.length === 0) { + // this.$message({ + // type: 'warning', + // message: '璇烽�夋嫨閮ㄩ棬浜哄憳', + // }) + // } else { + // this.$axios + // .post("sccg/depart/update", { + // id: user.id, + // departName: user.departName, + // parentId: user.parentId === '鏆傛棤涓婄骇閮ㄩ棬' ? 0 : user.parentId, + // departDes: user.departDes, + // departManagerList: arr, + // }) + // .then((res) => { + // this.$message({ + // message: res.message, + // type: res.code === 200 ? "success" : "warning", + // }); + // this.$emit("changeDialog", { flag: false }); + // this.getDepartList(); + // }); + // } + // } else { + // return false; + // } + // }); + // }, + // // 鑾峰彇閮ㄩ棬绫诲瀷 + // async getDepartType() { + // this.typeList = await getTypeList(1, "08"); + // }, + + // // 璁剧疆棰嗗 + // setLeader(idx) { + // if (this.updateFlag) { + // this.checkedList.forEach((item, index) => { + // item.leader = index === idx; + // }); + // } + // }, + + // // 鑾峰彇鎵�鏈夌敤鎴蜂俊鎭� + // getUserList(id) { + // // 鑾峰彇鎵�鏈夌敤鎴蜂俊鎭�佺敤鎴锋煡璇�(鏆傛椂鏀寔鐢佃瘽鍙风爜) + // this.$axios.get(`/sccg/depart/query_surplus_exist_user?id=`+id).then((res) => { + // if (res.code === 200) { + // this.userList = res.data; + // } + // }); + // }, + // addUser() { + // this.checkedList = []; + // this.userList.forEach((item) => { + // this.checkedUser.forEach((child) => { + // if (item.id == child) { + // this.checkedList.push({ + // id: item.id, + // username: item.username, + // leader: false, + // }); + // } + // }); + // }); + // this.checkedList[0].leader = true; + // console.log(this.checkedList); + // this.openUser = false; + // }, + // }, + // props: ["userInfo", "updateFlag", "getDepartList", "changeDialog"], + }, + props:['updateFlag'] +}; +</script> +<style lang="scss" scoped> +.updateUser { + border-radius: 1px; + background-color: #09152f; + + main { + // border: 1px solid #fff; + text-align: left; + padding: 0 55px; + background-color: #09152f; + padding-bottom: 50px; + + // .mainTitle { + // color: #4b9bb7; + // font-weight: 600; + // line-height: 100px; + // font-size: 14px; + // } + + .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; + justify-content: center; + .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; +} + +.addPerson { + display: flex; + list-style: none; + padding: 0; + flex-wrap: wrap; + max-width: 280px; + + li { + color: #fff; + text-align: center; + font-size: 30px; + margin-left: 10px; + } +} + +.li-icon { + background-color: #cccccc; + width: 36px; + height: 36px; + border-radius: 50%; + margin: 0 auto; +} + +.li-btn { + background-color: #cccccc; + width: 36px; + height: 36px; + border-radius: 50%; +} + +.card { + position: absolute; + z-index: 2000; + right: 0; + + .box-card { + min-height: 240px; + max-height: 260px; + overflow: hidden; + background-color: #09152f; + position: relative; + max-width: 220px; + + .scrollWrap { + overflow: scroll; + height: 180px; + position: relative; + color: #4b9bb7; + + .el-checkbox-group { + display: flex; + flex-direction: column; + + .el-checkbox { + line-height: 20px; + } + } + } + + .myclear { + width: 100%; + line-height: 20px; + color: #4b9bb7; + display: flex; + justify-content: space-between; + } + + .hidebar { + position: absolute; + top: 77px; + right: 20px; + width: 20px; + height: 180px; + background-color: #09152f; + } + + .item { + line-height: 40px; + } + } +} + +.leader { + color: red; +} + +.el-input { + width: 280px !important; +} +</style> \ No newline at end of file diff --git a/src/views/operate/management/message/index.vue b/src/views/operate/management/message/index.vue index 61ab3fb..d53a03a 100644 --- a/src/views/operate/management/message/index.vue +++ b/src/views/operate/management/message/index.vue @@ -180,6 +180,7 @@ url: "sccg/message_audit/list", data: { messageId: context, + auditId:this.auditId, auditStatus: status, current: currentPage, pageSize: pageSize, @@ -210,6 +211,17 @@ this.dialogCheckSms = true; } }, + // 鑾峰彇褰撳墠鐧诲綍鐢ㄦ埛淇℃伅 + getLoginUserInfo() { + const name = sessionStorage.getItem('name'); + this.$axios({ + method: 'get', + url: 'sccg/admin/info?name=' + name, + }) + .then(res => { + this.auditId = res.data.userId + }) + }, // 鍏抽棴dialog closeDialog({ flag, index }) { this.dialogCheckSms = flag; diff --git a/src/views/operate/rectification/renovationList/components/createInterface/index.vue b/src/views/operate/rectification/renovationList/components/createInterface/index.vue index 1be774b..5f94365 100644 --- a/src/views/operate/rectification/renovationList/components/createInterface/index.vue +++ b/src/views/operate/rectification/renovationList/components/createInterface/index.vue @@ -5,39 +5,39 @@ <el-form ref="user" label-width="140px" autoComplete="on" :model="myInterface" :rules="createmyInterfaceRules" label-position="right"> <!-- 搴旂敤鍚嶇О --> - <el-form-item label="搴旂敤鍚嶇О:" prop="applicationName"> - <el-input v-model="myInterface.applicationName" placeholder="濉啓搴旂敤鍚嶇О"></el-input> + <el-form-item label="浠诲姟缂栧彿:" prop="applicationName"> + <el-input v-model="myInterface.applicationName" placeholder="濉啓浠诲姟缂栧彿"></el-input> </el-form-item> <!-- 搴旂敤鍥炬爣 --> - <el-form-item label="搴旂敤鍥炬爣:" prop="applicationIconUrl"> - <div class="iconBox"> - <div class="upload"> - <img src="@/assets/imgs/user/default-avatar.jpg" alt=""> - </div> - <div class="iconView"> - <span>绀烘剰鍥�</span> - <img src="@/assets/imgs/user/default-avatar.jpg" alt=""> - </div> - <div class="tip"> - <span>鍙厑璁镐笂浼爅pg,jpeg,png,svg鏍煎紡鐨勫浘鐗囷紝寤鸿灏哄涓�105px*105px</span> - </div> - </div> + <el-form-item label="妗堜欢缂栧彿:" prop="applicationIconUrl"> + <el-input v-model="myInterface.applicationName" placeholder="濉啓妗堜欢缂栧彿"></el-input> </el-form-item> <!-- 搴旂敤绫诲瀷 --> - <el-form-item label="搴旂敤绫诲瀷:" prop="applicationType"> - <div class="optionItem"> - <el-radio-group v-model="myInterface.applicationType"> - <el-radio :label="1">缃戦〉搴旂敤</el-radio> - </el-radio-group> - </div> + <el-form-item label="闂绫诲瀷:" prop="applicationType"> + <el-input v-model="myInterface.applicationName" placeholder="濉啓闂绫诲瀷"></el-input> </el-form-item> - <!--缃戠珯url --> - <el-form-item label="缃戠珯url:" prop="websiteUrl"> - <el-input v-model="myInterface.websiteUrl"></el-input> + <!-- 搴旂敤鍚嶇О --> + <el-form-item label="琛楅亾:" prop="applicationName"> + <el-input v-model="myInterface.applicationName" placeholder="濉啓琛楅亾"></el-input> </el-form-item> - <!-- 搴旂敤鎻忚堪 --> - <el-form-item label="搴旂敤鎻忚堪:" prop="description"> - <el-input v-model="myInterface.description" placeholder="璇峰~鍐欐弿杩�"></el-input> + <!-- 搴旂敤鍥炬爣 --> + <el-form-item label="绀惧尯:" prop="applicationIconUrl"> + <el-input v-model="myInterface.applicationName" placeholder="濉啓绀惧尯"></el-input> + </el-form-item> + <!-- 搴旂敤绫诲瀷 --> + <el-form-item label="鐩戠潱鍛�:" prop="applicationType"> + <el-input v-model="myInterface.applicationName" placeholder="濉啓鐩戠潱鍛�"></el-input> + </el-form-item> + <!-- 搴旂敤鍥炬爣 --> + <el-form-item label="闂鎻忚堪:" prop="applicationIconUrl"> + <el-input v-model="myInterface.applicationName" placeholder="濉啓闂鎻忚堪"></el-input> + </el-form-item> + <!-- 搴旂敤绫诲瀷 --> + <el-form-item label="涓婃姤鏃堕棿:" prop="applicationType"> + <el-input v-model="myInterface.applicationName" placeholder="濉啓涓婃姤鏃堕棿"></el-input> + </el-form-item> + <el-form-item label="鐘舵��:" prop="applicationType"> + <el-input v-model="myInterface.applicationName" placeholder="濉啓鐘舵��"></el-input> </el-form-item> <!-- 鎸夐挳 --> <el-form-item> @@ -95,7 +95,7 @@ }, createmyInterfaceRules: { applicationName: [ - { required: true, trigger: "blur", validator: validateApplicationName}, + { required: true, trigger: "blur", validator: validateApplicationName }, ], applicationIconUrl: [ { required: true, trigger: "blur", validator: validateApplicationIconUrl }, @@ -119,11 +119,11 @@ handleUser() { const { myInterface } = this; this.$axios.post('sccg/system/portal/thirdApp/add', { - websiteUrl:myInterface.websiteUrl, - applicationIconUrl:myInterface.applicationIconUrl, - applicationType:0, - description:myInterface.description, - applicationName:myInterface.applicationName + websiteUrl: myInterface.websiteUrl, + applicationIconUrl: myInterface.applicationIconUrl, + applicationType: 0, + description: myInterface.description, + applicationName: myInterface.applicationName }).then(res => { console.log(res); // if (res.code === 200) { @@ -145,6 +145,7 @@ padding: 0 55px; background-color: #09152f; padding-bottom: 50px; + .mainContent { display: flex; justify-content: center; @@ -188,16 +189,20 @@ } } } - .optionBtn{ + + .optionBtn { margin-top: 30px; - &::v-deep .el-button{ + + &::v-deep .el-button { padding: 12px 40px; } - .reset{ + + .reset { border: 1px solid #0079fe; color: #0079fe; } } + &::v-deep .el-form-item__label { color: #4b9bb7; } diff --git a/src/views/operate/rectification/renovationList/components/viewInterface/index.vue b/src/views/operate/rectification/renovationList/components/viewInterface/index.vue index 6b28ebb..4292c03 100644 --- a/src/views/operate/rectification/renovationList/components/viewInterface/index.vue +++ b/src/views/operate/rectification/renovationList/components/viewInterface/index.vue @@ -4,40 +4,48 @@ <div class="mainContent"> <el-form ref="user" label-width="140px" autoComplete="on" :model="myInterface" :rules="createmyInterfaceRules" label-position="right"> - <!-- 搴旂敤鍚嶇О --> - <el-form-item label="搴旂敤鍚嶇О:" prop="applicationName"> - <el-input v-model="myInterface.applicationName" placeholder="濉啓搴旂敤鍚嶇О"></el-input> + <!-- 搴旂敤鍚嶇О --> + <el-form-item label="浠诲姟缂栧彿:" prop="applicationName"> + <el-input v-model="myInterface.taskNumber" placeholder="濉啓浠诲姟缂栧彿"></el-input> </el-form-item> <!-- 搴旂敤鍥炬爣 --> - <el-form-item label="搴旂敤鍥炬爣:" prop="applicationIconUrl"> - <div class="iconBox"> - <div class="upload"> - <img src="@/assets/imgs/user/default-avatar.jpg" alt=""> - </div> - <div class="iconView"> - <span>绀烘剰鍥�</span> - <img src="@/assets/imgs/user/default-avatar.jpg" alt=""> - </div> - <div class="tip"> - <span>鍙厑璁镐笂浼爅pg,jpeg,png,svg鏍煎紡鐨勫浘鐗囷紝寤鸿灏哄涓�105px*105px</span> - </div> - </div> + <el-form-item label="妗堜欢缂栧彿:" prop="applicationIconUrl"> + <el-input v-model="myInterface.caseNumber" placeholder="濉啓妗堜欢缂栧彿"></el-input> + </el-form-item> + <!-- 搴旂敤鍥炬爣 --> + <el-form-item label="澶х被:" prop="applicationIconUrl"> + <el-input v-model="myInterface.bigType" placeholder="濉啓妗堜欢缂栧彿"></el-input> + </el-form-item> + <!-- 搴旂敤鍥炬爣 --> + <el-form-item label="灏忕被:" prop="applicationIconUrl"> + <el-input v-model="myInterface.smallType" placeholder="濉啓妗堜欢缂栧彿"></el-input> </el-form-item> <!-- 搴旂敤绫诲瀷 --> - <el-form-item label="搴旂敤绫诲瀷:" prop="applicationType"> - <div class="optionItem"> - <el-radio-group v-model="myInterface.applicationType"> - <el-radio :label="1">缃戦〉搴旂敤</el-radio> - </el-radio-group> - </div> + <el-form-item label="闂绫诲瀷:" prop="applicationType"> + <el-input v-model="myInterface.questionType" placeholder="濉啓闂绫诲瀷"></el-input> </el-form-item> - <!--缃戠珯url --> - <el-form-item label="缃戠珯url:" prop="websiteUrl"> - <el-input v-model="myInterface.websiteUrl"></el-input> + <!-- 搴旂敤鍚嶇О --> + <el-form-item label="琛楅亾:" prop="applicationName"> + <el-input v-model="myInterface.steert" placeholder="濉啓琛楅亾"></el-input> </el-form-item> - <!-- 搴旂敤鎻忚堪 --> - <el-form-item label="搴旂敤鎻忚堪:" prop="description"> - <el-input v-model="myInterface.description" placeholder="璇峰~鍐欐弿杩�"></el-input> + <!-- 搴旂敤鍥炬爣 --> + <el-form-item label="绀惧尯:" prop="applicationIconUrl"> + <el-input v-model="myInterface.community" placeholder="濉啓绀惧尯"></el-input> + </el-form-item> + <!-- 搴旂敤绫诲瀷 --> + <el-form-item label="鐩戠潱鍛�:" prop="applicationType"> + <el-input v-model="myInterface.applicationName" placeholder="濉啓鐩戠潱鍛�"></el-input> + </el-form-item> + <!-- 搴旂敤鍥炬爣 --> + <el-form-item label="闂鎻忚堪:" prop="applicationIconUrl"> + <el-input v-model="myInterface.description" placeholder="濉啓闂鎻忚堪"></el-input> + </el-form-item> + <!-- 搴旂敤绫诲瀷 --> + <el-form-item label="涓婃姤鏃堕棿:" prop="applicationType"> + <el-input v-model="myInterface.applicationName" placeholder="濉啓涓婃姤鏃堕棿"></el-input> + </el-form-item> + <el-form-item label="鐘舵��:" prop="applicationType"> + <el-input v-model="myInterface.status" placeholder="濉啓鐘舵��"></el-input> </el-form-item> <!-- 鎸夐挳 --> <!-- <el-form-item> @@ -91,8 +99,18 @@ } }; return { - myInterface: { - }, + myInterface:{ + taskNumber:"13413414", + caseNumber:"202233112310310001", + questionType:"杩濊", + bigType:"涓嶆寜瑙勫畾鍋滄斁褰卞搷鍏朵粬杞﹁締鍜岃浜洪�氳浣嗘湭閫犳垚浜ら�氫簨鏁�", + smallType:"杩濆弽鍥藉鏈夊叧鏍囧噯缂栧埗鍩庝埂瑙勫垝", + steert:"濡欏嘲琛�", + community:"澶ф煒闀�", + description:"杩濊鍋滄斁", + reportTime:"2022-11-1 12:10:10", + status:"涓婃姤" + }, createmyInterfaceRules: { applicationName: [ { required: true, trigger: "blur", validator: validateApplicationName}, @@ -115,7 +133,7 @@ created() { const that = this; const {userInfo} = this; - this.myInterface = JSON.parse(JSON.stringify(userInfo)); + // this.myInterface = JSON.parse(JSON.stringify(userInfo)); }, methods: { }, diff --git a/src/views/operate/rectification/renovationList/index.vue b/src/views/operate/rectification/renovationList/index.vue index a5c515b..8fdf4bb 100644 --- a/src/views/operate/rectification/renovationList/index.vue +++ b/src/views/operate/rectification/renovationList/index.vue @@ -6,7 +6,7 @@ <main> <div class="mainHeader"> <div class="add"> - <el-button type="primary" icon="el-icon-plus">鏂板浠诲姟</el-button> + <el-button type="primary" icon="el-icon-plus" @click="addTask()">鏂板浠诲姟</el-button> </div> <div class="date-search"> <span>鎸夊ぉ鏌ヨ:</span> @@ -30,53 +30,57 @@ <!-- @selection-change="handleSelectionChange" --> <!-- 鏁版嵁娓叉煋 --> <el-table ref="multipleTable" :data="tableData" tooltip-effect="dark" style="width: 100%" - :header-cell-style="{background:'#06122c','font-size':'12px',color:'#4b9bb7','font-weight':'650','line-height':'45px'}" + :header-cell-style="{ background: '#06122c', 'font-size': '12px', color: '#4b9bb7', 'font-weight': '650', 'line-height': '45px' }" :row-class-name="tableRowClassName"> <el-table-column type="selection" width="55"> </el-table-column> - <el-table-column label="浠诲姟缂栧彿" prop="applicationName" min-width="10"> + <el-table-column label="浠诲姟缂栧彿" prop="taskNumber" min-width="10"> </el-table-column> - <el-table-column prop="applicationType" label="妗堜欢缂栧彿" min-width="10"> + <el-table-column label="妗堜欢缂栧彿" prop="caseNumber" min-width="10"> </el-table-column> - <el-table-column prop="websiteUrl" label="闂绫诲瀷" min-width="10"> + <el-table-column prop="questionType" label="闂绫诲瀷" min-width="10"> </el-table-column> - <el-table-column prop="applicationType" label="琛楅亾" min-width="10"> + <el-table-column prop="bigType" label="澶х被" min-width="10"> </el-table-column> - <el-table-column prop="applicationType" label="绀惧尯" min-width="10"> + <el-table-column prop="smallType" label="灏忕被" min-width="10"> </el-table-column> - <el-table-column prop="applicationType" label="鐩戠潱鍛�" min-width="10"> + <el-table-column prop="steert" label="琛楅亾" min-width="10"> </el-table-column> - <el-table-column prop="applicationType" label="闂鎻忚堪" min-width="10"> + <el-table-column prop="community" label="绀惧尯" min-width="10"> </el-table-column> - <el-table-column prop="applicationType" label="涓婃姤鏃堕棿" min-width="10"> + <el-table-column prop="description" label="浠诲姟鎻忚堪" min-width="10"> </el-table-column> - <el-table-column prop="applicationType" label="鐘舵��" min-width="10"> + <el-table-column prop="reportTime" label="涓婃姤鏃堕棿" min-width="10"> + </el-table-column> + <el-table-column prop="manager" label="鐩戠潱鍛�" min-width="10"> + </el-table-column> + <el-table-column prop="status" label="鐘舵��" min-width="10"> </el-table-column> <el-table-column label="鎿嶄綔" min-width="10"> <template slot-scope="scope"> <span @click="handleDelete(scope.row)">缂栬緫</span> - <span class="line">|</span> - <span @click="handleDelete(scope.row)">鏌ョ湅</span> + <!-- <span class="line">|</span> + <span @click="(scope.row)">鏌ョ湅</span> --> </template> </el-table-column> </el-table> <!-- 鍒嗛〉 --> - <!-- <div class="pagination"> + <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> <footer> <!-- 鍒涘缓寮圭獥 --> - <el-dialog :visible.sync="dialogCreate" title="鏂板绗笁鏂规帴鍙�" width="45%" v-if="dialogCreate" + <el-dialog :visible.sync="dialogCreate" title="鏂板鏁存不鍒楄〃" width="45%" v-if="dialogCreate" :before-close="handleClose"> <createInterface /> </el-dialog> <!-- 鏌ョ湅寮圭獥 --> - <el-dialog :visible.sync="dialogUpdate" :title="updateFlag ?'淇敼绗笁鏂规帴鍙�':'鏌ョ湅绗笁鏂规帴鍙�'" width="45%" + <el-dialog :visible.sync="dialogUpdate" :title="updateFlag ? '淇敼绗笁鏂规帴鍙�' : '鏌ョ湅绗笁鏂规帴鍙�'" width="45%" v-if="dialogUpdate" :before-close="handleClose"> <viewInterface :updateFlag="updateFlag" :userInfo=userInfo /> </el-dialog> @@ -92,13 +96,80 @@ }, data() { return { - tableData: [], + totalNum: 5, + pageSize: 10, + tableData: [ + { + taskNumber: "13413414", + caseNumber: "202233112310310001", + questionType: "杩濊", + bigType: "涓嶆寜瑙勫畾鍋滄斁褰卞搷鍏朵粬杞﹁締鍜岃浜洪�氳浣嗘湭閫犳垚浜ら�氫簨鏁�", + smallType: "杩濆弽鍥藉鏈夊叧鏍囧噯缂栧埗鍩庝埂瑙勫垝", + steert: "濡欏嘲琛�", + community: "澶ф煒闀�", + description: "杩濊鍋滄斁", + reportTime: "2022-11-1 12:10:10", + status: "涓婃姤", + manager: "鐜嬫櫒鏅�"}, + { + taskNumber: "13413414", + caseNumber: "202233112310310001", + questionType: "杩濊", + bigType: "涓嶆寜瑙勫畾鍋滄斁褰卞搷鍏朵粬杞﹁締鍜岃浜洪�氳浣嗘湭閫犳垚浜ら�氫簨鏁�", + smallType: "杩濆弽鍥藉鏈夊叧鏍囧噯缂栧埗鍩庝埂瑙勫垝", + steert: "濡欏嘲琛�", + community: "澶ф煒闀�", + description: "杩濊鍋滄斁", + reportTime: "2022-11-1 12:10:10", + status: "涓婃姤", + manager: "鐜嬫櫒鏅�" + }, + { + taskNumber: "13413414", + caseNumber: "202233112310310001", + questionType: "杩濊", + bigType: "涓嶆寜瑙勫畾鍋滄斁褰卞搷鍏朵粬杞﹁締鍜岃浜洪�氳浣嗘湭閫犳垚浜ら�氫簨鏁�", + smallType: "杩濆弽鍥藉鏈夊叧鏍囧噯缂栧埗鍩庝埂瑙勫垝", + steert: "濡欏嘲琛�", + community: "澶ф煒闀�", + description: "杩濊鍋滄斁", + reportTime: "2022-11-1 12:10:10", + status: "涓婃姤", + manager: "鐜嬫櫒鏅�" + }, + { + taskNumber: "13413414", + caseNumber: "202233112310310001", + questionType: "杩濊", + bigType: "涓嶆寜瑙勫畾鍋滄斁褰卞搷鍏朵粬杞﹁締鍜岃浜洪�氳浣嗘湭閫犳垚浜ら�氫簨鏁�", + smallType: "杩濆弽鍥藉鏈夊叧鏍囧噯缂栧埗鍩庝埂瑙勫垝", + steert: "濡欏嘲琛�", + community: "澶ф煒闀�", + description: "杩濊鍋滄斁", + reportTime: "2022-11-1 12:10:10", + status: "涓婃姤", + manager: "鐜嬫櫒鏅�" + }, + { + taskNumber: "13413414", + caseNumber: "202233112310310001", + questionType: "杩濊", + bigType: "涓嶆寜瑙勫畾鍋滄斁褰卞搷鍏朵粬杞﹁締鍜岃浜洪�氳浣嗘湭閫犳垚浜ら�氫簨鏁�", + smallType: "杩濆弽鍥藉鏈夊叧鏍囧噯缂栧埗鍩庝埂瑙勫垝", + steert: "濡欏嘲琛�", + community: "澶ф煒闀�", + description: "杩濊鍋滄斁", + reportTime: "2022-11-1 12:10:10", + status: "涓婃姤", + manager: "鐜嬫櫒鏅�" + } + ], search: "", dialogCreate: false, dialogUpdate: false, updateFlag: false, userInfo: '', - date:'', + date: '', // totalNum: 200, // pageSize: 10, // currentPage: 1, @@ -108,6 +179,9 @@ this.getUserList(); }, methods: { + addTask() { + this.dialogCreate = true; + }, // 鑾峰彇鎺ュ彛鍒楄〃 getUserList() { const that = this; @@ -150,14 +224,8 @@ }, // 鍒犻櫎绗笁鏂规帴鍙� handleDelete({ id }) { + this.dialogUpdate=true; console.log(id); - this.$axios.delete('sccg/system/portal/thirdApp/delete', { - params: { - id - } - }).then(res => { - console.log(res); - }) } // // 褰撳墠椤垫敼鍙樿Е鍙戜簨浠� // changeCurrentPage(page) { @@ -205,19 +273,26 @@ color: #4b9bb7; background-color: #09152f; display: flex; - .add,.search,.btn{ - flex:1; + + .add, + .search, + .btn { + flex: 1; } - .date-search{ + + .date-search { flex: 3; display: flex; - .mydate{ + + .mydate { display: flex; - .line{ - margin:0 10px 0 20px; + + .line { + margin: 0 10px 0 20px; } } } + .el-input { width: 180px; height: 35px; diff --git a/src/views/operate/rectification/surveyList/components/createInterface/index.vue b/src/views/operate/rectification/surveyList/components/createInterface/index.vue index 1be774b..57dd333 100644 --- a/src/views/operate/rectification/surveyList/components/createInterface/index.vue +++ b/src/views/operate/rectification/surveyList/components/createInterface/index.vue @@ -1,260 +1,322 @@ <template> - <div class="createmyInterface"> - <main> - <div class="mainContent"> - <el-form ref="user" label-width="140px" autoComplete="on" :model="myInterface" - :rules="createmyInterfaceRules" label-position="right"> - <!-- 搴旂敤鍚嶇О --> - <el-form-item label="搴旂敤鍚嶇О:" prop="applicationName"> - <el-input v-model="myInterface.applicationName" placeholder="濉啓搴旂敤鍚嶇О"></el-input> - </el-form-item> - <!-- 搴旂敤鍥炬爣 --> - <el-form-item label="搴旂敤鍥炬爣:" prop="applicationIconUrl"> - <div class="iconBox"> - <div class="upload"> - <img src="@/assets/imgs/user/default-avatar.jpg" alt=""> - </div> - <div class="iconView"> - <span>绀烘剰鍥�</span> - <img src="@/assets/imgs/user/default-avatar.jpg" alt=""> - </div> - <div class="tip"> - <span>鍙厑璁镐笂浼爅pg,jpeg,png,svg鏍煎紡鐨勫浘鐗囷紝寤鸿灏哄涓�105px*105px</span> - </div> - </div> - </el-form-item> - <!-- 搴旂敤绫诲瀷 --> - <el-form-item label="搴旂敤绫诲瀷:" prop="applicationType"> - <div class="optionItem"> - <el-radio-group v-model="myInterface.applicationType"> - <el-radio :label="1">缃戦〉搴旂敤</el-radio> - </el-radio-group> - </div> - </el-form-item> - <!--缃戠珯url --> - <el-form-item label="缃戠珯url:" prop="websiteUrl"> - <el-input v-model="myInterface.websiteUrl"></el-input> - </el-form-item> - <!-- 搴旂敤鎻忚堪 --> - <el-form-item label="搴旂敤鎻忚堪:" prop="description"> - <el-input v-model="myInterface.description" placeholder="璇峰~鍐欐弿杩�"></el-input> - </el-form-item> - <!-- 鎸夐挳 --> - <el-form-item> - <div class="optionBtn"> - <el-button type="primary" class="btn submit" @click.native.prevent="handleUser">鎻愪氦 - </el-button> - <el-button class="btn reset">閲嶇疆</el-button> - </div> - </el-form-item> - </el-form> + <div class="createmyInterface"> + <main> + <div class="mainContent"> + <el-form + ref="survey" + label-width="140px" + autoComplete="on" + :model="myInterface" + :rules="createSurvey" + label-position="right" + > + <el-form-item class="optionItem" label="闂绫诲瀷:" prop="type"> + <el-select v-model="myInterface.type" placeholder="璇烽�夋嫨闂绫诲瀷"> + <el-option label="闂绫诲瀷涓�" value="shanghai"></el-option> + <el-option label="闂绫诲瀷浜�" value="beijing"></el-option> + </el-select> + </el-form-item> + <el-form-item class="optionItem" label="澶х被:" prop="bigclass"> + <el-select v-model="myInterface.bigclass" placeholder="璇烽�夋嫨澶х被"> + <el-option label="澶х被涓�" value="shanghai"></el-option> + <el-option label="澶х被浜�" value="beijing"></el-option> + </el-select> + </el-form-item> + <el-form-item class="optionItem" label="灏忕被:" prop="subclass"> + <el-select v-model="myInterface.subclass" placeholder="璇烽�夋嫨灏忕被"> + <el-option label="灏忕被涓�" value="shanghai"></el-option> + <el-option label="灏忕被浜�" value="beijing"></el-option> + </el-select> + </el-form-item> + <el-form-item class="optionItem" label="琛楅亾:" prop="street"> + <el-input + v-model="myInterface.street" + placeholder="璇峰~鍐欒閬�" + ></el-input> + </el-form-item> + <el-form-item class="optionItem" label="绀惧尯:" prop="community"> + <el-input + v-model="myInterface.community" + placeholder="璇峰~鍐欑ぞ鍖�" + ></el-input> + </el-form-item> + <el-form-item class="optionItem" label="浠诲姟鎻忚堪:" prop="task"> + <el-input + v-model="myInterface.task" + placeholder="璇峰~鍐欎换鍔℃弿杩�" + ></el-input> + </el-form-item> + <el-form-item class="optionItem" label="涓婃姤鏃堕棿:" prop="reportTime"> + <div class="block"> + <el-date-picker + v-model="myInterface.reportTime" + type="datetime" + placeholder="閫夋嫨鏃ユ湡鏃堕棿" + > + </el-date-picker> </div> - </main> - </div> + </el-form-item> + <el-form-item> + <div class="optionBtn"> + <el-button class="btn cancel" @click.native.prevent="handleCancel" + >鍙栨秷</el-button + > + <el-button + type="primary" + class="btn submit" + @click.native.prevent="handleSave" + >淇濆瓨 + </el-button> + </div> + </el-form-item> + </el-form> + </div> + </main> + </div> </template> <script> export default { - data() { - const validateApplicationName = (rule, value, callback) => { - if (!value) { - callback(new Error("璇峰~鍐欑敤鎴峰悕绉�")); - } - }; - const validateApplicationIconUrl = (rule, value, callback) => { - if (!value) { - callback(new Error("璇峰~鍐欑櫥褰曞瘑鐮�")); - } else { - const rep = /^\w+$/; - if (!rep.test(value)) { - callback(new Error("瀵嗙爜鍙兘鏄互鏁板瓧銆�26涓嫳鏂囧瓧姣嶆垨鑰呬笅鍒掔嚎缁勬垚鐨勫瓧绗︿覆")); - } - } - }; - const validateApplicationType = (rule, value, callback) => { - if (!value) { - callback(new Error("璇峰~鍐欑敤鎴峰鍚�")); - } else { - const rep = /^[\u4E00-\u9FA5]{2,4}$/; - if (!rep.test(value)) { - 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("璇疯緭鍏ユ纭殑鎵嬫満鍙风爜"); - } - } - }; - return { - myInterface: { - }, - createmyInterfaceRules: { - applicationName: [ - { required: true, trigger: "blur", validator: validateApplicationName}, - ], - applicationIconUrl: [ - { required: true, trigger: "blur", validator: validateApplicationIconUrl }, - ], - applicationType: [ - { required: true, trigger: "blur", validator: validateApplicationType }, - ], - websiteUrl: [ - { required: true, trigger: "blur" }, - ], - description: [ - { required: false, trigger: "blur" }, - ], - }, - } + data() { + const validateType = (rule, value, callback) => { + if (!value) { + callback(new Error("璇烽�夋嫨闂绫诲瀷")); + } + }; + const validateBigClass = (rule, value, callback) => { + if (!value) { + callback(new Error("璇烽�夋嫨澶х被")); + } + }; + const validateSubClass = (rule, value, callback) => { + if (!value) { + callback(new Error("璇烽�夋嫨灏忕被")); + } + }; + const validateStreet = (rule, value, callback) => { + if (!value) { + callback(new Error("璇峰~鍐欒閬�")); + } + }; + const validateCommunity = (rule, value, callback) => { + if (!value) { + callback(new Error("璇峰~鍐欑ぞ鍖�")); + } + }; + const validateTask = (rule, value, callback) => { + if (!value) { + callback(new Error("璇峰~鍐欎换鍔℃弿杩�")); + } + }; + const validateReportTime = (rule, value, callback) => { + if (!value) { + callback(new Error("璇烽�夋嫨浠诲姟涓婃姤鏃堕棿")); + } + }; + + return { + myInterface: { + num: "", + type: "", + bigclass: "", + subclass: "", + street: "", + community: "", + task: "", + reportTime: "", + }, + createSurvey: { + type: [ + { + required: true, + trigger: "blur", + validator: validateType, + }, + ], + bigclass: [ + { + required: true, + trigger: "blur", + validator: validateBigClass, + }, + ], + subclass: [ + { + required: true, + trigger: "blur", + validator: validateSubClass, + }, + ], + street: [ + { required: true, trigger: "blur", validator: validateStreet }, + ], + community: [ + { required: true, trigger: "blur", validator: validateCommunity }, + ], + task: [{ required: true, trigger: "blur", validator: validateTask }], + reportTime: [ + { required: true, trigger: "blur", validator: validateReportTime }, + ], + }, + }; + }, + created() { + const that = this; + }, + methods: { + // 鍏抽棴寮圭獥 + handleCancel() { + console.log(1); + this.$emit("closeDialog", { flag: false, index: 0 }); }, - created() { - const that = this; + //淇濆瓨 + handleSave() { + const { myInterface } = this; + this.$refs.survey.validate((flag)=>{ + console.log(flag) + if(flag){ + + }else{ + return false + } + }) + // this.$axios + // .post("sccg/system/portal/thirdApp/add", { + // websiteUrl: myInterface.websiteUrl, + // applicationIconUrl: myInterface.applicationIconUrl, + // applicationType: 0, + // description: myInterface.description, + // applicationName: myInterface.applicationName, + // }) + // .then((res) => { + // console.log(res); + // // if (res.code === 200) { + // // this.refresh(); + // // } + // }); }, - methods: { - handleUser() { - const { myInterface } = this; - this.$axios.post('sccg/system/portal/thirdApp/add', { - websiteUrl:myInterface.websiteUrl, - applicationIconUrl:myInterface.applicationIconUrl, - applicationType:0, - description:myInterface.description, - applicationName:myInterface.applicationName - }).then(res => { - console.log(res); - // if (res.code === 200) { - // this.refresh(); - // } - }) - }, - }, - props: ['refresh'] -} + }, + props: ['refresh','closeDialog'], +}; </script> <style lang="scss" scoped> .createmyInterface { - border-radius: 1px; + 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; - main { - text-align: left; - padding: 0 55px; - background-color: #09152f; - padding-bottom: 50px; - .mainContent { - display: flex; - justify-content: center; - padding-top: 50px; - - .iconBox { - display: flex; - - .upload { - display: flex; - align-items: flex-end; - - img { - width: 120px; - height: 120px; - border-radius: 4px; - } - } - - .iconView { - display: flex; - flex-direction: column; - margin-left: 30px; - justify-content: flex-end; - - img { - width: 70px; - height: 70px; - border-radius: 4px; - } - } - - .tip { - display: flex; - align-items: flex-end; - margin-left: 30px; - font-size: 12px; - - span { - line-height: 20px; - } - } - } - .optionBtn{ - margin-top: 30px; - &::v-deep .el-button{ - padding: 12px 40px; - } - .reset{ - border: 1px solid #0079fe; - color: #0079fe; - } - } - &::v-deep .el-form-item__label { - color: #4b9bb7; - } - - &::v-deep .el-input__inner { - background-color: #09152f; - border: 1px solid #17324c; - } - - .addPerson { - display: flex; - list-style: none; - padding: 0; - - li { - background-color: #cccccc; - width: 36px; - height: 36px; - border-radius: 50%; - color: #fff; - text-align: center; - font-size: 30px; - margin-left: 10px; - } - } - - .el-form-item__content { - width: 400px; - - .el-select { - width: 100%; - } - } - - .optionHandleSp { - display: flex; - - .areaNumber, - .moreNumber { - flex: 1; - } - - .telNumber { - flex: 2; - } - } - - } - } - - footer { - border-top: 1px solid #fff; - height: 80px; + .iconBox { display: flex; - align-items: center; - justify-content: flex-end; - padding-right: 20px; + + .upload { + display: flex; + align-items: flex-end; + + img { + width: 120px; + height: 120px; + border-radius: 4px; + } + } + + .iconView { + display: flex; + flex-direction: column; + margin-left: 30px; + justify-content: flex-end; + + img { + width: 70px; + height: 70px; + border-radius: 4px; + } + } + + .tip { + display: flex; + align-items: flex-end; + margin-left: 30px; + font-size: 12px; + + span { + line-height: 20px; + } + } + } + .optionBtn { + margin-top: 30px; + &::v-deep .el-button { + padding: 12px 40px; + } + .reset { + border: 1px solid #0079fe; + color: #0079fe; + } + } + &::v-deep .el-form-item__label { + color: #4b9bb7; + } + + &::v-deep .el-input__inner { + background-color: #09152f; + border: 1px solid #17324c; + } + + .addPerson { + display: flex; + list-style: none; + padding: 0; + + li { + background-color: #cccccc; + width: 36px; + height: 36px; + border-radius: 50%; + color: #fff; + text-align: center; + font-size: 30px; + margin-left: 10px; + } + } + + .el-form-item__content { + width: 400px; + + .el-select { + width: 100%; + } + } + + .optionHandleSp { + display: flex; + + .areaNumber, + .moreNumber { + flex: 1; + } + + .telNumber { + flex: 2; + } + } } + } + + footer { + border-top: 1px solid #fff; + height: 80px; + display: flex; + align-items: center; + justify-content: flex-end; + padding-right: 20px; + } } </style> \ No newline at end of file diff --git a/src/views/operate/rectification/surveyList/components/viewInterface/index.vue b/src/views/operate/rectification/surveyList/components/viewInterface/index.vue index 6b28ebb..286fcf4 100644 --- a/src/views/operate/rectification/surveyList/components/viewInterface/index.vue +++ b/src/views/operate/rectification/surveyList/components/viewInterface/index.vue @@ -1,246 +1,272 @@ <template> - <div class="createmyInterface"> - <main> - <div class="mainContent"> - <el-form ref="user" label-width="140px" autoComplete="on" :model="myInterface" - :rules="createmyInterfaceRules" label-position="right"> - <!-- 搴旂敤鍚嶇О --> - <el-form-item label="搴旂敤鍚嶇О:" prop="applicationName"> - <el-input v-model="myInterface.applicationName" placeholder="濉啓搴旂敤鍚嶇О"></el-input> - </el-form-item> - <!-- 搴旂敤鍥炬爣 --> - <el-form-item label="搴旂敤鍥炬爣:" prop="applicationIconUrl"> - <div class="iconBox"> - <div class="upload"> - <img src="@/assets/imgs/user/default-avatar.jpg" alt=""> - </div> - <div class="iconView"> - <span>绀烘剰鍥�</span> - <img src="@/assets/imgs/user/default-avatar.jpg" alt=""> - </div> - <div class="tip"> - <span>鍙厑璁镐笂浼爅pg,jpeg,png,svg鏍煎紡鐨勫浘鐗囷紝寤鸿灏哄涓�105px*105px</span> - </div> - </div> - </el-form-item> - <!-- 搴旂敤绫诲瀷 --> - <el-form-item label="搴旂敤绫诲瀷:" prop="applicationType"> - <div class="optionItem"> - <el-radio-group v-model="myInterface.applicationType"> - <el-radio :label="1">缃戦〉搴旂敤</el-radio> - </el-radio-group> - </div> - </el-form-item> - <!--缃戠珯url --> - <el-form-item label="缃戠珯url:" prop="websiteUrl"> - <el-input v-model="myInterface.websiteUrl"></el-input> - </el-form-item> - <!-- 搴旂敤鎻忚堪 --> - <el-form-item label="搴旂敤鎻忚堪:" prop="description"> - <el-input v-model="myInterface.description" placeholder="璇峰~鍐欐弿杩�"></el-input> - </el-form-item> - <!-- 鎸夐挳 --> - <!-- <el-form-item> - <div class="optionBtn"> - <el-button type="primary" class="btn submit" @click.native.prevent="handleUser">鎻愪氦 - </el-button> - <el-button class="btn reset">閲嶇疆</el-button> - </div> - </el-form-item> --> - </el-form> - </div> - </main> - </div> + <div class="createmyInterface"> + <main> + <div class="mainContent"> + <el-form + ref="user" + label-width="140px" + autoComplete="on" + :model="myInterface" + :rules="createUserRules" + label-position="right" + > + <el-form-item class="optionItem" label="浠诲姟缂栧彿:" prop="num"> + <el-input + v-model="myInterface.num" + placeholder="璇峰~鍐欎换鍔$紪鍙�" + disabled + ></el-input> + </el-form-item> + <el-form-item class="optionItem" label="闂绫诲瀷:" prop="type"> + <el-input + v-model="myInterface.type" + placeholder="璇烽�夋嫨闂绫诲瀷" + disabled + ></el-input> + </el-form-item> + <el-form-item class="optionItem" label="澶х被:" prop="bigclass"> + <el-input + v-model="myInterface.bigclass" + placeholder="璇烽�夋嫨澶х被" + disabled + ></el-input> + </el-form-item> + <el-form-item class="optionItem" label="灏忕被:" prop="subclass"> + <el-input + v-model="myInterface.subclass" + placeholder="璇烽�夋嫨灏忕被" + disabled + ></el-input> + </el-form-item> + <el-form-item class="optionItem" label="琛楅亾:" prop="street"> + <el-input + v-model="myInterface.street" + placeholder="璇峰~鍐欒閬�" + disabled + ></el-input> + </el-form-item> + <el-form-item class="optionItem" label="绀惧尯:" prop="community"> + <el-input + v-model="myInterface.community" + placeholder="璇峰~鍐欑ぞ鍖�" + disabled + ></el-input> + </el-form-item> + <el-form-item class="optionItem" label="浠诲姟鎻忚堪:" prop="task"> + <el-input + v-model="myInterface.task" + placeholder="璇峰~鍐欎换鍔℃弿杩�" + disabled + ></el-input> + </el-form-item> + <el-form-item class="optionItem" label="涓婃姤鏃堕棿:" prop="reportTime"> + <el-input + v-model="myInterface.reportTime" + placeholder="璇烽�夋嫨涓婃姤鏃堕棿" + disabled + ></el-input> + </el-form-item> + </el-form> + </div> + </main> + </div> </template> <script> export default { - data() { - const validateApplicationName = (rule, value, callback) => { - if (!value) { - callback(new Error("璇峰~鍐欑敤鎴峰悕绉�")); - } - }; - const validateApplicationIconUrl = (rule, value, callback) => { - if (!value) { - callback(new Error("璇峰~鍐欑櫥褰曞瘑鐮�")); - } else { - const rep = /^\w+$/; - if (!rep.test(value)) { - callback(new Error("瀵嗙爜鍙兘鏄互鏁板瓧銆�26涓嫳鏂囧瓧姣嶆垨鑰呬笅鍒掔嚎缁勬垚鐨勫瓧绗︿覆")); - } - } - }; - const validateApplicationType = (rule, value, callback) => { - if (!value) { - callback(new Error("璇峰~鍐欑敤鎴峰鍚�")); - } else { - const rep = /^[\u4E00-\u9FA5]{2,4}$/; - if (!rep.test(value)) { - 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("璇疯緭鍏ユ纭殑鎵嬫満鍙风爜"); - } - } - }; - return { - myInterface: { - }, - createmyInterfaceRules: { - applicationName: [ - { required: true, trigger: "blur", validator: validateApplicationName}, - ], - applicationIconUrl: [ - { required: true, trigger: "blur", validator: validateApplicationIconUrl }, - ], - applicationType: [ - { required: true, trigger: "blur", validator: validateApplicationType }, - ], - websiteUrl: [ - { required: true, trigger: "blur" }, - ], - description: [ - { required: false, trigger: "blur" }, - ], - }, + data() { + const validateApplicationName = (rule, value, callback) => { + if (!value) { + callback(new Error("璇峰~鍐欑敤鎴峰悕绉�")); + } + }; + const validateApplicationIconUrl = (rule, value, callback) => { + if (!value) { + callback(new Error("璇峰~鍐欑櫥褰曞瘑鐮�")); + } else { + const rep = /^\w+$/; + if (!rep.test(value)) { + callback( + new Error("瀵嗙爜鍙兘鏄互鏁板瓧銆�26涓嫳鏂囧瓧姣嶆垨鑰呬笅鍒掔嚎缁勬垚鐨勫瓧绗︿覆") + ); } - }, - created() { - const that = this; - const {userInfo} = this; - this.myInterface = JSON.parse(JSON.stringify(userInfo)); - }, - methods: { - }, - props: ['updateFlag','userInfo'] -} + } + }; + const validateApplicationType = (rule, value, callback) => { + if (!value) { + callback(new Error("璇峰~鍐欑敤鎴峰鍚�")); + } else { + const rep = /^[\u4E00-\u9FA5]{2,4}$/; + if (!rep.test(value)) { + 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("璇疯緭鍏ユ纭殑鎵嬫満鍙风爜"); + } + } + }; + return { + myInterface: {}, + createmyInterfaceRules: { + applicationName: [ + { + required: true, + trigger: "blur", + validator: validateApplicationName, + }, + ], + applicationIconUrl: [ + { + required: true, + trigger: "blur", + validator: validateApplicationIconUrl, + }, + ], + applicationType: [ + { + required: true, + trigger: "blur", + validator: validateApplicationType, + }, + ], + websiteUrl: [{ required: true, trigger: "blur" }], + description: [{ required: false, trigger: "blur" }], + }, + }; + }, + created() { + const that = this; + const { userInfo } = this; + this.myInterface = JSON.parse(JSON.stringify(userInfo)); + }, + methods: {}, + props: ["updateFlag", "userInfo"], +}; </script> <style lang="scss" scoped> .createmyInterface { - border-radius: 1px; + border-radius: 1px; + background-color: #09152f; + + main { + text-align: left; + padding: 0 55px; background-color: #09152f; - main { - text-align: left; - padding: 0 55px; - background-color: #09152f; + .mainContent { + display: flex; + justify-content: center; + padding-top: 50px; - .mainContent { - display: flex; - justify-content: center; - padding-top: 50px; - - .iconBox { - display: flex; - - .upload { - display: flex; - align-items: flex-end; - - img { - width: 120px; - height: 120px; - border-radius: 4px; - } - } - - .iconView { - display: flex; - flex-direction: column; - margin-left: 30px; - justify-content: flex-end; - - img { - width: 70px; - height: 70px; - border-radius: 4px; - } - } - - .tip { - display: flex; - align-items: flex-end; - margin-left: 30px; - font-size: 12px; - - span { - line-height: 20px; - } - } - } - .optionBtn{ - &::v-deep .el-button{ - padding: 12px 40px; - } - .reset{ - border: 1px solid #0079fe; - color: #0079fe; - } - } - &::v-deep .el-form-item__label { - color: #4b9bb7; - } - - &::v-deep .el-input__inner { - background-color: #09152f; - border: 1px solid #17324c; - } - - .addPerson { - display: flex; - list-style: none; - padding: 0; - - li { - background-color: #cccccc; - width: 36px; - height: 36px; - border-radius: 50%; - color: #fff; - text-align: center; - font-size: 30px; - margin-left: 10px; - } - } - - .el-form-item__content { - width: 400px; - - .el-select { - width: 100%; - } - } - - .optionHandleSp { - display: flex; - - .areaNumber, - .moreNumber { - flex: 1; - } - - .telNumber { - flex: 2; - } - } - - } - } - - footer { - border-top: 1px solid #fff; - height: 80px; + .iconBox { display: flex; - align-items: center; - justify-content: flex-end; - padding-right: 20px; + + .upload { + display: flex; + align-items: flex-end; + + img { + width: 120px; + height: 120px; + border-radius: 4px; + } + } + + .iconView { + display: flex; + flex-direction: column; + margin-left: 30px; + justify-content: flex-end; + + img { + width: 70px; + height: 70px; + border-radius: 4px; + } + } + + .tip { + display: flex; + align-items: flex-end; + margin-left: 30px; + font-size: 12px; + + span { + line-height: 20px; + } + } + } + .optionBtn { + &::v-deep .el-button { + padding: 12px 40px; + } + .reset { + border: 1px solid #0079fe; + color: #0079fe; + } + } + &::v-deep .el-form-item__label { + color: #4b9bb7; + } + + &::v-deep .el-input__inner { + background-color: #09152f; + border: 1px solid #17324c; + } + + .addPerson { + display: flex; + list-style: none; + padding: 0; + + li { + background-color: #cccccc; + width: 36px; + height: 36px; + border-radius: 50%; + color: #fff; + text-align: center; + font-size: 30px; + margin-left: 10px; + } + } + + .el-form-item__content { + width: 400px; + + .el-select { + width: 100%; + } + } + + .optionHandleSp { + display: flex; + + .areaNumber, + .moreNumber { + flex: 1; + } + + .telNumber { + flex: 2; + } + } } + } + + footer { + border-top: 1px solid #fff; + height: 80px; + display: flex; + align-items: center; + justify-content: flex-end; + padding-right: 20px; + } } </style> \ No newline at end of file diff --git a/src/views/operate/rectification/surveyList/index.vue b/src/views/operate/rectification/surveyList/index.vue index 085739f..d6c82e8 100644 --- a/src/views/operate/rectification/surveyList/index.vue +++ b/src/views/operate/rectification/surveyList/index.vue @@ -1,290 +1,372 @@ <template> - <div class="otherInterface"> - <header> - <div class="headerTitle">杩愯惀绠$悊 >> 涓撻」鏁存不 > 鏅煡鍒楄〃</div> - </header> - <main> - <div class="mainHeader"> - <div class="add"> - <el-button type="primary" icon="el-icon-plus">鏂板浠诲姟</el-button> - </div> - <div class="date-search"> - <span>鎸夊ぉ鏌ヨ:</span> - <div class="mydate"> - <el-input placeholder="璇疯緭鍏ュ紑濮嬫椂闂�"></el-input> - <div class="line"> - 鈥斺�斺�� 鈥斺�斺�� - </div> - <el-input placeholder="璇疯緭鍏ョ粨鏉熸椂闂�"></el-input> - </div> - </div> - <div class="search"> - <el-input placeholder="璇疯緭鍏ユ爣棰樻垨鑰呬换鍔$紪鍙�"></el-input> - </div> - <div class="btn"> - <el-button icon="el-icon-plus" type="primary">鎼滅储</el-button> - <el-button icon="el-icon-delete">閲嶇疆</el-button> - </div> - </div> - <div class="mainContent"> - <!-- @selection-change="handleSelectionChange" --> - <!-- 鏁版嵁娓叉煋 --> - <el-table ref="multipleTable" :data="tableData" tooltip-effect="dark" style="width: 100%" - :header-cell-style="{background:'#06122c','font-size':'12px',color:'#4b9bb7','font-weight':'650','line-height':'45px'}" - :row-class-name="tableRowClassName"> - <el-table-column type="selection" width="55"> - </el-table-column> - <el-table-column label="浠诲姟缂栧彿" prop="applicationName" min-width="10"> - </el-table-column> - <el-table-column prop="applicationType" label="闂绫诲瀷" min-width="10"> - </el-table-column> - <el-table-column prop="websiteUrl" label="澶х被" min-width="10"> - </el-table-column> - <el-table-column prop="applicationType" label="灏忕被" min-width="10"> - </el-table-column> - <el-table-column prop="applicationType" label="琛楅亾" min-width="10"> - </el-table-column> - <el-table-column prop="applicationType" label="绀惧尯" min-width="10"> - </el-table-column> - <el-table-column prop="applicationType" label="浠诲姟鎻忚堪" min-width="10"> - </el-table-column> - <el-table-column prop="applicationType" label="涓婃姤鏃堕棿" min-width="10"> - </el-table-column> - <el-table-column label="鎿嶄綔" min-width="10"> - <template slot-scope="scope"> - <span @click="handleDelete(scope.row)">鏌ョ湅</span> - </template> - </el-table-column> - </el-table> - <!-- 鍒嗛〉 --> - <!-- <div class="pagination"> + <div class="otherInterface"> + <header> + <div class="headerTitle">杩愯惀绠$悊 >> 涓撻」鏁存不 > 鏅煡鍒楄〃</div> + </header> + <main> + <div class="mainHeader"> + <div class="add"> + <el-button type="primary" icon="el-icon-plus" @click="handleAdd()" + >鏂板浠诲姟</el-button + > + </div> + <div class="date-search"> + <span>鎸夊ぉ鏌ヨ:</span> + <div class="block"> + <el-date-picker + v-model="beginTime" + type="date" + placeholder="璇烽�夋嫨寮�濮嬫棩鏈�" + > + </el-date-picker> + </div> + <span>鈥斺�斺�� 鈥斺�斺��</span> + <div class="block"> + <el-date-picker + v-model="endTime" + type="date" + placeholder="璇烽�夋嫨缁撴潫鏃ユ湡" + > + </el-date-picker> + </div> + <!-- <div class="mydate"> + <el-input placeholder="璇疯緭鍏ュ紑濮嬫椂闂�"></el-input> + <div class="line">鈥斺�斺�� 鈥斺�斺��</div> + <el-input placeholder="璇疯緭鍏ョ粨鏉熸椂闂�"></el-input> + </div> --> + </div> + <div class="search"> + <el-input placeholder="璇疯緭鍏ユ爣棰樻垨鑰呬换鍔$紪鍙�"></el-input> + </div> + <div class="btn"> + <el-button icon="el-icon-plus" type="primary">鎼滅储</el-button> + <el-button icon="el-icon-delete">閲嶇疆</el-button> + </div> + </div> + <div class="mainContent"> + <!-- @selection-change="handleSelectionChange" --> + <!-- 鏁版嵁娓叉煋 --> + <el-table + ref="multipleTable" + :data="tableData" + tooltip-effect="dark" + style="width: 100%" + :header-cell-style="{ + background: '#06122c', + 'font-size': '12px', + color: '#4b9bb7', + 'font-weight': '650', + 'line-height': '45px', + }" + :row-class-name="tableRowClassName" + > + <!-- <el-table-column type="selection" width="55"> + </el-table-column> --> + <el-table-column label="浠诲姟缂栧彿" prop="num" min-width="10"> + </el-table-column> + <el-table-column prop="type" label="闂绫诲瀷" min-width="10"> + </el-table-column> + <el-table-column prop="bigclass" label="澶х被" min-width="10"> + </el-table-column> + <el-table-column prop="subclass" label="灏忕被" min-width="10"> + </el-table-column> + <el-table-column prop="street" label="琛楅亾" min-width="10"> + </el-table-column> + <el-table-column prop="community" label="绀惧尯" min-width="10"> + </el-table-column> + <el-table-column prop="task" label="浠诲姟鎻忚堪" min-width="10"> + </el-table-column> + <el-table-column prop="reportTime" label="涓婃姤鏃堕棿" min-width="10"> + </el-table-column> + <el-table-column label="鎿嶄綔" min-width="10"> + <template slot-scope="scope"> + <span @click="handleView(scope.row)" style="cursor: pointer" + >鏌ョ湅</span + > + </template> + </el-table-column> + </el-table> + <!-- 鍒嗛〉 --> + <!-- <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> - </main> - <footer> - <!-- 鍒涘缓寮圭獥 --> - <el-dialog :visible.sync="dialogCreate" title="鏂板绗笁鏂规帴鍙�" width="45%" v-if="dialogCreate" - :before-close="handleClose"> - <createInterface /> - </el-dialog> - <!-- 鏌ョ湅寮圭獥 --> - <el-dialog :visible.sync="dialogUpdate" :title="updateFlag ?'淇敼绗笁鏂规帴鍙�':'鏌ョ湅绗笁鏂规帴鍙�'" width="45%" - v-if="dialogUpdate" :before-close="handleClose"> - <viewInterface :updateFlag="updateFlag" :userInfo=userInfo /> - </el-dialog> - </footer> - </div> + </div> + </main> + <footer> + <!-- 鍒涘缓寮圭獥 --> + <el-dialog + :visible.sync="dialogCreate" + title="鏂板" + width="45%" + v-if="dialogCreate" + :before-close="handleClose" + > + <createInterface @closeDialog="closeDialog" /> + </el-dialog> + <!-- 鏌ョ湅寮圭獥 --> + <el-dialog + :visible.sync="dialogUpdate" + :title="updateFlag ? '缂栬緫' : '璇︽儏'" + width="45%" + v-if="dialogUpdate" + :before-close="handleClose" + > + <viewInterface :updateFlag="updateFlag" :userInfo="userInfo" /> + </el-dialog> + </footer> + </div> </template> <script> -import createInterface from './components/createInterface'; -import viewInterface from './components/viewInterface' +import createInterface from "./components/createInterface"; +import viewInterface from "./components/viewInterface"; export default { - components: { - createInterface, viewInterface - }, - data() { - return { - tableData: [], - search: "", - dialogCreate: false, - dialogUpdate: false, - updateFlag: false, - userInfo: '', - date:'', - // totalNum: 200, - // pageSize: 10, - // currentPage: 1, + components: { + createInterface, + viewInterface, + }, + data() { + return { + tableData: [ + { + num: 1234, + type: "鍩庣绫讳簨浠�", + bigclass: "鍏朵粬", + subclass: "鍏朵粬", + street: "琛楅亾", + community: "绀惧尯", + task: "浠诲姟鎻忚堪", + reportTime: "2022-10-31 13:20", + }, + { + num: 1234, + type: "鍩庣绫讳簨浠�", + bigclass: "鍏朵粬", + subclass: "鍏朵粬", + street: "琛楅亾", + community: "绀惧尯", + task: "浠诲姟鎻忚堪", + reportTime: "2022-10-31 13:20", + }, + { + num: 1234, + type: "鍩庣绫讳簨浠�", + bigclass: "鍏朵粬", + subclass: "鍏朵粬", + street: "琛楅亾", + community: "绀惧尯", + task: "浠诲姟鎻忚堪", + reportTime: "2022-10-31 13:20", + }, + ], + search: "", + dialogCreate: false, + dialogUpdate: false, + updateFlag: false, + userInfo: "", + date: "", + beginTime: "", + endTime: "", + // totalNum: 200, + // pageSize: 10, + // currentPage: 1, + }; + }, + created() { + this.getUserList(); + }, + 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; } + }); }, - created() { - this.getUserList(); + // 璁剧疆琛ㄦ牸鏂戦┈绾� + tableRowClassName({ row, rowIndex }) { + if ((rowIndex + 1) % 2 == 0) { + return "warning-row"; + } else { + return "success-row"; + } + return ""; }, - 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; - } - }) - }, - // 璁剧疆琛ㄦ牸鏂戦┈绾� - tableRowClassName({ row, rowIndex }) { - if ((rowIndex + 1) % 2 == 0) { - return 'warning-row'; - } else { - return 'success-row'; - } - return ''; - }, - // 鎵撳紑鏂板鐣岄潰 - handleAdd() { - this.dialogCreate = true; - }, - // 鍒涘缓寮圭獥鍏抽棴 - handleClose(done) { - const that = this; - this.$confirm('纭鍏抽棴锛�') - .then(_ => { - that.dialogCreate = false; - done(); - }) - .catch(_ => { }); - }, - // 鍒涘缓鏌ョ湅寮圭獥 - handleView(rowData) { - this.userInfo = rowData; - this.dialogUpdate = true; - }, - // 鍒犻櫎绗笁鏂规帴鍙� - handleDelete({ id }) { - console.log(id); - this.$axios.delete('sccg/system/portal/thirdApp/delete', { - params: { - id - } - }).then(res => { - console.log(res); - }) - } - // // 褰撳墠椤垫敼鍙樿Е鍙戜簨浠� - // changeCurrentPage(page) { - // this.currentPage = page; - // this.getUserList(); - // }, - // // 涓婁竴椤电偣鍑讳簨浠� - // handlePrev(page) { - // this.currentPage = page; - // this.getUserList(); - // }, - // // 涓嬩竴椤电偣鍑讳簨浠� - // handleNext(page) { - // this.currentPage = page; - // this.getUserList(); - // }, - } -} + // 鎵撳紑鏂板鐣岄潰 + handleAdd() { + this.dialogCreate = true; + }, + // 鍒涘缓寮圭獥鍏抽棴 + handleClose(done) { + const that = this; + this.$confirm("纭鍏抽棴锛�") + .then((_) => { + that.dialogCreate = false; + done(); + }) + .catch((_) => {}); + }, + closeDialog({ flag, index }) { + console.log(flag); + index === 1 ? "" : ""; + this.dialogCreate = flag; + }, + // 鍒涘缓鏌ョ湅寮圭獥 + handleView(rowData) { + console.log(rowData); + this.userInfo = rowData; + this.dialogUpdate = true; + }, + // 鍒犻櫎绗笁鏂规帴鍙� + handleDelete({ id }) { + console.log(id); + this.$axios + .delete("sccg/system/portal/thirdApp/delete", { + params: { + id, + }, + }) + .then((res) => { + console.log(res); + }); + }, + // // 褰撳墠椤垫敼鍙樿Е鍙戜簨浠� + // changeCurrentPage(page) { + // this.currentPage = page; + // this.getUserList(); + // }, + // // 涓婁竴椤电偣鍑讳簨浠� + // handlePrev(page) { + // this.currentPage = page; + // this.getUserList(); + // }, + // // 涓嬩竴椤电偣鍑讳簨浠� + // handleNext(page) { + // this.currentPage = page; + // this.getUserList(); + // }, + }, +}; </script> <!-- sccg/system/portal/thirdApp/search --> <style lang="scss" scoped> .otherInterface { - header { + header { + display: flex; + line-height: 60px; + justify-content: space-between; + padding: 0 20px; + color: #4b9bb7; + &::v-deep .el-button { + background-color: #eb5d01; + border: none; + color: #fff; + border-radius: 20px; + } + } + + main { + padding: 10px 20px; + + .mainHeader { + padding-left: 20px; + display: flex; + line-height: 60px; + color: #4b9bb7; + background-color: #09152f; + display: flex; + .add, + .search, + .btn { + flex: 1; + } + .date-search { + flex: 3; display: flex; - line-height: 60px; - justify-content: space-between; - padding: 0 20px; + .mydate { + display: flex; + .line { + margin: 0 10px 0 20px; + } + } + } + .el-input { + width: 180px; + height: 35px; + margin-left: 10px; + + &::v-deep .el-input__inner { + background-color: #09152f; + border: 1px solid #17324c; + font-size: 12px; + } + } + } + + .mainContent { + margin-top: 20px; + + .el-table { color: #4b9bb7; - &::v-deep .el-button { - background-color: #eb5d01; - border: none; - color: #fff; - border-radius: 20px; + &::v-deep .el-table__empty-block { + background-color: #06122c; } + + &::v-deep .el-table__empty-text { + color: #4b9bb7; + } + + &::v-deep .warning-row { + background-color: #06122c; + } + + &::v-deep .success-row { + background-color: #071f39; + } + } + + .line { + padding: 0 5px; + // margin-top: -10px; + } + } + } + + footer { + &::v-deep .el-dialog__header, + &::v-deep .el-dialog__body { + background-color: #06122c; } - main { - padding: 10px 20px; - - .mainHeader { - padding-left: 20px; - display: flex; - line-height: 60px; - color: #4b9bb7; - background-color: #09152f; - display: flex; - .add,.search,.btn{ - flex:1; - } - .date-search{ - flex: 3; - display: flex; - .mydate{ - display: flex; - .line{ - margin:0 10px 0 20px; - } - } - } - .el-input { - width: 180px; - height: 35px; - margin-left: 10px; - - &::v-deep .el-input__inner { - background-color: #09152f; - border: 1px solid #17324c; - font-size: 12px; - } - } - } - - .mainContent { - margin-top: 20px; - - .el-table { - color: #4b9bb7; - - &::v-deep .el-table__empty-block { - background-color: #06122c; - } - - &::v-deep .el-table__empty-text { - color: #4b9bb7; - } - - &::v-deep .warning-row { - background-color: #06122c; - } - - &::v-deep .success-row { - background-color: #071f39; - } - } - - .line { - padding: 0 5px; - // margin-top: -10px; - } - } + &::v-deep .el-dialog__header { + display: flex; + align-items: center; + background-color: #fff; + padding: 20px; + line-height: 60px; } - footer { - - &::v-deep .el-dialog__header, - &::v-deep .el-dialog__body { - background-color: #06122c; - } - - &::v-deep .el-dialog__header { - display: flex; - align-items: center; - background-color: #fff; - padding: 20px; - line-height: 60px; - } - - &::v-deep .el-dialog__title { - color: #4b9bb7; - } - - &::v-deep .el-dialog__close { - width: 20px; - height: 20px; - // color: #fff; - } - - &::v-deep .el-dialog__body { - padding: 0; - } + &::v-deep .el-dialog__title { + color: #4b9bb7; } + + &::v-deep .el-dialog__close { + width: 20px; + height: 20px; + // color: #fff; + } + + &::v-deep .el-dialog__body { + padding: 0; + } + } } </style> \ No newline at end of file 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/index.vue b/src/views/operate/sms/index.vue new file mode 100644 index 0000000..e3bc8ac --- /dev/null +++ b/src/views/operate/sms/index.vue @@ -0,0 +1,3 @@ +<template> + <router-view></router-view> +</template> \ No newline at end of file diff --git a/src/views/operate/sms/smsIndex/index.vue b/src/views/operate/sms/smsIndex/index.vue new file mode 100644 index 0000000..f511252 --- /dev/null +++ b/src/views/operate/sms/smsIndex/index.vue @@ -0,0 +1,632 @@ +<template> + <div class="userList"> + <header> + <div class="header-nav"> + <span class="nav-left">鏁版嵁绛涢��</span> + <span class="nav-right">楂樼骇鎼滅储</span> + </div> + <div class="header-content"> + <div class="search"> + <span>杈撳叆鏌ヨ:</span> + <el-input placeholder="娑堟伅鏍囬" v-model="context"></el-input> + </div> + <div class="message-status"> + <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"> + <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 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> + </div> + </div> + </header> + <main> + <div class="mainContent"> + <div class="main-nav"> + <span>鏁版嵁鍒楄〃</span> + <el-button type="primary" icon="el-icon-plus" @click="dialogCreate = true">娣诲姞</el-button> + </div> + <!-- 鏁版嵁灞曠ず --> + <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="5"> + <template slot-scope="scope">{{ scope.row.id }}</template> + </el-table-column> + <el-table-column prop="head" label="鏍囬" min-width="10"> + </el-table-column> + <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="status" label="鍙戝竷鐘舵��" min-width="5"> + <template slot-scope="scope"> + {{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 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> + </el-table> + <!-- 鏂板缓娑堟伅 --> + <!-- <el-dialog title="鏂板缓娑堟伅" :visible.sync="dialogCreate" v-if="dialogCreate" width="80%" + :before-close="handleConfirmClose"> + <MyCreate @closeMyDialog="closeDialog"></MyCreate> + </el-dialog> --> + <!-- 娑堟伅璇︽儏 --> + <!-- <el-dialog title="娑堟伅璇︽儏" :visible.sync="dialogView" v-if="dialogView" width="45%" + :before-close="handleClose"> + <MyView @closeDialog="closeDialog" :myinfo="info">></MyView> + </el-dialog> --> + <!-- 缂栬緫椤甸潰 --> + <!-- <el-dialog title="缂栬緫娑堟伅" :visible.sync="dialogEdit" v-if="dialogEdit" width="80%" + :before-close="handleClose"> + <MyEdit @closeDialog="closeDialog" :myDataRow="info"></MyEdit> + </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"> + </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" + > + </el-pagination> + </div> + </div> + </div> + </main> + </div> +</template> +<script> +import helper from '@/utils/mydate' +export default { + components: { + // MyView, MyCreate,MyEdit + }, + data() { + return { + tableData: [], + context: "", + dialogEdit:false, + dialogCreate: false, + dialogView: false, + totalNum: null, + pageSize: 10, + currentPage: 1, + all: false, + unsame: false, + myIdx: 0, + preMyIdx: 0, + options: [ + { + value: 0, + label: '鎵归噺鎿嶄綔', + disabled: true, + }, + { + value: 1, + label: '鎵归噺鍚敤', + }, + { + value: 2, + label: '鎵归噺绂佺敤', + }, + { + value: 3, + label: '鎵归噺鍒犻櫎', + } + ], + tempList: [], + messageStatus: 2, + messageKind: '00', + statusList: [ + { + label: '鍏ㄩ儴', + value: 2, + }, + { + label: '鍙戦�佸け璐�', + value: 0, + }, + { + label: '鍙戦�佹垚鍔�', + value: 1, + } + ], + kindList: [ + { + id:'00', + columnName:'鍏ㄩ儴', + }, + { + id:'01', + columnName:'绔欏唴淇�', + }, + { + id:'02', + columnName:'閭欢', + }, + { + id:'03', + columnName:'鐭俊', + } + ] + } + }, + created() { + const {setTableData} = this + setTableData(); + }, + methods: { + // 鏌ヨ + handleSearch(){ + this.setTableData(); + }, + // 閲嶇疆 + handleReset(){ + + }, + // 鏌ョ湅 + handleView(data){ + this.info = data; + this.dialogView = true; + }, + // 缂栬緫 + handleEdit(data){ + this.info = data; + this.dialogEdit = true; + }, + // 鍒犻櫎淇℃伅 + handleDelete(idarr) { + this.$confirm('纭鍒犻櫎?') + .then(_ => { + this.$axios({ + method: 'post', + url: 'sccg/message/delete?ids=' + idarr, + }) + .then(res => { + if (res.code === 200) { + this.$message({ + type: 'success', + message: '鍒犻櫎鎴愬姛', + }) + this.setTableData(); + } else { + this.$message({ + type: 'error', + message: res.message + }) + } + }) + }) + }, + // 璁剧疆琛ㄦ牸鏁版嵁 + async setTableData() { + const arr = await this.getMessageList(); + this.tableData = arr.records; + this.totalNum = arr.total + }, + // 鑾峰彇娑堟伅鏁版嵁 + async getMessageList() { + let arr = []; + const { currentPage, pageSize,context,messageStatus,messageKind } = this; + await this.$axios({ + method: 'post', + url: 'sccg/message/list', + data: { + body: "", + channelCode: '03', + createUser: '', + current: currentPage, + head: context, + messageType: "", + pageSize: pageSize, + randomCode: "", + remark: "", + sendTime: "", + status: messageStatus === 2 ? '':messageStatus, + targetFrom: "", + targetTo: "" + } + }) + .then(res => { + arr = res.data; + }) + return arr; + }, + // 鎵归噺涓嬫媺妗嗘搷浣� + async selectChange(list) { + console.log(this.tempList); + if (this.tempList.length !== 0) { + this.preMyIdx = list; + if (list === 3) { + await this.handleDelete(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: '鎮ㄨ繕娌¢�変腑浠讳綍鏁版嵁', + }) + } + }, + // 鎵归噺鎿嶄綔 + mulUpdateStatus(idArr, flag) { + this.$confirm(flag === 1 ? "鎮ㄧ‘瀹氳杩涜鎵归噺鍚敤瑙掕壊鍚�?" : '鎮ㄧ‘瀹氳杩涜鎵归噺绂佺敤瑙掕壊鍚�?') + .then(_ => { + this.$axios({ + method: 'post', + url: 'sccg/role/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) }) + }, + // 琛ㄦ牸鐩戝惉 + 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 + } + }, + // 淇敼鏃堕棿鏍煎紡 + changeTime({ updateTime }) { + return helper(updateTime); + }, + // 鍏ㄩ�� + selectAll() { + this.$refs.multipleTable.toggleAllSelection(); + }, + // 鍙嶉�� + disSame(list) { + list.forEach(row => { + this.$refs.multipleTable.toggleRowSelection(row) + }) + }, + // 璁剧疆琛ㄦ牸鏂戦┈绾� + tableRowClassName({ row, rowIndex }) { + if ((rowIndex + 1) % 2 == 0) { + return 'warning-row'; + } else { + return 'success-row'; + } + return ''; + }, + // 褰撳墠椤垫敼鍙樿Е鍙戜簨浠� + changeCurrentPage(page) { + this.currentPage = page; + this.setTableData(); + }, + // 鍏抽棴寮圭獥 + handleClose(done) { + done(); + }, + // 纭鍏抽棴寮圭獥 + handleConfirmClose(done) { + this.$confirm('纭鍏抽棴?') + .then(_ => { + done(); + }) + .catch(err => { + console.log(err); + }) + }, + // 鑷畾涔夊叧闂脊绐� + closeDialog({ flag, index }) { + this.dialogCreate = flag; + this.dialogView = flag; + if (index === 1) { + this.setTableData(); + } + } + } +} +</script> +<style lang="scss" scoped> +.userList { + text-align: left; + margin: 10px 20px; + color: #4b9bb7; + + header { + background-color: #09152f; + border: 1pox solid #fff; + + .header-nav { + line-height: 40px; + padding: 0 30px; + display: flex; + justify-content: space-between; + font-weight: 650; + } + + .header-content { + padding: 0 40px; + display: flex; + line-height: 100px; + justify-content: space-between; + align-items: center; + + .search, + .message-status, + .message-kind { + 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; + } + } + } + } + + main { + background-color: #09152f; + margin-top: 20px; + padding-bottom: 50px; + border: 1pox solid #fff; + + .el-link { + color: #4b9bb7; + } + + .leftPx { + margin-left: 10px; + } + + .mainTitle { + line-height: 60px; + } + + .main-nav { + line-height: 40px; + display: flex; + padding: 10px; + justify-content: space-between; + } + + .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; + + &::v-deep .el-table__empty-block { + background-color: #09152f; + } + + &::v-deep .el-table__empty-block { + color: #4b9bb7; + } + + .operation { + display: flex; + + .line { + padding: 0 5px; + } + + span:hover { + cursor: pointer; + } + } + } + + .el-table::v-deep .warning-row { + background: #06122c; + } + + .el-table::v-deep .success-row { + background: #071f39; + } + + &::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: 50px !important; + } + } + + &::v-deep .el-dialog__header, + &::v-deep .el-dialog__body { + background-color: #06122c; + } + + &::v-deep .el-dialog__header { + display: flex; + align-items: center; + background-color: #fff; + padding: 20px; + line-height: 60px; + } + + &::v-deep .el-dialog__title { + color: #4b9bb7; + } + + &::v-deep .el-dialog__close { + width: 20px; + height: 20px; + // color: #fff; + } + + &::v-deep .el-dialog__body { + padding: 0; + } +} +</style> \ No newline at end of file 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 new file mode 100644 index 0000000..b63c1a6 --- /dev/null +++ b/src/views/operate/sms/smsTemplate/index.vue @@ -0,0 +1,640 @@ +<template> + <div class="userList"> + <header> + <div class="header-nav"> + <span class="nav-left">鏁版嵁绛涢��</span> + <span class="nav-right">楂樼骇鎼滅储</span> + </div> + <div class="header-content"> + <div class="search"> + <span>杈撳叆鏌ヨ:</span> + <el-input placeholder="娑堟伅鏍囬" v-model="context"></el-input> + </div> + <div class="message-status"> + <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"> + <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 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> + </div> + </div> + </header> + <main> + <div class="mainContent"> + <div class="main-nav"> + <span>鏁版嵁鍒楄〃</span> + <el-button type="primary" icon="el-icon-plus" @click="dialogCreate = true">娣诲姞</el-button> + </div> + <!-- 鏁版嵁灞曠ず --> + <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="5"> + <template slot-scope="scope">{{ scope.row.id }}</template> + </el-table-column> + <el-table-column prop="title" label="鏍囬" min-width="10"> + </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="targetFrom" label="鍙戝竷浜哄憳" min-width="15"> + </el-table-column> --> + <el-table-column prop="type" label="妯℃澘绫诲瀷" min-width="10"> + <template slot-scope="scope"> + <span>{{scope.row.type === 1 ? '楠岃瘉鐮佹ā鏉�':scope.row.type + ===2?"娲诲姩妯℃澘":'鍏朵粬妯℃澘'}}</span> + </template> + </el-table-column> + <!-- <el-table-column prop="status" label="鍙戝竷鐘舵��" min-width="5"> + <template slot-scope="scope"> + {{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> + </div> + </template> + </el-table-column> + </el-table> + <!-- 鏂板缓娑堟伅 --> + <el-dialog title="鏂板缓鐭俊妯℃澘" :visible.sync="dialogCreate" v-if="dialogCreate" width="80%" + :before-close="handleConfirmClose"> + <MyCreate @closeMyDialog="closeDialog"></MyCreate> + </el-dialog> + <!-- 娑堟伅璇︽儏 --> + <!-- <el-dialog title="娑堟伅璇︽儏" :visible.sync="dialogView" v-if="dialogView" width="45%" + :before-close="handleClose"> + <MyView @closeDialog="closeDialog" :myinfo="info">></MyView> + </el-dialog> --> + <!-- 缂栬緫椤甸潰 --> + <!-- <el-dialog title="缂栬緫娑堟伅" :visible.sync="dialogEdit" v-if="dialogEdit" width="80%" + :before-close="handleClose"> + <MyEdit @closeDialog="closeDialog" :myDataRow="info"></MyEdit> + </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"> + </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" + > + </el-pagination> + </div> + </div> + </div> + </main> + </div> +</template> +<script> +import helper from '@/utils/mydate' +import MyCreate from './createTemplate' +export default { + components: { + MyCreate, + }, + data() { + return { + tableData: [], + context: "", + dialogEdit:false, + dialogCreate: false, + dialogView: false, + totalNum: null, + pageSize: 10, + currentPage: 1, + all: false, + unsame: false, + myIdx: 0, + preMyIdx: 0, + options: [ + { + value: 0, + label: '鎵归噺鎿嶄綔', + disabled: true, + }, + { + value: 1, + label: '鎵归噺鍚敤', + }, + { + value: 2, + label: '鎵归噺绂佺敤', + }, + { + value: 3, + label: '鎵归噺鍒犻櫎', + } + ], + tempList: [], + messageStatus: 0, + messageKind: '00', + statusList: [ + { + label: '鍏ㄩ儴', + value: 0, + }, + { + label: '楠岃瘉鐮佹ā鏉�', + value: 1, + }, + { + label: '娲诲姩妯℃澘', + value: 2, + } + ], + kindList: [ + { + id:'00', + columnName:'鍏ㄩ儴', + }, + { + id:'01', + columnName:'绔欏唴淇�', + }, + { + id:'02', + columnName:'閭欢', + }, + { + id:'03', + columnName:'鐭俊', + } + ] + } + }, + created() { + const {setTableData} = this + setTableData(); + }, + methods: { + // 鏌ヨ + handleSearch(){ + this.setTableData(); + }, + // 閲嶇疆 + handleReset(){ + + }, + // 鏌ョ湅 + handleView(data){ + this.info = data; + this.dialogView = true; + }, + // 缂栬緫 + handleEdit(data){ + this.info = data; + this.dialogEdit = true; + }, + // 鍒犻櫎淇℃伅 + handleDelete(idarr) { + this.$confirm('纭鍒犻櫎?') + .then(_ => { + this.$axios({ + method: 'post', + url: 'sccg/message/delete?ids=' + idarr, + }) + .then(res => { + if (res.code === 200) { + this.$message({ + type: 'success', + message: '鍒犻櫎鎴愬姛', + }) + this.setTableData(); + } else { + this.$message({ + type: 'error', + message: res.message + }) + } + }) + }) + }, + // 璁剧疆琛ㄦ牸鏁版嵁 + async setTableData() { + const arr = await this.getMessageList(); + this.tableData = arr.records; + this.totalNum = arr.total + }, + // 鑾峰彇娑堟伅鏁版嵁 + async getMessageList() { + let arr = []; + const { currentPage, pageSize,context,messageStatus,messageKind } = this; + await this.$axios({ + method: 'post', + url: 'sccg/message_sms_template/list', + data: { + body: "", + channelCode: messageKind === '00' ?'':messageKind, + createUser: '', + current: currentPage, + title: context, + messageType: "", + pageSize: pageSize, + randomCode: "", + remark: "", + sendTime: "", + type: messageStatus === 0 ? '':messageStatus, + targetFrom: "", + targetTo: "" + } + }) + .then(res => { + arr = res.data; + }) + return arr; + }, + // 鎵归噺涓嬫媺妗嗘搷浣� + async selectChange(list) { + console.log(this.tempList); + if (this.tempList.length !== 0) { + this.preMyIdx = list; + if (list === 3) { + await this.handleDelete(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: '鎮ㄨ繕娌¢�変腑浠讳綍鏁版嵁', + }) + } + }, + // 鎵归噺鎿嶄綔 + mulUpdateStatus(idArr, flag) { + this.$confirm(flag === 1 ? "鎮ㄧ‘瀹氳杩涜鎵归噺鍚敤瑙掕壊鍚�?" : '鎮ㄧ‘瀹氳杩涜鎵归噺绂佺敤瑙掕壊鍚�?') + .then(_ => { + this.$axios({ + method: 'post', + url: 'sccg/role/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) }) + }, + // 琛ㄦ牸鐩戝惉 + 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 + } + }, + // 淇敼鏃堕棿鏍煎紡 + changeTime({ updateTime }) { + return helper(updateTime); + }, + // 鍏ㄩ�� + selectAll() { + this.$refs.multipleTable.toggleAllSelection(); + }, + // 鍙嶉�� + disSame(list) { + list.forEach(row => { + this.$refs.multipleTable.toggleRowSelection(row) + }) + }, + // 璁剧疆琛ㄦ牸鏂戦┈绾� + tableRowClassName({ row, rowIndex }) { + if ((rowIndex + 1) % 2 == 0) { + return 'warning-row'; + } else { + return 'success-row'; + } + return ''; + }, + // 褰撳墠椤垫敼鍙樿Е鍙戜簨浠� + changeCurrentPage(page) { + this.currentPage = page; + this.setTableData(); + }, + // 鍏抽棴寮圭獥 + handleClose(done) { + done(); + }, + // 纭鍏抽棴寮圭獥 + handleConfirmClose(done) { + this.$confirm('纭鍏抽棴?') + .then(_ => { + done(); + }) + .catch(err => { + console.log(err); + }) + }, + // 鑷畾涔夊叧闂脊绐� + closeDialog({ flag, index }) { + this.dialogCreate = flag; + this.dialogView = flag; + if (index === 1) { + this.setTableData(); + } + } + } +} +</script> +<style lang="scss" scoped> +.userList { + text-align: left; + margin: 10px 20px; + color: #4b9bb7; + + header { + background-color: #09152f; + border: 1pox solid #fff; + + .header-nav { + line-height: 40px; + padding: 0 30px; + display: flex; + justify-content: space-between; + font-weight: 650; + } + + .header-content { + padding: 0 40px; + display: flex; + line-height: 100px; + justify-content: space-between; + align-items: center; + + .search, + .message-status, + .message-kind { + 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; + } + } + } + } + + main { + background-color: #09152f; + margin-top: 20px; + padding-bottom: 50px; + border: 1pox solid #fff; + + .el-link { + color: #4b9bb7; + } + + .leftPx { + margin-left: 10px; + } + + .mainTitle { + line-height: 60px; + } + + .main-nav { + line-height: 40px; + display: flex; + padding: 10px; + justify-content: space-between; + } + + .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; + + &::v-deep .el-table__empty-block { + background-color: #09152f; + } + + &::v-deep .el-table__empty-block { + color: #4b9bb7; + } + + .operation { + display: flex; + + .line { + padding: 0 5px; + } + + span:hover { + cursor: pointer; + } + } + } + + .el-table::v-deep .warning-row { + background: #06122c; + } + + .el-table::v-deep .success-row { + background: #071f39; + } + + &::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: 50px !important; + } + } + + &::v-deep .el-dialog__header, + &::v-deep .el-dialog__body { + background-color: #06122c; + } + + &::v-deep .el-dialog__header { + display: flex; + align-items: center; + background-color: #fff; + padding: 20px; + line-height: 60px; + } + + &::v-deep .el-dialog__title { + color: #4b9bb7; + } + + &::v-deep .el-dialog__close { + width: 20px; + height: 20px; + // color: #fff; + } + + &::v-deep .el-dialog__body { + padding: 0; + } +} +</style> \ No newline at end of file diff --git a/src/views/operate/video/index.vue b/src/views/operate/video/index.vue new file mode 100644 index 0000000..011fa59 --- /dev/null +++ b/src/views/operate/video/index.vue @@ -0,0 +1,296 @@ +<template> + <div class="otherInterface"> + <header> + <div class="headerTitle">杩愯惀绠$悊 >> 瑙嗛绠$悊</div> + </header> + <main> + <div class="mainHeader"> + <div class="add"> + <el-button type="primary" icon="el-icon-plus">鏂板浠诲姟</el-button> + </div> + <div class="date-search"> + <span>鎸夊ぉ鏌ヨ:</span> + <div class="mydate"> + <el-input placeholder="璇疯緭鍏ュ紑濮嬫椂闂�"></el-input> + <div class="line"> + 鈥斺�斺�� 鈥斺�斺�� + </div> + <el-input placeholder="璇疯緭鍏ョ粨鏉熸椂闂�"></el-input> + </div> + </div> + <div class="search"> + <el-input placeholder="璇疯緭鍏ユ爣棰樻垨鑰呬换鍔$紪鍙�"></el-input> + </div> + <div class="btn"> + <el-button icon="el-icon-plus" type="primary">鎼滅储</el-button> + <el-button icon="el-icon-delete">閲嶇疆</el-button> + </div> + </div> + <div class="mainContent"> + <!-- @selection-change="handleSelectionChange" --> + <!-- 鏁版嵁娓叉煋 --> + <el-table ref="multipleTable" :data="tableData" tooltip-effect="dark" style="width: 100%" + :header-cell-style="{background:'#06122c','font-size':'12px',color:'#4b9bb7','font-weight':'650','line-height':'45px'}" + :row-class-name="tableRowClassName"> + <el-table-column type="selection" width="55"> + </el-table-column> + <el-table-column label="浠诲姟缂栧彿" prop="applicationName" min-width="10"> + </el-table-column> + <el-table-column prop="applicationType" label="鏍囬" min-width="10"> + </el-table-column> + <el-table-column prop="websiteUrl" label="绫诲瀷" min-width="10"> + </el-table-column> + <el-table-column prop="applicationType" label="绾у埆" min-width="10"> + </el-table-column> + <el-table-column prop="applicationType" label="琛楅亾" min-width="10"> + </el-table-column> + <el-table-column prop="applicationType" label="绀惧尯" min-width="10"> + </el-table-column> + <el-table-column prop="applicationType" label="寮�濮嬫椂闂�" min-width="10"> + </el-table-column> + <el-table-column prop="applicationType" label="缁撴潫鏃堕棿" min-width="10"> + </el-table-column> + <el-table-column prop="applicationType" label="浠诲姟鎻忚堪" min-width="10"> + </el-table-column> + <el-table-column prop="applicationType" label="鐘舵��" min-width="10"> + </el-table-column> + <el-table-column label="鎿嶄綔" min-width="10"> + <template slot-scope="scope"> + <span @click="handleView(scope.row)">缂栬緫</span> + <span class="line">|</span> + <span @click="handleDelete(scope.row)">鏌ョ湅</span> + </template> + </el-table-column> + </el-table> + <!-- 鍒嗛〉 --> + <!-- <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> + </main> + <footer> + <!-- 鍒涘缓寮圭獥 --> + <el-dialog :visible.sync="dialogCreate" title="鏂板绗笁鏂规帴鍙�" width="45%" v-if="dialogCreate" + :before-close="handleClose"> + <createInterface /> + </el-dialog> + <!-- 鏌ョ湅寮圭獥 --> + <el-dialog :visible.sync="dialogUpdate" :title="updateFlag ?'淇敼绗笁鏂规帴鍙�':'鏌ョ湅绗笁鏂规帴鍙�'" width="45%" + v-if="dialogUpdate" :before-close="handleClose"> + <viewInterface :updateFlag="updateFlag" :userInfo=userInfo /> + </el-dialog> + </footer> + </div> +</template> +<script> +// import createInterface from './components/createInterface'; +// import viewInterface from './components/viewInterface' +export default { + components: { + // createInterface, viewInterface + }, + data() { + return { + tableData: [], + search: "", + dialogCreate: false, + dialogUpdate: false, + updateFlag: false, + userInfo: '', + date:'', + // totalNum: 200, + // pageSize: 10, + // currentPage: 1, + } + }, + created() { + this.getUserList(); + }, + 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; + } + }) + }, + // 璁剧疆琛ㄦ牸鏂戦┈绾� + tableRowClassName({ row, rowIndex }) { + if ((rowIndex + 1) % 2 == 0) { + return 'warning-row'; + } else { + return 'success-row'; + } + return ''; + }, + // 鎵撳紑鏂板鐣岄潰 + handleAdd() { + this.dialogCreate = true; + }, + // 鍒涘缓寮圭獥鍏抽棴 + handleClose(done) { + const that = this; + this.$confirm('纭鍏抽棴锛�') + .then(_ => { + that.dialogCreate = false; + done(); + }) + .catch(_ => { }); + }, + // 鍒涘缓鏌ョ湅寮圭獥 + handleView(rowData) { + this.userInfo = rowData; + this.dialogUpdate = true; + }, + // 鍒犻櫎绗笁鏂规帴鍙� + handleDelete({ id }) { + console.log(id); + this.$axios.delete('sccg/system/portal/thirdApp/delete', { + params: { + id + } + }).then(res => { + console.log(res); + }) + } + // // 褰撳墠椤垫敼鍙樿Е鍙戜簨浠� + // changeCurrentPage(page) { + // this.currentPage = page; + // this.getUserList(); + // }, + // // 涓婁竴椤电偣鍑讳簨浠� + // handlePrev(page) { + // this.currentPage = page; + // this.getUserList(); + // }, + // // 涓嬩竴椤电偣鍑讳簨浠� + // handleNext(page) { + // this.currentPage = page; + // this.getUserList(); + // }, + } +} +</script> +<!-- sccg/system/portal/thirdApp/search --> +<style lang="scss" scoped> +.otherInterface { + header { + display: flex; + line-height: 60px; + justify-content: space-between; + padding: 0 20px; + color: #4b9bb7; + + &::v-deep .el-button { + background-color: #eb5d01; + border: none; + color: #fff; + border-radius: 20px; + } + } + + main { + padding: 10px 20px; + + .mainHeader { + padding-left: 20px; + display: flex; + line-height: 60px; + color: #4b9bb7; + background-color: #09152f; + display: flex; + .add,.search,.btn{ + flex:1; + } + .date-search{ + flex: 3; + display: flex; + .mydate{ + display: flex; + .line{ + margin:0 10px 0 20px; + } + } + } + .el-input { + width: 180px; + height: 35px; + margin-left: 10px; + + &::v-deep .el-input__inner { + background-color: #09152f; + border: 1px solid #17324c; + font-size: 12px; + } + } + } + + .mainContent { + margin-top: 20px; + + .el-table { + color: #4b9bb7; + + &::v-deep .el-table__empty-block { + background-color: #06122c; + } + + &::v-deep .el-table__empty-text { + color: #4b9bb7; + } + + &::v-deep .warning-row { + background-color: #06122c; + } + + &::v-deep .success-row { + background-color: #071f39; + } + } + + .line { + padding: 0 5px; + // margin-top: -10px; + } + } + } + + footer { + + &::v-deep .el-dialog__header, + &::v-deep .el-dialog__body { + background-color: #06122c; + } + + &::v-deep .el-dialog__header { + display: flex; + align-items: center; + background-color: #fff; + padding: 20px; + line-height: 60px; + } + + &::v-deep .el-dialog__title { + color: #4b9bb7; + } + + &::v-deep .el-dialog__close { + width: 20px; + height: 20px; + // color: #fff; + } + + &::v-deep .el-dialog__body { + padding: 0; + } + } +} +</style> \ No newline at end of file diff --git a/src/views/operate/viewEvent/components/closure/index.vue b/src/views/operate/viewEvent/components/closure/index.vue new file mode 100644 index 0000000..b61ff2d --- /dev/null +++ b/src/views/operate/viewEvent/components/closure/index.vue @@ -0,0 +1,336 @@ +<template> + <div class="view"> + <div class="view-data"> + <el-form :model="baseCase" label-position="right" ref="viewForm" :rules="Rules" label-width="100px"> + <div class="data-item"> + <el-form-item label="闂鏉ユ簮:"> + <span class="data-detail">{{baseCase.eventSource === 2 ? '浜哄伐涓婃姤' : '瑙嗛宸℃煡'}}</span> + </el-form-item> + <el-form-item label="鐧昏浜哄憳:"> + <span class="data-detail">{{baseCase.createUser}}</span> + </el-form-item> + </div> + <div class="data-item"> + <el-form-item label="闂绫诲瀷:"> + <span class="data-detail">{{baseCase.category === 1 ? '杩濊' : '杩濆缓'}}</span> + </el-form-item> + <el-form-item label="浜嬩欢绛夌骇:"> + <span class="data-detail">{{baseCase.violations.gradeText}}</span> + </el-form-item> + </div> + <div class="data-item"> + <el-form-item label="澶х被鍚嶇О:"> + <span class="data-detail">{{baseCase.violations.categoryText}}</span> + </el-form-item> + <el-form-item label="灏忕被鍚嶇О:"> + <span class="data-detail">{{baseCase.violations.categoryText}}</span> + </el-form-item> + </div> + <div class="data-item"> + <el-form-item label="鎵�灞炲尯鍘�:"> + <span class="data-detail"></span> + </el-form-item> + <el-form-item label="鎵�灞炶閬�:"> + <span class="data-detail">{{baseCase.streetText}}</span> + </el-form-item> + </div> + <div class="data-item"> + <el-form-item label="鎵�灞炵ぞ鍖�:"> + <span class="data-detail">{{baseCase.communityText}}</span> + </el-form-item> + </div> + <div class="data-item"> + <el-form-item label="浜嬪彂鍦扮偣:"> + <span class="data-detail">{{baseCase.site}}</span> + </el-form-item> + <el-form-item label="杞︾墝鍙�:"> + <span class="data-detail">{{baseCase.violations.carNumber}}</span> + </el-form-item> + </div> + <div class="data-item"> + <el-form-item label="鍏宠仈鍟嗛摵鍚嶇О:"> + <span class="data-detail">{{baseCase.violations.shopName}}</span> + </el-form-item> + </div> + <div class="data-item"> + <el-form-item label="闂鎻忚堪:"> + <span class="data-detail">{{baseCase.violations.description}}</span> + </el-form-item> + </div> + <div class="data-item"> + <el-form-item label="鍙嶆槧浜�:"> + <span class="data-detail">{{baseCase.violations.informant}}</span> + </el-form-item> + <el-form-item label="鑱旂郴鏂瑰紡:"> + <span class="data-detail">{{baseCase.violations.informantPhoneCode}}</span> + </el-form-item> + </div> + <!-- 瀹℃牳鎰忚 + <el-form-item label="瀹℃牳鎰忚" prop="auditOpinion"> + <el-input type="textarea" placeholder="璇疯緭鍏ュ鏍告剰瑙�" v-model="baseCase.auditOpinion"></el-input> + </el-form-item> + <div class="el-form-footer"> + <el-button @click.native.prevent="handleSubmit(0)">椹冲洖</el-button> + <el-button type="primary" @click.native.prevent="handleSubmit(1)">閫氳繃</el-button> + </div> --> + </el-form> + </div> + <div class="view-process"> + <div class="process-header"> + <div class="process-title-item" v-for="item in titleList" :key="item.title" + @click="changeComponent(item.index)"> + <div :class="['process-title',activeIndex===item.index ? 'title-active' : '' ]">{{item.title}}</div> + <div :class="['under-line',activeIndex===item.index ? 'line-active' : '' ]"></div> + </div> + </div> + <div class="show-item"> + <div class="show-wrap"> + <div class="closure-info" v-if="activeIndex === 0"> + <el-form :model="baseCase" label-position="right" ref="opinionForm" :rules="Rules" + label-width="100px"> + <el-form-item label="瀹℃牳鎰忚" class="op-item" prop="auditOpinion"> + <el-input type="textarea" placeholder="璇疯緭鍏ュ鏍告剰瑙�" v-model="baseCase.auditOpinion" disabled> + </el-input> + </el-form-item> + <el-form-item label="缁撴鎰忚" class="op-item" prop="finalOpinion"> + <el-input type="textarea" placeholder="璇疯緭鍏ョ粨妗堟剰瑙�" v-model="baseCase.finalOpinion"> + </el-input> + </el-form-item> + </el-form> + <div class="form-footer"> + <el-button type="primary" @click.native.prevent="handleSubmit">缁撴</el-button> + <el-button @click.native.prevent="handleBack">杩斿洖</el-button> + </div> + </div> + <MyProcess v-else-if="activeIndex === 1" :handlePassVo="handlePassVo" :baseCase="baseCase"></MyProcess> + <MyFilePicture v-else-if="activeIndex === 2" :baseCase="baseCase" :filesPictureVo="filesPictureVo"></MyFilePicture> + <MySovleProblem v-else-if="activeIndex === 3" :handlePassVo="handlePassVo" :baseCase="baseCase"></MySovleProblem> + <MyScene v-else :baseCase="baseCase" :currentSitVo="currentSitVo"></MyScene> + </div> + </div> + </div> + </div> +</template> +<script> +import MyProcess from '@/components/process' +import MyFilePicture from '@/components/filePictrue' +import MySovleProblem from '@/components/solveProblem' +import MyScene from '@/components/scene' +export default { + components: { + MyProcess, MyFilePicture, MySovleProblem, MyScene + }, + data() { + const checkOpinion = (rule, value, callback) => { + if (value) { + callback(); + } else { + callback() + } + } + const checkFinal = (rule, value, callback) => { + if (value) { + callback(); + } else { + callback(new Error('缁撴鎰忚涓嶈兘涓虹┖')) + } + } + return { + myInfo: { + + }, + activeIndex: 0, + titleList: [ + { + title: '缁撴淇℃伅', + index: 0, + }, + { + title: '鍔炵悊缁忚繃', + index: 1, + }, + { + title: '妗堝嵎鍥剧墖', + index: 2, + }, + { + title: '闂澶勭悊', + index: 3, + }, + { + title: '鐜板満鎯呭喌', + index: 4, + }, + ], + Rules: { + auditOpinion: [ + { trigger: 'blur', validator: checkOpinion } + ], + finalOpinion:[ + { + trigger:'blur',validator:checkFinal + } + ] + + }, + baseCase: {}, + handlePassVo: {}, + currentSitVo: {}, + problemProVo: {}, + filesPictureVo: {} + + } + }, + created() { + const { info } = this; + this.baseCase = info.baseCase; + this.handlePassVo = info.handlePassVo; + this.currentSitVo = info.currentSitVo; + this.problemProVo = info.problemProVo; + this.filesPictureVo = info.filesPictureVo; + }, + methods: { + changeComponent(index) { + this.activeIndex = index; + }, + handleBack(){ + this.$emit('closeDialog', { flag: false }); + }, + // 鎻愪氦瀹℃牳鎰忚 + handleSubmit() { + const { baseCase } = this; + this.$refs.opinionForm.validate((valid) => { + if (valid) { + this.$axios({ + method: 'put', + url: 'sccg/base_case/end_case?caseId='+baseCase.id +'&opinion='+baseCase.finalOpinion +'&result='+'缁撴鎴愬姛', + }) + .then(res => { + console.log(res); + if (res.code === 200) { + this.$message({ + type: 'success', + message: '缁撴鎴愬姛' + }) + this.$emit('closeDialog', { flag: false }); + }else{ + this.$message({ + type:'error', + message:'缁撴澶辫触', + }) + } + + }) + .catch(err => { console.log(err) }); + } else { + return false; + } + }) + }, + // 鑾峰彇褰撳墠鐢ㄦ埛鐧诲綍淇℃伅 + getUserLoginInfo() { + // 鑾峰彇鐧诲綍鍚�; + const username = sessionStorage.getItem('name'); + this.$axios({ + method: 'get', + url: 'sccg/admin/info', + data: { + name: 'username' + } + }) + .then(res => { + console.log(res); + }) + } + }, + props: ['info', 'closeDialog'] +} +</script> +<style lang="scss" scoped> +.view { + display: flex; + padding: 20px; + + .view-data { + color: #4b9bb7; + flex: 4; + padding: 20px; + + .data-item { + display: flex; + justify-content: space-between; + line-height: 40px; + } + + :deep(.el-form-item__label) { + color: #4b9bb7; + } + + :deep(.el-textarea__inner) { + background-color: #17324c; + color: #4b9bb7; + } + + .el-form-footer { + display: flex; + justify-content: flex-end; + } + + border: 1px solid #17324c; + } + :deep(.el-textarea__inner){ + background-color: #17324c; + color: #4b9bb7; + } + .closure-info{ + padding: 20px; + .op-item{ + padding-top: 20px; + } + .form-footer{ + display: flex; + margin-top: 50px; + justify-content: flex-end; + } + } + .view-process { + flex: 6; + margin-left: 20px; + + .process-header { + display: flex; + line-height: 40px; + + .process-title-item { + width: 120px; + text-align: center; + + .under-line { + height: 2px; + width: 100%; + } + + .title-active { + color: #4b9bb7; + } + + .line-active { + background-color: #4b9bb7; + border-radius: 20px; + } + } + } + + .show-item { + overflow: hidden; + height: 600px; + position: relative; + + .show-wrap { + overflow: scroll; + height: 600px; + } + } + } +} +</style> \ No newline at end of file diff --git a/src/views/operate/viewEvent/components/examine/index.vue b/src/views/operate/viewEvent/components/examine/index.vue new file mode 100644 index 0000000..483743f --- /dev/null +++ b/src/views/operate/viewEvent/components/examine/index.vue @@ -0,0 +1,283 @@ +<template> + <div class="view"> + <div class="view-data"> + <el-form :model="baseCase" label-position="right" ref="viewForm" :rules="Rules" label-width="100px"> + <div class="data-item"> + <el-form-item label="闂鏉ユ簮:"> + <span class="data-detail">{{baseCase.eventSource === 2 ? '浜哄伐涓婃姤' : '瑙嗛宸℃煡'}}</span> + </el-form-item> + <el-form-item label="鐧昏浜哄憳:"> + <span class="data-detail">{{baseCase.createUser}}</span> + </el-form-item> + </div> + <div class="data-item"> + <el-form-item label="闂绫诲瀷:"> + <span class="data-detail">{{baseCase.category === 1 ? '杩濊' : '杩濆缓'}}</span> + </el-form-item> + <el-form-item label="澶х被鍚嶇О:"> + <span class="data-detail">{{baseCase.violations.categoryText}}</span> + </el-form-item> + </div> + <div class="data-item"> + <el-form-item label="灏忕被鍚嶇О:"> + <span class="data-detail">{{baseCase.violations.typeText}}</span> + </el-form-item> + <el-form-item label="浜嬩欢绛夌骇:"> + <span class="data-detail">{{baseCase.violations.gradeText}}</span> + </el-form-item> + </div> + <div class="data-item"> + <el-form-item label="妗堢敱:"> + <span class="data-detail">{{baseCase.violations.actionCause}}</span> + </el-form-item> + </div> + <div class="data-item"> + <el-form-item label="鎵�灞炲尯鍘�:"> + <span class="data-detail">xxxx</span> + </el-form-item> + <el-form-item label="鎵�灞炶閬�:"> + <span class="data-detail">{{baseCase.streetText}}</span> + </el-form-item> + </div> + <div class="data-item"> + <el-form-item label="鎵�灞炵ぞ鍖�:"> + <span class="data-detail">{{baseCase.communityText}}</span> + </el-form-item> + </div> + <div class="data-item"> + <el-form-item label="浜嬪彂鍦扮偣:"> + <span class="data-detail">{{baseCase.site}}</span> + </el-form-item> + </div> + <div class="data-item"> + <el-form-item label="闂鎻忚堪:"> + <span class="data-detail">{{baseCase.violations.description}}</span> + </el-form-item> + </div> + <!-- <div class="data-item"> + <el-form-item label="澶勭疆鏂瑰紡:"> + <span class="data-detail">xxxxxxx</span> + </el-form-item> + </div> + <div class="data-item"> + <el-form-item label="澶勭疆鎵嬫:"> + <span class="data-detail">xxxxxxx</span> + </el-form-item> + </div>--> + <!-- 瀹℃牳鎰忚 --> + <el-form-item label="瀹℃牳鎰忚" prop="auditOpinion"> + <el-input type="textarea" placeholder="璇疯緭鍏ュ鏍告剰瑙�" v-model="baseCase.auditOpinion"></el-input> + </el-form-item> + <div class="el-form-footer"> + <el-button @click.native.prevent="handleSubmit(0)">椹冲洖</el-button> + <el-button type="primary" @click.native.prevent="handleSubmit(1)">閫氳繃</el-button> + </div> + </el-form> + </div> + <div class="view-process"> + <div class="process-header"> + <div class="process-title-item" v-for="item in titleList" :key="item.title" + @click="changeComponent(item.index)"> + <div :class="['process-title',activeIndex===item.index ? 'title-active' : '' ]">{{item.title}}</div> + <div :class="['under-line',activeIndex===item.index ? 'line-active' : '' ]"></div> + </div> + </div> + <div class="show-item"> + <div class="show-wrap"> + <MyProcess v-if="activeIndex === 1" :handlePassVo="handlePassVo" :baseCase="baseCase"></MyProcess> + <MyFilePicture v-else-if="activeIndex === 2" :filesPictureVo="filesPictureVo" ></MyFilePicture> + <MySovleProblem v-else-if="activeIndex === 3" :handlePassVo="handlePassVo" :baseCase="baseCase"></MySovleProblem> + <MyScene v-else :currentSitVo="currentSitVo" :baseCase="baseCase"></MyScene> + </div> + </div> + </div> + </div> +</template> +<script> +import MyProcess from '@/components/process' +import MyFilePicture from '@/components/filePictrue' +import MySovleProblem from '@/components/solveProblem' +import MyScene from '@/components/scene' +export default { + components: { + MyProcess, MyFilePicture, MySovleProblem, MyScene + }, + data() { + const checkOpinion = (rule, value, callback) => { + if (value) { + callback(); + } else { + callback(new Error('瀹℃牳鎰忚涓嶈兘涓虹┖')) + } + } + return { + myInfo: { + + }, + activeIndex: 1, + titleList: [ + { + title: '鍔炵悊缁忚繃', + index: 1, + }, + { + title: '妗堝嵎鍥剧墖', + index: 2, + }, + { + title: '闂澶勭悊', + index: 3, + }, + { + title: '鐜板満鎯呭喌', + index: 4, + }, + ], + Rules: { + auditOpinion: [ + { required: true, trigger: 'blur', validator: checkOpinion } + ] + }, + baseCase: {}, + handlePassVo: {}, + currentSitVo: {}, + problemProVo: {}, + filesPictureVo: {}, + } + }, + created() { + const { info} = this; + this.baseCase = info.baseCase; + this.handlePassVo = info.handlePassVo; + this.currentSitVo = info.currentSitVo; + this.problemProVo = info.problemProVo; + this.filesPictureVo = info.filesPictureVo; + }, + methods: { + changeComponent(index) { + this.activeIndex = index; + }, + // 鎻愪氦瀹℃牳鎰忚 + handleSubmit(index) { + const { baseCase } = this; + this.$refs.viewForm.validate((valid) => { + if (valid) { + this.$axios({ + method: 'post', + url: 'sccg/check_handle/check', + data: { + baseCaseId: baseCase.id, + checkOpinion: baseCase.auditOpinion, + result:index === 0 ? '椹冲洖':'閫氳繃', + } + }) + .then(res => { + console.log(res); + if (res.code === 200) { + this.$message({ + type: 'success', + message: index === 0 ? '椹冲洖鎴愬姛' : '瀹℃牳閫氳繃' + }) + this.$emit('closeDialog', { flag: false }); + } + + }) + .catch(err => { console.log(err) }); + }else{ + return false; + } + }) + }, + // 鑾峰彇褰撳墠鐢ㄦ埛鐧诲綍淇℃伅 + getUserLoginInfo() { + // 鑾峰彇鐧诲綍鍚�; + const username = sessionStorage.getItem('name'); + this.$axios({ + method: 'get', + url: 'sccg/admin/info', + data: { + name: 'username' + } + }) + .then(res => { + console.log(res); + }) + }, + }, + props: ['info', 'closeDialog'] +} +</script> +<style lang="scss" scoped> +.view { + display: flex; + padding: 20px; + + .view-data { + color: #4b9bb7; + flex: 4; + padding: 20px; + + .data-item { + display: flex; + justify-content: space-between; + line-height: 40px; + } + + :deep(.el-form-item__label) { + color: #4b9bb7; + } + + :deep(.el-textarea__inner) { + background-color: #17324c; + color: #4b9bb7; + } + + .el-form-footer { + display: flex; + justify-content: flex-end; + } + + border: 1px solid #17324c; + } + + .view-process { + flex: 6; + margin-left: 20px; + + .process-header { + display: flex; + line-height: 40px; + + .process-title-item { + width: 120px; + text-align: center; + + .under-line { + height: 2px; + width: 100%; + } + + .title-active { + color: #4b9bb7; + } + + .line-active { + background-color: #4b9bb7; + border-radius: 20px; + } + } + } + + .show-item { + overflow: hidden; + height: 600px; + position: relative; + + .show-wrap { + overflow: scroll; + height: 600px; + } + } + } +} +</style> \ No newline at end of file diff --git a/src/views/operate/viewEvent/components/illExamine/index.vue b/src/views/operate/viewEvent/components/illExamine/index.vue new file mode 100644 index 0000000..1dfd4a4 --- /dev/null +++ b/src/views/operate/viewEvent/components/illExamine/index.vue @@ -0,0 +1,284 @@ +<template> + <div class="view"> + <div class="view-data"> + <el-form :model="baseCase" label-position="right" ref="viewForm" :rules="Rules" label-width="160px"> + <div class="data-item"> + <el-form-item label="闂鏉ユ簮:"> + <span class="data-detail">{{baseCase.eventSource === 2 ? '浜哄伐涓婃姤' : '瑙嗛宸℃煡'}}</span> + </el-form-item> + <el-form-item label="鐧昏浜哄憳:"> + <span class="data-detail">{{baseCase.createUser}}</span> + </el-form-item> + </div> + <div class="data-item"> + <el-form-item label="闂绫诲瀷:"> + <span class="data-detail">{{baseCase.category === 1 ? '杩濊' : '杩濆缓'}}</span> + </el-form-item> + <el-form-item label="杩濆缓绫诲埆:"> + <span class="data-detail">{{baseCase.illegalBuilding.categoryId}}</span> + </el-form-item> + </div> + <div class="data-item"> + <el-form-item label="浜嬩欢绛夌骇:"> + <span class="data-detail">{{baseCase.illegalBuilding.baseCaseId}}</span> + </el-form-item> + </div> + <div class="data-item"> + <el-form-item label="妗堢敱:"> + <span class="data-detail">{{baseCase.illegalBuilding.actionCause}}</span> + </el-form-item> + </div> + <div class="data-item"> + <el-form-item label="杩濇硶寤鸿闀裤�佸銆侀珮:"> + <span class="data-detail">{{baseCase.illegalBuilding.buildingLength+'m銆�'+baseCase.illegalBuilding.buildingWidth+'m銆�'+ baseCase.illegalBuilding.buildingHigh + 'm '}}</span> + </el-form-item> + </div> + <div class="data-item"> + <el-form-item label="杩濇硶寤鸿闈㈢Н:"> + <span class="data-detail">{{baseCase.illegalBuilding.buildingArea+'銕� '}}</span> + </el-form-item> + </div> + <div class="data-item"> + <el-form-item label="鎵�灞炵ぞ鍖�:"> + <span class="data-detail">{{baseCase.communityText}}</span> + </el-form-item> + </div> + <div class="data-item"> + <el-form-item label="浜嬪彂鍦扮偣:"> + <span class="data-detail">{{baseCase.site}}</span> + </el-form-item> + </div> + <div class="data-item"> + <el-form-item label="闂鎻忚堪:"> + <span class="data-detail">{{baseCase.illegalBuilding.description}}</span> + </el-form-item> + </div> + <!-- <div class="data-item"> + <el-form-item label="澶勭疆鏂瑰紡:"> + <span class="data-detail">xxxxxxx</span> + </el-form-item> + </div> + <div class="data-item"> + <el-form-item label="澶勭疆鎵嬫:"> + <span class="data-detail">xxxxxxx</span> + </el-form-item> + </div> --> + <!-- 瀹℃牳鎰忚 --> + <el-form-item label="瀹℃牳鎰忚" prop="auditOpinion"> + <el-input type="textarea" placeholder="璇疯緭鍏ュ鏍告剰瑙�" v-model="baseCase.auditOpinion"></el-input> + </el-form-item> + <div class="el-form-footer"> + <el-button @click.native.prevent="handleSubmit(0)">椹冲洖</el-button> + <el-button type="primary" @click.native.prevent="handleSubmit(1)">閫氳繃</el-button> + </div> + </el-form> + </div> + <div class="view-process"> + <div class="process-header"> + <div class="process-title-item" v-for="item in titleList" :key="item.title" + @click="changeComponent(item.index)"> + <div :class="['process-title',activeIndex===item.index ? 'title-active' : '' ]">{{item.title}}</div> + <div :class="['under-line',activeIndex===item.index ? 'line-active' : '' ]"></div> + </div> + </div> + <div class="show-item"> + <div class="show-wrap"> + <MyProcess v-if="activeIndex === 1" :handlePassVo="handlePassVo" :baseCase="baseCase"></MyProcess> + <MyFilePicture v-else-if="activeIndex === 2" :filesPictureVo="filesPictureVo" ></MyFilePicture> + <MySovleProblem v-else-if="activeIndex === 3" :handlePassVo="handlePassVo" :baseCase="baseCase"></MySovleProblem> + <MyScene v-else :currentSitVo="currentSitVo" :baseCase="baseCase"></MyScene> + </div> + </div> + </div> + </div> +</template> +<script> +import MyProcess from '@/components/process' +import MyFilePicture from '@/components/filePictrue' +import MySovleProblem from '@/components/solveProblem' +import MyScene from '@/components/scene' +export default { + components: { + MyProcess, MyFilePicture, MySovleProblem, MyScene + }, + data() { + const checkOpinion = (rule, value, callback) => { + if (value) { + callback(); + } else { + callback(new Error('瀹℃牳鎰忚涓嶈兘涓虹┖')) + } + } + return { + myInfo: { + + }, + activeIndex: 1, + titleList: [ + { + title: '鍔炵悊缁忚繃', + index: 1, + }, + { + title: '妗堝嵎鍥剧墖', + index: 2, + }, + { + title: '闂澶勭悊', + index: 3, + }, + { + title: '鐜板満鎯呭喌', + index: 4, + }, + ], + Rules: { + auditOpinion: [ + { required: true, trigger: 'blur', validator: checkOpinion } + ] + }, + baseCase: {}, + handlePassVo: {}, + currentSitVo: {}, + problemProVo: {}, + filesPictureVo: {}, + } + }, + created() { + const { info } = this; + this.baseCase = info.baseCase; + this.handlePassVo = info.handlePassVo; + this.currentSitVo = info.currentSitVo; + this.problemProVo = info.problemProVo; + this.filesPictureVo = info.filesPictureVo; + }, + methods: { + changeComponent(index) { + this.activeIndex = index; + }, + // 鎻愪氦瀹℃牳鎰忚 + handleSubmit(mystatus) { + // this.getUserLoginInfo(); + const { baseCase } = this; + this.$refs.viewForm.validate((valid) => { + if (valid) { + this.$axios({ + method: 'post', + url: 'sccg/check_handle/check', + data: { + baseCaseId: baseCase.id, + checkOpinion: baseCase.auditOpinion, + currentUser: baseCase.createUser, + status: mystatus, + } + }) + .then(res => { + console.log(res); + if (res.code === 200) { + this.$message({ + type: 'success', + message: mystatus === 0 ? '椹冲洖鎴愬姛' : '瀹℃牳閫氳繃' + }) + this.$emit('closeDialog', { flag: false }); + } + + }) + .catch(err => { console.log(err) }); + }else{ + return false; + } + }) + }, + // 鑾峰彇褰撳墠鐢ㄦ埛鐧诲綍淇℃伅 + getUserLoginInfo() { + // 鑾峰彇鐧诲綍鍚�; + const username = sessionStorage.getItem('name'); + this.$axios({ + method: 'get', + url: 'sccg/admin/info', + data: { + name: 'username' + } + }) + .then(res => { + console.log(res); + }) + }, + }, + props: ['info', 'closeDialog'] +} +</script> +<style lang="scss" scoped> +.view { + display: flex; + padding: 20px; + + .view-data { + color: #4b9bb7; + flex: 4; + padding: 20px; + + .data-item { + display: flex; + justify-content: space-between; + line-height: 40px; + } + + :deep(.el-form-item__label) { + color: #4b9bb7; + } + + :deep(.el-textarea__inner) { + background-color: #17324c; + color: #4b9bb7; + } + + .el-form-footer { + display: flex; + justify-content: flex-end; + } + + border: 1px solid #17324c; + } + + .view-process { + flex: 6; + margin-left: 20px; + + .process-header { + display: flex; + line-height: 40px; + + .process-title-item { + width: 120px; + text-align: center; + + .under-line { + height: 2px; + width: 100%; + } + + .title-active { + color: #4b9bb7; + } + + .line-active { + background-color: #4b9bb7; + border-radius: 20px; + } + } + } + + .show-item { + overflow: hidden; + height: 600px; + position: relative; + + .show-wrap { + overflow: scroll; + height: 600px; + } + } + } +} +</style> \ No newline at end of file diff --git a/src/views/operate/viewEvent/components/illclosure/index.vue b/src/views/operate/viewEvent/components/illclosure/index.vue new file mode 100644 index 0000000..513b04b --- /dev/null +++ b/src/views/operate/viewEvent/components/illclosure/index.vue @@ -0,0 +1,334 @@ +<template> + <div class="view"> + <div class="view-data"> + <el-form :model="baseCase" label-position="right" ref="viewForm" :rules="Rules" label-width="160px"> + <div class="data-item"> + <el-form-item label="闂鏉ユ簮:"> + <span class="data-detail">{{baseCase.eventSource === 2 ? '浜哄伐涓婃姤' : '瑙嗛宸℃煡'}}</span> + </el-form-item> + <el-form-item label="鐧昏浜哄憳:"> + <span class="data-detail">{{baseCase.createUser}}</span> + </el-form-item> + </div> + <div class="data-item"> + <el-form-item label="闂绫诲瀷:"> + <span class="data-detail">{{baseCase.category === 1 ? '杩濊' : '杩濆缓'}}</span> + </el-form-item> + <el-form-item label="杩濆缓绫诲埆:"> + <span class="data-detail">{{baseCase.illegalBuilding.categoryId}}</span> + </el-form-item> + </div> + <div class="data-item"> + <el-form-item label="浜嬩欢绛夌骇:"> + <span class="data-detail">{{baseCase.illegalBuilding.baseCaseId}}</span> + </el-form-item> + </div> + <div class="data-item"> + <el-form-item label="妗堢敱:"> + <span class="data-detail">{{baseCase.illegalBuilding.actionCause}}</span> + </el-form-item> + </div> + <div class="data-item"> + <el-form-item label="杩濇硶寤鸿闀裤�佸銆侀珮:"> + <span class="data-detail">{{baseCase.illegalBuilding.buildingLength+'m銆�'+baseCase.illegalBuilding.buildingWidth+'m銆�'+ baseCase.illegalBuilding.buildingHigh + 'm '}}</span> + </el-form-item> + </div> + <div class="data-item"> + <el-form-item label="杩濇硶寤鸿闈㈢Н:"> + <span class="data-detail">{{baseCase.illegalBuilding.buildingArea+'銕� '}}</span> + </el-form-item> + </div> + <div class="data-item"> + <el-form-item label="鎵�灞炵ぞ鍖�:"> + <span class="data-detail">{{baseCase.communityText}}</span> + </el-form-item> + </div> + <div class="data-item"> + <el-form-item label="浜嬪彂鍦扮偣:"> + <span class="data-detail">{{baseCase.site}}</span> + </el-form-item> + </div> + <div class="data-item"> + <el-form-item label="闂鎻忚堪:"> + <span class="data-detail">{{baseCase.illegalBuilding.description}}</span> + </el-form-item> + </div> + <!-- <div class="data-item"> + <el-form-item label="澶勭疆鏂瑰紡:"> + <span class="data-detail">xxxxxxx</span> + </el-form-item> + </div> + <div class="data-item"> + <el-form-item label="澶勭疆鎵嬫:"> + <span class="data-detail">xxxxxxx</span> + </el-form-item> + </div> --> + <!-- 瀹℃牳鎰忚 --> + <el-form-item label="瀹℃牳鎰忚" prop="auditOpinion"> + <el-input type="textarea" placeholder="璇疯緭鍏ュ鏍告剰瑙�" v-model="baseCase.auditOpinion"></el-input> + </el-form-item> + <div class="el-form-footer"> + <el-button @click.native.prevent="handleSubmit(0)">椹冲洖</el-button> + <el-button type="primary" @click.native.prevent="handleSubmit(1)">閫氳繃</el-button> + </div> + </el-form> + </div> + <div class="view-process"> + <div class="process-header"> + <div class="process-title-item" v-for="item in titleList" :key="item.title" + @click="changeComponent(item.index)"> + <div :class="['process-title',activeIndex===item.index ? 'title-active' : '' ]">{{item.title}}</div> + <div :class="['under-line',activeIndex===item.index ? 'line-active' : '' ]"></div> + </div> + </div> + <div class="show-item"> + <div class="show-wrap"> + <div class="closure-info" v-if="activeIndex === 0"> + <el-form :model="baseCase" label-position="right" ref="opinionForm" :rules="Rules" + label-width="100px"> + <el-form-item label="瀹℃牳鎰忚" class="op-item" prop="auditOpinion"> + <el-input type="textarea" placeholder="璇疯緭鍏ュ鏍告剰瑙�" v-model="baseCase.auditOpinion" disabled> + </el-input> + </el-form-item> + <el-form-item label="缁撴鎰忚" class="op-item" prop="finalOpinion"> + <el-input type="textarea" placeholder="璇疯緭鍏ョ粨妗堟剰瑙�" v-model="baseCase.finalOpinion"> + </el-input> + </el-form-item> + </el-form> + <div class="form-footer"> + <el-button type="primary" @click.native.prevent="handleSubmit">缁撴</el-button> + <el-button @click.native.prevent="handleBack">杩斿洖</el-button> + </div> + </div> + <MyProcess v-else-if="activeIndex === 1" :handlePassVo="handlePassVo" :baseCase="baseCase"></MyProcess> + <MyFilePicture v-else-if="activeIndex === 2" :baseCase="baseCase" :filesPictureVo="filesPictureVo"></MyFilePicture> + <MySovleProblem v-else-if="activeIndex === 3" :handlePassVo="handlePassVo" :baseCase="baseCase"></MySovleProblem> + <MyScene v-else :baseCase="baseCase" :currentSitVo="currentSitVo"></MyScene> + </div> + </div> + </div> + </div> +</template> +<script> +import MyProcess from '@/components/process' +import MyFilePicture from '@/components/filePictrue' +import MySovleProblem from '@/components/solveProblem' +import MyScene from '@/components/scene' +export default { + components: { + MyProcess, MyFilePicture, MySovleProblem, MyScene + }, + data() { + const checkOpinion = (rule, value, callback) => { + if (value) { + callback(); + } else { + callback() + } + } + const checkFinal = (rule, value, callback) => { + if (value) { + callback(); + } else { + callback(new Error('缁撴鎰忚涓嶈兘涓虹┖')) + } + } + return { + myInfo: { + + }, + activeIndex: 0, + titleList: [ + { + title: '缁撴淇℃伅', + index: 0, + }, + { + title: '鍔炵悊缁忚繃', + index: 1, + }, + { + title: '妗堝嵎鍥剧墖', + index: 2, + }, + { + title: '闂澶勭悊', + index: 3, + }, + { + title: '鐜板満鎯呭喌', + index: 4, + }, + ], + Rules: { + auditOpinion: [ + { trigger: 'blur', validator: checkOpinion } + ], + finalOpinion:[ + { + trigger:'blur',validator:checkFinal + } + ] + + }, + baseCase: {}, + handlePassVo: {}, + currentSitVo: {}, + problemProVo: {}, + filesPictureVo: {} + + } + }, + created() { + const { info } = this; + this.baseCase = info.baseCase; + this.handlePassVo = info.handlePassVo; + this.currentSitVo = info.currentSitVo; + this.problemProVo = info.problemProVo; + this.filesPictureVo = info.filesPictureVo; + }, + methods: { + changeComponent(index) { + this.activeIndex = index; + }, + handleBack(){ + this.$emit('closeDialog', { flag: false }); + }, + // 鎻愪氦瀹℃牳鎰忚 + handleSubmit() { + const { baseCase } = this; + this.$refs.opinionForm.validate((valid) => { + if (valid) { + this.$axios({ + method: 'put', + url: 'sccg/base_case/end_case?caseId='+baseCase.id +'&opinion='+baseCase.finalOpinion+'&result='+'缁撴鎴愬姛' , + }) + .then(res => { + console.log(res); + if (res.code === 200) { + this.$message({ + type: 'success', + message: '缁撴鎴愬姛' + }) + this.$emit('closeDialog', { flag: false }); + }else{ + this.$message({ + type:'error', + message:'缁撴澶辫触', + }) + } + + }) + .catch(err => { console.log(err) }); + } else { + return false; + } + }) + }, + // 鑾峰彇褰撳墠鐢ㄦ埛鐧诲綍淇℃伅 + getUserLoginInfo() { + // 鑾峰彇鐧诲綍鍚�; + const username = sessionStorage.getItem('name'); + this.$axios({ + method: 'get', + url: 'sccg/admin/info', + data: { + name: 'username' + } + }) + .then(res => { + console.log(res); + }) + } + }, + props: ['info', 'closeDialog'] +} +</script> +<style lang="scss" scoped> +.view { + display: flex; + padding: 20px; + + .view-data { + color: #4b9bb7; + flex: 4; + padding: 20px; + + .data-item { + display: flex; + justify-content: space-between; + line-height: 40px; + } + + :deep(.el-form-item__label) { + color: #4b9bb7; + } + + :deep(.el-textarea__inner) { + background-color: #17324c; + color: #4b9bb7; + } + + .el-form-footer { + display: flex; + justify-content: flex-end; + } + + border: 1px solid #17324c; + } + :deep(.el-textarea__inner){ + background-color: #17324c; + color: #4b9bb7; + } + .closure-info{ + padding: 20px; + .op-item{ + padding-top: 20px; + } + .form-footer{ + display: flex; + margin-top: 50px; + justify-content: flex-end; + } + } + .view-process { + flex: 6; + margin-left: 20px; + + .process-header { + display: flex; + line-height: 40px; + + .process-title-item { + width: 120px; + text-align: center; + + .under-line { + height: 2px; + width: 100%; + } + + .title-active { + color: #4b9bb7; + } + + .line-active { + background-color: #4b9bb7; + border-radius: 20px; + } + } + } + + .show-item { + overflow: hidden; + height: 600px; + position: relative; + + .show-wrap { + overflow: scroll; + height: 600px; + } + } + } +} +</style> \ No newline at end of file diff --git a/src/views/operate/viewEvent/index.vue b/src/views/operate/viewEvent/index.vue new file mode 100644 index 0000000..76194d5 --- /dev/null +++ b/src/views/operate/viewEvent/index.vue @@ -0,0 +1,630 @@ +<template> + <div class="userList"> + <header> + <div class="headerTitle">杩愯惀绠$悊 >> 妗堝嵎鏌ヨ</div> + <div class="headerContent"> + <div class="contentItem"> + <span>鎸夌紪鍙�: </span> + <div> + <el-input placeholder=" 璇疯緭鍏ョ紪鍙�" v-model="info.code"></el-input> + </div> + </div> + <div class="contentItem"> + <span>鎸夌被鍨�: </span> + <div class="search"> + <el-input placeholder=" 璇疯緭鍏ョ紪鍙�" v-model="info.type"></el-input> + </div> + </div> + <div class="contentItem"> + <span>鎸夌ぞ鍖�: </span> + <div class="search"> + <el-input placeholder=" 璇疯緭鍏ョ紪鍙�" v-model="info.community"></el-input> + </div> + </div> + <div class="contentItem"> + <span>鎸変簨鍙戝湴鐐�: </span> + <div class="search"> + <el-input placeholder=" 璇疯緭鍏ョ紪鍙�" v-model="info.site"></el-input> + </div> + </div> + <div class="date-search contentItem"> + <!-- <span>鎸夌被鍨�:</span> + <div class="search"> + <el-input placeholder="璇疯緭鍏ョ紪鍙�"></el-input> + </div> --> + <div class="btn"> + <el-button icon="el-icon-plus" type="primary">鎼滅储</el-button> + <!-- <el-button icon="el-icon-delete">閲嶇疆</el-button> --> + </div> + </div> + </div> + <div class="headerContent"> + <span>鏃堕棿: </span> + <div> + <el-input placeholder=" 璇疯緭鍏ュ紑濮嬫椂闂�" v-model="info.startTime"></el-input> + </div> + <div class="line"> + -- + </div> + <div> + <el-input placeholder=" 璇疯緭鍏ョ粨鏉熸椂闂�" v-model="info.endTime"></el-input> + </div> + </div> + </header> + <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 prop="code" label="浜嬩欢缂栧彿" min-width="18"> + <template slot-scope="scope"> + <el-link @click="JumpView(scope.row)">{{ scope.row.code }}</el-link> + </template> + </el-table-column> + <el-table-column prop="eventSource" label="闂鏉ユ簮" min-width="8"> + <template slot-scope="scope"> + <span>{{ scope.row.eventSource === 2 ? '浜哄伐涓婃姤' : '瑙嗛涓婁紶' }}</span> + </template> + </el-table-column> + <el-table-column :prop="myproblem === 1 ? 'category' : 'category'" + :label="myproblem === 1 ? '澶х被鍚嶇О' : '杩濆缓绫诲埆'" :min-width="myproblem === 1 ? '10' : '20'"> + </el-table-column> + <el-table-column :prop="myproblem === 1 ? 'type' : 'site'" + :label="myproblem === 1 ? '灏忕被鍚嶇О' : '杩濆缓鍦扮偣'" min-width="10"> + </el-table-column> + <el-table-column :prop="myproblem === 1 ? 'actionCause' : 'communityId'" + :label="myproblem === 1 ? '妗堢敱' : '鎵�灞炵ぞ鍖�'" min-width="10"> + </el-table-column> + <el-table-column :prop="myproblem === 1 ? 'site' : ''" + :label="myproblem === 1 ? '鎶ヨ鐐逛綅' : '杩濇硶寤虹瓚闀裤�佸銆侀珮'" :min-width="myproblem === 1 ? '10' : '20'"> + <template slot-scope="scope"> + <div v-if="myproblem === 2"><span>{{ scope.row.buildingLength + '绫�' + '銆�' + + scope.row.buildingWidth + '绫�' + '銆�' + scope.row.buildingHigh + '绫�' + }}</span></div> + <div v-else>{{ scope.row.site }}</div> + </template> + </el-table-column> + <el-table-column :prop="myproblem === 1 ? 'street' : 'buildingArea'" + :label="myproblem === 1 ? '鎵�灞炲尯鍩�' : '杩濇硶寤虹瓚闈㈢Н'" min-width="10"> + </el-table-column> + <el-table-column prop="alarmTime" label="鎶ヨ鏃堕棿" min-width="15" v-if="myproblem === 1"> + <template slot-scope="scope"> + <span>{{ filterTime(scope.row.alarmTime) }}</span> + </template> + </el-table-column> + <el-table-column :prop="myproblem === 1 ? 'continueTime' : 'materials'" + :label="myproblem === 1 ? '鎸佺画鏃堕棿' : '杩濇硶寤虹瓚鏉愭枡'" min-width="15"> + </el-table-column> + <!-- <el-table-column prop="operation" label="鎿嶄綔" min-width="15"> + <template slot-scope="scope"> + <div class="btn"> + <!-- v-if="instatus===7 ? true : false" --> + <!-- <span @click="handleExamine(scope.row)" v-if="instatus===7">瀹℃牳</span> + <span @click="handleClosure(scope.row)" v-if="instatus===8">缁撴</span> + <span class="line" v-if="instatus !==9">|</span> + <span @click="JumpView(scope.row)">鏌ョ湅</span> + </div> + </template> + </el-table-column> --> + </el-table> + <!-- 瀹℃牳椤甸潰 --> + <el-dialog :visible.sync="dialogExamine" width="80%" title="鍩虹淇℃伅(浜哄伐)" v-if="dialogExamine" + :before-close="handleClose"> + <MyExamine :info="info" v-if="myproblem === 1" @closeDialog="closeDialog"></MyExamine> + <MyIllExamine :info="info" v-else @closeDialog="closeDialog"></MyIllExamine> + </el-dialog> + <!-- 缁撴椤甸潰 --> + <el-dialog :visible.sync="dialogClosure" width="80%" title="鍩虹淇℃伅(浜哄伐)" v-if="dialogClosure" + :before-close="handleClose"> + <MyClosure :info="info" v-if="myproblem === 1" @closeDialog="closeDialog"></MyClosure> + <MyIllClosure :info="info" v-else @closeDialog="closeDialog"></MyIllClosure> + </el-dialog> + <!-- 璇︽儏椤甸潰 --> + <el-dialog :visible.sync="dialogView" width="80%" title="鍩虹淇℃伅(浜哄伐)" v-if="dialogView" + :before-close="handleNoClose"> + <MyDetail :info=info v-if="myproblem == 1 ? true : false" :mycode='code'></MyDetail> + <MyIllDetail :info=info v-else :mycode="code"></MyIllDetail> + </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" disabled> + <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> + </div> +</template> +<script> +import MyExamine from './components/examine' +import MyClosure from './components/closure' +import MyIllExamine from './components/illExamine' +import MyIllClosure from './components/illclosure' +import MyDetail from '@/components/detail' +import MyIllDetail from '@/components/illdetail' +import helper from '@/utils/mydate' +export default { + components: { + MyExamine, MyClosure, MyDetail, MyIllDetail, MyIllExamine, MyIllClosure + }, + data() { + return { + tableData: [], + dialogExamine: false, + dialogClosure: false, + dialogView: false, + info: {}, + totalNum: null, + pageSize: 10, + currentPage: 1, + all: false, + unsame: false, + myIdx: 0, + preMyIdx: 0, + options: [ + { + value: 0, + label: '鎵归噺鎿嶄綔', + disabled: true, + }, + { + value: 1, + label: '鎵归噺鍚敤', + }, + { + value: 2, + label: '鎵归噺绂佺敤', + }, + { + value: 3, + label: '鎵归噺鍒犻櫎', + } + ], + tempList: [], + typeList: [ + { + name: '杩濊', + value: 1, + checked: true + }, + { + name: '杩濆缓', + value: 2, + checked: false, + }, + ], + caseId: '', + myproblem: 1, + instatus: 7, + code: '' + } + }, + created() { + this.getUserList(); + }, + methods: { + // 鎵归噺鍒犻櫎 + mulDelete(idArr) { + console.log(idArr); + this.$axios({ + method: 'delete', + url: 'sccg/violations/batch_delete?ids=' + idArr, + }).then(res => { + this.getUserList(); + this.$message({ + message: res.message, + type: res.code === 200 ? 'success' : 'warning' + }) + }) + }, + // 鎵ц涓嬫媺妗嗘搷浣� + selectChange(list) { + console.log(this.tempList); + if (this.tempList.length !== 0) { + if (list === 3) { + this.preMyIdx = list; + this.mulDelete(this.tempList); + } + } else { + this.myIdx = this.preMyIdx; + this.$message({ + type: 'warning', + message: '鎮ㄨ繕娌¢�変腑浠讳綍鏁版嵁', + }) + } + }, + // 鐩戝惉琛ㄦ牸 + tableChange(list) { + this.tempList = []; + list.forEach(item => { + this.tempList.push(item.code); + }) + if (list.length === this.tableData.length) { + this.all = true; + } else { + this.all = false + } + }, + // 鍏ㄩ�� + selectAll() { + this.$refs.multipleTable.toggleAllSelection(); + }, + // 鍙嶉�� + disSame(list) { + list.forEach(row => { + this.$refs.multipleTable.toggleRowSelection(row) + }) + }, + // 鍒犻櫎鍗曟潯鏁版嵁 + handleDelete({ number }) { + console.log(number); + this.$confirm('纭鍒犻櫎锛�') + .then(_ => { + console.log(1); + this.$axios({ + method: 'delete', + url: `sccg/violations/delete?id=${number}`, + }) + .then(res => { + console.log(res); + this.$message({ + type: res.code === 200 ? 'success' : 'warning', + message: res.message + }) + + this.getUserList(); + }) + }) + .catch(_ => { console.log(2) }); + }, + // 鑾峰彇鐢ㄦ埛鍒楄〃 + getUserList() { + const { currentPage, pageSize, instatus, myproblem } = this; + this.$axios({ + method: 'get', + url: `sccg/base_case/query?state=${instatus}¤t=${currentPage}&size=${pageSize}&resource=2&type=${myproblem}` + }).then(res => { + this.totalNum = res.data.total; + this.tableData = res.data.records; + }) + }, + // 璁剧疆琛ㄦ牸鏂戦┈绾� + tableRowClassName({ row, rowIndex }) { + if ((rowIndex + 1) % 2 == 0) { + return 'warning-row'; + } else { + return 'success-row'; + } + return ''; + }, + // 褰撳墠椤垫敼鍙樿Е鍙戜簨浠� + changeCurrentPage(page) { + this.currentPage = page; + this.getUserList(); + }, + // 涓婁竴椤电偣鍑讳簨浠� + handlePrev(page) { + this.currentPage = page; + this.getUserList(); + }, + // 涓嬩竴椤电偣鍑讳簨浠� + handleNext(page) { + this.currentPage = page; + this.getUserList(); + }, + handleClose(done) { + this.$confirm('纭鍏抽棴锛�') + .then(_ => { + this.dialogExamine = false; + done(); + }) + .catch(_ => { }); + }, + handleNoClose(done) { + done(); + }, + async JumpView(data) { + this.code = data.code + await this.getEventInfo(data.code); + }, + // 鑾峰彇妗堜欢淇℃伅 + getEventInfo(code) { + this.$axios({ + method: 'get', + url: `sccg/base_case/baseCaseDetail/${code}` + }) + .then(res => { + console.log(res); + this.info = res.data; + this.dialogView = true; + }) + }, + // 鑾峰彇妗堜欢淇℃伅 + getEventInfo3(code) { + this.$axios({ + method: 'get', + url: `sccg/base_case/baseCaseDetail/${code}` + }) + .then(res => { + console.log(res); + this.info = res.data; + this.dialogExamine = true; + }) + }, + // 鑾峰彇妗堜欢淇℃伅 + getEventInfo2(code) { + this.$axios({ + method: 'get', + url: `sccg/base_case/baseCaseDetail/${code}` + }) + .then(res => { + console.log(res); + this.info = res.data; + this.dialogClosure = true; + }) + }, + // 鍘诲鏍� + handleExamine({ code }) { + this.getEventInfo3(code); + }, + // 鍘荤粨妗� + handleClosure({ code }) { + this.getEventInfo2(code); + }, + // 鍏抽棴dialog + closeDialog({ flag }) { + this.dialogExamine = flag; + this.dialogClosure = flag; + this.getUserList(); + }, + // 闂绫诲瀷 + changeMyProblem(val) { + this.getUserList(); + }, + // 瀹℃牳鐘舵�� + changeInStatus(val) { + this.getUserList(); + }, + filterTime(time) { + return helper(time); + } + } +} +</script> +<style lang="scss" scoped> +.userList { + text-align: left; + margin: 10px 20px; + color: #4b9bb7; + + header { + display: flex; + line-height: 60px; + flex-direction: column; + // justify-content: space-between; + padding: 0 20px; + color: #4b9bb7; + + .headerContent { + display: flex; + + .contentItem { + display: flex; + margin-right: 5%; + } + + .mydate { + flex: 1; + } + } + + &::v-deep .el-button { + background-color: #eb5d01; + border: none; + color: #fff; + border-radius: 20px; + } + } + + main { + background-color: #09152f; + margin-top: 20px; + padding-bottom: 50px; + border: 1pox solid #fff; + + .btn span:hover { + cursor: pointer; + } + + .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; + + &::v-deep .cell { + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + } + + &::v-deep .el-table__empty-block { + background-color: #09152f; + } + + &::v-deep .el-table__empty-block { + color: #4b9bb7; + } + + .operation { + display: flex; + + .line { + padding: 0 5px; + } + + span:hover { + cursor: pointer; + } + } + } + + .el-table::v-deep .warning-row { + background: #06122c; + } + + .el-table::v-deep .success-row { + background: #071f39; + } + + &::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: 50px !important; + } + } + + .line { + padding: 0 5px; + } + + &::v-deep .el-dialog__header, + &::v-deep .el-dialog__body { + background-color: #06122c; + } + + &::v-deep .el-dialog__header { + display: flex; + align-items: center; + background-color: #fff; + padding: 20px; + line-height: 60px; + } + + &::v-deep .el-dialog__title { + color: #4b9bb7; + } + + &::v-deep .el-dialog__close { + width: 20px; + height: 20px; + // color: #fff; + } + + &::v-deep .el-dialog__body { + padding: 0; + } +} +</style> \ No newline at end of file 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 diff --git a/src/views/video/index.vue b/src/views/video/index.vue index 9242469..995f959 100644 --- a/src/views/video/index.vue +++ b/src/views/video/index.vue @@ -1,6 +1,6 @@ <template> <div> - <el-button @click="getRegion">鑾峰彇鍦板潃涓夌骇鑱斿姩</el-button> + <el-button @click="getRegion">1111111</el-button> </div> </template> -- Gitblit v1.8.0