| | |
| | | </template> |
| | | <script> |
| | | import MyMap from '@/components/map' |
| | | import {parseTime } from '@/utils/index' |
| | | export default { |
| | | components: { |
| | | MyMap |
| | |
| | | this.$axios({ |
| | | method: 'post', |
| | | url: `sccg/dispatch_handle/dispatch`, |
| | | data: dispatch |
| | | data: { |
| | | ...dispatch, |
| | | disposeDate:parseTime(dispatch.disposeDate) |
| | | } |
| | | }) |
| | | .then(res => { |
| | | this.$message({ |
| | |
| | | <template> |
| | | <div class="my-upload"> |
| | | <el-upload :file-list="fileList" class="upload-demo" action="/sccg/file/medias" :multiple="multiple" |
| | | :show-file-list="flag" :before-upload="beforeUpload" :limit="limit" :on-success="handleSuccess" |
| | | :on-error="handleError" :list-type="listType" :headers="getToken()"> |
| | | <el-upload |
| | | :file-list="fileList" |
| | | class="upload-demo" |
| | | action="/sccg/file/medias" |
| | | :multiple="multiple" |
| | | :show-file-list="flag" |
| | | :before-upload="beforeUpload" |
| | | :limit="limit" |
| | | :on-success="handleSuccess" |
| | | :on-error="handleError" |
| | | :list-type="listType" |
| | | :on-preview="handlePreview" |
| | | :on-remove="handleRemove" |
| | | :headers="getToken()"> |
| | | <div class="upload-btn" :style="{'height':btnHeight,'width':btnWidth}"> |
| | | <i class="el-icon-plus"></i> |
| | | <span>上传图片</span> |
| | |
| | | </div> |
| | | </template> |
| | | <script> |
| | | |
| | | export default { |
| | | data() { |
| | | return { |
| | |
| | | methods: { |
| | | // 上传之前回调 |
| | | beforeUpload(rawFile) { |
| | | console.log(rawFile); |
| | | if (rawFile.type !== 'image/png' && rawFile.type !== 'image/svg+xml' && rawFile.type !== 'image/jpg' && rawFile.type !== 'image/jpeg') { |
| | | this.$message.error('图片必须是 jpg/svg/jpeg/png 格式!') |
| | | return false |
| | |
| | | }, |
| | | // 上传成功回调 |
| | | handleSuccess(res, file, filelist) { |
| | | console.log(res); |
| | | if(res.data.url1){ |
| | | this.$emit('setPictureUrl',{url:res.data.url1}); |
| | | } |
| | | else if(res.data.url2){ |
| | | this.$emit('setPictureUrl',{url:res.data.url2}); |
| | | } |
| | | else if(res.data.url3){ |
| | | this.$emit('setPictureUrl',{url:res.data.url3}); |
| | | } |
| | | else{ |
| | | this.$emit('setPictureUrl',{url:res.data.url4}); |
| | | } |
| | | }, |
| | | // 上传失败回调 |
| | | handleError(err, file, fileList) { |
| | | console.log(err); |
| | | this.$message({ |
| | | type:'error', |
| | | message:err |
| | | }) |
| | | }, |
| | | // 获取token |
| | | getToken() { |
| | |
| | | if (token && tokenHead) { |
| | | return { Authorization: tokenHead + token } |
| | | } |
| | | }, |
| | | // 预览 |
| | | handlePreview(file){ |
| | | console.log(file) |
| | | }, |
| | | // 移除文件 |
| | | handleRemove(file, fileList){ |
| | | console.log(file,fileList) |
| | | } |
| | | }, |
| | | props: { |
| | | |
| | | // 返回上传成功图片地址 |
| | | setPictureUrl:{ |
| | | type:Function, |
| | | default:()=>{} |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | |
| | | } |
| | | |
| | | .scene-item { |
| | | padding: 20px 100px; |
| | | padding: 20px 0px; |
| | | |
| | | ::v-deep .el-input__inner { |
| | | background-color: #09152f; |
| | |
| | | <el-timeline> |
| | | <el-timeline-item :color="mycolor" v-for="item in list" :key="item.id"> |
| | | <div class="title"> |
| | | <div class="title-left">【{{item.name}}】{{item.name === '派遣' ? '派遣员':item.name === '处理' ? |
| | | '处理人':'评定人'}}:{{item.disposeRecords.length !==0 ? item.disposeRecords[0].handleId : ''}} |
| | | <div class="title-left">【{{item.name}}】处理人: {{item.disposeRecords && item.disposeRecords.length != 0 ? item.disposeRecords[0].handlerText:''}} |
| | | </div> |
| | | <div class="title-right">{{item.disposeRecords.length !==0 ? filterTime(item.disposeRecords[0].endTime):''}} |
| | | </div> |
| | |
| | | import MyArrive from '../components/arrive' |
| | | import MyEvidence from "../components/evidence" |
| | | import MyBook from "../components/book" |
| | | import {parseTime} from '@/utils/index' |
| | | export default { |
| | | components: { |
| | | MyArrive, MyEvidence, MyBook |
| | |
| | | url: `sccg/dispatch_handle/addition_dispose_result?caseId=${this.caseId}&type=2`, |
| | | data: { |
| | | arrivalAddress: arrive.arrive.arrivalAddress, |
| | | arrivalTime: arrive.arrive.arrivalTime, |
| | | arrivalTime: parseTime(arrive.arrive.arrivalTime), |
| | | situationExplain: arrive.arrive.situationExplain, |
| | | replyExplain: arrive.arrive.replyExplain, |
| | | situationPic: `${arrive.arrive.situationPic}`, |
| | | // |
| | | undertaker: evidence.evidence.undertaker, |
| | | assistant: evidence.evidence.assistant, |
| | | investigationTime: evidence.evidence.investigationTime, |
| | | investigationTime: parseTime(evidence.evidence.investigationTime), |
| | | address: evidence.evidence.address, |
| | | caseAction: evidence.evidence.caseAction, |
| | | description: evidence.evidence.description, |
| | |
| | | writType: book.book.writType, |
| | | writCode: book.book.writCode, |
| | | // illegalType: book.book.illegalType, |
| | | sendTime: book.book.sendTime, |
| | | limitTime: book.book.limitTime, |
| | | sendTime: parseTime(book.book.sendTime), |
| | | limitTime: parseTime(book.book.limitTime), |
| | | sendContent: book.book.sendContent, |
| | | rectifySituation:book.book.rectifySituation, |
| | | rectifyTime: book.book.rectifyTime, |
| | | rectifyTime:parseTime(book.book.rectifyTime), |
| | | remark: book.book.remark, |
| | | writPic: `${book.book.writPic}`, |
| | | originalPic: `${book.book.originalPic}`, |
| | |
| | | <script> |
| | | import MyArrive from '../components/arrive' |
| | | import MyEvidence from "../components/evidence" |
| | | import {parseTime} from '@/utils/index' |
| | | export default { |
| | | components: { |
| | | MyArrive, MyEvidence |
| | |
| | | url: `sccg/dispatch_handle/addition_dispose_result?caseId=`+this.caseId+'&type=1', |
| | | data:{ |
| | | arrivalAddress: arrive.arrive.arrivalAddress, |
| | | arrivalTime: arrive.arrive.arrivalTime, |
| | | arrivalTime: parseTime(arrive.arrive.arrivalTime), |
| | | situationExplain: arrive.arrive.situationExplain, |
| | | replyExplain: arrive.arrive.replyExplain, |
| | | situationPic: `${arrive.arrive.situationPic}`, |
| | | // |
| | | undertaker: evidence.evidence.undertaker, |
| | | assistant: evidence.evidence.assistant, |
| | | investigationTime: evidence.evidence.investigationTime, |
| | | investigationTime: parseTime(evidence.evidence.investigationTime), |
| | | address: evidence.evidence.address, |
| | | caseAction: evidence.evidence.caseAction, |
| | | description: evidence.evidence.description, |
| | |
| | | <el-table-column :prop="mystatus === 1 ? 'type' :'site'" :label="mystatus===1 ? '小类名称' : '违建地点'" |
| | | min-width="10"> |
| | | </el-table-column> |
| | | <el-table-column :prop="mystatus === 1 ? 'actionCause' :'communityId'" |
| | | <!-- <el-table-column :prop="mystatus === 1 ? 'actionCause' :'communityId'" |
| | | :label="mystatus===1 ? '案由' : '所属社区'" min-width="10"> |
| | | </el-table-column> |
| | | </el-table-column> --> |
| | | <el-table-column :prop="mystatus === 1 ? 'site' :''" :label="mystatus===1 ? '报警点位' : '违法建筑长、宽、高'" |
| | | :min-width="mystatus===1?'10' :'20' "> |
| | | <template slot-scope="scope"> |
| | |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column :prop="mystatus === 1 ? 'street' :'buildingArea'" |
| | | :label="mystatus===1 ? '所属区域' : '违法建筑面积'" min-width="10"> |
| | | :label="mystatus===1 ? '所属区域' : '违法建筑面积'" min-width="12"> |
| | | </el-table-column> |
| | | <el-table-column prop="alarmTime" label="报警时间" min-width="15" v-if="mystatus===1"> |
| | | <template slot-scope="scope"> |
| | |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column :prop="mystatus === 1 ? 'continueTime' :'materials'" |
| | | :label="mystatus===1 ? '持续时间' : '违法建筑材料'" min-width="10"> |
| | | :label="mystatus===1 ? '持续时间' : '违法建筑材料'" min-width="12"> |
| | | </el-table-column> |
| | | <el-table-column prop="operation" label="操作" min-width="20"> |
| | | <template slot-scope="scope"> |
| | |
| | | <template> |
| | | <div class="law-enforcement"> |
| | | <!-- table表格展示 --> |
| | | <MyTable |
| | | :tableData="list" |
| | | :tableOption="tableOption" |
| | | :totalNum="totalNum" |
| | | @getCurrentPage="getCurrentPage" |
| | | <MyTable :tableData="list" :tableOption="tableOption" :totalNum="totalNum" @getCurrentPage="getCurrentPage" |
| | | @openDialog="changeDialog"> |
| | | <template #operation="{info}"> |
| | | <div class="btn"> |
| | |
| | | <span>{{filterTime(scope.row.alarmTime)}}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column :prop="myproblem === 1 ? 'continueTime' :'materials'" :label="myproblem===1 ? '持续时间' : '违法建筑材料'" min-width="10"> |
| | | <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="20"> |
| | | <el-table-column prop="operation" label="操作" min-width="15"> |
| | | <template slot-scope="scope"> |
| | | <div class="btn"> |
| | | <!-- v-if="instatus===7 ? true : false" --> |
| | |
| | | <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> |
| | |
| | | // 当前页改变触发事件 |
| | | changeCurrentPage(page) { |
| | | this.currentPage = page; |
| | | this.search(); |
| | | this.setTableData(); |
| | | }, |
| | | // 上一页点击事件 |
| | | handlePrev(page) { |
| | | this.currentPage = page; |
| | | this.search(); |
| | | }, |
| | | // 下一页点击事件 |
| | | handleNext(page) { |
| | | this.currentPage = page; |
| | | this.search(); |
| | | }, |
| | | // // 上一页点击事件 |
| | | // handlePrev(page) { |
| | | // this.currentPage = page; |
| | | // this.search(); |
| | | // }, |
| | | // // 下一页点击事件 |
| | | // handleNext(page) { |
| | | // this.currentPage = page; |
| | | // this.search(); |
| | | // }, |
| | | // 关闭弹窗 |
| | | handleClose(done) { |
| | | done(); |
| | |
| | | <template> |
| | | <div class="updateUser"> |
| | | <!-- <header> |
| | | <div class="headerTitle">{{updateFlag ? '修改用户部门信息' :'查看用户信息'}}</div> |
| | | </header> --> |
| | | <main> |
| | | <div class="mainContent"> |
| | | <el-form |
| | | ref="user" |
| | | label-width="140px" |
| | | autoComplete="on" |
| | | :model="user" |
| | | :rules="createUserRules" |
| | | label-position="right" |
| | | > |
| | | <!-- 部门id |
| | | <el-form-item class="optionItem" label="部门id:" prop="id"> |
| | | <el-input v-model="user.id" placeholder="请输入部门名称" :disabled="!updateFlag"></el-input> |
| | | </el-form-item> --> |
| | | <el-form ref="user" label-width="140px" autoComplete="on" :model="user" :rules="createUserRules" |
| | | label-position="right"> |
| | | <!-- 部门名称 --> |
| | | <el-form-item class="optionItem" label="部门名称:" prop="departName"> |
| | | <el-input |
| | | v-model="user.departName" |
| | | placeholder="请输入部门名称" |
| | | :disabled="!updateFlag" |
| | | ></el-input> |
| | | <el-input v-model="user.departName" placeholder="请输入部门名称" :disabled="!updateFlag"></el-input> |
| | | </el-form-item> |
| | | <!-- 上级部门 --> |
| | | <el-form-item class="optionItems" label="上级部门:" prop="parentId"> |
| | | <el-select v-model="user.parentId" placeholder="请选择上级部门"> |
| | | <el-option |
| | | v-for="item in departList" |
| | | :key="item.departName" |
| | | :label="item.departName" |
| | | :value="item.id" |
| | | > |
| | | <el-select v-model="user.parentId" placeholder="请选择上级部门" :disabled="!updateFlag"> |
| | | <el-option v-for="item in departList" :key="item.departName" :label="item.departName" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <!-- 部门类型 --> |
| | | <el-form-item class="optionItem" label="部门类型:" prop="departType"> |
| | | <el-select |
| | | v-model="user.departType" |
| | | placeholder="请选择部门类型" |
| | | :disabled="!updateFlag" |
| | | > |
| | | <el-option |
| | | v-for="item in typeList" |
| | | :key="item.id" |
| | | :label="item.name" |
| | | :value="item.id" |
| | | > |
| | | <el-select v-model="user.departType" placeholder="请选择部门类型" :disabled="!updateFlag"> |
| | | <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 add" label="添加人员:"> |
| | | <el-form-item class="optionItem add" label="部门人员:"> |
| | | <ul class="addPerson"> |
| | | <li |
| | | v-for="(item, index) in checkedList" |
| | | :key="index" |
| | | @click="setLeader(index)" |
| | | > |
| | | <li v-for="(item, index) in checkedList" :key="index" @click="setLeader(index)"> |
| | | <div class="li-item"> |
| | | <div class="li-icon"> |
| | | <i |
| | | :class="[ |
| | | <i :class="[ |
| | | 'el-icon-user-solid', |
| | | item.leader ? 'leader' : '', |
| | | ]" |
| | | ></i> |
| | | ]"></i> |
| | | </div> |
| | | <label |
| | | style="font-size: 12px" |
| | | :class="[item.leader ? 'leader' : '']" |
| | | >{{ item.username }}</label |
| | | > |
| | | <label style="font-size: 12px" :class="[item.leader ? 'leader' : '']">{{ item.username }}</label> |
| | | </div> |
| | | </li> |
| | | <li class="li-btn" v-if="updateFlag"> |
| | |
| | | </div> |
| | | <div class="scrollWrap"> |
| | | <el-checkbox-group v-model="checkedUser"> |
| | | <el-checkbox |
| | | v-for="user in userList" |
| | | :label="user.id" |
| | | :key="user.id" |
| | | > |
| | | <el-checkbox v-for="user in userList" :label="user.id" :key="user.id"> |
| | | {{ user.username }} |
| | | </el-checkbox> |
| | | </el-checkbox-group> |
| | |
| | | </div> |
| | | </el-form-item> |
| | | <el-form-item style="margin-top: -40px"> |
| | | <label style="color: #ff0000ab" |
| | | >红色代表部门领导,点击头像可设置部门领导</label |
| | | > |
| | | <label style="color: #ff0000ab">红色代表部门领导,点击头像可设置部门领导</label> |
| | | </el-form-item> |
| | | <!-- 部门描述 --> |
| | | <el-form-item class="optionItem" label="部门描述:" prop="departDes"> |
| | | <el-input |
| | | type="textarea" |
| | | :rows="4" |
| | | v-model="user.departDes" |
| | | placeholder="请输入部门描述" |
| | | :disabled="!updateFlag" |
| | | ></el-input> |
| | | <el-input type="textarea" :rows="4" v-model="user.departDes" placeholder="请输入部门描述" :disabled="!updateFlag"> |
| | | </el-input> |
| | | </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 type="primary" class="btn submit" @click.native.prevent="handleUser">提交 |
| | | </el-button> |
| | | </div> |
| | | </el-form-item> |
| | |
| | | callback(); |
| | | } else { |
| | | callback(); |
| | | // const rep = /^\w+$/; |
| | | // if (!rep.test(value)) { |
| | | // callback(new Error("密码只能是以数字、26个英文字母或者下划线组成的字符串")); |
| | | // } |
| | | } |
| | | }; |
| | | const validatePhone = (rule, value, callback) => { |
| | |
| | | callback(); |
| | | } else { |
| | | callback(); |
| | | // const rep = /(^1[3|4|5|7|8|9]\d{9}$)|(^09\d{8}$)/ |
| | | // if (!rep.test(value)) { |
| | | // callback("请输入正确的手机号码"); |
| | | // } |
| | | } |
| | | }; |
| | | return { |
| | |
| | | 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; |
| | | console.log(this.user.parentId); |
| | | this.checkedList = this.user.userInfoDTOS; |
| | | this.checkedList.forEach((e) => { |
| | | this.checkedUser.push(e.userId); |
| | |
| | | const { user, checkedList } = this; |
| | | const arr = []; |
| | | checkedList.forEach((item) => { |
| | | arr.push({ leader: item.leader, userId: item.id }); |
| | | arr.push({ leader: item.leader, userId: item.userId }); |
| | | }); |
| | | console.log(arr); |
| | | this.$axios |
| | | .post("sccg/depart/update", { |
| | | id: user.id, |
| | |
| | | type: res.code === 200 ? "success" : "warning", |
| | | }); |
| | | this.$emit("changeDialog", { flag: false }); |
| | | debugger; |
| | | this.getDepartList(); |
| | | }); |
| | | } else { |
| | |
| | | |
| | | // 设置领导 |
| | | setLeader(idx) { |
| | | if (this.updateFlag) { |
| | | this.checkedList.forEach((item, index) => { |
| | | item.leader = index === idx; |
| | | }); |
| | | } |
| | | }, |
| | | |
| | | // 获取所有用户信息 |
| | |
| | | }); |
| | | }, |
| | | addUser() { |
| | | console.log(this.checkedUser); |
| | | console.log(this.userList); |
| | | this.checkedList = []; |
| | | this.userList.forEach((item) => { |
| | | this.checkedUser.forEach((child) => { |
| | |
| | | padding: 0; |
| | | flex-wrap: wrap; |
| | | max-width: 280px; |
| | | |
| | | li { |
| | | color: #fff; |
| | | text-align: center; |
| | |
| | | margin-left: 10px; |
| | | } |
| | | } |
| | | |
| | | .li-icon { |
| | | background-color: #cccccc; |
| | | width: 36px; |
| | |
| | | border-radius: 50%; |
| | | margin: 0 auto; |
| | | } |
| | | |
| | | .li-btn { |
| | | background-color: #cccccc; |
| | | width: 36px; |
| | |
| | | .leader { |
| | | color: red; |
| | | } |
| | | |
| | | .el-input { |
| | | width: 280px !important; |
| | | } |
| | |
| | | </el-table-column> --> |
| | | <el-table-column prop="name" label="角色名称" min-width="10"> |
| | | </el-table-column> |
| | | <el-table-column prop="sort" label="角色类型" min-width="10"> |
| | | <el-table-column prop="typeText" label="角色类型" min-width="10"> |
| | | </el-table-column> |
| | | <!-- <el-table-column prop="adminCount" label="默认角色" min-width="10"> |
| | | </el-table-column> --> |
| | |
| | | <template> |
| | | <div class="point"> |
| | | <MyUpload></MyUpload> |
| | | <MyUpload @setPictureUrl="getPictureUrl"></MyUpload> |
| | | </div> |
| | | </template> |
| | | <script> |
| | |
| | | return { |
| | | |
| | | } |
| | | }, |
| | | methods:{ |
| | | getPictureUrl({url}){ |
| | | console.log(url) |
| | | } |
| | | } |
| | | } |
| | | </script> |