From a7b60ffdfa197c457a3118424337a95594d62239 Mon Sep 17 00:00:00 2001
From: liukangdong <898885815@qq.com>
Date: 星期三, 22 一月 2025 15:06:39 +0800
Subject: [PATCH] Merge branch '2.0.1' of http://139.186.142.91:10010/r/productDev/funingyunwei into 2.0.1
---
admin/src/api/workorder/ywWorkorder.js | 5
admin/src/views/project/components/houseDetails.vue | 641 +++++++++++++-----
admin/src/views/workorder/components/problemReportingDetails.vue | 89 ++
admin/src/api/ywProblem.js | 15
admin/src/views/workorder/components/detail.vue | 23
admin/src/views/workorder/components/handleProblem.vue | 338 +++++++--
admin/src/views/workorder/problemReporting.vue | 52 +
admin/src/views/project/housingList.vue | 2
admin/src/views/operation/components/deviceDetail.vue | 281 ++++++++
admin/src/api/system/common.js | 4
admin/src/api/Inspection/device.js | 10
admin/src/views/operation/components/deviceEdit.vue | 356 +++++++++-
admin/src/views/operation/device.vue | 2
admin/src/views/workorder/components/OperaYwWorkorderWindow.vue | 137 +++
14 files changed, 1,555 insertions(+), 400 deletions(-)
diff --git a/admin/src/api/Inspection/device.js b/admin/src/api/Inspection/device.js
index ec4923a..d565e90 100644
--- a/admin/src/api/Inspection/device.js
+++ b/admin/src/api/Inspection/device.js
@@ -42,3 +42,13 @@
}
})
}
+
+// 璁惧鐘舵�佺粺璁�
+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)
+}
diff --git a/admin/src/api/system/common.js b/admin/src/api/system/common.js
index 0e99bcf..d0b2af7 100644
--- a/admin/src/api/system/common.js
+++ b/admin/src/api/system/common.js
@@ -71,6 +71,10 @@
export function upload (data) {
return request.post('/visitsAdmin/cloudService/public/upload', data)
}
+// 鎵归噺涓婁紶鏂囦欢鍒癋TP
+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)
diff --git a/admin/src/api/workorder/ywWorkorder.js b/admin/src/api/workorder/ywWorkorder.js
index fc54054..7513175 100644
--- a/admin/src/api/workorder/ywWorkorder.js
+++ b/admin/src/api/workorder/ywWorkorder.js
@@ -32,6 +32,11 @@
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}`)
diff --git a/admin/src/api/ywProblem.js b/admin/src/api/ywProblem.js
index 52c9a57..ad11b9d 100644
--- a/admin/src/api/ywProblem.js
+++ b/admin/src/api/ywProblem.js
@@ -13,11 +13,26 @@
}
// 鏍规嵁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}`)
+}
diff --git a/admin/src/views/operation/components/deviceDetail.vue b/admin/src/views/operation/components/deviceDetail.vue
index f3181aa..02633b3 100644
--- a/admin/src/views/operation/components/deviceDetail.vue
+++ b/admin/src/views/operation/components/deviceDetail.vue
@@ -1,7 +1,14 @@
<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>
@@ -32,6 +39,18 @@
<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">姝e父</spa>
<spa class="val" v-if="info.status == 1">鎹熷潖</spa>
@@ -48,24 +67,189 @@
<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">姝e父</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">姝e父</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() {
@@ -73,19 +257,83 @@
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
+ })
}
}
}
@@ -93,7 +341,24 @@
<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;
diff --git a/admin/src/views/operation/components/deviceEdit.vue b/admin/src/views/operation/components/deviceEdit.vue
index 4c5c8f7..1b125ed 100644
--- a/admin/src/views/operation/components/deviceEdit.vue
+++ b/admin/src/views/operation/components/deviceEdit.vue
@@ -1,52 +1,170 @@
<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="姝e父"></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="姝e父"></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>
@@ -56,7 +174,10 @@
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() {
@@ -64,22 +185,126 @@
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) => {
@@ -100,6 +325,15 @@
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) {
@@ -108,7 +342,6 @@
item.childCategoryList.forEach(item2 => {
if (item2.id == cateId) {
this.$set(this.param, 'cateIds', [item.id, item2.id])
- console.log('cateId', this.form)
}
})
}
@@ -149,4 +382,17 @@
}
}
}
-</script>
\ No newline at end of file
+</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>
diff --git a/admin/src/views/operation/device.vue b/admin/src/views/operation/device.vue
index 770219c..43a7339 100644
--- a/admin/src/views/operation/device.vue
+++ b/admin/src/views/operation/device.vue
@@ -120,8 +120,6 @@
this.$nextTick(() => {
this.$refs.EditRef.isShowModal = true
if (row && row.id) {
- console.log('---')
-
this.$refs.EditRef.getDetail(row.id)
}
})
diff --git a/admin/src/views/project/components/houseDetails.vue b/admin/src/views/project/components/houseDetails.vue
index 5e61c5c..394d64a 100644
--- a/admin/src/views/project/components/houseDetails.vue
+++ b/admin/src/views/project/components/houseDetails.vue
@@ -1,11 +1,16 @@
<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">
@@ -17,39 +22,40 @@
<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>
@@ -62,37 +68,51 @@
<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
@@ -100,8 +120,14 @@
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">姝e父鎵ц涓�</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">
@@ -125,84 +151,93 @@
<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>
@@ -223,62 +258,64 @@
<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="姝e父" :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">姝e父</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>
@@ -294,62 +331,65 @@
<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>
@@ -359,34 +399,222 @@
</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: '姝e父' },
+ { 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() {
@@ -394,38 +622,29 @@
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: '姝e父' },
- { value: 735, name: '寮傚父' },
- { value: 580, name: '鎶ュ簾' }
- ]
+ data: this.deviceList
}
]
};
@@ -435,7 +654,6 @@
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],
@@ -451,12 +669,6 @@
}
totalData.push(sum);
}
- const grid = {
- left: 100,
- right: 100,
- top: 50,
- bottom: 50
- };
const series = [
'Direct',
'Mail Ad',
@@ -469,41 +681,103 @@
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>
@@ -517,10 +791,13 @@
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%;
diff --git a/admin/src/views/project/housingList.vue b/admin/src/views/project/housingList.vue
index fabf9e7..7d0d874 100644
--- a/admin/src/views/project/housingList.vue
+++ b/admin/src/views/project/housingList.vue
@@ -54,7 +54,7 @@
<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"
diff --git a/admin/src/views/workorder/components/OperaYwWorkorderWindow.vue b/admin/src/views/workorder/components/OperaYwWorkorderWindow.vue
index c97fbf4..f3c7e3a 100644
--- a/admin/src/views/workorder/components/OperaYwWorkorderWindow.vue
+++ b/admin/src/views/workorder/components/OperaYwWorkorderWindow.vue
@@ -3,32 +3,48 @@
@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="{
@@ -63,8 +79,6 @@
<el-input type="textarea" :rows="4" v-model="form.content" placeholder="璇疯緭鍏�" :maxlength="300" v-trim />
</el-form-item>
</el-form>
- <!-- -->
-
</GlobalWindow>
</template>
@@ -72,7 +86,7 @@
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'
@@ -87,6 +101,9 @@
// 琛ㄥ崟鏁版嵁
form: {
id: null,
+
+ rooms: [],
+
editDate: '',
floor: '',
title: '',
@@ -102,7 +119,7 @@
userId: '',
submitDate: '',
cateId: '',
- areaType: '0',
+ areaType: 0,
code: '',
dealStatus: '',
dispatchUserId: '',
@@ -113,6 +130,8 @@
dealInfo: '',
dealType: ''
},
+ houseList: [],
+ houseList1: [],
loadingInstance: null,
// 楠岃瘉瑙勫垯
rules,
@@ -140,7 +159,8 @@
this.visible = true
this.getProject()
this.getCate()
- // 鏂板缓
+ this.getHouseTree()
+ // 鏂板缓
if (target == null) {
this.form = {
id: null,
@@ -159,7 +179,7 @@
userId: '',
submitDate: '',
cateId: '',
- areaType: '0',
+ areaType: 0,
code: '',
dealStatus: '',
dispatchUserId: '',
@@ -185,6 +205,65 @@
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
@@ -347,4 +426,4 @@
}
}
}
-</style>
\ No newline at end of file
+</style>
diff --git a/admin/src/views/workorder/components/detail.vue b/admin/src/views/workorder/components/detail.vue
index 5b4caa0..0743cfa 100644
--- a/admin/src/views/workorder/components/detail.vue
+++ b/admin/src/views/workorder/components/detail.vue
@@ -1,5 +1,5 @@
<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">
@@ -11,7 +11,7 @@
<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">
@@ -26,6 +26,11 @@
<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>
@@ -167,19 +172,24 @@
</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() {
@@ -212,6 +222,13 @@
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) {
diff --git a/admin/src/views/workorder/components/handleProblem.vue b/admin/src/views/workorder/components/handleProblem.vue
index 47a1896..6560bc3 100644
--- a/admin/src/views/workorder/components/handleProblem.vue
+++ b/admin/src/views/workorder/components/handleProblem.vue
@@ -1,95 +1,122 @@
<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>
@@ -100,6 +127,9 @@
<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,
@@ -107,61 +137,184 @@
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;
@@ -170,9 +323,11 @@
justify-content: center;
overflow-x: hidden;
margin-right: 15px;
+
&:last-child {
margin: 0 !important;
}
+
img {
width: 100%;
}
@@ -180,5 +335,30 @@
}
}
}
+
+ .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>
diff --git a/admin/src/views/workorder/components/problemReportingDetails.vue b/admin/src/views/workorder/components/problemReportingDetails.vue
index 213c8d9..cbdcbbb 100644
--- a/admin/src/views/workorder/components/problemReportingDetails.vue
+++ b/admin/src/views/workorder/components/problemReportingDetails.vue
@@ -1,83 +1,128 @@
<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%;
diff --git a/admin/src/views/workorder/problemReporting.vue b/admin/src/views/workorder/problemReporting.vue
index 814bd32..1de3fb4 100644
--- a/admin/src/views/workorder/problemReporting.vue
+++ b/admin/src/views/workorder/problemReporting.vue
@@ -2,14 +2,14 @@
<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="涓婃姤鏃堕棿">
@@ -18,7 +18,7 @@
@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>
@@ -30,15 +30,19 @@
<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>
@@ -48,8 +52,8 @@
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>
@@ -79,10 +83,10 @@
showDetail: false,
searchForm: {
selDate: [],
- areaIds: '',
- projectId: '',
- buildingId: '',
- cateId: '',
+ dealDateStart: '',
+ dealDateEnd: '',
+ content: '',
+ dealStatus: ''
},
projectList: [],
buildList: [],
@@ -99,7 +103,17 @@
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>
--
Gitblit v1.9.3