Browse Source

小区房间-crud

qinhouyu 1 year ago
parent
commit
4593e7cb19
5 changed files with 205 additions and 67 deletions
  1. 7 0
      src/api/zdsz/area.js
  2. 9 0
      src/api/zdsz/building.js
  3. 11 0
      src/api/zdsz/unit.js
  4. 20 20
      src/views/zdsz/area/index.vue
  5. 158 47
      src/views/zdsz/house/index.vue

+ 7 - 0
src/api/zdsz/area.js

@@ -42,3 +42,10 @@ export function delArea(id) {
     method: 'delete'
   })
 }
+export function getAreas() {
+  return request({
+    url: '/zdsz/area/getAreaList/',
+    method: 'get',
+    params:{district:''}
+  })
+}

+ 9 - 0
src/api/zdsz/building.js

@@ -42,3 +42,12 @@ export function delBuilding(id) {
     method: 'delete'
   })
 }
+export function getBuildings(areaId) {
+  return request({
+    url: '/zdsz/building/getBuildingList',
+    method: 'GET',
+    params:{
+      areaId:areaId
+    }
+  })
+}

+ 11 - 0
src/api/zdsz/unit.js

@@ -42,3 +42,14 @@ export function delUnit(id) {
     method: 'delete'
   })
 }
+
+export function getUnits(areaId,buildingId) {
+  return request({
+    url: '/zdsz/unit/getUnitList',
+    method: 'GET',
+    params:{
+      areaId:areaId,
+      buildingId:buildingId
+    }
+  })
+}

+ 20 - 20
src/views/zdsz/area/index.vue

@@ -123,7 +123,7 @@
 
     <el-table v-loading="loading" :data="areaList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center"/>
-      <el-table-column label="id" align="center" prop="id"/>
+<!--      <el-table-column label="id" align="center" prop="id"/>-->
       <el-table-column label="小区名称" align="center" prop="name"/>
       <el-table-column label="小区规模" align="center" prop="scale"/>
       <el-table-column label="是否释放" align="center" prop="releaseIs">
@@ -207,10 +207,22 @@
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="释放人" prop="releaseBy">
-              <el-input v-model="form.releaseBy" placeholder="请输入释放人"/>
+            <el-form-item label="所属包" prop="belongingPack">
+              <el-select v-model="form.belongingPack" placeholder="请选择所属包">
+                <el-option
+                  v-for="dict in dict.type.belonging_pack"
+                  :key="dict.value"
+                  :label="dict.label"
+                  :value="dict.value"
+                ></el-option>
+              </el-select>
             </el-form-item>
           </el-col>
+<!--          <el-col :span="12">-->
+<!--            <el-form-item label="释放人" prop="releaseBy">-->
+<!--              <el-input v-model="form.releaseBy" placeholder="请输入释放人"/>-->
+<!--            </el-form-item>-->
+<!--          </el-col>-->
         </el-row>
         <el-row :gutter="20">
           <el-col :span="12">
@@ -239,19 +251,7 @@
           </el-col>
         </el-row>
         <el-row :gutter="20">
-          <el-col :span="12">
-            <el-form-item label="所属包" prop="belongingPack">
-              <el-select v-model="form.belongingPack" placeholder="请选择所属包">
-                <el-option
-                  v-for="dict in dict.type.belonging_pack"
-                  :key="dict.value"
-                  :label="dict.label"
-                  :value="dict.value"
-                ></el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
+          <el-col :span="24">
             <el-form-item label="备注" prop="remark">
               <el-input v-model="form.remark" type="textarea" placeholder="请输入备注"/>
             </el-form-item>
@@ -320,10 +320,10 @@ export default {
           {required: true, message: "小区规模不能为空", trigger: "blur"}
         ],
         releaseIs: [
-          {required: true, message: "是否释放不能为空", trigger: "blur"}
+          {required: false, message: "是否释放不能为空", trigger: "change"}
         ],
         releaseBy: [
-          {required: true, message: "释放人不能为空", trigger: "blur"}
+          {required: false, message: "释放人不能为空", trigger: "change"}
         ],
         district: [
           {required: true, message: "行政区不能为空", trigger: "change"}
@@ -332,10 +332,10 @@ export default {
           {required: true, message: "核算行政区不能为空", trigger: "change"}
         ],
         belongingPack: [
-          {required: true, message: "所属包不能为空", trigger: "change"}
+          {required: false, message: "所属包不能为空", trigger: "change"}
         ],
         remark: [
-          {required: true, message: "备注不能为空", trigger: "blur"}
+          {required: false, message: "备注不能为空", trigger: "blur"}
         ],
       }
     };

+ 158 - 47
src/views/zdsz/house/index.vue

