Merge branch '2.0.1' of http://139.186.142.91:10010/r/productDev/funingyunwei into 2.0.1
| | |
| | | } |
| | | }) |
| | | } |
| | | |
| | | // 设备状态统计 |
| | | export function getDeviceStatus (data) { |
| | | return request.post('/visitsAdmin/cloudService/business/ywDevice/getDeviceStatus', data) |
| | | } |
| | | |
| | | // 设备数量分类统计 |
| | | export function getDeviceCateData (data) { |
| | | return request.post('/visitsAdmin/cloudService/business/ywDevice/getDeviceCateData', data) |
| | | } |
| | |
| | | export function upload (data) { |
| | | return request.post('/visitsAdmin/cloudService/public/upload', data) |
| | | } |
| | | // 批量上传文件到FTP |
| | | export function uploadBatch (data) { |
| | | return request.post('/visitsAdmin/cloudService/public/uploadBatch', data) |
| | | } |
| | | // 获取省市区树 |
| | | export function getCityTree (data) { |
| | | return request.post('/visitsAdmin/cloudService/business/areas/treeList', data) |
| | |
| | | return request.post('/visitsAdmin/cloudService/business/ywWorkorder/updateById', data) |
| | | } |
| | | |
| | | // 获取工单数量信息 |
| | | export function getDataVO (data) { |
| | | return request.post('/visitsAdmin/cloudService/business/ywWorkorder/getDataVO', data) |
| | | } |
| | | |
| | | // 删除 |
| | | export function deleteById (id) { |
| | | return request.get(`/visitsAdmin/cloudService/business/ywWorkorder/delete/${id}`) |
| | |
| | | } |
| | | |
| | | // 根据ID修改 |
| | | export function editProblem (data) { |
| | | return request.post('/visitsAdmin/cloudService/business/ywProblem/editProblem', data) |
| | | } |
| | | |
| | | // 根据ID修改 |
| | | export function updateById (data) { |
| | | return request.post('/visitsAdmin/cloudService/business/ywProblem/updateById', data) |
| | | } |
| | | |
| | | // 根据ID查询 |
| | | export function getById (id) { |
| | | return request.get(`/visitsAdmin/cloudService/business/ywProblem/${id}`) |
| | | } |
| | | |
| | | // 删除 |
| | | export function deleteById (id) { |
| | | return request.get(`/visitsAdmin/cloudService/business/ywProblem/delete/${id}`) |
| | | } |
| | | |
| | | // 根据工单查询 |
| | | export function getByWorkorderId (workorderId) { |
| | | return request.get(`/visitsAdmin/cloudService/business/ywProblem/getByWorkorderId?workorderId=${workorderId}`) |
| | | } |
| | |
| | | <template> |
| | | <GlobalWindow width="720px" title="设备详情" :visible.sync="visible" :confirm-working="isWorking" @close="close" |
| | | <GlobalWindow width="100%" title="设备详情" :withFooter="false" :visible.sync="visible" :confirm-working="isWorking" @close="close" |
| | | @confirm="confirm"> |
| | | <div class="main"> |
| | | <div style="width: 100%; position: sticky; top: 0; left: 0; z-index: 999; background: #ffffff;"> |
| | | <div class="tabs"> |
| | | <div class="tab" :class="{ active: activeTabs === 0 }" @click="tabsClick(0)">设备信息</div> |
| | | <div class="tab" :class="{ active: activeTabs === 1 }" @click="tabsClick(1)">运维记录</div> |
| | | <div class="tab" :class="{ active: activeTabs === 2 }" @click="tabsClick(2)">巡检记录</div> |
| | | </div> |
| | | </div> |
| | | <div class="main" v-if="activeTabs === 0"> |
| | | <div class="title"> |
| | | <span>基础信息</span> |
| | | </div> |
| | |
| | | <div class="val">{{ info.addr }}</div> |
| | | </div> |
| | | <div class="item"> |
| | | <div class="la">所属项目</div> |
| | | <div class="val">{{ info.projectName }}</div> |
| | | </div> |
| | | <div class="item"> |
| | | <div class="la">关联房源</div> |
| | | <div class="val">{{ info.buildingName }} / {{ info.floorName }} / {{info.roomName}}</div> |
| | | </div> |
| | | <div class="item"> |
| | | <div class="la">购入时间</div> |
| | | <div class="val">{{ info.buyDate }}</div> |
| | | </div> |
| | | <div class="item"> |
| | | <div class="la">设备状态</div> |
| | | <spa class="val" v-if="info.status == 0">正常</spa> |
| | | <spa class="val" v-if="info.status == 1">损坏</spa> |
| | |
| | | <div v-if="info.fileFullUrl" class="item" style="width: 100%;"> |
| | | <div class="la">照片</div> |
| | | <div class="val"> |
| | | <img class="photo" :src="info.fileFullUrl" alt=""> |
| | | <el-image |
| | | style="width: 100px; height: 100px" |
| | | :src="info.fileFullUrl" |
| | | :preview-src-list="[info.fileFullUrl]"> |
| | | </el-image> |
| | | </div> |
| | | </div> |
| | | <div class="item" style="width: 100%;"> |
| | | <div class="la">附件</div> |
| | | <div class="val"> |
| | | <el-table |
| | | :data="info.multifileList ? info.multifileList : []" |
| | | border |
| | | style="width: 100%"> |
| | | <el-table-column |
| | | prop="name" |
| | | label="附件名称"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="userName" |
| | | label="操作人"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="createDate" |
| | | label="操作时间"> |
| | | </el-table-column> |
| | | </el-table> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="title"> |
| | | <span>供应商信息</span> |
| | | </div> |
| | | <div class="main_content"> |
| | | <div class="list"> |
| | | <div class="item"> |
| | | <div class="la">供应商</div> |
| | | <div class="val">{{info.supplier}}</div> |
| | | </div> |
| | | <div class="item"> |
| | | <div class="la">联系人</div> |
| | | <div class="val">{{info.supplierLinker}}</div> |
| | | </div> |
| | | <div class="item"> |
| | | <div class="la">联系方式</div> |
| | | <div class="val">{{info.supplierPhone}}</div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="title"> |
| | | <span>维保信息</span> |
| | | </div> |
| | | <div class="main_content"> |
| | | <div class="list"> |
| | | <div class="item"> |
| | | <div class="la">维保负责人</div> |
| | | <div class="val">{{info.maintenanceUserName}}</div> |
| | | </div> |
| | | <div class="item"> |
| | | <div class="la">维保到期日</div> |
| | | <div class="val">{{info.maintenanceOverDate}}</div> |
| | | </div> |
| | | <div class="item" style="width: 100%;"> |
| | | <div class="la">维保说明</div> |
| | | <div class="val">{{info.maintenanceContent}}</div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="main" v-if="activeTabs === 1"> |
| | | <el-table |
| | | :data="infoList" |
| | | border |
| | | style="width: 100%"> |
| | | <el-table-column |
| | | prop="realName" |
| | | label="运维人员"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="设备状态"> |
| | | <template slot-scope="{row}"> |
| | | <span v-if="row.status === 0">正常</span> |
| | | <span v-if="row.status === 1">损坏</span> |
| | | <span v-if="row.status === 2">报废</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="remark" |
| | | label="运维备注"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="dealDate" |
| | | label="运维时间"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="操作"> |
| | | <template slot-scope="{row}"> |
| | | <el-button type="text" @click="handleDetail(row)">查看详情</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <el-pagination |
| | | @size-change="handleSizeChange" |
| | | @current-change="handleCurrentChange" |
| | | :current-page="page" |
| | | :page-sizes="[10, 20, 30, 40]" |
| | | :page-size="pageSize" |
| | | layout="total, sizes, prev, pager, next, jumper" |
| | | :total="total"> |
| | | </el-pagination> |
| | | </div> |
| | | <div class="main" v-if="activeTabs === 2"> |
| | | <el-table |
| | | :data="infoList" |
| | | border |
| | | style="width: 100%"> |
| | | <el-table-column |
| | | prop="schemeTitle" |
| | | label="计划名称"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="taskCode" |
| | | label="任务编号"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="任务时间"> |
| | | <template slot-scope="{row}"> |
| | | {{row.startDate}} ~ {{row.endDate}} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="realname" |
| | | label="巡检人"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="巡检结果"> |
| | | <template slot-scope="{row}"> |
| | | <span v-if="row.dealStatus === 0">正常</span> |
| | | <span v-if="row.dealStatus === 1">异常</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="巡检附件"> |
| | | <template slot-scope="{row}"> |
| | | <el-image |
| | | v-if="row.multifileList && row.multifileList.length > 0" |
| | | style="width: 100px; height: 100px" |
| | | :src="row.multifileList[0].fileurlFull" |
| | | :preview-src-list="[row.multifileList[0].fileurlFull]"> |
| | | </el-image> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="content" |
| | | label="巡检说明"> |
| | | </el-table-column> |
| | | </el-table> |
| | | <el-pagination |
| | | @size-change="handleSizeChange" |
| | | @current-change="handleCurrentChange" |
| | | :current-page="page" |
| | | :page-sizes="[10, 20, 30, 40]" |
| | | :page-size="pageSize" |
| | | layout="total, sizes, prev, pager, next, jumper" |
| | | :total="total"> |
| | | </el-pagination> |
| | | </div> |
| | | <Detail ref="DetailRef" /> |
| | | </GlobalWindow> |
| | | </template> |
| | | |
| | | <script> |
| | | import GlobalWindow from '@/components/common/GlobalWindow' |
| | | import BaseOpera from '@/components/base/BaseOpera' |
| | | import Detail from './maintainDetail' |
| | | import { detailById } from '@/api/Inspection/device.js' |
| | | import { getUserList } from '@/api/system/user' |
| | | import { Message, Loading } from 'element-ui' |
| | | import { fetchList } from '@/api/Inspection/deviceRecord.js' |
| | | import { getDetail } from '@/api/Inspection/ywPatrolTask.js' |
| | | export default { |
| | | components: { |
| | | GlobalWindow |
| | | GlobalWindow, |
| | | Detail |
| | | }, |
| | | extends: BaseOpera, |
| | | data() { |
| | |
| | | id: '', |
| | | visible: false, |
| | | info: {}, |
| | | |
| | | activeTabs: 0, |
| | | fileList: [], |
| | | |
| | | infoList: [], |
| | | total: 0, |
| | | pageSize: 10, |
| | | page: 1 |
| | | } |
| | | }, |
| | | methods: { |
| | | handleSizeChange(e) { |
| | | this.pageSize = e |
| | | if (this.activeTabs === 1) { |
| | | this.getyunwei() |
| | | } else if (this.activeTabs === 2) { |
| | | this.getXunJian() |
| | | } |
| | | }, |
| | | handleCurrentChange(e) { |
| | | this.page = e |
| | | if (this.activeTabs === 1) { |
| | | this.getyunwei() |
| | | } else if (this.activeTabs === 2) { |
| | | this.getXunJian() |
| | | } |
| | | }, |
| | | getDetail() { |
| | | this.this.activeTabs = 0 |
| | | const { id } = this |
| | | detailById(id).then(res => { |
| | | this.info = res |
| | | }) |
| | | }, |
| | | handleDetail(row) { |
| | | this.$refs.DetailRef.visible = true |
| | | this.$refs.DetailRef.getDetail(row.id) |
| | | }, |
| | | close() { |
| | | this.visible = false |
| | | this.$emit('close') |
| | | }, |
| | | tabsClick(val) { |
| | | this.activeTabs = val |
| | | this.pageSize = 10 |
| | | this.page = 1 |
| | | this.infoList = [] |
| | | if (val === 1) { |
| | | this.getyunwei() |
| | | } else if (val === 2) { |
| | | this.getXunJian() |
| | | } |
| | | }, |
| | | // 获取设备运维记录 |
| | | getyunwei() { |
| | | fetchList({ |
| | | capacity: this.pageSize, |
| | | page: this.page, |
| | | model: { |
| | | deviceId: this.id |
| | | } |
| | | }).then(res => { |
| | | this.infoList = res.records |
| | | this.total = res.total |
| | | }) |
| | | }, |
| | | // 巡检记录 |
| | | getXunJian() { |
| | | getDetail({ |
| | | capacity: this.pageSize, |
| | | page: this.page, |
| | | model: { |
| | | deviceId: this.id |
| | | } |
| | | }).then(res => { |
| | | this.infoList = res.records |
| | | this.total = res.total |
| | | }) |
| | | } |
| | | } |
| | | } |
| | |
| | | |
| | | <style lang="scss" scoped> |
| | | @import '@/assets/style/variables.scss'; |
| | | |
| | | .tabs { |
| | | border-bottom: 1px solid #DFE2E8; |
| | | display: flex; |
| | | .tab { |
| | | height: 58px; |
| | | line-height: 58px; |
| | | font-size: 16px; |
| | | color: #666666; |
| | | margin-right: 30px; |
| | | cursor: pointer; |
| | | } |
| | | |
| | | .active { |
| | | font-weight: 500; |
| | | color: $primary-color; |
| | | border-bottom: 2px solid $primary-color; |
| | | } |
| | | } |
| | | .main { |
| | | padding-top: 20px; |
| | | |
| | |
| | | <template> |
| | | <GlobalWindow :title="param.id ? '编辑设备' : '新建设备'" :confirmWorking="subLoading" :visible.sync="isShowModal" |
| | | width="600px" @close="close" @confirm="handleSub"> |
| | | width="100%" @close="close" @confirm="handleSub"> |
| | | <el-form :model="param" ref="paramRef" :rules="rules"> |
| | | <el-form-item label="设备编码" prop="code"> |
| | | <el-input v-model="param.code" placeholder="请输入" v-trim /> |
| | | </el-form-item> |
| | | <el-form-item label="设备名称" prop="name"> |
| | | <el-input v-model="param.name" placeholder="请输入" v-trim /> |
| | | </el-form-item> |
| | | <el-form-item label="设备型号" prop=""> |
| | | <el-input v-model="param.modelNo" placeholder="请输入" v-trim /> |
| | | </el-form-item> |
| | | <el-form-item label="设备分类" prop="cateId"> |
| | | <el-cascader v-model="param.cateIds" @change="changeSel" placeholder="请选择设备分类" clearable :options="cateList" |
| | | :props="{ |
| | | label: 'name', |
| | | value: 'id', |
| | | children: 'childCategoryList' |
| | | }"></el-cascader> |
| | | </el-form-item> |
| | | <el-form-item label="设备管理员" prop=""> |
| | | <el-select v-model="param.userId" clearable filterable> |
| | | <el-option v-for="item in staffList" :label="item.realname" :value="item.id"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="所在位置" prop=""> |
| | | <el-input v-model="param.addr" placeholder="请输入" v-trim /> |
| | | |
| | | </el-form-item> |
| | | <el-form-item label="供应商" prop=""> |
| | | <el-input v-model="param.supplier" placeholder="请输入" v-trim /> |
| | | </el-form-item> |
| | | <el-form-item label="运维内容" prop=""> |
| | | <el-input type="textarea" :rows="4" v-model="param.content" placeholder="请输入" /> |
| | | </el-form-item> |
| | | <el-form-item label="设备状态" prop=""> |
| | | <el-select v-model="param.status" filterable> |
| | | <el-option :value="0" label="正常"></el-option> |
| | | <el-option :value="1" label="损坏"></el-option> |
| | | <el-option :value="2" label="报废"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="照片" prop=""> |
| | | <UploadAvatarImage :file="{ 'imgurlfull': param.fileFullUrl, 'imgurl': param.fileUrl }" |
| | | :uploadData="{ folder: 'ywDevice/' }" @uploadSuccess="uploadAvatarSuccess" @uploadEnd="isUploading = false" |
| | | @uploadBegin="isUploading = true" /> |
| | | </el-form-item> |
| | | <div style="width: 100%; display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; padding-top: 20px; box-sizing: border-box;"> |
| | | <div class="title">基础信息</div> |
| | | <div style="width: 31%;"> |
| | | <el-form-item label="设备编码" prop="code"> |
| | | <el-input v-model="param.code" placeholder="请输入" v-trim /> |
| | | </el-form-item> |
| | | </div> |
| | | <div style="width: 31%;"> |
| | | <el-form-item label="设备名称" prop="name"> |
| | | <el-input v-model="param.name" placeholder="请输入" v-trim /> |
| | | </el-form-item> |
| | | </div> |
| | | <div style="width: 31%;"> |
| | | <el-form-item label="设备型号" prop="modelNo"> |
| | | <el-input v-model="param.modelNo" placeholder="请输入" v-trim /> |
| | | </el-form-item> |
| | | </div> |
| | | <div style="width: 31%;"> |
| | | <el-form-item label="设备分类" prop="cateIds"> |
| | | <el-cascader v-model="param.cateIds" @change="changeSel" placeholder="请选择设备分类" clearable :options="cateList" |
| | | :props="{ |
| | | label: 'name', |
| | | value: 'id', |
| | | children: 'childCategoryList' |
| | | }"></el-cascader> |
| | | </el-form-item> |
| | | </div> |
| | | <div style="width: 31%;"> |
| | | <el-form-item label="设备管理员" prop="userId"> |
| | | <el-select v-model="param.userId" clearable filterable> |
| | | <el-option v-for="item in staffList" :label="item.realname" :value="item.id"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </div> |
| | | <div style="width: 31%;"> |
| | | <el-form-item label="所在位置" prop="addr"> |
| | | <el-input v-model="param.addr" placeholder="请输入" v-trim /> |
| | | </el-form-item> |
| | | </div> |
| | | <div style="width: 31%;"> |
| | | <el-form-item label="所属项目" prop="projectId"> |
| | | <el-select v-model="param.projectId" @change="changeProject" filterable> |
| | | <el-option v-for="item in projectList" :label="item.name" :value="item.id"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </div> |
| | | <div style="width: 31%;"> |
| | | <el-form-item label="关联房源" prop="rooms"> |
| | | <el-cascader v-model="param.rooms" :disabled="!param.projectId" ref="cascader" @change="getHouseVal" placeholder="请选择关联房源" :options="houseList" |
| | | :props="{ |
| | | label: 'name', |
| | | value: 'id', |
| | | children: 'projectDataVOList' |
| | | }"></el-cascader> |
| | | </el-form-item> |
| | | </div> |
| | | <div style="width: 31%;"> |
| | | <el-form-item label="购入时间" prop="buyDate"> |
| | | <el-date-picker |
| | | v-model="param.buyDate" |
| | | type="date" |
| | | value-format="yyyy-MM-dd" |
| | | placeholder="选择日期"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </div> |
| | | <div style="width: 31%;"> |
| | | <el-form-item label="设备状态" prop="status"> |
| | | <el-select v-model="param.status" filterable> |
| | | <el-option :value="0" label="正常"></el-option> |
| | | <el-option :value="1" label="损坏"></el-option> |
| | | <el-option :value="2" label="报废"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </div> |
| | | <div style="width: 100%;"> |
| | | <el-form-item label="运维内容" prop="content"> |
| | | <el-input type="textarea" :rows="4" v-model="param.content" placeholder="请输入" /> |
| | | </el-form-item> |
| | | </div> |
| | | <div style="width: 100%;"> |
| | | <el-form-item label="照片" prop=""> |
| | | <UploadAvatarImage :file="{ 'imgurlfull': param.fileFullUrl, 'imgurl': param.fileUrl }" |
| | | :uploadData="{ folder: 'ywDevice/' }" @uploadSuccess="uploadAvatarSuccess" @uploadEnd="isUploading = false" |
| | | @uploadBegin="isUploading = true" /> |
| | | <div style="width: 100%; height: 40px;"></div> |
| | | </el-form-item> |
| | | </div> |
| | | <div style="width: 100%;"> |
| | | <el-form-item label="附件" prop="multifileList"> |
| | | <div style="display: flex; flex-direction: column; align-items: flex-start;"> |
| | | <el-button type="text" @click="$refs.uploadFile.click()">+添加附件</el-button> |
| | | <el-table |
| | | :data="param.multifileList" |
| | | border |
| | | style="width: 100%"> |
| | | <el-table-column |
| | | prop="name" |
| | | label="附件名称"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="createUserName" |
| | | label="操作人"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="createTime" |
| | | label="操作时间"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="操作"> |
| | | <template slot-scope="scope"> |
| | | <el-button type="text" @click="deleFile(scope.$index)">删除</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </div> |
| | | </el-form-item> |
| | | </div> |
| | | |
| | | <div class="title">供应商信息</div> |
| | | <div style="width: 31%;"> |
| | | <el-form-item label="供应商" prop="supplier"> |
| | | <el-input v-model="param.supplier" placeholder="请输入" v-trim /> |
| | | </el-form-item> |
| | | </div> |
| | | <div style="width: 31%;"> |
| | | <el-form-item label="联系人" prop="supplierLinker"> |
| | | <el-input v-model="param.supplierLinker" placeholder="请输入" v-trim /> |
| | | </el-form-item> |
| | | </div> |
| | | <div style="width: 31%;"> |
| | | <el-form-item label="联系方式" prop="supplierPhone"> |
| | | <el-input v-model="param.supplierPhone" placeholder="请输入" v-trim /> |
| | | </el-form-item> |
| | | </div> |
| | | |
| | | <div class="title">维保信息</div> |
| | | <div style="width: 31%;"> |
| | | <el-form-item label="维保负责人" prop="maintenanceUserId"> |
| | | <el-select v-model="param.maintenanceUserId" clearable filterable> |
| | | <el-option v-for="item in staffList" :label="item.realname" :value="item.id"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </div> |
| | | <div style="width: 31%;"> |
| | | <el-form-item label="维保到期日" prop="maintenanceOverDate"> |
| | | <el-date-picker |
| | | v-model="param.maintenanceOverDate" |
| | | type="date" |
| | | value-format="yyyy-MM-dd" |
| | | placeholder="选择日期"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </div> |
| | | <div style="width: 31%;"></div> |
| | | <div style="width: 100%;"> |
| | | <el-form-item label="维保说明" prop="maintenanceContent"> |
| | | <el-input v-model="param.maintenanceContent" type="textarea" placeholder="请输入" v-trim /> |
| | | </el-form-item> |
| | | </div> |
| | | </div> |
| | | </el-form> |
| | | <input type="file" ref="uploadFile" style="position: fixed; top: -20px; left: 0;" @change="getFile" /> |
| | | </GlobalWindow> |
| | | </template> |
| | | |
| | |
| | | import { fetchList } from '@/api/business/category' |
| | | import { create, updateById, detailById } from '@/api/Inspection/device' |
| | | import { getUserList } from '@/api/system/user' |
| | | import { Message } from 'element-ui' |
| | | import { uploadBatch } from '@/api/system/common' |
| | | import { getProjectList, tree } from '@/api/project/ywProject' |
| | | import { Loading, Message } from 'element-ui' |
| | | import { mapState } from 'vuex' |
| | | export default { |
| | | components: { GlobalWindow, UploadAvatarImage }, |
| | | data() { |
| | |
| | | isShowModal: false, |
| | | subLoading: false, |
| | | param: { |
| | | status: 0 |
| | | code: '', |
| | | name: '', |
| | | modelNo: '', |
| | | cateIds: '', |
| | | userId: '', |
| | | addr: '', |
| | | projectId: '', |
| | | rooms: [], |
| | | buildingId: '', |
| | | floorId: '', |
| | | roomId: '', |
| | | |
| | | supplier: [], |
| | | buyDate: '', |
| | | content: '', |
| | | supplierLinker: '', |
| | | supplierPhone: '', |
| | | maintenanceUserId: '', |
| | | maintenanceOverDate: '', |
| | | maintenanceContent: '', |
| | | status: 0, |
| | | multifileList: [] |
| | | }, |
| | | cateList: [], |
| | | rules: { |
| | | name: [{ required: true, message: '请输入' }], |
| | | code: [{ required: true, message: '请输入' }], |
| | | cateId: [{ required: true, message: '请选择' }], |
| | | name: [{ required: true, message: '请输入', trigger: 'blur' }], |
| | | code: [{ required: true, message: '请输入', trigger: 'blur' }], |
| | | cateId: [{ required: true, message: '请选择', trigger: 'blur' }], |
| | | projectId: [{ required: true, message: '请选择', trigger: 'blur' }], |
| | | rooms: [{ required: true, message: '请选择', trigger: 'blur' }] |
| | | }, |
| | | staffList: [] |
| | | |
| | | loadings: false, |
| | | cateList: [], |
| | | houseList: [], |
| | | staffList: [], |
| | | projectList: [] |
| | | } |
| | | }, |
| | | computed: { |
| | | ...mapState(['userInfo']) |
| | | }, |
| | | created() { |
| | | this.initData() |
| | | this.getProjectLists() |
| | | console.log(this.userInfo) |
| | | }, |
| | | methods: { |
| | | getHouseVal(e) { |
| | | this.param.buildingId = e[1] |
| | | this.param.floorId = e[2] |
| | | this.param.roomId = e[3] |
| | | }, |
| | | changeProject(e) { |
| | | this.getHouseTree() |
| | | }, |
| | | getHouseTree() { |
| | | tree({ |
| | | projectId: this.param.projectId |
| | | }).then(res => { |
| | | this.addParamToArray(res) |
| | | this.houseList = res |
| | | }) |
| | | }, |
| | | addParamToArray(arr) { |
| | | for (let i = 0; i < arr.length; i++) { |
| | | const currentItem = arr[i].projectDataVOList |
| | | if (currentItem && currentItem.length >= 0) { |
| | | currentItem.forEach(item => { |
| | | if (item.lv === 3) { |
| | | delete item.projectDataVOList |
| | | } |
| | | }) |
| | | } |
| | | if (currentItem && currentItem.length > 0) { |
| | | this.addParamToArray(currentItem) |
| | | } |
| | | } |
| | | }, |
| | | deleFile(index) { |
| | | this.param.multifileList.splice(index, 1) |
| | | }, |
| | | // 获取项目 |
| | | getProjectLists() { |
| | | getProjectList({}) |
| | | .then(res => { |
| | | this.projectList = res |
| | | }) |
| | | }, |
| | | // 上传附件 |
| | | getFile(e) { |
| | | this.loadings = Loading.service({ |
| | | lock: true, |
| | | text: 'Loading', |
| | | spinner: 'el-icon-loading', |
| | | background: 'rgba(0, 0, 0, 0.7)' |
| | | }) |
| | | let formDate = new FormData() |
| | | formDate.append('folder', 'YW_DEVICE') |
| | | formDate.append('file', e.target.files[0]) |
| | | uploadBatch(formDate) |
| | | .then(res => { |
| | | this.param.multifileList.push({ ...res[0], fileurl: res[0].imgaddr, name: res[0].originname, createUserName: this.userInfo.realname, createTime: this.getDate() }) |
| | | }) |
| | | .finally(() => { |
| | | e.target.files = null |
| | | this.loadings.close() |
| | | }) |
| | | }, |
| | | getDate() { |
| | | const currentDate = new Date(); |
| | | |
| | | const year = currentDate.getFullYear(); // 获取当前年份 |
| | | const month = currentDate.getMonth() + 1; // 获取当前月份 (0-11,所以需要 +1) |
| | | const day = currentDate.getDate(); // 获取当前日期 |
| | | const hours = currentDate.getHours(); // 获取当前小时 |
| | | const minutes = currentDate.getMinutes(); // 获取当前分钟 |
| | | const seconds = currentDate.getSeconds(); // 获取当前秒钟 |
| | | |
| | | return `${year}-${month < 10 ? '0' + month : month}-${day < 10 ? '0' + day : day} ` |
| | | + `${hours < 10 ? '0' + hours : hours}:${minutes < 10 ? '0' + minutes : minutes}:${seconds < 10 ? '0' + seconds : seconds}`; |
| | | }, |
| | | handleSub() { |
| | | const { param, subLoading } = this |
| | | this.$refs['paramRef'].validate((valid) => { |
| | |
| | | getDetail(id) { |
| | | detailById(id).then(res => { |
| | | this.param = res |
| | | this.param.rooms = [res.projectId, res.buildingId, res.floorId, res.roomId] |
| | | this.param.multifileList = res.multifileList.map(item => { |
| | | return { |
| | | ...item, |
| | | createUserName: item.userName, |
| | | createTime: item.createDate |
| | | } |
| | | }) |
| | | this.getHouseTree() |
| | | const cateId = this.param.cateId || '' |
| | | setTimeout(() => { |
| | | if (cateId) { |
| | |
| | | item.childCategoryList.forEach(item2 => { |
| | | if (item2.id == cateId) { |
| | | this.$set(this.param, 'cateIds', [item.id, item2.id]) |
| | | console.log('cateId', this.form) |
| | | } |
| | | }) |
| | | } |
| | |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | @import '@/assets/style/variables.scss'; |
| | | .title { |
| | | width: 100%; |
| | | font-weight: 500; |
| | | font-size: 18px; |
| | | color: $primary-color; |
| | | margin-bottom: 10px; |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | </style> |
| | |
| | | this.$nextTick(() => { |
| | | this.$refs.EditRef.isShowModal = true |
| | | if (row && row.id) { |
| | | console.log('---') |
| | | |
| | | this.$refs.EditRef.getDetail(row.id) |
| | | } |
| | | }) |
| | |
| | | <template> |
| | | <GlobalWindow |
| | | title="楼宇详情" |
| | | :title="title" |
| | | :showConfirm="false" |
| | | :visible.sync="visible" |
| | | width="800px"> |
| | | width="100%"> |
| | | <div class="right"> |
| | | <div class="right_head">项目名称</div> |
| | | <div class="right_head"> |
| | | <span>{{info.roomNum}}</span> |
| | | <el-tag type="success" v-if="info.leaseStatus === 0">待租赁</el-tag> |
| | | <el-tag type="success" v-if="info.leaseStatus === 1">已租赁</el-tag> |
| | | <el-tag type="success" v-if="info.leaseStatus === 2">未开启租赁</el-tag> |
| | | </div> |
| | | <div class="right_cate"> |
| | | <el-tabs v-model="activeName" @tab-click="handleClick"> |
| | | <el-tab-pane label="房源信息" name="houseinfo"> |
| | |
| | | <div class="xm_info"> |
| | | <div class="xm_info_row" style="width: 25%;"> |
| | | <span>所属项目</span> |
| | | <span>XXXXXXXXXX</span> |
| | | <span>{{info.projectName}}</span> |
| | | </div> |
| | | <div class="xm_info_row" style="width: 25%;"> |
| | | <span>楼宇</span> |
| | | <span>综合楼</span> |
| | | <span>{{info.buildingName}}</span> |
| | | </div> |
| | | <div class="xm_info_row" style="width: 25%;"> |
| | | <span>楼层</span> |
| | | <span>1</span> |
| | | <span>{{info.floorName}}</span> |
| | | </div> |
| | | <div class="xm_info_row" style="width: 25%;"> |
| | | <span>房号</span> |
| | | <span>101活动室</span> |
| | | <span>{{info.roomNum}}</span> |
| | | </div> |
| | | <div class="xm_info_row" style="width: 25%; margin-top: 15px;"> |
| | | <span>房间编号</span> |
| | | <span>101</span> |
| | | <span>{{info.code}}</span> |
| | | </div> |
| | | <div class="xm_info_row" style="width: 25%; margin-top: 15px;"> |
| | | <span>是否招商</span> |
| | | <span>否</span> |
| | | <span v-if="info.isInvestment === 0">否</span> |
| | | <span v-if="info.isInvestment === 1">是</span> |
| | | </div> |
| | | <div class="xm_info_row" style="width: 25%; margin-top: 15px;"> |
| | | <span>建筑面积</span> |
| | | <span>50㎡</span> |
| | | <span>{{info.area}}㎡</span> |
| | | </div> |
| | | <div class="xm_info_row" style="width: 25%; margin-top: 15px;"> |
| | | <span>计租面积</span> |
| | | <span>50㎡</span> |
| | | <span>{{info.rentArea}}㎡</span> |
| | | </div> |
| | | <div class="xm_info_row" style="width: 25%; margin-top: 15px;"> |
| | | <span>计费面积</span> |
| | | <span>45㎡</span> |
| | | <span>{{info.feeArea}}㎡</span> |
| | | </div> |
| | | </div> |
| | | </el-card> |
| | |
| | | <span>当前在租合同</span> |
| | | </div> |
| | | <div class="xm_table"> |
| | | <el-input v-model="input" style="width: 300px; margin-bottom: 15px;" placeholder="请输入合同编号"></el-input> |
| | | <div style="width: 100%; display: flex; align-items: center; margin-bottom: 15px;"> |
| | | <el-input v-model="form.code" style="width: 300px;" placeholder="请输入合同编号"></el-input> |
| | | <el-button type="primary" style="margin-left: 15px;" @click="getTenantContract()">搜索</el-button> |
| | | </div> |
| | | <el-table |
| | | :data="tableData" |
| | | border |
| | | v-loading="loading" |
| | | style="width: 100%"> |
| | | <el-table-column |
| | | prop="date" |
| | | label="合同编号"> |
| | | <template slot-scope="{row}"> |
| | | <el-button type="text" @click="$refs.ContractDetailRef.open('合同详情', row.id)" v-if="row.status === 1">{{row.code}}</el-button> |
| | | <el-button type="text" v-else>{{row.code}}</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="name" |
| | | prop="renterName" |
| | | label="客户名称"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="address" |
| | | prop="startDate" |
| | | label="开始日期"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="address" |
| | | prop="endDate" |
| | | label="结束日期"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="address" |
| | | label="租赁单价"> |
| | | <template slot-scope="{row}"> |
| | | <div style="display: flex; align-items: center;"> |
| | | <span>{{row.zlFirstPrice || row.wyFirstPrice}}</span> |
| | | <span>{{row.zlFirstCircleStr || row.wyFirstCircleStr}}</span> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="address" |
| | | label="租赁面积(㎡)"> |
| | | <template slot-scope="{row}"> |
| | | {{row.totalArea}}㎡ |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="address" |
| | | prop="signDate" |
| | | label="签订日"> |
| | | </el-table-column> |
| | | <el-table-column |
| | |
| | | label="合同来源"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="address" |
| | | label="合同状态"> |
| | | <template slot-scope="{row}"> |
| | | <span class="primaryColor" v-if="row.status === 0">待执行</span> |
| | | <span class="green" v-if="row.status === 1">正常执行中</span> |
| | | <span class="gary" v-if="row.status === 2">已到期</span> |
| | | <span class="gary" v-if="row.status === 3">退租结算中</span> |
| | | <span class="gary" v-if="row.status === 4">已退租</span> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <div class="xm_table_f"> |
| | |
| | | <div class="xm_one1"> |
| | | <div class="xm_one_row"> |
| | | <span>待指派数量</span> |
| | | <span>15</span> |
| | | <span>{{numObj.waitAssignAmount || 0}}</span> |
| | | </div> |
| | | <div class="xm_one_row"> |
| | | <span>待处理数量</span> |
| | | <span>15</span> |
| | | <span>{{numObj.waitDealAmount || 0}}</span> |
| | | </div> |
| | | <div class="xm_one_row"> |
| | | <span>本月工单数</span> |
| | | <span>15</span> |
| | | <span>{{numObj.monthAmount || 0}}</span> |
| | | </div> |
| | | <div class="xm_one_row"> |
| | | <span>累计工单数</span> |
| | | <span>15</span> |
| | | <span>{{numObj.amount || 0}}</span> |
| | | </div> |
| | | </div> |
| | | </el-card> |
| | | <el-card style="margin-top: 20px;"> |
| | | <div class="xm_table"> |
| | | <div class="xm_table_search"> |
| | | <el-select v-model="value" style="width: 300px; margin-right: 15px;" placeholder="位置类型"> |
| | | <el-option |
| | | v-for="item in options" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | | <el-select v-model="value" style="width: 300px;" placeholder="工单分类"> |
| | | <el-option |
| | | v-for="item in options" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | | <div> |
| | | <el-cascader style="width: 150px; margin-right: 15px;" v-model="form.areaIds" @change="changeSel" placeholder="请选择工单分类" clearable |
| | | :options="cateList" :props="{ |
| | | label: 'name', |
| | | value: 'id', |
| | | children: 'childCategoryList' |
| | | }" /> |
| | | <el-select v-model="form.status" style="width: 150px; margin-right: 15px;" placeholder="工单状态"> |
| | | <el-option label="启用" :value="0"></el-option> |
| | | <el-option label="禁用" :value="1"></el-option> |
| | | </el-select> |
| | | <el-button type="primary" @click="getFetchList">查询</el-button> |
| | | <el-button @click="clear">清空</el-button> |
| | | </div> |
| | | <el-button type="primary" @click="$refs.operaYwWorkorderWindow.open('新建工单')">新增工单</el-button> |
| | | </div> |
| | | <el-table |
| | | :data="tableData" |
| | | border |
| | | style="width: 100%"> |
| | | :data="tableData" |
| | | border |
| | | v-loading="loading" |
| | | style="width: 100%"> |
| | | <el-table-column |
| | | prop="date" |
| | | label="工单分类"> |
| | | prop="categoryName" |
| | | label="工单分类"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="name" |
| | | label="报修区域"> |
| | | label="报修区域"> |
| | | <template v-slot="scope"> |
| | | <span>{{ scope.row.buildingName }} / {{ scope.row.areaType == 0 ? scope.row.roomNum : scope.row.floorName |
| | | }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="address" |
| | | label="上报人"> |
| | | prop="creatorName" |
| | | label="上报人"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="address" |
| | | label="上报时间"> |
| | | prop="createDate" |
| | | label="上报时间"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="address" |
| | | label="处理人"> |
| | | prop="dealUserName" |
| | | label="处理人"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="address" |
| | | label="工单状态"> |
| | | label="工单状态"> |
| | | <template slot-scope="{row}"> |
| | | <span v-if="row.dealStatus === 0">待指派</span> |
| | | <span v-if="row.dealStatus === 1">已指派</span> |
| | | <span v-if="row.dealStatus === 2">已处理</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="address" |
| | | label="操作"> |
| | | label="操作"> |
| | | <template slot-scope="{row}"> |
| | | <el-button type="text" @click="handleDetail(row)">查看详情</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <div class="xm_table_f"> |
| | | <el-pagination |
| | | @size-change="handleSizeChange" |
| | | @current-change="handleCurrentChange" |
| | | :current-page="page" |
| | | :page-sizes="[10, 20, 30, 40]" |
| | | :page-size="pageTotal" |
| | | layout="total, sizes, prev, pager, next, jumper" |
| | | :total="total"> |
| | | @size-change="handleSizeChange" |
| | | @current-change="handleCurrentChange" |
| | | :current-page="page" |
| | | :page-sizes="[10, 20, 30, 40]" |
| | | :page-size="pageTotal" |
| | | layout="total, sizes, prev, pager, next, jumper" |
| | | :total="total"> |
| | | </el-pagination> |
| | | </div> |
| | | </div> |
| | |
| | | <div class="xm_table"> |
| | | <div class="xm_table_search"> |
| | | <div class="xm_table_search_left"> |
| | | <el-input v-model="input" placeholder="请输入设备名称/编码" style="width: 200px; margin-right: 15px;"></el-input> |
| | | <el-select v-model="value" style="width: 200px; margin-right: 15px;" placeholder="设备状态"> |
| | | <el-option |
| | | v-for="item in options" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value"> |
| | | </el-option> |
| | | <el-input v-model="form.name" placeholder="请输入设备名称/编码" style="width: 200px; margin-right: 15px;"></el-input> |
| | | <el-select v-model="form.status" style="width: 150px; margin-right: 15px;" placeholder="设备状态"> |
| | | <el-option label="正常" :value="0"></el-option> |
| | | <el-option label="损坏" :value="1"></el-option> |
| | | <el-option label="报废" :value="2"></el-option> |
| | | </el-select> |
| | | <el-button type="primary">查询</el-button> |
| | | <el-button>清空</el-button> |
| | | <el-button type="primary" @click="getDevicePage">查询</el-button> |
| | | <el-button @click="clear">清空</el-button> |
| | | </div> |
| | | <el-button type="primary">新增</el-button> |
| | | <el-button type="primary" @click="handleEdit">新增</el-button> |
| | | </div> |
| | | <el-table |
| | | :data="tableData" |
| | | border |
| | | style="width: 100%"> |
| | | :data="tableData" |
| | | border |
| | | v-loading="loading" |
| | | style="width: 100%"> |
| | | <el-table-column |
| | | prop="date" |
| | | label="工单分类"> |
| | | prop="code" |
| | | label="设备编码"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="name" |
| | | label="报修区域"> |
| | | prop="name" |
| | | label="设备名称"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="address" |
| | | label="上报人"> |
| | | prop="categoryName" |
| | | label="设备分类"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="address" |
| | | label="上报时间"> |
| | | prop="modelNo" |
| | | label="设备型号"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="address" |
| | | label="处理人"> |
| | | prop="realName" |
| | | label="设备管理员"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="address" |
| | | label="工单状态"> |
| | | prop="supplier" |
| | | label="设备供应商"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="address" |
| | | label="操作"> |
| | | label="设备状态"> |
| | | <template slot-scope="{row}"> |
| | | <span v-if="row.status === 0">正常</span> |
| | | <span v-if="row.status === 1">损坏</span> |
| | | <span v-if="row.status === 2">报废</span> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <div class="xm_table_f"> |
| | | <el-pagination |
| | | @size-change="handleSizeChange" |
| | | @current-change="handleCurrentChange" |
| | | :current-page="page" |
| | | :page-sizes="[10, 20, 30, 40]" |
| | | :page-size="pageTotal" |
| | | layout="total, sizes, prev, pager, next, jumper" |
| | | :total="total"> |
| | | @size-change="handleSizeChange" |
| | | @current-change="handleCurrentChange" |
| | | :current-page="page" |
| | | :page-sizes="[10, 20, 30, 40]" |
| | | :page-size="pageTotal" |
| | | layout="total, sizes, prev, pager, next, jumper" |
| | | :total="total"> |
| | | </el-pagination> |
| | | </div> |
| | | </div> |
| | |
| | | <div class="xm_table"> |
| | | <div class="xm_table_search"> |
| | | <div class="xm_table_search_left"> |
| | | <el-input v-model="input" placeholder="请输入资产名称/编码" style="width: 200px; margin-right: 15px;"></el-input> |
| | | <el-input v-model="form.code" placeholder="请输入资产名称/编码" style="width: 200px; margin-right: 15px;"></el-input> |
| | | <el-select v-model="value" style="width: 200px; margin-right: 15px;" placeholder="资产分类"> |
| | | <el-option |
| | | v-for="item in options" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value"> |
| | | v-for="item in options" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | | <el-button type="primary">查询</el-button> |
| | | <el-button>清空</el-button> |
| | | <el-button type="primary" @click="getPropertyLists">查询</el-button> |
| | | <el-button @click="clear">清空</el-button> |
| | | </div> |
| | | <el-button type="primary">新增</el-button> |
| | | <el-button type="primary" @click="$refs.newMaterial.open('新建物料')">新增</el-button> |
| | | </div> |
| | | <el-table |
| | | :data="tableData" |
| | | border |
| | | style="width: 100%"> |
| | | :data="tableData" |
| | | border |
| | | v-loading="loading" |
| | | style="width: 100%"> |
| | | <el-table-column |
| | | prop="date" |
| | | label="资产编码"> |
| | | prop="code" |
| | | label="资产编码"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="name" |
| | | label="资产名称"> |
| | | prop="name" |
| | | label="资产名称"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="address" |
| | | label="条码"> |
| | | prop="qrcode" |
| | | label="条码"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="address" |
| | | label="品牌"> |
| | | prop="brand" |
| | | label="品牌"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="address" |
| | | label="规格型号"> |
| | | prop="attr" |
| | | label="规格型号"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="address" |
| | | label="单位"> |
| | | prop="unitName" |
| | | label="单位"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="address" |
| | | label="库存数量"> |
| | | label="库存数量"> |
| | | <template v-slot="scope"> |
| | | <span>{{ scope.row.maxStock }} ~ {{ scope.row.minStock }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <div class="xm_table_f"> |
| | | <el-pagination |
| | | @size-change="handleSizeChange" |
| | | @current-change="handleCurrentChange" |
| | | :current-page="page" |
| | | :page-sizes="[10, 20, 30, 40]" |
| | | :page-size="pageTotal" |
| | | layout="total, sizes, prev, pager, next, jumper" |
| | | :total="total"> |
| | | @size-change="handleSizeChange" |
| | | @current-change="handleCurrentChange" |
| | | :current-page="page" |
| | | :page-sizes="[10, 20, 30, 40]" |
| | | :page-size="pageTotal" |
| | | layout="total, sizes, prev, pager, next, jumper" |
| | | :total="total"> |
| | | </el-pagination> |
| | | </div> |
| | | </div> |
| | |
| | | </el-tabs> |
| | | </div> |
| | | </div> |
| | | <!-- 合同详情 --> |
| | | <ContractDetail ref="ContractDetailRef" /> |
| | | <!-- 工单详情 --> |
| | | <Detail v-if="showDetail" ref="DetailRef" @close="showDetail = false" /> |
| | | <!-- 新建工单 --> |
| | | <OperaYwWorkorderWindow ref="operaYwWorkorderWindow" @success="getFetchList" /> |
| | | <!-- 新建设备 --> |
| | | <Edit v-if="showEdit1" ref="EditRef" @success="getDevicePage" @close="showEdit1 = false" /> |
| | | <!-- 新建资产 --> |
| | | <newMaterial ref="newMaterial" @success="getPropertyLists" /> |
| | | </GlobalWindow> |
| | | </template> |
| | | |
| | | <script> |
| | | import BaseOpera from '@/components/base/BaseOpera' |
| | | import GlobalWindow from '@/components/common/GlobalWindow' |
| | | import newMaterial from '../../stock/components/newMaterial' |
| | | import * as echarts from 'echarts'; |
| | | import { detailById } from '@/api/project/ywRoom' |
| | | import { fetchList as TenantContract } from '@/api/contract' |
| | | import { getDataVO, fetchList } from '@/api/workorder/ywWorkorder' |
| | | import ContractDetail from '../../contract/components/contractDetail' |
| | | import { fetchList as getCateList } from '@/api/business/category.js' |
| | | import { fetchList as getPropertyList } from '@/api/ywMaterial' |
| | | import { getDeviceStatus, getDeviceCateData, fetchList as devicePage } from '@/api/Inspection/device' |
| | | import Detail from '../../workorder/components/detail' |
| | | import OperaYwWorkorderWindow from '../../workorder/components/OperaYwWorkorderWindow' |
| | | import Edit from '../../operation/components/deviceEdit' |
| | | export default { |
| | | name: "houseDetails", |
| | | extends: BaseOpera, |
| | | components: { GlobalWindow }, |
| | | components: { GlobalWindow, ContractDetail, Detail, OperaYwWorkorderWindow, Edit, newMaterial }, |
| | | data() { |
| | | return { |
| | | info: {}, |
| | | houseId: '', |
| | | propsName: '', |
| | | activeName: 'houseinfo', |
| | | total: 0, |
| | | pageTotal: 10, |
| | | page: 1, |
| | | tableData: [] |
| | | numObj: {}, |
| | | tableData: [], |
| | | loading: false, |
| | | form: { |
| | | code: '', |
| | | areaIds: [], |
| | | cateId: '', |
| | | status: '', |
| | | name: '' |
| | | }, |
| | | cateList: [], |
| | | categaryList: [], |
| | | deviceList: [], |
| | | showDetail: false, |
| | | showEdit1: false |
| | | } |
| | | }, |
| | | methods: { |
| | | open (title, target) { |
| | | open (title, id) { |
| | | this.title = title |
| | | this.visible = true |
| | | this.houseId = id |
| | | detailById(id) |
| | | .then(res => { |
| | | this.info = res |
| | | this.visible = true |
| | | }) |
| | | }, |
| | | handleEdit(row) { |
| | | this.showEdit1 = true |
| | | this.$nextTick(() => { |
| | | this.reand() |
| | | this.reand1() |
| | | this.$refs.EditRef.isShowModal = true |
| | | }) |
| | | }, |
| | | handleDetail(row) { |
| | | this.showDetail = true |
| | | this.$nextTick(() => { |
| | | this.$refs.DetailRef.visible = true |
| | | this.$refs.DetailRef.id = row.id |
| | | this.$refs.DetailRef.getDetail() |
| | | }) |
| | | }, |
| | | // 获取设备状态 |
| | | getDevice() { |
| | | getDeviceStatus({ roomId: this.houseId }) |
| | | .then(res => { |
| | | this.$nextTick(() => { |
| | | this.deviceList = [ |
| | | { value: res.workAmount || 0, name: '正常' }, |
| | | { value: res.exceptionAmount || 0, name: '异常' }, |
| | | { value: res.errAmount || 0, name: '报废' } |
| | | ] |
| | | this.reand() |
| | | }) |
| | | }) |
| | | }, |
| | | // 设备数量分布统计 |
| | | getDeviceCateDatas() { |
| | | getDeviceCateData({ |
| | | roomId: this.houseId |
| | | }).then(res => { |
| | | this.categaryList = res |
| | | this.$nextTick(() => { |
| | | this.reand1() |
| | | }) |
| | | }) |
| | | }, |
| | | // 获取设备分页 |
| | | getDevicePage() { |
| | | this.loading = true |
| | | devicePage({ |
| | | capacity: this.pageTotal, |
| | | page: this.page, |
| | | model: { |
| | | roomId: this.houseId, |
| | | status: this.form.status, |
| | | name: this.form.name |
| | | } |
| | | }).then(res => { |
| | | this.tableData = res.records |
| | | this.total = res.total |
| | | }).finally(() => { |
| | | this.loading = false |
| | | }) |
| | | }, |
| | | // 获取资产列表 |
| | | getPropertyLists() { |
| | | this.loading = true |
| | | getPropertyList({ |
| | | capacity: this.pageTotal, |
| | | page: this.page, |
| | | model: { |
| | | roomId: this.houseId, |
| | | name: this.form.name |
| | | } |
| | | }).then(res => { |
| | | this.tableData = res.records |
| | | this.total = res.total |
| | | }).finally(() => { |
| | | this.loading = false |
| | | }) |
| | | }, |
| | | getCate() { |
| | | getCateList({ |
| | | model: { type: 3 }, |
| | | capacity: 1000, |
| | | page: 1, |
| | | }).then(res => { |
| | | this.cateList = res.records || [] |
| | | }) |
| | | }, |
| | | changeSel(e) { |
| | | if (e && e.length == 2) { |
| | | this.$set(this.form, 'cateId', e[1]) |
| | | } else { |
| | | this.$set(this.form, 'cateId', '') |
| | | } |
| | | }, |
| | | clear() { |
| | | this.page = 1 |
| | | this.form.status = '' |
| | | this.form.areaIds = [] |
| | | this.form.cateId = '' |
| | | this.form.name = '' |
| | | if (this.propsName === 'project') { |
| | | this.getTenantContract() |
| | | } else if (this.propsName === 'second') { |
| | | this.getFetchList() |
| | | } else if (this.propsName === 'third') { |
| | | this.getDevicePage() |
| | | } else if (this.propsName === 'fourth') { |
| | | this.getPropertyLists() |
| | | } |
| | | }, |
| | | // 获取工单数 |
| | | getDataVOs() { |
| | | getDataVO({ |
| | | queryId: this.houseId, |
| | | queryType: 3 |
| | | }).then(res => { |
| | | this.numObj = res |
| | | }) |
| | | }, |
| | | // 获取工单列表 |
| | | getFetchList() { |
| | | this.loading = true |
| | | fetchList({ |
| | | capacity: 10, |
| | | page: 1, |
| | | model: { |
| | | roomId: this.houseId, |
| | | status: this.form.status, |
| | | cateId: this.form.cateId |
| | | } |
| | | }).then(res => { |
| | | this.tableData = res.records |
| | | this.total = res.total |
| | | }).finally(() => { |
| | | this.loading = false |
| | | }) |
| | | }, |
| | | // 获取合同分页 |
| | | getTenantContract() { |
| | | this.loading = true |
| | | TenantContract({ |
| | | capacity: this.pageTotal, |
| | | page: this.page, |
| | | model: { |
| | | roomIds: [this.houseId], |
| | | code: this.form.code |
| | | } |
| | | }).then(res => { |
| | | this.tableData = res.records |
| | | this.total = res.total |
| | | }).finally(() => { |
| | | this.loading = false |
| | | }) |
| | | }, |
| | | reand() { |
| | |
| | | var myChart = echarts.init(chartDom); |
| | | var option; |
| | | option = { |
| | | title: { |
| | | text: '设备状态' |
| | | }, |
| | | tooltip: { |
| | | trigger: 'item' |
| | | }, |
| | | legend: { |
| | | top: '5%', |
| | | left: 'center' |
| | | left: 'right', |
| | | top: 'middle', |
| | | width: '80' |
| | | }, |
| | | series: [ |
| | | { |
| | | name: 'Access From', |
| | | name: '设备状态', |
| | | type: 'pie', |
| | | radius: ['40%', '80%'], |
| | | avoidLabelOverlap: false, |
| | | label: { |
| | | show: false, |
| | | position: 'center' |
| | | show: true, |
| | | position: 'center', |
| | | fontWeight: 'bold', |
| | | fontSize: 22 |
| | | }, |
| | | emphasis: { |
| | | label: { |
| | | show: true, |
| | | fontSize: 40, |
| | | fontWeight: 'bold' |
| | | } |
| | | }, |
| | | labelLine: { |
| | | show: false |
| | | }, |
| | | data: [ |
| | | { value: 1048, name: '正常' }, |
| | | { value: 735, name: '异常' }, |
| | | { value: 580, name: '报废' } |
| | | ] |
| | | data: this.deviceList |
| | | } |
| | | ] |
| | | }; |
| | |
| | | var chartDom = document.getElementById('chat2'); |
| | | var myChart = echarts.init(chartDom); |
| | | var option; |
| | | // There should not be negative values in rawData |
| | | const rawData = [ |
| | | [100, 302, 301, 334, 390, 330, 320], |
| | | [320, 132, 101, 134, 90, 230, 210], |
| | |
| | | } |
| | | totalData.push(sum); |
| | | } |
| | | const grid = { |
| | | left: 100, |
| | | right: 100, |
| | | top: 50, |
| | | bottom: 50 |
| | | }; |
| | | const series = [ |
| | | 'Direct', |
| | | 'Mail Ad', |
| | |
| | | type: 'bar', |
| | | stack: 'total', |
| | | barWidth: '60%', |
| | | label: { |
| | | show: true, |
| | | formatter: (params) => Math.round(params.value * 1000) / 10 + '%' |
| | | }, |
| | | data: rawData[sid].map((d, did) => |
| | | totalData[did] <= 0 ? 0 : d / totalData[did] |
| | | ) |
| | | }; |
| | | }); |
| | | let seriesArr = this.categaryList.map(item => { |
| | | return { |
| | | name: item.cateName, |
| | | type: 'bar', |
| | | stack: 'total', |
| | | barWidth: '60%', |
| | | data: item.ywDeviceCateDataVOList.map((child) => |
| | | child.deviceAmount |
| | | ) |
| | | } |
| | | }) |
| | | let xAxisData = this.categaryList.map(item => item.cateName) |
| | | console.log(series) |
| | | console.log(seriesArr) |
| | | console.log(xAxisData) |
| | | option = { |
| | | legend: { |
| | | selectedMode: false |
| | | title: { |
| | | text: '设备数量分类统计' |
| | | }, |
| | | grid, |
| | | grid: { |
| | | left: 50, |
| | | right: 50, |
| | | top: 50, |
| | | bottom: 50 |
| | | }, |
| | | tooltip: { |
| | | trigger: 'axis', |
| | | axisPointer: { |
| | | type: 'shadow' |
| | | } |
| | | }, |
| | | yAxis: { |
| | | type: 'value' |
| | | }, |
| | | xAxis: { |
| | | type: 'category', |
| | | data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] |
| | | data: xAxisData |
| | | }, |
| | | series |
| | | series: seriesArr |
| | | }; |
| | | |
| | | option && myChart.setOption(option); |
| | | }, |
| | | handleClick(tab, event) { |
| | | console.log(tab, event); |
| | | handleClick(tab) { |
| | | this.page = 1 |
| | | this.pageTotal = 10 |
| | | this.tableData = [] |
| | | this.total = 0 |
| | | this.form.code = '' |
| | | this.form.areaIds = [] |
| | | this.form.cateId = '' |
| | | this.form.status = '' |
| | | this.form.name = '' |
| | | this.propsName = tab._props.name |
| | | if (tab._props.name === 'project') { |
| | | this.getTenantContract() |
| | | } else if (tab._props.name === 'second') { |
| | | this.getDataVOs() |
| | | this.getCate() |
| | | this.getFetchList() |
| | | } else if (tab._props.name === 'third') { |
| | | this.getDevice() |
| | | this.getDeviceCateDatas() |
| | | this.getDevicePage() |
| | | } else if (this.propsName === 'fourth') { |
| | | this.getPropertyLists() |
| | | } |
| | | }, |
| | | handleCurrentChange(page) { |
| | | this.page = page |
| | | if (this.propsName === 'project') { |
| | | this.getTenantContract() |
| | | } else if (this.propsName === 'second') { |
| | | this.getFetchList() |
| | | } else if (tab._props.name === 'third') { |
| | | this.getDevicePage() |
| | | } else if (this.propsName === 'fourth') { |
| | | this.getPropertyLists() |
| | | } |
| | | }, |
| | | handleSizeChange(pageTotal) { |
| | | this.pageTotal = pageTotal |
| | | }, |
| | | if (this.propsName === 'project') { |
| | | this.getTenantContract() |
| | | } else if (this.propsName === 'second') { |
| | | this.getFetchList() |
| | | } else if (tab._props.name === 'third') { |
| | | this.getDevicePage() |
| | | } else if (this.propsName === 'fourth') { |
| | | this.getPropertyLists() |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | |
| | | width: 100%; |
| | | padding: 20px; |
| | | box-sizing: border-box; |
| | | font-size: 16px; |
| | | font-weight: bold; |
| | | color: black; |
| | | background: #ffffff; |
| | | span { |
| | | font-size: 16px; |
| | | font-weight: bold; |
| | | color: black; |
| | | background: #ffffff; |
| | | margin-right: 10px; |
| | | } |
| | | } |
| | | .right_cate { |
| | | width: 100%; |
| | |
| | | <el-table-column v-if="containPermissions(['business:ywroom:update', 'business:ywroom:delete'])" label="操作" |
| | | min-width="140" fixed="right"> |
| | | <template slot-scope="{row}"> |
| | | <el-button type="text" @click="$refs.houseDetails.open('房源详情')">查看详情</el-button> |
| | | <el-button type="text" @click="$refs.houseDetails.open('房源详情', row.id)">查看详情</el-button> |
| | | <el-button type="text" @click="editClick(row)" icon="el-icon-edit" |
| | | v-permissions="['business:ywroom:update']">编辑</el-button> |
| | | <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" |
| | |
| | | @confirm="confirm"> |
| | | <el-form :model="form" ref="form" :rules="rules"> |
| | | <el-form-item label="位置类型" prop="areaType"> |
| | | <el-select v-model="form.areaType"> |
| | | <el-option label="室内维修" value="0"></el-option> |
| | | <el-option label="公共维修" value="1"></el-option> |
| | | <el-select v-model="form.areaType" @change="changeType"> |
| | | <el-option label="室内维修" :value="0"></el-option> |
| | | <el-option label="公共维修" :value="1"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="选择项目" prop="projectId"> |
| | | <el-select v-model="form.projectId" clearable filterable @change="getBuild"> |
| | | <el-option v-for="item in projectList" :label="item.name" :value="item.id" /> |
| | | </el-select> |
| | | |
| | | <el-form-item label="报修区域" prop="rooms"> |
| | | <el-cascader |
| | | v-model="form.rooms" |
| | | :disabled="![0,1].includes(form.areaType)" |
| | | ref="cascader" |
| | | @change="getHouseVal" |
| | | placeholder="请选择报修区域" |
| | | :options="form.areaType === 0 ? houseList : houseList1" |
| | | :props="{ |
| | | label: 'name', |
| | | value: 'id', |
| | | children: 'projectDataVOList' |
| | | }" /> |
| | | </el-form-item> |
| | | <el-form-item label="选择楼宇" prop="buildingId"> |
| | | <el-select v-model="form.buildingId" clearable filterable @change="changeBuild"> |
| | | <el-option v-for="item in buildList" :label="item.name" :value="item.id" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | |
| | | <!-- <el-form-item label="选择项目" prop="projectId">--> |
| | | <!-- <el-select v-model="form.projectId" clearable filterable @change="getBuild">--> |
| | | <!-- <el-option v-for="item in projectList" :label="item.name" :value="item.id" />--> |
| | | <!-- </el-select>--> |
| | | <!-- </el-form-item>--> |
| | | <!-- <el-form-item label="选择楼宇" prop="buildingId">--> |
| | | <!-- <el-select v-model="form.buildingId" clearable filterable @change="changeBuild">--> |
| | | <!-- <el-option v-for="item in buildList" :label="item.name" :value="item.id" />--> |
| | | <!-- </el-select>--> |
| | | <!-- </el-form-item>--> |
| | | |
| | | <el-form-item v-if="form.areaType == 1" label="选择楼层" prop="floorId"> |
| | | <el-select v-model="form.floorId"> |
| | | <el-option v-for="item in levelList" clearable filterable :label="item.name" :value="item.id" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item v-if="form.areaType == 0" label="选择房间" prop="roomId"> |
| | | <el-select v-model="form.roomId" clearable filterable> |
| | | <el-option v-for="item in roomList" :label="item.roomNum" :value="item.id" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <!-- <el-form-item v-if="form.areaType == 1" label="选择楼层" prop="floorId">--> |
| | | <!-- <el-select v-model="form.floorId">--> |
| | | <!-- <el-option v-for="item in levelList" clearable filterable :label="item.name" :value="item.id" />--> |
| | | <!-- </el-select>--> |
| | | <!-- </el-form-item>--> |
| | | <!-- <el-form-item v-if="form.areaType == 0" label="选择房间" prop="roomId">--> |
| | | <!-- <el-select v-model="form.roomId" clearable filterable>--> |
| | | <!-- <el-option v-for="item in roomList" :label="item.roomNum" :value="item.id" />--> |
| | | <!-- </el-select>--> |
| | | <!-- </el-form-item>--> |
| | | <el-form-item label="工单分类" prop="cateId"> |
| | | <el-cascader v-model="form.areaIds" @change="changeSel" placeholder="请选择分类" clearable :options="cateList" |
| | | :props="{ |
| | |
| | | <el-input type="textarea" :rows="4" v-model="form.content" placeholder="请输入" :maxlength="300" v-trim /> |
| | | </el-form-item> |
| | | </el-form> |
| | | <!-- --> |
| | | |
| | | </GlobalWindow> |
| | | </template> |
| | | |
| | |
| | | import BaseOpera from '@/components/base/BaseOpera' |
| | | import GlobalWindow from '@/components/common/GlobalWindow' |
| | | import { Loading, Message } from 'element-ui' |
| | | import { getProjectList } from '@/api/project/ywProject' |
| | | import { getProjectList, tree } from '@/api/project/ywProject' |
| | | import { getBuildList } from '@/api/project/ywBuilding' |
| | | import { getRoomList } from '@/api/project/ywRoom' |
| | | import { getFloorList } from '@/api/project/yeFloor' |
| | |
| | | // 表单数据 |
| | | form: { |
| | | id: null, |
| | | |
| | | rooms: [], |
| | | |
| | | editDate: '', |
| | | floor: '', |
| | | title: '', |
| | |
| | | userId: '', |
| | | submitDate: '', |
| | | cateId: '', |
| | | areaType: '0', |
| | | areaType: 0, |
| | | code: '', |
| | | dealStatus: '', |
| | | dispatchUserId: '', |
| | |
| | | dealInfo: '', |
| | | dealType: '' |
| | | }, |
| | | houseList: [], |
| | | houseList1: [], |
| | | loadingInstance: null, |
| | | // 验证规则 |
| | | rules, |
| | |
| | | this.visible = true |
| | | this.getProject() |
| | | this.getCate() |
| | | // 新建 |
| | | this.getHouseTree() |
| | | // 新建 |
| | | if (target == null) { |
| | | this.form = { |
| | | id: null, |
| | |
| | | userId: '', |
| | | submitDate: '', |
| | | cateId: '', |
| | | areaType: '0', |
| | | areaType: 0, |
| | | code: '', |
| | | dealStatus: '', |
| | | dispatchUserId: '', |
| | |
| | | this.form[key] = target[key] |
| | | } |
| | | }) |
| | | }, |
| | | changeType(e) { |
| | | this.form.rooms = [] |
| | | this.form.projectId = '' |
| | | this.form.buildingId = '' |
| | | this.form.levelList = '' |
| | | this.form.roomId = '' |
| | | }, |
| | | getHouseVal(e) { |
| | | if (this.form.areaType === 0) { |
| | | this.form.projectId = e[0] |
| | | this.form.buildingId = e[1] |
| | | this.form.floorId = e[2] |
| | | this.form.roomId = e[3] |
| | | } else { |
| | | this.form.projectId = e[0] |
| | | this.form.buildingId = e[1] |
| | | this.form.floorId = e[2] |
| | | } |
| | | }, |
| | | getHouseTree() { |
| | | tree({}).then(res => { |
| | | let arr1 = JSON.parse(JSON.stringify(res)) |
| | | let arr2 = JSON.parse(JSON.stringify(res)) |
| | | this.addParamToArray(arr1) |
| | | this.addParamToArray1(arr2) |
| | | this.houseList = arr1 |
| | | this.houseList1 = arr2 |
| | | }) |
| | | }, |
| | | addParamToArray(arr) { |
| | | for (let i = 0; i < arr.length; i++) { |
| | | const currentItem = arr[i].projectDataVOList |
| | | if (currentItem && currentItem.length >= 0) { |
| | | currentItem.forEach(item => { |
| | | if (item.lv === 3) { |
| | | delete item.projectDataVOList |
| | | } |
| | | }) |
| | | } |
| | | if (currentItem && currentItem.length > 0) { |
| | | this.addParamToArray(currentItem) |
| | | } |
| | | } |
| | | }, |
| | | addParamToArray1(arr) { |
| | | for (let i = 0; i < arr.length; i++) { |
| | | const currentItem = arr[i].projectDataVOList |
| | | if (currentItem && currentItem.length >= 0) { |
| | | currentItem.forEach(item => { |
| | | if (item.lv === 2) { |
| | | delete item.projectDataVOList |
| | | } |
| | | }) |
| | | } |
| | | if (currentItem && currentItem.length > 0) { |
| | | this.addParamToArray1(currentItem) |
| | | } |
| | | } |
| | | }, |
| | | close() { |
| | | this.visible = false |
| | |
| | | } |
| | | } |
| | | } |
| | | </style> |
| | | </style> |
| | |
| | | <template> |
| | | <GlobalWindow width="960px" title="工单详情" :visible.sync="visible" :confirm-working="isWorking" @close="close" |
| | | <GlobalWindow width="100%" title="工单详情" :visible.sync="visible" :confirm-working="isWorking" @close="close" |
| | | @confirm="confirm"> |
| | | <div class="main"> |
| | | <div class="title"> |
| | |
| | | <div class="status gray" v-if="info.dealStatus == 2">已处理</div> |
| | | </div> |
| | | </div> |
| | | <el-button>查看问题上报</el-button> |
| | | <el-button v-if="info.origin === 1" @click="openWT">查看问题上报</el-button> |
| | | </div> |
| | | <div class="main_content"> |
| | | <div class="list"> |
| | |
| | | <div class="item"> |
| | | <div class="la">工单分类</div> |
| | | <div class="val">{{ info.categoryName }}</div> |
| | | </div> |
| | | <div class="item"> |
| | | <div class="la">来源</div> |
| | | <div class="val" v-if="info.origin === 0">自建</div> |
| | | <div class="val" v-if="info.origin === 1">问题转工单</div> |
| | | </div> |
| | | <div class="item"> |
| | | <div class="la">上报人</div> |
| | |
| | | </template> |
| | | </el-form> |
| | | </div> |
| | | <!-- 问题上报详情 --> |
| | | <problemReportingDetails ref="problemReportingDetails" /> |
| | | </GlobalWindow> |
| | | </template> |
| | | |
| | | <script> |
| | | import GlobalWindow from '@/components/common/GlobalWindow' |
| | | import BaseOpera from '@/components/base/BaseOpera' |
| | | import problemReportingDetails from './problemReportingDetails' |
| | | import { detailById, dispatchOrder, dealOrder } from '@/api/workorder/ywWorkorder' |
| | | import { getByWorkorderId } from '@/api/ywProblem' |
| | | import { getUserList } from '@/api/system/user' |
| | | import { Message, Loading } from 'element-ui' |
| | | import dayjs from 'dayjs' |
| | | export default { |
| | | components: { |
| | | GlobalWindow |
| | | GlobalWindow, |
| | | problemReportingDetails |
| | | }, |
| | | extends: BaseOpera, |
| | | data() { |
| | |
| | | this.getStaff() |
| | | }, |
| | | methods: { |
| | | openWT() { |
| | | getByWorkorderId(this.id) |
| | | .then(res => { |
| | | console.log(res) |
| | | this.$refs.problemReportingDetails.open('问题上报详情', res) |
| | | }) |
| | | }, |
| | | confirm() { |
| | | this.$refs['form'].validate((valid) => { |
| | | if (valid) { |
| | |
| | | <template> |
| | | <GlobalWindow |
| | | title="问题上报" |
| | | :showConfirm="false" |
| | | :title="title" |
| | | :visible.sync="visible" |
| | | width="100%"> |
| | | width="100%" |
| | | @confirm="confirm"> |
| | | <div class="wt"> |
| | | <div class="wt_head"> |
| | | <div class="wt_head_title"> |
| | | 问题详情 |
| | | <el-tag style="margin-left: 10px;">转工单</el-tag> |
| | | <div class="title">问题详情</div> |
| | | <el-tag style="margin-left: 10px;" v-if="info.dealStatus === 0">待处理</el-tag> |
| | | <el-tag style="margin-left: 10px;" v-if="info.dealStatus === 1">已转工单</el-tag> |
| | | <el-tag style="margin-left: 10px;" v-if="info.dealStatus === 2">已关闭</el-tag> |
| | | </div> |
| | | <el-button>查看工单</el-button> |
| | | </div> |
| | | <div class="wt_content"> |
| | | <div class="wt_content_row" style="width: 25%;"> |
| | | 位置:- |
| | | 位置:{{info.position || '-'}} |
| | | </div> |
| | | <div class="wt_content_row" style="width: 25%;"> |
| | | 上报人:张三丰 |
| | | 上报人:{{info.name || '-'}} |
| | | </div> |
| | | <div class="wt_content_row" style="width: 50%;"> |
| | | 上报人电话:180553847234 |
| | | 上报人电话:{{info.phone || '-'}} |
| | | </div> |
| | | <div class="wt_content_row" style="width: 100%; margin-top: 15px;"> |
| | | 上报时间:2024-11-21 12:00:23 |
| | | 上报时间:{{info.submitDate || '-'}} |
| | | </div> |
| | | <div class="wt_content_row" style="width: 100%; margin-top: 15px;"> |
| | | 问题描述:这是问题描述这是问题描述这是问题描述这是问题描述这是问题描述这是问题描述这是问题描述这是问题描述 |
| | | 问题描述:{{info.content || '-'}} |
| | | </div> |
| | | <div class="wt_content_row" style="width: 100%; margin-top: 15px;"> |
| | | <div class="wt_content_row" style="width: 100%; margin-top: 15px; margin-bottom: 20px;"> |
| | | <div class="wt_content_row_label">问题图片:</div> |
| | | <div class="wt_content_row_list"> |
| | | <div class="wt_content_row_list_img"> |
| | | <img src="" alt="" /> |
| | | <div class="wt_content_row_list" v-if="info.fileList && info.fileList.length >= 0"> |
| | | <div class="wt_content_row_list_img" v-for="(item, index) in info.fileList" :key="index"> |
| | | <el-image |
| | | style="width: 100px; height: 100px" |
| | | :src="item.fileurlFull" |
| | | :preview-src-list="info.fileList.map(item => item.fileurlFull)"> |
| | | </el-image> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <el-form :model="form" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm"> |
| | | <el-form-item label="处理方式" prop="resource"> |
| | | <el-radio-group v-model="form.resource"> |
| | | <el-radio :label="0">转工单</el-radio> |
| | | <el-radio :label="1">关闭问题</el-radio> |
| | | <el-form :model="form" :rules="rules" ref="form" label-width="100px" class="demo-ruleForm"> |
| | | <el-form-item label="处理方式" prop="dealStatus"> |
| | | <el-radio-group v-model="form.dealStatus"> |
| | | <el-radio :label="1">转工单</el-radio> |
| | | <el-radio :label="2">关闭问题</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | <div style="display: flex; align-items: center;"> |
| | | <el-form-item label="位置类型" prop="region"> |
| | | <el-select v-model="form.resource" placeholder="请选择位置类型"> |
| | | <el-option label="区域一" value="shanghai"></el-option> |
| | | <el-option label="区域二" value="beijing"></el-option> |
| | | </el-select> |
| | | <template v-if="form.dealStatus === 1"> |
| | | <div style="width: 100%; display: flex; align-items: center;"> |
| | | <el-form-item label="位置类型" prop="workOrderAreaType"> |
| | | <el-select v-model="form.workOrderAreaType" @change="changeType" placeholder="请选择位置类型"> |
| | | <el-option label="室内维修" :value="0"></el-option> |
| | | <el-option label="公共区域" :value="1"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="报修区域" prop="rooms"> |
| | | <el-cascader |
| | | v-model="form.rooms" |
| | | :disabled="![0,1].includes(form.workOrderAreaType)" |
| | | ref="cascader" |
| | | @change="getHouseVal" |
| | | placeholder="请选择报修区域" |
| | | :options="form.workOrderAreaType === 0 ? houseList : houseList1" |
| | | :props="{ |
| | | label: 'name', |
| | | value: 'id', |
| | | children: 'projectDataVOList' |
| | | }" /> |
| | | </el-form-item> |
| | | </div> |
| | | <div style="width: 100%; display: flex; align-items: center;"> |
| | | <el-form-item label="工单分类" prop="workOrderCateId"> |
| | | <el-cascader v-model="form.workOrderCateId" @change="changeSel" placeholder="请选择分类" clearable :options="cateList" |
| | | :props="{ |
| | | label: 'name', |
| | | value: 'id', |
| | | children: 'childCategoryList' |
| | | }"></el-cascader> |
| | | </el-form-item> |
| | | <el-form-item label="上门时间" prop="workOrderGetDate" v-if="form.workOrderAreaType === 0"> |
| | | <el-date-picker |
| | | v-model="form.workOrderGetDate" |
| | | type="datetime" |
| | | value-format="yyyy-MM-dd HH:mm:ss" |
| | | placeholder="选择上门时间"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </div> |
| | | <el-form-item label="描述" prop="dealInfo"> |
| | | <el-input |
| | | type="textarea" |
| | | :rows="5" |
| | | placeholder="请输入描述" |
| | | v-model="form.dealInfo"> |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item label="报修区域" prop="resource"> |
| | | <el-select v-model="form.resource" placeholder="请选择报修区域"> |
| | | <el-option label="区域一" value="shanghai"></el-option> |
| | | <el-option label="区域二" value="beijing"></el-option> |
| | | </el-select> |
| | | <el-form-item label="问题图片" prop="resource"> |
| | | <el-upload |
| | | :action="base" |
| | | :file-list="form.workOrderFileList" |
| | | accept=".png,.jpg,.jpeg,.PNG,.JPG" |
| | | :on-success="getFile" |
| | | :data="{ folder: 'YW_PROBLEM' }" |
| | | list-type="picture-card"> |
| | | <i class="el-icon-plus"></i> |
| | | </el-upload> |
| | | </el-form-item> |
| | | </div> |
| | | <div style="display: flex; align-items: center;"> |
| | | <el-form-item label="工单分类" prop="resource"> |
| | | <el-select v-model="form.resource" placeholder="请选择工单分类"> |
| | | <el-option label="区域一" value="shanghai"></el-option> |
| | | <el-option label="区域二" value="beijing"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="上门时间" prop="resource"> |
| | | <el-date-picker v-model="form.resource" type="date" placeholder="选择上门时间"></el-date-picker> |
| | | </el-form-item> |
| | | </div> |
| | | <el-form-item label="描述" prop="resource"> |
| | | </template> |
| | | <el-form-item label="关闭说明" prop="dealInfo" v-if="form.dealStatus === 2"> |
| | | <el-input |
| | | type="textarea" |
| | | :rows="5" |
| | | placeholder="请输入描述" |
| | | v-model="form.resource"> |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item label="问题图片" prop="resource"> |
| | | <el-upload |
| | | action="https://jsonplaceholder.typicode.com/posts/" |
| | | list-type="picture-card"> |
| | | <i class="el-icon-plus"></i> |
| | | </el-upload> |
| | | </el-form-item> |
| | | <el-form-item label="关闭问题" prop="resource"> |
| | | <el-input |
| | | type="textarea" |
| | | :rows="5" |
| | | maxlength="300" |
| | | placeholder="请输入关闭问题" |
| | | v-model="form.resource"> |
| | | v-model="form.dealInfo"> |
| | | </el-input> |
| | | </el-form-item> |
| | | </el-form> |
| | |
| | | <script> |
| | | import BaseOpera from '@/components/base/BaseOpera' |
| | | import GlobalWindow from '@/components/common/GlobalWindow' |
| | | import { fetchList as getCateList } from '@/api/business/category.js' |
| | | import { tree } from '@/api/project/ywProject' |
| | | import { editProblem } from '@/api/ywProblem' |
| | | export default { |
| | | name: "handleProblem", |
| | | extends: BaseOpera, |
| | |
| | | data() { |
| | | return { |
| | | info: {}, |
| | | cateList: [], |
| | | base: process.env.VUE_APP_API_PREFIX + '/visitsAdmin/cloudService/public/uploadBatch', |
| | | form: { |
| | | resource: 0 |
| | | dealStatus: 1, |
| | | workOrderAreaType: '', |
| | | workOrderCateId: '', |
| | | workOrderGetDate: '', |
| | | dealInfo: '', |
| | | workOrderFileList: [], |
| | | rooms: [], |
| | | |
| | | workOrderProjectId: '', |
| | | workOrderBuildId: '', |
| | | workOrderFloorId: '', |
| | | workOrderRoomId: '' |
| | | }, |
| | | houseList: [], |
| | | houseList1: [], |
| | | rules: { |
| | | resource: [ |
| | | { required: true, message: '请选择', trigger: 'change' } |
| | | dealStatus: [ |
| | | { required: true, message: '请选择', trigger: 'blur' } |
| | | ], |
| | | workOrderAreaType: [ |
| | | { required: true, message: '请选择', trigger: 'blur' } |
| | | ], |
| | | workOrderCateId: [ |
| | | { required: true, message: '请选择', trigger: 'blur' } |
| | | ], |
| | | dealInfo: [ |
| | | { required: true, message: '请输入', trigger: 'blur' } |
| | | ], |
| | | rooms: [ |
| | | { required: true, message: '请选择', trigger: 'blur' } |
| | | ] |
| | | } |
| | | } |
| | | }, |
| | | methods: { |
| | | |
| | | open (title, target) { |
| | | this.title = title |
| | | this.info = target |
| | | this.getCate() |
| | | this.getHouseTree() |
| | | this.visible = true |
| | | }, |
| | | getHouseVal(e) { |
| | | if (this.form.workOrderAreaType === 0) { |
| | | this.form.workOrderProjectId = e[0] |
| | | this.form.workOrderBuildId = e[1] |
| | | this.form.workOrderFloorId = e[2] |
| | | this.form.workOrderRoomId = e[3] |
| | | } else { |
| | | this.form.workOrderProjectId = e[0] |
| | | this.form.workOrderBuildId = e[1] |
| | | this.form.workOrderFloorId = e[2] |
| | | } |
| | | }, |
| | | changeType(e) { |
| | | this.form.rooms = [] |
| | | this.form.workOrderProjectId = '' |
| | | this.form.workOrderBuildId = '' |
| | | this.form.workOrderFloorId = '' |
| | | this.form.workOrderRoomId = '' |
| | | }, |
| | | getHouseTree() { |
| | | tree({}).then(res => { |
| | | let arr1 = JSON.parse(JSON.stringify(res)) |
| | | let arr2 = JSON.parse(JSON.stringify(res)) |
| | | this.addParamToArray(arr1) |
| | | this.addParamToArray1(arr2) |
| | | this.houseList = arr1 |
| | | this.houseList1 = arr2 |
| | | }) |
| | | }, |
| | | addParamToArray(arr) { |
| | | for (let i = 0; i < arr.length; i++) { |
| | | const currentItem = arr[i].projectDataVOList |
| | | if (currentItem && currentItem.length >= 0) { |
| | | currentItem.forEach(item => { |
| | | if (item.lv === 3) { |
| | | delete item.projectDataVOList |
| | | } |
| | | }) |
| | | } |
| | | if (currentItem && currentItem.length > 0) { |
| | | this.addParamToArray(currentItem) |
| | | } |
| | | } |
| | | }, |
| | | addParamToArray1(arr) { |
| | | for (let i = 0; i < arr.length; i++) { |
| | | const currentItem = arr[i].projectDataVOList |
| | | if (currentItem && currentItem.length >= 0) { |
| | | currentItem.forEach(item => { |
| | | if (item.lv === 2) { |
| | | delete item.projectDataVOList |
| | | } |
| | | }) |
| | | } |
| | | if (currentItem && currentItem.length > 0) { |
| | | this.addParamToArray1(currentItem) |
| | | } |
| | | } |
| | | }, |
| | | getFile(e) { |
| | | console.log(e) |
| | | this.form.workOrderFileList.push({ ...e }) |
| | | }, |
| | | changeSel(e) { |
| | | if (e && e.length == 2) { |
| | | this.$set(this.form, 'workOrderCateId', e[1]) |
| | | } else { |
| | | this.$set(this.form, 'workOrderCateId', '') |
| | | } |
| | | }, |
| | | getCate() { |
| | | getCateList({ |
| | | model: { type: 3 }, |
| | | capacity: 1000, |
| | | page: 1, |
| | | }).then(res => { |
| | | this.cateList = res.records || [] |
| | | }) |
| | | }, |
| | | confirm() { |
| | | this.$refs.form.validate((valid) => { |
| | | if (!valid) { |
| | | return |
| | | } |
| | | this.isWorking = true |
| | | editProblem({ |
| | | ...this.form, |
| | | id: this.info.id |
| | | }) |
| | | .then(() => { |
| | | this.visible = false |
| | | this.$tip.apiSuccess('操作成功') |
| | | this.$emit('success') |
| | | }) |
| | | .finally(() => { |
| | | this.isWorking = false |
| | | }) |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | @import '@/assets/style/variables.scss'; |
| | | .wt { |
| | | width: 100%; |
| | | display: flex; |
| | | flex-direction: column; |
| | | .wt_head { |
| | | width: 100%; |
| | | padding: 20px 0; |
| | | box-sizing: border-box; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | .wt_head_title { |
| | | display: flex; |
| | | align-items: center; |
| | | font-size: 16px; |
| | | color: black; |
| | | margin-right: 10px; |
| | | } |
| | | } |
| | | |
| | | .wt_content { |
| | | width: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | flex-wrap: wrap; |
| | | |
| | | .wt_content_row { |
| | | font-size: 14px; |
| | | color: rgb(51, 51, 51); |
| | | display: flex; |
| | | align-items: self-start; |
| | | |
| | | .wt_content_row_label { |
| | | flex-shrink: 0; |
| | | font-size: 14px; |
| | | color: rgb(51, 51, 51); |
| | | } |
| | | |
| | | .wt_content_row_list { |
| | | flex: 1; |
| | | display: flex; |
| | | align-items: center; |
| | | |
| | | .wt_content_row_list_img { |
| | | width: 106px; |
| | | height: 93px; |
| | |
| | | justify-content: center; |
| | | overflow-x: hidden; |
| | | margin-right: 15px; |
| | | |
| | | &:last-child { |
| | | margin: 0 !important; |
| | | } |
| | | |
| | | img { |
| | | width: 100%; |
| | | } |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | .wt_head { |
| | | width: 100%; |
| | | padding: 20px 0; |
| | | box-sizing: border-box; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | |
| | | .wt_head_title { |
| | | display: flex; |
| | | align-items: center; |
| | | font-size: 16px; |
| | | color: black; |
| | | margin-right: 10px; |
| | | |
| | | .title { |
| | | font-weight: 500; |
| | | font-size: 18px; |
| | | color: $primary-color; |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </style> |
| | |
| | | <template> |
| | | <GlobalWindow |
| | | title="问题上报详情" |
| | | :title="title" |
| | | :showConfirm="false" |
| | | :visible.sync="visible" |
| | | width="100%"> |
| | | <div class="wt"> |
| | | <div class="wt_head"> |
| | | <div class="wt_head_title"> |
| | | 问题详情 |
| | | <el-tag style="margin-left: 10px;">转工单</el-tag> |
| | | <div class="title">问题详情</div> |
| | | <el-tag style="margin-left: 10px;" v-if="form.dealStatus === 0">待处理</el-tag> |
| | | <el-tag style="margin-left: 10px;" v-if="form.dealStatus === 1">已转工单</el-tag> |
| | | <el-tag style="margin-left: 10px;" v-if="form.dealStatus === 2">已关闭</el-tag> |
| | | </div> |
| | | <el-button>查看工单</el-button> |
| | | <el-button @click="handleDetail" v-if="form.dealStatus === 1">查看工单</el-button> |
| | | </div> |
| | | <div class="wt_content"> |
| | | <div class="wt_content_row" style="width: 25%;"> |
| | | 位置:- |
| | | 位置:{{form.position || '-'}} |
| | | </div> |
| | | <div class="wt_content_row" style="width: 25%;"> |
| | | 上报人:张三丰 |
| | | 上报人:{{form.name || '-'}} |
| | | </div> |
| | | <div class="wt_content_row" style="width: 50%;"> |
| | | 上报人电话:180553847234 |
| | | 上报人电话:{{form.phone || '-'}} |
| | | </div> |
| | | <div class="wt_content_row" style="width: 100%; margin-top: 15px;"> |
| | | 上报时间:2024-11-21 12:00:23 |
| | | 上报时间:{{form.submitDate || '-'}} |
| | | </div> |
| | | <div class="wt_content_row" style="width: 100%; margin-top: 15px;"> |
| | | 问题描述:这是问题描述这是问题描述这是问题描述这是问题描述这是问题描述这是问题描述这是问题描述这是问题描述 |
| | | 问题描述:{{form.content || '-'}} |
| | | </div> |
| | | <div class="wt_content_row" style="width: 100%; margin-top: 15px;"> |
| | | <div class="wt_content_row_label">问题图片:</div> |
| | | <div class="wt_content_row_list"> |
| | | <div class="wt_content_row_list_img"> |
| | | <img src="" alt="" /> |
| | | <div class="wt_content_row_list" v-if="form.fileList && form.fileList.length >= 0"> |
| | | <div class="wt_content_row_list_img" v-for="(item, index) in form.fileList" :key="index"> |
| | | <el-image |
| | | style="width: 80px; height: 80px" |
| | | :src="item.fileurlFull" |
| | | :preview-src-list="form.fileList.map(item => item.fileurlFull)"> |
| | | </el-image> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="wt_head"> |
| | | <div class="wt_head_title"> |
| | | 处理结果 |
| | | <div class="title">问题详情</div> |
| | | </div> |
| | | </div> |
| | | <div class="wt_content"> |
| | | <div class="wt_content_row" style="width: 100%;"> |
| | | 处理人:张三-行政部 |
| | | 处理人:{{form.dealUserName}}-{{form.dealUserCompanyName}} |
| | | </div> |
| | | <div class="wt_content_row" style="width: 100%; margin-top: 15px;"> |
| | | 处理时间:2024-11-21 12:00:23 |
| | | 处理时间:{{form.dealDate || '-'}} |
| | | </div> |
| | | <div class="wt_content_row" style="width: 100%; margin-top: 15px;"> |
| | | 处理结果:转工单 |
| | | 处理结果:{{returnText(form.dealStatus)}} |
| | | </div> |
| | | <div class="wt_content_row" style="width: 100%; margin-top: 15px;"> |
| | | 关闭说明:说明说明说明说明说明说明说明说明说明说明说明说明说明说明说明说明说明 |
| | | <div class="wt_content_row" style="width: 100%; margin-top: 15px;" v-if="form.dealStatus === 2"> |
| | | 关闭说明:{{form.dealInfo}} |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <!-- 工单详情 --> |
| | | <Detail v-if="showDetail" ref="DetailRef" @close="showDetail = false" /> |
| | | </GlobalWindow> |
| | | </template> |
| | | |
| | | <script> |
| | | import BaseOpera from '@/components/base/BaseOpera' |
| | | import GlobalWindow from '@/components/common/GlobalWindow' |
| | | import Detail from './detail' |
| | | import { getById } from '@/api/ywProblem' |
| | | export default { |
| | | name: "problemReportingDetails", |
| | | extends: BaseOpera, |
| | | components: { GlobalWindow }, |
| | | components: { GlobalWindow, Detail }, |
| | | data() { |
| | | return { |
| | | info: {} |
| | | form: {}, |
| | | showDetail: false, |
| | | } |
| | | }, |
| | | methods: { |
| | | |
| | | open (title, target) { |
| | | this.title = title |
| | | this.form = target |
| | | getById(target.id) |
| | | .then(res => { |
| | | this.form = res |
| | | this.visible = true |
| | | }) |
| | | }, |
| | | handleDetail() { |
| | | this.showDetail = true |
| | | this.$nextTick(() => { |
| | | this.$refs.DetailRef.visible = true |
| | | this.$refs.DetailRef.id = this.form.workorderId |
| | | this.$refs.DetailRef.getDetail() |
| | | }) |
| | | }, |
| | | returnText(status) { |
| | | if (status === 0) { |
| | | return '待处理' |
| | | } else if (status === 1) { |
| | | return '已转工单' |
| | | } else if (status === 2) { |
| | | return '已关闭' |
| | | } else { |
| | | return '' |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | @import '@/assets/style/variables.scss'; |
| | | .title { |
| | | font-weight: 500; |
| | | font-size: 18px; |
| | | color: $primary-color; |
| | | } |
| | | </style> |
| | | <style lang="scss" scoped> |
| | | .wt { |
| | | width: 100%; |
| | |
| | | <TableLayout :permissions="['business:ywworkorder:query']"> |
| | | <!-- 搜索表单 --> |
| | | <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline> |
| | | <el-form-item label="描述" prop="roomNum"> |
| | | <el-input v-model="searchForm.roomNum" placeholder="请输入描述" @keypress.enter.native="search"></el-input> |
| | | <el-form-item label="描述" prop="content"> |
| | | <el-input v-model="searchForm.content" placeholder="请输入描述" @keypress.enter.native="search"></el-input> |
| | | </el-form-item> |
| | | <el-form-item prop="areaType" label="处理状态"> |
| | | <el-select v-model="searchForm.areaType"> |
| | | <el-option label="未处理" value="0"></el-option> |
| | | <el-option label="生成工单" value="1"></el-option> |
| | | <el-option label="关闭保修" value="1"></el-option> |
| | | <el-form-item prop="dealStatus" label="处理状态"> |
| | | <el-select v-model="searchForm.dealStatus"> |
| | | <el-option label="未处理" :value="0"></el-option> |
| | | <el-option label="已转工单" :value="1"></el-option> |
| | | <el-option label="已关闭" :value="2"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="上报时间"> |
| | |
| | | @change="changeSelDate" |
| | | format="yyyy-MM-dd" |
| | | value-format="yyyy-MM-dd" |
| | | type="daterange"></el-date-picker> |
| | | type="daterange" /> |
| | | </el-form-item> |
| | | <section> |
| | | <el-button type="primary" @click="search">搜索</el-button> |
| | |
| | | <el-table v-loading="isWorking.search" :data="tableData.list" stripe> |
| | | <el-table-column prop="remark" label="描述" min-width="70px"></el-table-column> |
| | | <el-table-column prop="position" label="位置" min-width="100px"></el-table-column> |
| | | <el-table-column prop="categoryName" label="现场图片" min-width="100px"></el-table-column> |
| | | <el-table-column label="现场图片" min-width="100px"> |
| | | <template slot-scope="{row}"> |
| | | {{row.fileList ? row.fileList.length : 0}}张 |
| | | </template>` |
| | | </el-table-column> |
| | | <el-table-column prop="name" label="上报人" min-width="80px"></el-table-column> |
| | | <el-table-column prop="phone" label="上报人电话" min-width="100px"></el-table-column> |
| | | <el-table-column prop="submitDate" label="上报时间" min-width="80px"></el-table-column> |
| | | <el-table-column label="处理状态" min-width="70px"> |
| | | <template slot-scope="{row}"> |
| | | <span v-if="row.dealStatus == 0">待指派</span> |
| | | <span v-if="row.dealStatus == 1">已指派</span> |
| | | <span v-if="row.dealStatus == 2">已处理</span> |
| | | <span v-if="row.dealStatus === 0">待处理</span> |
| | | <span v-if="row.dealStatus === 1">已转工单</span> |
| | | <span v-if="row.dealStatus === 2">已关闭</span> |
| | | </template>` |
| | | </el-table-column> |
| | | <el-table-column prop="dealUserName" label="处理人" min-width="80px"></el-table-column> |
| | |
| | | width="130" |
| | | fixed="right"> |
| | | <template slot-scope="{row}"> |
| | | <el-button type="text" @click="$refs.handleProblem.open()">处理</el-button> |
| | | <el-button type="text" @click="$refs.problemReportingDetails.open()">查看详情</el-button> |
| | | <el-button type="text" v-if="row.dealStatus === 0" @click="$refs.handleProblem.open('问题上报', row)">处理</el-button> |
| | | <el-button type="text" @click="$refs.problemReportingDetails.open('问题上报详情', row)">查看详情</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | |
| | | showDetail: false, |
| | | searchForm: { |
| | | selDate: [], |
| | | areaIds: '', |
| | | projectId: '', |
| | | buildingId: '', |
| | | cateId: '', |
| | | dealDateStart: '', |
| | | dealDateEnd: '', |
| | | content: '', |
| | | dealStatus: '' |
| | | }, |
| | | projectList: [], |
| | | buildList: [], |
| | |
| | | this.search() |
| | | }, |
| | | methods: { |
| | | |
| | | // 搜索框重置 |
| | | reset () { |
| | | this.$refs.searchForm.resetFields() |
| | | this.searchForm.dealDateStart = '' |
| | | this.searchForm.dealDateEnd = '' |
| | | this.search() |
| | | }, |
| | | changeSelDate(e) { |
| | | this.searchForm.dealDateStart = e[0] |
| | | this.searchForm.dealDateEnd = e[1] |
| | | } |
| | | } |
| | | } |
| | | </script> |