3 files modified
3 files added
| | |
| | | }) |
| | | } |
| | | |
| | | export const updateView = (row) => { |
| | | return request({ |
| | | url: '/api/blade-taskReportForRepairs/taskReportForRepairs/updateView', |
| | | method: 'post', |
| | | data: row |
| | | }) |
| | | } |
| | | |
| | | export const getReportForRepairs = (id) => { |
| | | return request({ |
| | | url: '/api/blade-taskReportForRepairs/taskReportForRepairs/detail', |
| | |
| | | <template> |
| | | <div class="avue-top"> |
| | | <div class="top-bar__left"> |
| | | <div class="avue-breadcrumb" |
| | | :class="[{ 'avue-breadcrumb--active': isCollapse }]" |
| | | v-if="showCollapse"> |
| | | <i class="icon-navicon" |
| | | @click="setCollapse"></i> |
| | | <div class="avue-breadcrumb" :class="[{ 'avue-breadcrumb--active': isCollapse }]" v-if="showCollapse"> |
| | | <i class="icon-navicon" @click="setCollapse"></i> |
| | | </div> |
| | | </div> |
| | | <div class="top-bar__title"> |
| | | <div class="top-bar__item top-bar__item--show" |
| | | v-if="showMenu"> |
| | | <div class="top-bar__item top-bar__item--show" v-if="showMenu"> |
| | | <top-menu ref="topMenu"></top-menu> |
| | | </div> |
| | | <span class="top-bar__item" |
| | | v-if="showSearch"> |
| | | <span class="top-bar__item" v-if="showSearch"> |
| | | <top-search></top-search> |
| | | </span> |
| | | </div> |
| | |
| | | <top-lock></top-lock> |
| | | </div> |
| | | </el-tooltip> --> |
| | | <el-tooltip v-if="showTheme" |
| | | effect="dark" |
| | | :content="$t('navbar.theme')" |
| | | placement="bottom"> |
| | | <el-tooltip v-if="showTheme" effect="dark" :content="$t('navbar.theme')" placement="bottom"> |
| | | <div class="top-bar__item top-bar__item--show"> |
| | | <top-theme></top-theme> |
| | | </div> |
| | | </el-tooltip> |
| | | <!-- <el-tooltip effect="dark" |
| | | :content="$t('navbar.notice')" |
| | | placement="bottom"> |
| | | <el-tooltip effect="dark" :content="$t('navbar.notice')" placement="bottom" > |
| | | <div class="top-bar__item top-bar__item--show"> |
| | | <top-notice></top-notice> |
| | | </div> |
| | | </el-tooltip> --> |
| | | |
| | | </el-tooltip> |
| | | <!-- <el-tooltip effect="dark" |
| | | :content="$t('navbar.language')" |
| | | placement="bottom"> |
| | |
| | | <top-lang></top-lang> |
| | | </div> |
| | | </el-tooltip> --> |
| | | <el-tooltip v-if="showFullScren" |
| | | effect="dark" |
| | | :content="isFullScren?$t('navbar.screenfullF'):$t('navbar.screenfull')" |
| | | placement="bottom"> |
| | | <el-tooltip v-if="showFullScren" effect="dark" |
| | | :content="isFullScren ? $t('navbar.screenfullF') : $t('navbar.screenfull')" placement="bottom"> |
| | | <div class="top-bar__item"> |
| | | <i :class="isFullScren?'icon-tuichuquanping':'icon-quanping'" |
| | | @click="handleScreen"></i> |
| | | <i :class="isFullScren ? 'icon-tuichuquanping' : 'icon-quanping'" @click="handleScreen"></i> |
| | | </div> |
| | | </el-tooltip> |
| | | <img class="top-bar__img" |
| | | :src="userInfo.avatar"> |
| | | <img class="top-bar__img" :src="userInfo.avatar"> |
| | | <el-dropdown> |
| | | <span class="el-dropdown-link"> |
| | | {{userInfo.userName}} |
| | | {{ userInfo.userName }} |
| | | <i class="el-icon-arrow-down el-icon--right"></i> |
| | | </span> |
| | | <el-dropdown-menu slot="dropdown"> |
| | | <el-dropdown-item> |
| | | <router-link to="/">{{$t('navbar.dashboard')}}</router-link> |
| | | <router-link to="/">{{ $t('navbar.dashboard') }}</router-link> |
| | | </el-dropdown-item> |
| | | <el-dropdown-item> |
| | | <router-link to="/info/index">{{$t('navbar.userinfo')}}</router-link> |
| | | <router-link to="/info/index">{{ $t('navbar.userinfo') }}</router-link> |
| | | </el-dropdown-item> |
| | | <el-dropdown-item v-if="this.website.switchMode" @click.native="switchDept" |
| | | >{{$t('navbar.switchDept')}} |
| | | <el-dropdown-item v-if="this.website.switchMode" @click.native="switchDept">{{ $t('navbar.switchDept') }} |
| | | </el-dropdown-item> |
| | | <el-dropdown-item @click.native="logout" |
| | | divided>{{$t('navbar.logOut')}} |
| | | <el-dropdown-item @click.native="logout" divided>{{ $t('navbar.logOut') }} |
| | | </el-dropdown-item> |
| | | </el-dropdown-menu> |
| | | </el-dropdown> |
| | | <el-dialog title="用户信息选择" |
| | | append-to-body |
| | | :visible.sync="userBox" |
| | | width="350px"> |
| | | <avue-form ref="form" :option="userOption" v-model="userForm" @submit="submitSwitch"/> |
| | | <el-dialog title="用户信息选择" append-to-body :visible.sync="userBox" width="350px"> |
| | | <avue-form ref="form" :option="userOption" v-model="userForm" @submit="submitSwitch" /> |
| | | </el-dialog> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | <script> |
| | | import {resetRouter} from '@/router/router' |
| | | import {mapGetters, mapState} from "vuex"; |
| | | import {fullscreenToggel, listenfullscreen} from "@/util/util"; |
| | | import topLock from "./top-lock"; |
| | | import topMenu from "./top-menu"; |
| | | import topSearch from "./top-search"; |
| | | import topTheme from "./top-theme"; |
| | | import topLogs from "./top-logs"; |
| | | import topColor from "./top-color"; |
| | | import topNotice from './top-notice' |
| | | import topLang from "./top-lang"; |
| | | import { resetRouter } from '@/router/router' |
| | | import { mapGetters, mapState } from "vuex"; |
| | | import { fullscreenToggel, listenfullscreen } from "@/util/util"; |
| | | import topLock from "./top-lock"; |
| | | import topMenu from "./top-menu"; |
| | | import topSearch from "./top-search"; |
| | | import topTheme from "./top-theme"; |
| | | import topLogs from "./top-logs"; |
| | | import topColor from "./top-color"; |
| | | import topNotice from './top-notice' |
| | | import topLang from "./top-lang"; |
| | | |
| | | export default { |
| | | components: { |
| | | topLock, |
| | | topMenu, |
| | | topSearch, |
| | | topTheme, |
| | | topLogs, |
| | | topColor, |
| | | topNotice, |
| | | topLang |
| | | }, |
| | | name: "top", |
| | | data() { |
| | | return { |
| | | userBox: false, |
| | | userForm: { |
| | | deptId: '', |
| | | roleId: '' |
| | | }, |
| | | userOption: { |
| | | labelWidth: 70, |
| | | submitBtn: true, |
| | | emptyBtn: false, |
| | | submitText: '切换', |
| | | column: [ |
| | | { |
| | | label: '部门', |
| | | prop: 'deptId', |
| | | type: 'select', |
| | | props: { |
| | | label: 'deptName', |
| | | value: 'id' |
| | | }, |
| | | dicUrl: '/api/blade-system/dept/select', |
| | | span: 24, |
| | | display: false, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择部门", |
| | | trigger: "blur" |
| | | }], |
| | | export default { |
| | | components: { |
| | | topLock, |
| | | topMenu, |
| | | topSearch, |
| | | topTheme, |
| | | topLogs, |
| | | topColor, |
| | | topNotice, |
| | | topLang |
| | | }, |
| | | name: "top", |
| | | data() { |
| | | return { |
| | | userBox: false, |
| | | userForm: { |
| | | deptId: '', |
| | | roleId: '' |
| | | }, |
| | | userOption: { |
| | | labelWidth: 70, |
| | | submitBtn: true, |
| | | emptyBtn: false, |
| | | submitText: '切换', |
| | | column: [ |
| | | { |
| | | label: '部门', |
| | | prop: 'deptId', |
| | | type: 'select', |
| | | props: { |
| | | label: 'deptName', |
| | | value: 'id' |
| | | }, |
| | | { |
| | | label: '角色', |
| | | prop: 'roleId', |
| | | type: 'select', |
| | | props: { |
| | | label: 'roleName', |
| | | value: 'id' |
| | | }, |
| | | dicUrl: '/api/blade-system/role/select', |
| | | span: 24, |
| | | display: false, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择角色", |
| | | trigger: "blur" |
| | | }], |
| | | dicUrl: '/api/blade-system/dept/select', |
| | | span: 24, |
| | | display: false, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择部门", |
| | | trigger: "blur" |
| | | }], |
| | | }, |
| | | { |
| | | label: '角色', |
| | | prop: 'roleId', |
| | | type: 'select', |
| | | props: { |
| | | label: 'roleName', |
| | | value: 'id' |
| | | }, |
| | | ] |
| | | } |
| | | }; |
| | | }, |
| | | filters: {}, |
| | | created() { |
| | | }, |
| | | mounted() { |
| | | listenfullscreen(this.setScreen); |
| | | }, |
| | | computed: { |
| | | ...mapState({ |
| | | showDebug: state => state.common.showDebug, |
| | | showTheme: state => state.common.showTheme, |
| | | showLock: state => state.common.showLock, |
| | | showFullScren: state => state.common.showFullScren, |
| | | showCollapse: state => state.common.showCollapse, |
| | | showSearch: state => state.common.showSearch, |
| | | showMenu: state => state.common.showMenu, |
| | | showColor: state => state.common.showColor |
| | | }), |
| | | ...mapGetters([ |
| | | "userInfo", |
| | | "isFullScren", |
| | | "tagWel", |
| | | "tagList", |
| | | "isCollapse", |
| | | "tag", |
| | | "logsLen", |
| | | "logsFlag" |
| | | ]) |
| | | }, |
| | | methods: { |
| | | handleScreen() { |
| | | fullscreenToggel(); |
| | | }, |
| | | setCollapse() { |
| | | this.$store.commit("SET_COLLAPSE"); |
| | | }, |
| | | setScreen() { |
| | | this.$store.commit("SET_FULLSCREN"); |
| | | }, |
| | | switchDept() { |
| | | const userId = this.userInfo.user_id; |
| | | const deptColumn = this.findObject(this.userOption.column, "deptId"); |
| | | deptColumn.dicUrl = `/api/blade-system/dept/select?userId=${userId}`; |
| | | deptColumn.display = true; |
| | | const roleColumn = this.findObject(this.userOption.column, "roleId"); |
| | | roleColumn.dicUrl = `/api/blade-system/role/select?userId=${userId}`; |
| | | roleColumn.display = true; |
| | | this.userBox = true; |
| | | }, |
| | | submitSwitch (form, done) { |
| | | this.$store.dispatch("refreshToken", form).then(() => { |
| | | this.userBox = false; |
| | | this.$router.push({path: "/"}); |
| | | }) |
| | | done(); |
| | | }, |
| | | logout() { |
| | | this.$confirm(this.$t("logoutTip"), this.$t("tip"), { |
| | | confirmButtonText: this.$t("submitText"), |
| | | cancelButtonText: this.$t("cancelText"), |
| | | type: "warning" |
| | | }).then(() => { |
| | | this.$store.dispatch("LogOut").then(() => { |
| | | resetRouter(); |
| | | this.$router.push({path: "/login"}); |
| | | }); |
| | | }); |
| | | dicUrl: '/api/blade-system/role/select', |
| | | span: 24, |
| | | display: false, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择角色", |
| | | trigger: "blur" |
| | | }], |
| | | }, |
| | | ] |
| | | } |
| | | }; |
| | | }, |
| | | filters: {}, |
| | | created() { |
| | | }, |
| | | mounted() { |
| | | listenfullscreen(this.setScreen); |
| | | }, |
| | | computed: { |
| | | ...mapState({ |
| | | showDebug: state => state.common.showDebug, |
| | | showTheme: state => state.common.showTheme, |
| | | showLock: state => state.common.showLock, |
| | | showFullScren: state => state.common.showFullScren, |
| | | showCollapse: state => state.common.showCollapse, |
| | | showSearch: state => state.common.showSearch, |
| | | showMenu: state => state.common.showMenu, |
| | | showColor: state => state.common.showColor |
| | | }), |
| | | ...mapGetters([ |
| | | "userInfo", |
| | | "isFullScren", |
| | | "tagWel", |
| | | "tagList", |
| | | "isCollapse", |
| | | "tag", |
| | | "logsLen", |
| | | "logsFlag" |
| | | ]) |
| | | }, |
| | | methods: { |
| | | handleScreen() { |
| | | fullscreenToggel(); |
| | | }, |
| | | setCollapse() { |
| | | this.$store.commit("SET_COLLAPSE"); |
| | | }, |
| | | setScreen() { |
| | | this.$store.commit("SET_FULLSCREN"); |
| | | }, |
| | | switchDept() { |
| | | const userId = this.userInfo.user_id; |
| | | const deptColumn = this.findObject(this.userOption.column, "deptId"); |
| | | deptColumn.dicUrl = `/api/blade-system/dept/select?userId=${userId}`; |
| | | deptColumn.display = true; |
| | | const roleColumn = this.findObject(this.userOption.column, "roleId"); |
| | | roleColumn.dicUrl = `/api/blade-system/role/select?userId=${userId}`; |
| | | roleColumn.display = true; |
| | | this.userBox = true; |
| | | }, |
| | | submitSwitch(form, done) { |
| | | this.$store.dispatch("refreshToken", form).then(() => { |
| | | this.userBox = false; |
| | | this.$router.push({ path: "/" }); |
| | | }) |
| | | done(); |
| | | }, |
| | | logout() { |
| | | this.$confirm(this.$t("logoutTip"), this.$t("tip"), { |
| | | confirmButtonText: this.$t("submitText"), |
| | | cancelButtonText: this.$t("cancelText"), |
| | | type: "warning" |
| | | }).then(() => { |
| | | this.$store.dispatch("LogOut").then(() => { |
| | | resetRouter(); |
| | | this.$router.push({ path: "/login" }); |
| | | }); |
| | | }); |
| | | } |
| | | }; |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .noticeBtn{ |
| | | cursor:pointer; |
| | | } |
| | | </style> |
| | |
| | | <template> |
| | | <el-popover placement="bottom" |
| | | width="350" |
| | | trigger="click"> |
| | | <div class="noticeBtn" @click="noticeBtn"> |
| | | <el-badge v-if="!view"> |
| | | <img src="img/notice/xiaoxi-png.png" style="width: 28px;height: 28px; display: flex;" /> |
| | | </el-badge> |
| | | <el-badge v-if="view"> |
| | | <!-- <i class="el-icon-bell"></i> --> |
| | | <img src="img/notice/xiaoxi-gif.gif" style="width: 28px;height: 28px; display: flex;" /> |
| | | </el-badge> |
| | | </div> |
| | | <!-- <el-popover placement="bottom" |
| | | width="0" |
| | | trigger="click"> --> |
| | | |
| | | <el-tabs v-model="activeName"> |
| | | <!-- <el-tabs v-model="activeName"> |
| | | <el-tab-pane label="邮件(1)" |
| | | name="first"></el-tab-pane> |
| | | <el-tab-pane label="消息(2)" |
| | |
| | | <avue-notice :data="data" |
| | | :option="option" |
| | | @page-change="pageChange"></avue-notice> |
| | | </el-scrollbar> |
| | | <div slot="reference"> |
| | | </el-scrollbar> --> |
| | | <!-- <div slot="reference"> |
| | | <el-badge is-dot> |
| | | <i class="el-icon-bell"></i> |
| | | </el-badge> |
| | | </div> |
| | | </el-popover> |
| | | </div> --> |
| | | <!-- </el-popover> --> |
| | | </template> |
| | | |
| | | <script> |
| | | import { updateView, getList } from "@/api/task/reportForRepairs"; |
| | | let list = [{ |
| | | img: '/img/bg/vip1.png', |
| | | title: '史蒂夫·乔布斯 关注了你', |
| | |
| | | }]; |
| | | export default { |
| | | name: "top-notice", |
| | | data () { |
| | | data() { |
| | | return { |
| | | baseUrl: "https://sk.hubeishuiyi.cn", |
| | | total: 0, |
| | | view: false, |
| | | activeName: 'first', |
| | | option: { |
| | | props: { |
| | |
| | | data: list, |
| | | } |
| | | }, |
| | | created () { |
| | | |
| | | created() { |
| | | this.getNoticeNumber() |
| | | }, |
| | | mounted() { |
| | | this.createEventSource() |
| | | }, |
| | | methods: { |
| | | pageChange (page, done) { |
| | | getNoticeNumber() { |
| | | var values = { |
| | | viewType: 2 |
| | | } |
| | | // 获取通知数量 |
| | | getList(1, 10, values).then((res) => { |
| | | const data = res.data.data; |
| | | this.total = data.total; |
| | | if (this.total > 0) { |
| | | this.view = true |
| | | } else { |
| | | this.view = false |
| | | } |
| | | }) |
| | | |
| | | }, |
| | | noticeBtn() { |
| | | this.view = false |
| | | const data = {} |
| | | // 更新状态 |
| | | updateView(data).then((res) => { |
| | | }) |
| | | // 菜单跳转 |
| | | this.$router.push({ path: '/task/index' }); |
| | | }, |
| | | createEventSource() { |
| | | this.baseUrl = `${window.location.protocol}//${window.location.host}` |
| | | var that = this |
| | | if (window.EventSource) { |
| | | this.source = new EventSource( |
| | | this.baseUrl + |
| | | "/api/sse/sse/connect?type=web&userId=1" |
| | | ) |
| | | this.source.addEventListener( |
| | | "open", |
| | | function () { |
| | | console.log("建立连接。。。") |
| | | }, |
| | | false |
| | | ) |
| | | this.source.addEventListener("message", function (e) { |
| | | console.log("收到消息", e.data) |
| | | // const data = JSON.parse(e.data) |
| | | // that.number = data.count |
| | | // 获取消息列表 |
| | | that.getNoticeNumber() |
| | | }) |
| | | this.source.addEventListener( |
| | | "error", |
| | | function (e) { |
| | | if (e.readyState === EventSource.CLOSED) { |
| | | console.log("连接关闭") |
| | | } else { |
| | | console.log(e) |
| | | } |
| | | }, |
| | | false |
| | | ) |
| | | } else { |
| | | console.log("你的浏览器不支持SSE") |
| | | } |
| | | }, |
| | | pageChange(page, done) { |
| | | setTimeout(() => { |
| | | this.$message.success('页码' + page) |
| | | this.data = this.data.concat(list); |
| | |
| | | }; |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | </style> |
| | | <style lang="scss" scoped></style> |
| New file |
| | |
| | | <!-- 工作日志 --> |
| | | <template> |
| | | <basic-container> |
| | | <avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page" ref="crud" @row-del="rowDel" |
| | | v-model="form" :permission="permissionList" @row-update="rowUpdate" @row-save="rowSave" :before-open="beforeOpen" |
| | | @search-change="searchChange" @search-reset="searchReset" @selection-change="selectionChange" |
| | | @current-change="currentChange" @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad"> |
| | | <template slot="menuLeft"> |
| | | <el-button size="small" icon="el-icon-delete" plain v-if="permission.article_delete" @click="handleDelete">删 除 |
| | | </el-button> |
| | | </template> |
| | | <!-- <template slot-scope="scope" slot="menu"> |
| | | <el-button type="text" icon="el-icon-circle-plus-outline" size="small" |
| | | @click="taskApply(scope.row)">任务分发 |
| | | </el-button> |
| | | </template> --> |
| | | </avue-crud> |
| | | <!-- <el-dialog title="任务分发" append-to-body :visible.sync="taskVisible" width="70%" height="60%"> |
| | | <avue-form :option="taskOption" |
| | | v-model="taskForm"> </avue-form> |
| | | </el-dialog> --> |
| | | </basic-container> |
| | | </template> |
| | | |
| | | <script> |
| | | import { getList, remove, update, add, getReportForRepairs } from "@/api/task/reportForRepairs"; |
| | | import { mapGetters } from "vuex"; |
| | | import website from '@/config/website'; |
| | | |
| | | export default { |
| | | data() { |
| | | return { |
| | | taskForm:{}, |
| | | taskOption:{ |
| | | column: [ |
| | | { |
| | | label: '姓名', |
| | | prop: 'name', |
| | | value: 'small' |
| | | } |
| | | ] |
| | | }, |
| | | taskVisible:false, |
| | | form: {}, |
| | | query: {}, |
| | | loading: true, |
| | | page: { |
| | | pageSize: 10, |
| | | currentPage: 1, |
| | | total: 0, |
| | | }, |
| | | datetime: "", |
| | | selectionList: [], |
| | | option: { |
| | | height: "auto", |
| | | calcHeight: 54, |
| | | dialogWidth: 950, |
| | | tip: false, |
| | | searchShow: true, |
| | | searchMenuSpan: 3, |
| | | menuWidth: 280, |
| | | border: true, |
| | | //stripe:true, |
| | | index: true, |
| | | editBtnText:"任务分发", |
| | | editTitle:"任务分发", |
| | | updateBtnText:"确定", |
| | | viewBtn: true, |
| | | selection: true, |
| | | // excelBtn: true, |
| | | dialogClickModal: false, |
| | | column: [ |
| | | { |
| | | label: "类型", |
| | | prop: "type", |
| | | span: 12, |
| | | searchSpan: 4, |
| | | dataType: "number", |
| | | type: "select", |
| | | width: 100, |
| | | editDisabled:true, |
| | | dicUrl: "/api/blade-system/dict-biz/dictionary?code=reportForRepairsType", |
| | | props: { |
| | | label: "dictValue", |
| | | value: "dictKey", |
| | | }, |
| | | search: true, |
| | | span:15, |
| | | row:true, |
| | | labelWidth:110, |
| | | }, |
| | | { |
| | | label: "姓名", |
| | | prop: "realName", |
| | | span: 12, |
| | | searchSpan: 4, |
| | | width: 100, |
| | | search: true, |
| | | editDisabled:true, |
| | | labelWidth:110, |
| | | }, |
| | | { |
| | | label: "手机号", |
| | | prop: "phone", |
| | | span: 12, |
| | | width: 100, |
| | | searchSpan: 4, |
| | | search: true, |
| | | editDisabled:true, |
| | | labelWidth:110, |
| | | }, |
| | | { |
| | | label: "图片", |
| | | prop: "imageUrls", |
| | | width: 80, |
| | | type: "upload", |
| | | listType: "picture-card", |
| | | dataType: "string", |
| | | multiple: true, |
| | | action: "/api/blade-resource/oss/endpoint/put-file", |
| | | propsHttp: { |
| | | res: "data", |
| | | name: 'name', |
| | | url: "link", |
| | | }, |
| | | span: 24, |
| | | editDisabled:true, |
| | | labelWidth:110, |
| | | }, |
| | | { |
| | | label: "上报事发地址", |
| | | prop: "address", |
| | | overHidden: true, |
| | | editDisabled:true, |
| | | labelWidth:110, |
| | | span:24 |
| | | }, |
| | | // { |
| | | // label: "地点", |
| | | // prop: "addressName", |
| | | // overHidden:true |
| | | // }, |
| | | { |
| | | label: "上报时间", |
| | | prop: "createTime", |
| | | width: 160, |
| | | addDisplay: false, |
| | | editDisplay: false, |
| | | type: "date", |
| | | format: "yyyy-MM-dd HH:mm:ss", |
| | | valueFormat: "yyyy-MM-dd HH:mm:ss", |
| | | editDisabled:true, |
| | | labelWidth:110, |
| | | }, |
| | | { |
| | | label: "描述", |
| | | prop: "remark", |
| | | type: "textarea", |
| | | span: 24, |
| | | editDisabled:true, |
| | | labelWidth:110, |
| | | }, |
| | | { |
| | | label: "接收员", |
| | | prop: "userIds", |
| | | type: "tree", |
| | | hide:true, |
| | | labelWidth:110, |
| | | dicUrl:"/api/blade-gridman/gridman/getGridmanList", |
| | | props: { |
| | | label: "gridmanName", |
| | | value: "id", |
| | | }, |
| | | } |
| | | ], |
| | | }, |
| | | data: [], |
| | | }; |
| | | }, |
| | | watch: { |
| | | }, |
| | | computed: { |
| | | ...mapGetters(["permission", "userInfo"]), |
| | | permissionList() { |
| | | return { |
| | | addBtn: this.vaildData(this.permission.reportForRepairs_add, false), |
| | | viewBtn: this.vaildData(this.permission.reportForRepairs_view, true), |
| | | delBtn: this.vaildData(this.permission.reportForRepairs_delete, false), |
| | | editBtn: this.vaildData(this.permission.reportForRepairs_edit, true), |
| | | }; |
| | | }, |
| | | ids() { |
| | | let ids = []; |
| | | this.selectionList.forEach((ele) => { |
| | | ids.push(ele.id); |
| | | }); |
| | | return ids.join(","); |
| | | }, |
| | | }, |
| | | methods: { |
| | | // 任务派发 |
| | | taskApply(row){ |
| | | var that = this |
| | | this.taskVisible = true |
| | | this.$nextTick(() => { |
| | | }) |
| | | }, |
| | | rowSave(row, done, loading) { |
| | | if (row.imageUrls.length > 0) { |
| | | var urls = [] |
| | | var split = row.imageUrls.split(","); |
| | | split.forEach(url => { |
| | | var names = url.split("jczz/"); |
| | | urls.push(names[1]) |
| | | }) |
| | | row.imageUrls = urls.join(",") |
| | | } |
| | | add(row).then( |
| | | () => { |
| | | this.onLoad(this.page); |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }); |
| | | done(); |
| | | }, |
| | | (error) => { |
| | | window.console.log(error); |
| | | loading(); |
| | | } |
| | | ); |
| | | }, |
| | | rowUpdate(row, index, done, loading) { |
| | | if (row.imageUrls.length > 0) { |
| | | var urls = [] |
| | | var split = row.imageUrls.split(","); |
| | | split.forEach(url => { |
| | | var names = url.split("jczz/"); |
| | | urls.push(names[1]) |
| | | }) |
| | | row.imageUrls = urls.join(",") |
| | | } |
| | | update(row).then( |
| | | () => { |
| | | this.onLoad(this.page); |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }); |
| | | done(); |
| | | }, |
| | | (error) => { |
| | | window.console.log(error); |
| | | loading(); |
| | | } |
| | | ); |
| | | }, |
| | | rowDel(row) { |
| | | this.$confirm("确定将选择数据删除?", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning", |
| | | }) |
| | | .then(() => { |
| | | return remove(row.id); |
| | | }) |
| | | .then(() => { |
| | | this.onLoad(this.page); |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }); |
| | | }); |
| | | }, |
| | | searchReset() { |
| | | this.query = {}; |
| | | this.onLoad(this.page); |
| | | }, |
| | | searchChange(params, done) { |
| | | this.query = params; |
| | | this.page.currentPage = 1; |
| | | this.onLoad(this.page, params); |
| | | done(); |
| | | }, |
| | | selectionChange(list) { |
| | | this.selectionList = list; |
| | | }, |
| | | selectionClear() { |
| | | this.selectionList = []; |
| | | this.$refs.crud.toggleSelection(); |
| | | }, |
| | | handleDelete() { |
| | | if (this.selectionList.length === 0) { |
| | | this.$message.warning("请选择至少一条数据"); |
| | | return; |
| | | } |
| | | this.$confirm("确定将选择数据删除?", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning", |
| | | }) |
| | | .then(() => { |
| | | return remove(this.ids); |
| | | }) |
| | | .then(() => { |
| | | this.onLoad(this.page); |
| | | this.$message({ |
| | | type: "success", |
| | | message: "操作成功!", |
| | | }); |
| | | this.$refs.crud.toggleSelection(); |
| | | }); |
| | | }, |
| | | beforeOpen(done, type) { |
| | | if (["edit", "view"].includes(type)) { |
| | | getReportForRepairs(this.form.id).then((res) => { |
| | | this.form = res.data.data; |
| | | if (this.form.imageUrls) { |
| | | if (this.form.imageUrls.length > 0) { |
| | | var urls = [] |
| | | var names = this.form.imageUrls.split(","); |
| | | names.forEach(name => { |
| | | urls.push(website.minioUrl + name) |
| | | }) |
| | | this.form.imageUrls = urls.join(",") |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | // con |
| | | done(); |
| | | }, |
| | | currentChange(currentPage) { |
| | | this.page.currentPage = currentPage; |
| | | }, |
| | | sizeChange(pageSize) { |
| | | this.page.pageSize = pageSize; |
| | | }, |
| | | refreshChange() { |
| | | this.onLoad(this.page, this.query); |
| | | }, |
| | | onLoad(page, params = {}) { |
| | | const { dateTime } = this.query; |
| | | let values = { |
| | | ...params, |
| | | }; |
| | | if (dateTime) { |
| | | values = { |
| | | ...params, |
| | | startTime: dateTime[0], |
| | | endTime: dateTime[1], |
| | | ...this.query, |
| | | }; |
| | | values.dateTime = null; |
| | | } |
| | | this.loading = true; |
| | | getList(page.currentPage, page.pageSize, values).then((res) => { |
| | | const data = res.data.data; |
| | | this.page.total = data.total; |
| | | this.data = data.records; |
| | | this.data.forEach(item => { |
| | | if (item.imageUrls) { |
| | | if (item.imageUrls.length > 0) { |
| | | var urls = [] |
| | | var names = item.imageUrls.split(","); |
| | | names.forEach(name => { |
| | | urls.push(website.minioUrl + name) |
| | | }) |
| | | item.imageUrls = urls.join(",") |
| | | } |
| | | } |
| | | }) |
| | | this.loading = false; |
| | | this.selectionClear(); |
| | | }); |
| | | } |
| | | }, |
| | | }; |
| | | </script> |
| | | |
| | | <style> |
| | | .avue-upload__icon { |
| | | line-height: 6; |
| | | } |
| | | </style> |