| | |
| | | <template> |
| | | <div class="my-upload"> |
| | | <div v-if="pictureList.length > 0" class="image-box"> |
| | | <div v-for="image in pictureList" class="image-box-item"> |
| | | <i v-if="isShowUpload" @click="handleDeletePicture(image)" class="el-icon-delete image-delete-icon"></i> |
| | | <el-image :key="image" class="image-content" :src="image" ></el-image> |
| | | </div> |
| | | </div> |
| | | <el-upload |
| | | <div class="my-upload"> |
| | | <div v-if="pictureList.length > 0" class="image-box"> |
| | | <div v-for="image in pictureList" class="image-box-item"> |
| | | <i |
| | | v-if="isShowUpload" |
| | | :file-list="fileList" |
| | | 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()"> |
| | | <div class="upload-btn"> |
| | | <i class="el-icon-plus"></i> |
| | | <span>上传图片</span> |
| | | </div> |
| | | </el-upload> |
| | | @click="handleDeletePicture(image)" |
| | | class="el-icon-delete image-delete-icon" |
| | | ></i> |
| | | <el-image :key="image" class="image-content" :src="image"></el-image> |
| | | </div> |
| | | </div> |
| | | <el-upload |
| | | v-if="isShowUpload" |
| | | :file-list="fileList" |
| | | 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()" |
| | | > |
| | | <div class="upload-btn"> |
| | | <i class="el-icon-plus"></i> |
| | | <span>上传图片</span> |
| | | </div> |
| | | </el-upload> |
| | | </div> |
| | | </template> |
| | | <script> |
| | | export default { |
| | | data() { |
| | | return { |
| | | // 文件列表 |
| | | fileList: [], |
| | | // 是否显示文件列表 |
| | | flag: false, |
| | | // 多选 |
| | | multiple: false, |
| | | // 限制 |
| | | limit: 4, |
| | | // 文件列表类型 |
| | | listType: 'picture-card' |
| | | }; |
| | | data() { |
| | | return { |
| | | // 文件列表 |
| | | fileList: [], |
| | | // 是否显示文件列表 |
| | | flag: false, |
| | | // 多选 |
| | | multiple: false, |
| | | // 限制 |
| | | limit: 4, |
| | | // 文件列表类型 |
| | | listType: "picture-card", |
| | | }; |
| | | }, |
| | | methods: { |
| | | // 上传之前回调 |
| | | beforeUpload(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; |
| | | } else if (rawFile.size / 1024 / 1024 > 5) { |
| | | this.$message.error("上传图片不能超过 5MB!"); |
| | | return false; |
| | | } |
| | | return true; |
| | | }, |
| | | methods: { |
| | | // 上传之前回调 |
| | | beforeUpload(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 |
| | | } else if (rawFile.size / 1024 / 1024 > 5) { |
| | | this.$message.error('上传图片不能超过 5MB!') |
| | | return false |
| | | } |
| | | return true |
| | | }, |
| | | // 上传成功回调 |
| | | handleSuccess(res, file, filelist) { |
| | | 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) { |
| | | this.$message({ |
| | | type:'error', |
| | | message:err |
| | | }) |
| | | }, |
| | | // 获取token |
| | | getToken() { |
| | | const token = sessionStorage.getItem('token'); |
| | | const tokenHead = sessionStorage.getItem('tokenHead'); |
| | | if (token && tokenHead) { |
| | | return { Authorization: tokenHead + token } |
| | | } |
| | | }, |
| | | |
| | | handleDeletePicture(imageUrl) { |
| | | this.$emit('delPictureUrl', { url: imageUrl }); |
| | | } |
| | | }, |
| | | props: { |
| | | pictureList: { |
| | | type: Array, |
| | | default: () => [] |
| | | }, |
| | | isShowUpload: { |
| | | type: Boolean, |
| | | default: () => true |
| | | // 上传成功回调 |
| | | handleSuccess(res, file, filelist) { |
| | | 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) { |
| | | this.$message({ |
| | | type: "error", |
| | | message: err, |
| | | }); |
| | | }, |
| | | // 获取token |
| | | getToken() { |
| | | const token = sessionStorage.getItem("token"); |
| | | const tokenHead = sessionStorage.getItem("tokenHead"); |
| | | if (token && tokenHead) { |
| | | return { Authorization: tokenHead + token }; |
| | | } |
| | | }, |
| | | |
| | | handleDeletePicture(imageUrl) { |
| | | this.$emit("delPictureUrl", { url: imageUrl }); |
| | | }, |
| | | }, |
| | | props: { |
| | | pictureList: { |
| | | type: Array, |
| | | default: () => [], |
| | | }, |
| | | isShowUpload: { |
| | | type: Boolean, |
| | | default: () => true, |
| | | }, |
| | | }, |
| | | }; |
| | | </script> |
| | | <style lang="scss" scoped> |
| | | .my-upload { |
| | |
| | | width: 100px; |
| | | height: 100px; |
| | | |
| | | &:hover i{ |
| | | &:hover i { |
| | | color: #409eff; |
| | | } |
| | | |
| | |
| | | } |
| | | .image-box { |
| | | display: flex; |
| | | flex-wrap: wrap; |
| | | height: 100px; |
| | | margin: 0 10px; |
| | | |
| | |
| | | left: calc(100% - 50px); |
| | | opacity: 0; |
| | | } |
| | | |
| | | .image-box-item { |
| | | padding: 0px 10px; |
| | | } |
| | | .image-box-item:hover { |
| | | color: #ffffff; |
| | | opacity: .5; |
| | | opacity: 0.5; |
| | | .image-delete-icon { |
| | | z-index: 2; |
| | | opacity: 1; |
| | |
| | | } |
| | | } |
| | | |
| | | :deep(.el-upload--picture-card) { |
| | | width: 100px; |
| | | height: 100px; |
| | | } |
| | | :deep(.el-upload-list__item){ |
| | | width: 100px; |
| | | height: 100px; |
| | | } |
| | | :deep(.el-upload--picture-card) { |
| | | width: 100px; |
| | | height: 100px; |
| | | } |
| | | :deep(.el-upload-list__item) { |
| | | width: 100px; |
| | | height: 100px; |
| | | } |
| | | } |
| | | </style> |
| | |
| | | <template> |
| | | <div class="userList"> |
| | | <header> |
| | | <div class="headerContent"> |
| | | <div class="search"> |
| | | <span>类型查询:</span> |
| | | <div class="option"> |
| | | <el-input v-model="type" placeholder="请输入类型"></el-input> |
| | | </div> |
| | | <span>上传时间:</span> |
| | | <div class="option"> |
| | | <el-date-picker |
| | | v-model="datePicked" |
| | | type="datetimerange" |
| | | value-format="yyyy-MM-dd HH:mm:ss" |
| | | range-separator="至" |
| | | start-placeholder="开始日期" |
| | | end-placeholder="结束日期"> |
| | | </el-date-picker> |
| | | </div> |
| | | <div class="findBtn"> |
| | | <el-button type="primary" @click="getImageResourceList">查询</el-button> |
| | | </div> |
| | | <div class="findBtn"> |
| | | <el-button type="primary" @click="handleUpdateImageResource(null, 'create')">添加图片</el-button> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </header> |
| | | <main> |
| | | <div class="mainContent"> |
| | | <div class="type-nav"> |
| | | <div @click="changeTypeChecked(item.value)" v-for="item 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="category" label="问题类别" min-width="8"> |
| | | <template v-if="scope.row.category" slot-scope="scope"> |
| | | <span>{{ getCategory(scope.row.category).label }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="eventSource" label="事件来源" min-width="8"> |
| | | <template v-if="scope.row.eventSource" slot-scope="scope"> |
| | | <span>{{ getEventSource(scope.row.eventSource).label }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="regionName" label="社区名称" min-width="8"> |
| | | </el-table-column> |
| | | <el-table-column prop="id" label="图片Id" min-width="8"> |
| | | </el-table-column> |
| | | <el-table-column prop="createTime" 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="handleUpdateImageResource(scope.row, 'view')">查看</span> |
| | | <span class="line">|</span> |
| | | <span @click="handleUpdateImageResource(scope.row, 'update')">修改</span> |
| | | <span class="line">|</span> |
| | | <span @click="handleDelete(scope.row)">删除</span> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <el-dialog |
| | | :visible.sync="isShowUploadDialog" |
| | | :destroy-on-close="true" |
| | | :key="dialogType" |
| | | width="40%" |
| | | :title="getDialogTitle" |
| | | <div class="userList"> |
| | | <header> |
| | | <div class="headerContent"> |
| | | <div class="search"> |
| | | <span>类型查询:</span> |
| | | <div class="option"> |
| | | <el-input v-model="type" placeholder="请输入类型"></el-input> |
| | | </div> |
| | | <span>上传时间:</span> |
| | | <div class="option"> |
| | | <el-date-picker |
| | | v-model="datePicked" |
| | | type="datetimerange" |
| | | value-format="yyyy-MM-dd HH:mm:ss" |
| | | range-separator="至" |
| | | start-placeholder="开始日期" |
| | | end-placeholder="结束日期" |
| | | > |
| | | </el-date-picker> |
| | | </div> |
| | | <div class="findBtn"> |
| | | <el-button type="primary" @click="getImageResourceList" |
| | | >查询</el-button |
| | | > |
| | | </div> |
| | | <!-- <div class="findBtn"> |
| | | <el-button |
| | | type="primary" |
| | | @click="handleUpdateImageResource(null, 'create')" |
| | | >添加图片</el-button |
| | | > |
| | | </div> --> |
| | | </div> |
| | | </div> |
| | | </header> |
| | | <main> |
| | | <div class="mainContent"> |
| | | <div class="type-nav"> |
| | | <div |
| | | @click="changeTypeChecked(item.value)" |
| | | v-for="item 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="category" label="问题类别" min-width="8"> |
| | | <template v-if="scope.row.category" slot-scope="scope"> |
| | | <span>{{ getCategory(scope.row.category).label }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="eventSource" label="事件来源" min-width="8"> |
| | | <template v-if="scope.row.eventSource" slot-scope="scope"> |
| | | <span>{{ getEventSource(scope.row.eventSource).label }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="regionName" label="社区名称" min-width="8"> |
| | | </el-table-column> |
| | | <el-table-column prop="id" label="图片Id" min-width="8"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="createTime" |
| | | 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="handleUpdateImageResource(scope.row, 'view')" |
| | | >查看</span |
| | | > |
| | | <updateUser v-if="isShowUploadDialog" @closeDialog="closeDialog" :dialogType="dialogType" :originalData="originalData" /> |
| | | </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"> |
| | | </el-pagination> |
| | | </div> |
| | | </div> |
| | | <span class="line">|</span> |
| | | <span @click="handleUpdateImageResource(scope.row, 'update')" |
| | | >修改</span |
| | | > |
| | | <span class="line">|</span> |
| | | <span @click="handleDelete(scope.row)">删除</span> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <el-dialog |
| | | :visible.sync="isShowUploadDialog" |
| | | :destroy-on-close="true" |
| | | :key="dialogType" |
| | | width="40%" |
| | | :title="getDialogTitle" |
| | | > |
| | | <updateUser |
| | | v-if="isShowUploadDialog" |
| | | @closeDialog="closeDialog" |
| | | :dialogType="dialogType" |
| | | :originalData="originalData" |
| | | /> |
| | | </el-dialog> |
| | | <div class="tools"> |
| | | <div class="funs"> |
| | | <div class="funsItem funs-sp"> |
| | | <el-checkbox v-model="all" @change="selectAll()" |
| | | >全选</el-checkbox |
| | | > |
| | | </div> |
| | | </main> |
| | | </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" |
| | | > |
| | | </el-pagination> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </main> |
| | | </div> |
| | | </template> |
| | | <script> |
| | | import updateUser from "./updateUser"; |
| | |
| | | import { CATEGOTY, EVENT_SOURCE } from "@/utils/helper"; |
| | | |
| | | export default { |
| | | components: { updateUser }, |
| | | components: { updateUser }, |
| | | |
| | | computed: { |
| | | getDialogTitle() { |
| | | if (this.dialogType === 'create') { |
| | | return '创建'; |
| | | } |
| | | computed: { |
| | | getDialogTitle() { |
| | | if (this.dialogType === "create") { |
| | | return "创建"; |
| | | } |
| | | |
| | | if (this.dialogType === 'update') { |
| | | return '更新'; |
| | | } |
| | | if (this.dialogType === "update") { |
| | | return "更新"; |
| | | } |
| | | |
| | | if (this.dialogType === 'view') { |
| | | return '查看'; |
| | | } |
| | | if (this.dialogType === "view") { |
| | | return "查看"; |
| | | } |
| | | }, |
| | | }, |
| | | |
| | | data() { |
| | | return { |
| | | isShowUploadDialog:false, |
| | | dialogType: 'create', |
| | | originalData: null, |
| | | type: '', |
| | | size: '', |
| | | importTime: null, |
| | | tableData: [], |
| | | dialogUpload: 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, |
| | | }, |
| | | ], |
| | | mystatus: 1, |
| | | caseId: '', |
| | | caseCode: null, |
| | | dialogAdd: false, |
| | | datePicked: null, |
| | | } |
| | | data() { |
| | | return { |
| | | isShowUploadDialog: false, |
| | | dialogType: "create", |
| | | originalData: null, |
| | | type: "", |
| | | size: "", |
| | | importTime: null, |
| | | tableData: [], |
| | | dialogUpload: 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, |
| | | }, |
| | | ], |
| | | mystatus: 1, |
| | | caseId: "", |
| | | caseCode: null, |
| | | dialogAdd: false, |
| | | datePicked: null, |
| | | }; |
| | | }, |
| | | created() { |
| | | this.size = this.typeList.find((item) => item.checked).value; |
| | | this.getImageResourceList(); |
| | | }, |
| | | methods: { |
| | | //修改 |
| | | handleUpdateImageResource(data, type) { |
| | | this.dialogType = type; |
| | | this.originalData = data; |
| | | this.isShowUploadDialog = true; |
| | | }, |
| | | created() { |
| | | this.size = this.typeList.find(item => item.checked).value; |
| | | |
| | | // 批量删除 |
| | | mulDelete(idArr) { |
| | | imageManagement |
| | | .deleteImageResources({ ids: idArr }) |
| | | .then(() => { |
| | | this.$message.success("操作成功"); |
| | | this.getImageResourceList(); |
| | | }) |
| | | .catch((err) => this.$message.error(`${err}`)); |
| | | }, |
| | | // 执行下拉框操作 |
| | | selectChange(list) { |
| | | 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); |
| | | }); |
| | | this.all = list.length === this.tableData.length; |
| | | }, |
| | | // 全选 |
| | | selectAll() { |
| | | this.$refs.multipleTable.toggleAllSelection(); |
| | | }, |
| | | // 反选 |
| | | disSame(list) { |
| | | list.forEach((row) => { |
| | | this.$refs.multipleTable.toggleRowSelection(row); |
| | | }); |
| | | }, |
| | | // 删除单条数据 |
| | | handleDelete({ id }) { |
| | | this.$confirm("确认删除?").then(() => { |
| | | imageManagement |
| | | .deleteImageResource({ id: id }) |
| | | .then(() => { |
| | | this.$message.success("操作成功"); |
| | | }) |
| | | .catch((err) => this.$message.error(`${err}`)); |
| | | }); |
| | | }, |
| | | |
| | | getImageResourceList() { |
| | | const dateParams = {}; |
| | | if (this.datePicked) { |
| | | dateParams.startTime = dateParams[0]; |
| | | dateParams.endTime = dateParams[1]; |
| | | } |
| | | imageManagement |
| | | .getImageResources({ |
| | | current: this.currentPage, |
| | | size: this.pageSize, |
| | | type: this.size, |
| | | ...dateParams, |
| | | }) |
| | | .then(({ records, total }) => { |
| | | this.tableData = records; |
| | | this.totalNum = total; |
| | | }) |
| | | .catch((err) => this.$message({ type: "error", message: err })); |
| | | }, |
| | | // 更改违规/违建 |
| | | changeTypeChecked(idx) { |
| | | this.typeList.forEach((item) => { |
| | | item.checked = item.value === idx; |
| | | }); |
| | | this.mystatus = idx + 1; |
| | | this.size = idx; |
| | | this.getImageResourceList(); |
| | | }, |
| | | methods: { |
| | | //修改 |
| | | handleUpdateImageResource(data, type){ |
| | | this.dialogType = type; |
| | | this.originalData = data; |
| | | this.isShowUploadDialog = true; |
| | | }, |
| | | |
| | | // 批量删除 |
| | | mulDelete(idArr) { |
| | | imageManagement.deleteImageResources({ ids: idArr }) |
| | | .then(() => { |
| | | this.$message.success('操作成功'); |
| | | this.getImageResourceList(); |
| | | }) |
| | | .catch(err => this.$message.error(`${err}`)) |
| | | }, |
| | | // 执行下拉框操作 |
| | | selectChange(list) { |
| | | 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); |
| | | }) |
| | | this.all = list.length === this.tableData.length; |
| | | }, |
| | | // 全选 |
| | | selectAll() { |
| | | this.$refs.multipleTable.toggleAllSelection(); |
| | | }, |
| | | // 反选 |
| | | disSame(list) { |
| | | list.forEach(row => { |
| | | this.$refs.multipleTable.toggleRowSelection(row) |
| | | }) |
| | | }, |
| | | // 删除单条数据 |
| | | handleDelete({ id }) { |
| | | this.$confirm('确认删除?') |
| | | .then(() => { |
| | | imageManagement.deleteImageResource({ id: id }) |
| | | .then(() => { |
| | | this.$message.success('操作成功'); |
| | | }) |
| | | .catch(err => this.$message.error(`${err}`)) |
| | | }) |
| | | }, |
| | | |
| | | getImageResourceList() { |
| | | const dateParams = {}; |
| | | if (this.datePicked) { |
| | | dateParams.startTime = dateParams[0]; |
| | | dateParams.endTime = dateParams[1] |
| | | } |
| | | imageManagement.getImageResources({ current: this.currentPage, size: this.pageSize, type: this.size, ...dateParams }) |
| | | .then(({ records, total }) => { |
| | | this.tableData = records; |
| | | this.totalNum = total; |
| | | }) |
| | | .catch(err => this.$message({ type: 'error', message: err })) |
| | | }, |
| | | // 更改违规/违建 |
| | | changeTypeChecked(idx) { |
| | | this.typeList.forEach(item => { |
| | | item.checked = item.value === idx; |
| | | }); |
| | | this.mystatus = idx + 1; |
| | | this.size = idx; |
| | | this.getImageResourceList(); |
| | | }, |
| | | // 设置表格斑马纹 |
| | | tableRowClassName({ row, rowIndex }) { |
| | | if ((rowIndex + 1) % 2 === 0) { |
| | | return 'warning-row'; |
| | | } else { |
| | | return 'success-row'; |
| | | } |
| | | }, |
| | | // 当前页改变触发事件 |
| | | changeCurrentPage(page) { |
| | | this.currentPage = page; |
| | | this.getImageResourceList(); |
| | | }, |
| | | opernDialog(data) { |
| | | this.dialogUpload = true; |
| | | this.caseId = data.id; |
| | | this.caseCode = data.code |
| | | }, |
| | | |
| | | closeDialog() { |
| | | this.isShowUploadDialog = false; |
| | | this.getImageResourceList(); |
| | | }, |
| | | |
| | | getCategory(value) { |
| | | return CATEGOTY.find(item => item.value === value); |
| | | }, |
| | | |
| | | getEventSource(value) { |
| | | return EVENT_SOURCE.find(item => item.value === value); |
| | | // 设置表格斑马纹 |
| | | tableRowClassName({ row, rowIndex }) { |
| | | if ((rowIndex + 1) % 2 === 0) { |
| | | return "warning-row"; |
| | | } else { |
| | | return "success-row"; |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | // 当前页改变触发事件 |
| | | changeCurrentPage(page) { |
| | | this.currentPage = page; |
| | | this.getImageResourceList(); |
| | | }, |
| | | opernDialog(data) { |
| | | this.dialogUpload = true; |
| | | this.caseId = data.id; |
| | | this.caseCode = data.code; |
| | | }, |
| | | |
| | | closeDialog() { |
| | | this.isShowUploadDialog = false; |
| | | this.getImageResourceList(); |
| | | }, |
| | | |
| | | getCategory(value) { |
| | | return CATEGOTY.find((item) => item.value === value); |
| | | }, |
| | | |
| | | getEventSource(value) { |
| | | return EVENT_SOURCE.find((item) => item.value === value); |
| | | }, |
| | | }, |
| | | }; |
| | | </script> |
| | | <style lang="scss" scoped> |
| | | .userList { |
| | | text-align: left; |
| | | margin: 10px 20px; |
| | | color: #4b9bb7; |
| | | text-align: left; |
| | | margin: 10px 20px; |
| | | color: #4b9bb7; |
| | | |
| | | header { |
| | | background-color: #09152f; |
| | | header { |
| | | background-color: #09152f; |
| | | |
| | | .headerContent { |
| | | padding: 0 40px; |
| | | display: flex; |
| | | line-height: 100px; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | .headerContent { |
| | | padding: 0 40px; |
| | | display: flex; |
| | | line-height: 100px; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | |
| | | .search { |
| | | display: flex; |
| | | justify-content: flex-start; |
| | | .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; |
| | | } |
| | | 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; |
| | | |
| | | .btn span:hover { |
| | | cursor: pointer; |
| | | } |
| | | |
| | | &::v-deep .el-input__inner { |
| | | background-color: #09152f; |
| | | .type-nav { |
| | | display: flex; |
| | | line-height: 40px; |
| | | margin-left: 30px; |
| | | padding-top: 10px; |
| | | margin-bottom: 10px; |
| | | |
| | | .type-item { |
| | | min-width: 80px; |
| | | text-align: center; |
| | | padding-right: 10px; |
| | | |
| | | &: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; |
| | | } |
| | | } |
| | | |
| | | main { |
| | | background-color: #09152f; |
| | | margin-top: 20px; |
| | | padding-bottom: 50px; |
| | | .funs { |
| | | display: flex; |
| | | |
| | | .btn span:hover { |
| | | cursor: pointer; |
| | | } |
| | | .funsItem { |
| | | line-height: 28px; |
| | | display: flex; |
| | | align-items: center; |
| | | border-radius: 4px; |
| | | font-size: 12px; |
| | | margin-left: 10px; |
| | | |
| | | .type-nav { |
| | | display: flex; |
| | | line-height: 40px; |
| | | margin-left: 30px; |
| | | padding-top: 10px; |
| | | margin-bottom: 10px; |
| | | .el-checkbox { |
| | | width: 80px; |
| | | padding: 0 10px; |
| | | } |
| | | |
| | | .type-item { |
| | | min-width: 80px; |
| | | text-align: center; |
| | | padding-right: 10px; |
| | | .el-select { |
| | | width: 120px; |
| | | } |
| | | |
| | | &:hover { |
| | | cursor: pointer; |
| | | } |
| | | } |
| | | &:hover { |
| | | border: 1px solid #4b9bb7; |
| | | } |
| | | |
| | | .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 { |
| | | &:hover .el-checkbox { |
| | | 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; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | .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; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | .line { |
| | | padding: 0 5px; |
| | | .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; |
| | | } |
| | | |
| | | :deep(.el-range-input) { |
| | | background-color: #09152f; |
| | |
| | | <div class="updateUser"> |
| | | <main> |
| | | <div class="mainContent"> |
| | | <el-form label-position="right" label-width="150px" :model="imagedata" :rules="rules" :disabled="isDisabled" ref="user" style="width: 100%;"> |
| | | <el-form |
| | | label-position="right" |
| | | label-width="150px" |
| | | :model="imagedata" |
| | | :rules="rules" |
| | | :disabled="isDisabled" |
| | | ref="user" |
| | | style="width: 100%" |
| | | > |
| | | <el-form-item prop="belongToId" label="所属事件编号"> |
| | | <el-input v-model="imagedata.belongToId"></el-input> |
| | | <el-input v-model="imagedata.code"></el-input> |
| | | </el-form-item> |
| | | <el-form-item prop="eventSource" label="事件来源"> |
| | | <el-input v-model="imagedata.eventSource"></el-input> |
| | | <el-input |
| | | v-model="getEventSource(imagedata.eventSource).label" |
| | | ></el-input> |
| | | </el-form-item> |
| | | <el-form-item prop="category" label="问题类别"> |
| | | <el-input v-model="imagedata.category"></el-input> |
| | | <el-input |
| | | v-model="getCategory(imagedata.category).label" |
| | | ></el-input> |
| | | </el-form-item> |
| | | <el-form-item prop="type" label="类型"> |
| | | <el-select v-model="imagedata.type"> |
| | | <el-option v-for="item in getResourceType()" :key="item.value" :label="item.label" :value="item.value" /> |
| | | <el-option |
| | | v-for="item in getResourceType()" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item prop="regionName" label="社区名称"> |
| | |
| | | <el-input v-model="imagedata.id"></el-input> |
| | | </el-form-item> |
| | | <el-form-item prop="url" label="图片:" min-width="8"> |
| | | <my-upload :picture-list="imageList" :is-show-upload="dialogType !== 'view'" @setPictureUrl="setPictureUrl" @delPictureUrl="delPictureUrl"></my-upload> |
| | | <my-upload |
| | | :picture-list="imageList" |
| | | :is-show-upload="dialogType !== 'view'" |
| | | @setPictureUrl="setPictureUrl" |
| | | @delPictureUrl="delPictureUrl" |
| | | ></my-upload> |
| | | </el-form-item> |
| | | <div v-if="!isDisabled" class="optionBtn"> |
| | | <el-button type="primary" class="btn submit" @click.native.prevent="onSubmit">提交</el-button> |
| | | <el-button |
| | | type="primary" |
| | | class="btn submit" |
| | | @click.native.prevent="onSubmit" |
| | | >提交</el-button |
| | | > |
| | | </div> |
| | | </el-form> |
| | | </div> |
| | |
| | | </div> |
| | | </template> |
| | | <script> |
| | | import { deepClone, RESOURCE_TYPE } from "@/utils/helper"; |
| | | import { |
| | | deepClone, |
| | | RESOURCE_TYPE, |
| | | CATEGOTY, |
| | | EVENT_SOURCE, |
| | | } from "@/utils/helper"; |
| | | import imageManagement from "@/api/operate/imageManagement"; |
| | | import { FILE_ORIGINAL_URL } from "@/utils"; |
| | | import MyUpload from "@/components/myUpload"; |
| | |
| | | if (this.imagedata.url) { |
| | | callback(); |
| | | } else { |
| | | callback(new Error('请上传图片')); |
| | | callback(new Error("请上传图片")); |
| | | } |
| | | }; |
| | | return { |
| | | imagedata: { |
| | | belongToId: '', |
| | | eventSource: '', |
| | | regionName: '', |
| | | category: '', |
| | | id: '', |
| | | url: '', |
| | | type: '' |
| | | belongToId: "", |
| | | eventSource: 1, |
| | | regionName: "", |
| | | category: 1, |
| | | id: "", |
| | | url: "", |
| | | type: "", |
| | | }, |
| | | rules: { |
| | | belongToId: [{ required: true, trigger: 'blur', message: '请输入所属事件编号' }], |
| | | eventSource: [{ required: true, trigger: 'blur', message: '请输入事件来源' }], |
| | | regionName: [{ required: true, trigger: 'blur', message: '请输入社区名称' }], |
| | | id: [{ required: true, trigger: 'blur', message: '请输入图片Id' }], |
| | | category: [{ required: true, trigger: 'blue', message: '请输入问题类型' }], |
| | | belongToId: [ |
| | | { required: true, trigger: "blur", message: "请输入所属事件编号" }, |
| | | ], |
| | | eventSource: [ |
| | | { required: true, trigger: "blur", message: "请输入事件来源" }, |
| | | ], |
| | | regionName: [ |
| | | { required: true, trigger: "blur", message: "请输入社区名称" }, |
| | | ], |
| | | id: [{ required: true, trigger: "blur", message: "请输入图片Id" }], |
| | | category: [ |
| | | { required: true, trigger: "blue", message: "请输入问题类型" }, |
| | | ], |
| | | url: [{ required: true, validator: validateImageUrl }], |
| | | type: [{ required: true, trigger: ['blur', 'change'], message: '请选择类型' }] |
| | | type: [ |
| | | { |
| | | required: true, |
| | | trigger: ["blur", "change"], |
| | | message: "请选择类型", |
| | | }, |
| | | ], |
| | | }, |
| | | isDisabled: false, |
| | | imageList: [] |
| | | } |
| | | imageList: [], |
| | | }; |
| | | }, |
| | | |
| | | created() { |
| | | this.imagedata = deepClone(this.originalData); |
| | | if (this.dialogType !== 'create') { |
| | | this.imageList = this.imagedata.url.split(','); |
| | | if (this.originalData) { |
| | | this.imagedata = deepClone(this.originalData); |
| | | } |
| | | this.isDisabled = this.dialogType === 'view'; |
| | | if (this.dialogType !== "create") { |
| | | this.imageList = this.imagedata.url.split(","); |
| | | } |
| | | this.isDisabled = this.dialogType === "view"; |
| | | }, |
| | | methods: { |
| | | onSubmit() { |
| | | this.$refs.user.validate(valid => { |
| | | this.$refs.user.validate((valid) => { |
| | | if (valid) { |
| | | const params = Object.assign({}, this.imagedata); |
| | | delete params.regionName; |
| | |
| | | delete params.eventSource; |
| | | delete params.id; |
| | | params.belongToId = +params.belongToId; |
| | | if (this.dialogType === 'create') { |
| | | imageManagement.addImageResource(params) |
| | | .then(() => { |
| | | this.$message.success('操作成功'); |
| | | this.$emit('closeDialog'); |
| | | }) |
| | | .catch(err => this.$message.error(`${err}`)) |
| | | if (this.dialogType === "create") { |
| | | imageManagement |
| | | .addImageResource(params) |
| | | .then(() => { |
| | | this.$message.success("操作成功"); |
| | | this.$emit("closeDialog"); |
| | | }) |
| | | .catch((err) => this.$message.error(`${err}`)); |
| | | } else { |
| | | imageManagement.updateImageResource(params) |
| | | .then(() => { |
| | | this.$message.success('操作成功'); |
| | | this.$emit('closeDialog'); |
| | | }) |
| | | .catch(err => this.$message.error(`${err}`)) |
| | | imageManagement |
| | | .updateImageResource(params) |
| | | .then(() => { |
| | | this.$message.success("操作成功"); |
| | | this.$emit("closeDialog"); |
| | | }) |
| | | .catch((err) => this.$message.error(`${err}`)); |
| | | } |
| | | } else { |
| | | this.$message.warning('请检查必填项'); |
| | | this.$message.warning("请检查必填项"); |
| | | } |
| | | }) |
| | | }); |
| | | }, |
| | | setPictureUrl({ url }) { |
| | | this.imageList.push(`${FILE_ORIGINAL_URL}${url}`); |
| | | this.imagedata.url = this.imageList.join(','); |
| | | this.imagedata.url = this.imageList.join(","); |
| | | }, |
| | | delPictureUrl({ url }) { |
| | | this.imageList = this.imageList.filter(item => item !== url); |
| | | this.imagedata.url = this.imageList.join(','); |
| | | this.imageList = this.imageList.filter((item) => item !== url); |
| | | this.imagedata.url = this.imageList.join(","); |
| | | }, |
| | | getCategory(value) { |
| | | return CATEGOTY.find((item) => item.value === value); |
| | | }, |
| | | |
| | | getEventSource(value) { |
| | | return EVENT_SOURCE.find((item) => item.value === value); |
| | | }, |
| | | getResourceType(value) { |
| | | return value ? RESOURCE_TYPE.find(item => item.value === value) : RESOURCE_TYPE; |
| | | } |
| | | return value |
| | | ? RESOURCE_TYPE.find((item) => item.value === value) |
| | | : RESOURCE_TYPE; |
| | | }, |
| | | }, |
| | | props: { |
| | | originalData: { |
| | | type: Object, |
| | | default: () => null |
| | | default: () => null, |
| | | }, |
| | | dialogType: { |
| | | type: String, |
| | | default: () => 'create' |
| | | } |
| | | } |
| | | default: () => "create", |
| | | }, |
| | | }, |
| | | }; |
| | | </script> |
| | | <style lang="scss" scoped> |
| | |
| | | color: red; |
| | | } |
| | | |
| | | .el-input, .el-select { |
| | | .el-input, |
| | | .el-select { |
| | | width: 280px !important; |
| | | } |
| | | </style> |