@@ -1,13 +1,35 @@
 <template>
   <div class="app-container">
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
-      <el-form-item label="" prop="name">
-        <el-input
-          v-model="queryParams.name"
-          placeholder="请输入"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
+      <el-form-item label="小区" prop="areaId">
+        <el-select v-model="queryParams.areaId" placeholder="请选择小区" filterable @change="getBuildings">
+          <el-option
+            v-for="obj in areas"
+            :key="obj.id"
+            :label="obj.name"
+            :value="obj.id"
+          ></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="楼栋" prop="buildingId">
+        <el-select v-model="queryParams.buildingId" placeholder="请选择楼栋" filterable @change="getUnits">
+          <el-option
+            v-for="obj in builds"
+            :key="obj.id"
+            :label="obj.name"
+            :value="obj.id"
+          ></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="单元" prop="unitId">
+        <el-select v-model="queryParams.unitId" placeholder="请选择单元" filterable>
+          <el-option
+            v-for="obj in units"
+            :key="obj.id"
+            :label="obj.name"
+            :value="obj.id"
+          ></el-option>
+        </el-select>
       </el-form-item>
       <el-form-item>
         <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
@@ -24,7 +46,8 @@
           size="mini"
           @click="handleAdd"
           v-hasPermi="['zdsz:house:add']"
-        >新增</el-button>
+        >新增
+        </el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button
@@ -35,7 +58,8 @@
           :disabled="single"
           @click="handleUpdate"
           v-hasPermi="['zdsz:house:edit']"
-        >修改</el-button>
+        >修改
+        </el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button
@@ -46,29 +70,30 @@
           :disabled="multiple"
           @click="handleDelete"
           v-hasPermi="['zdsz:house:remove']"
-        >删除</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="warning"
-          plain
-          icon="el-icon-download"
-          size="mini"
-          @click="handleExport"
-          v-hasPermi="['zdsz:house:export']"
-        >导出</el-button>
+        >删除
+        </el-button>
       </el-col>
+      <!--      <el-col :span="1.5">-->
+      <!--        <el-button-->
+      <!--          type="warning"-->
+      <!--          plain-->
+      <!--          icon="el-icon-download"-->
+      <!--          size="mini"-->
+      <!--          @click="handleExport"-->
+      <!--          v-hasPermi="['zdsz:house:export']"-->
+      <!--        >导出</el-button>-->
+      <!--      </el-col>-->
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
     <el-table v-loading="loading" :data="houseList" @selection-change="handleSelectionChange">
-      <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="" align="center" prop="id" v-if="true"/>
-      <el-table-column label="" align="center" prop="areaId" />
-      <el-table-column label="" align="center" prop="buildingId" />
-      <el-table-column label="" align="center" prop="unitId" />
-      <el-table-column label="" align="center" prop="name" />
-      <el-table-column label="备注" align="center" prop="remark" />
+      <el-table-column type="selection" width="55" align="center"/>
+      <!--      <el-table-column label="" align="center" prop="id" v-if="true"/>-->
+      <el-table-column label="小区" align="center" prop="areaName"/>
+      <el-table-column label="楼栋" align="center" prop="buildingName"/>
+      <el-table-column label="单元" align="center" prop="unitName"/>
+      <el-table-column label="房间号" align="center" prop="name"/>
+      <el-table-column label="备注" align="center" prop="remark" show-overflow-tooltip/>
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
           <el-button
@@ -77,14 +102,16 @@
             icon="el-icon-edit"
             @click="handleUpdate(scope.row)"
             v-hasPermi="['zdsz:house:edit']"
-          >修改</el-button>
+          >修改
+          </el-button>
           <el-button
             size="mini"
             type="text"
             icon="el-icon-delete"
             @click="handleDelete(scope.row)"
             v-hasPermi="['zdsz:house:remove']"
-          >删除</el-button>
+          >删除
+          </el-button>
         </template>
       </el-table-column>
     </el-table>
@@ -98,14 +125,60 @@
     />
 
     <!-- 添加或修改房间管理对话框 -->
-    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
-      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-        <el-form-item label="" prop="name">
-          <el-input v-model="form.name" placeholder="请输入" />
-        </el-form-item>
-        <el-form-item label="备注" prop="remark">
-          <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
-        </el-form-item>
+    <el-dialog :title="title" :visible.sync="open" width="800px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="100px">
+        <el-row :gutter="20">
+          <el-col :span="12">
+            <el-form-item label="小区" prop="areaId">
+              <el-select v-model="form.areaId" placeholder="请选择小区" filterable @change="getBuildings">
+                <el-option
+                  v-for="obj in areas"
+                  :key="obj.id"
+                  :label="obj.name"
+                  :value="obj.id"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="楼栋" prop="buildingId">
+              <el-select v-model="form.buildingId" placeholder="请选择楼栋" filterable @change="getUnits">
+                <el-option
+                  v-for="obj in builds"
+                  :key="obj.id"
+                  :label="obj.name"
+                  :value="obj.id"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="20">
+          <el-col :span="12">
+            <el-form-item label="单元" prop="unitId">
+              <el-select v-model="form.unitId" placeholder="请选择单元" filterable @change="getUnits1">
+                <el-option
+                  v-for="obj in units"
+                  :key="obj.id"
+                  :label="obj.name"
+                  :value="obj.id"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="房间号" prop="name">
+              <el-input v-model="form.name" placeholder="请输入"/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="20">
+          <el-col :span="24">
+            <el-form-item label="备注" prop="remark">
+              <el-input v-model="form.remark" type="textarea" placeholder="请输入内容"/>
+            </el-form-item>
+          </el-col>
+        </el-row>
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button :loading="buttonLoading" type="primary" @click="submitForm">确 定</el-button>
@@ -116,7 +189,10 @@
 </template>
 
 <script>
-import { listHouse, getHouse, delHouse, addHouse, updateHouse } from "@/api/zdsz/house";
+import {listHouse, getHouse, delHouse, addHouse, updateHouse} from "@/api/zdsz/house";
+import {getAreas} from "@/api/zdsz/area";
+import {getBuildings} from "@/api/zdsz/building";
+import {getUnits} from "@/api/zdsz/unit";
 
 export default {
   name: "House",
@@ -156,30 +232,51 @@ export default {
       // 表单校验
       rules: {
         id: [
-          { required: true, message: "不能为空", trigger: "blur" }
+          {required: true, message: "不能为空", trigger: "blur"}
         ],
         areaId: [
-          { required: true, message: "不能为空", trigger: "change" }
+          {required: true, message: "不能为空", trigger: "change"}
         ],
         buildingId: [
-          { required: true, message: "不能为空", trigger: "change" }
+          {required: true, message: "不能为空", trigger: "change"}
         ],
         unitId: [
-          { required: true, message: "不能为空", trigger: "change" }
+          {required: true, message: "不能为空", trigger: "change"}
         ],
         name: [
-          { required: true, message: "不能为空", trigger: "blur" }
+          {required: true, message: "不能为空", trigger: "blur"}
         ],
         remark: [
-          { required: true, message: "备注不能为空", trigger: "blur" }
+          {required: false, message: "备注不能为空", trigger: "blur"}
         ],
-      }
+      },
+      areas: [],
+      builds: [],
+      units: [],
     };
   },
   created() {
     this.getList();
+    this.getAreas();
   },
   methods: {
+    /** 查询楼栋下拉 */
+    getBuildings(id) {
+      getBuildings(id).then(res => {
+        this.builds = res.data
+      })
+    },
+    /** 查询单元下拉 */
+    getUnits(id) {
+      getUnits(this.queryParams.areaId,id).then(res => {
+        this.units = res.data
+      })
+    },
+    getUnits1(id) {
+      getUnits(this.form.areaId,id).then(res => {
+        this.units = res.data
+      })
+    },
     /** 查询房间管理列表 */
     getList() {
       this.loading = true;
@@ -189,9 +286,19 @@ export default {
         this.loading = false;
       });
     },
+    /** 查询小区下拉 */
+    getAreas() {
+      this.builds = []
+      this.units = []
+      getAreas().then(res => {
+        this.areas = res.data;
+      });
+    },
     // 取消按钮
     cancel() {
       this.open = false;
+      this.builds = []
+      this.units = []
       this.reset();
     },
     // 表单重置
@@ -203,7 +310,7 @@ export default {
         unitId: undefined,
         name: undefined,
         remark: undefined,
-        delFlag: undefined,
+        delFlag: 0,
         createBy: undefined,
         createTime: undefined,
         updateBy: undefined,
@@ -224,7 +331,7 @@ export default {
     // 多选框选中数据
     handleSelectionChange(selection) {
       this.ids = selection.map(item => item.id)
-      this.single = selection.length!==1
+      this.single = selection.length !== 1
       this.multiple = !selection.length
     },
     /** 新增按钮操作 */
@@ -257,6 +364,8 @@ export default {
               this.getList();
             }).finally(() => {
               this.buttonLoading = false;
+              this.builds = []
+              this.units = []
             });
           } else {
             addHouse(this.form).then(response => {
@@ -265,6 +374,8 @@ export default {
               this.getList();
             }).finally(() => {
               this.buttonLoading = false;
+              this.builds = []
+              this.units = []
             });
           }
         }