瀏覽代碼

添加居民/检测

asd123a20 2 年之前
父節點
當前提交
c839d62070

+ 10 - 0
src/api/community/req.js

@@ -42,3 +42,13 @@ export function delReq(residentReqId) {
     method: 'delete'
   })
 }
+
+// 审核 驳回
+export function review(data) {
+  return request({
+    url: '/community/req/review',
+    method: 'post',
+    data
+  })
+}
+

+ 27 - 0
src/api/community/task.js

@@ -42,3 +42,30 @@ export function delTask(natTaskId) {
     method: 'delete'
   })
 }
+
+// 查询检测人员
+export function getrealtime(query) {
+  return request({
+    url: '/community/log/realtime',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询检测人员数
+export function getrealtimenum(query) {
+  return request({
+    url: '/community/log/realtime-statistics',
+    method: 'get',
+    params: query
+  })
+}
+
+// 修改人员检测状态
+export function setUserStatus(data) {
+  return request({
+    url: '/community/log/set-log-status',
+    method: 'post',
+    data
+  })
+}

+ 1 - 1
src/views/cms/blog/index.vue

@@ -270,7 +270,7 @@
         listBlog(this.queryParams).then(response => {
           for (let i = 0; i < response.rows.length; i++) {
             let blogInfo = response.rows[i];
-            if (blogInfo.blogPic.length > 0) {
+            if (blogInfo.blogPic?.length > 0) {
               response.rows[i].blogPic = process.env.VUE_APP_BASE_API + blogInfo.blogPic
             }else{
               response.rows[i].blogPic = '/errorImg.jpg'

+ 36 - 11
src/views/cms/type/index.vue

@@ -31,10 +31,10 @@
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
-    <el-table v-loading="loading" :data="typeList" @selection-change="handleSelectionChange">
+    <el-table v-loading="loading" :data="typeList" @selection-change="handleSelectionChange" row-key="typeId" default-expand-all :tree-props="{children: 'children', hasChildren: 'hasChildren'}">>
       <el-table-column type="selection" width="55" align="center" />
       <!-- <el-table-column label="分类ID" align="center" prop="typeId" /> -->
-      <el-table-column label="分类图像" align="center" prop="typePic" width="100">
+      <!-- <el-table-column label="分类图像" align="center" prop="typePic" width="100">
         <template slot-scope="scope">
           <el-image style="width: 28px;height: 28px; border-radius: 50%; margin-right: 10px" :src="scope.row.typePic" lazy
             :preview-src-list="[scope.row.typePic]">
@@ -43,7 +43,7 @@
                   </div>
           </el-image>
         </template>
-      </el-table-column>
+      </el-table-column> -->
       <el-table-column label="分类名称" align="center" prop="typeName" />
       <el-table-column label="博客数量" align="center" prop="blogNum" />
       <el-table-column label="创建者" align="center" prop="createBy" />
@@ -71,8 +71,11 @@
         <el-form-item label="分类名称" prop="typeName">
           <el-input v-model="form.typeName" placeholder="请输入分类名称" />
         </el-form-item>
-        <el-form-item label="分类图像">
-          <imageUpload v-model="form.typePic" :limit="1" />
+        <el-form-item label="分类别名" prop="alias">
+          <el-input v-model="form.alias" placeholder="请输入分类别名" />
+        </el-form-item>
+        <el-form-item label="父级分类" prop="parentId">
+          <el-cascader ref="cascader" v-model="form.parentId" :options="typeList" :props="cascaderProps" @change="handleChange"></el-cascader>
         </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
@@ -97,6 +100,12 @@
     name: "Type",
     data() {
       return {
+        cascaderProps: {
+          checkStrictly: true,
+          emitPath: false,
+          label: 'typeName',
+          value: 'typeId'
+        },
         // 遮罩层
         loading: true,
         // 选中数组
@@ -119,7 +128,7 @@
         // 查询参数
         queryParams: {
           pageNum: 1,
-          pageSize: 10,
+          pageSize: 100,
           typeName: null,
           typePic: null,
           createBy: null
@@ -133,6 +142,11 @@
             message: "分类名称不能为空",
             trigger: "blur"
           }],
+          alias: [{
+            required: true,
+            message: "分类别名不能为空",
+            trigger: "blur"
+          }],
         }
       };
     },
@@ -140,6 +154,14 @@
       this.getList();
     },
     methods: {
+      // 级联选择
+      handleChange(e) {
+        if (e && this.form.typeId == e) {
+          this.$set(this.form, 'parentId', 0)
+          this.$modal.msgError("不能选择当前修改项");
+          return;
+        };
+      },
       /** 查询分类管理列表 */
       getList() {
         this.loading = true;
@@ -150,17 +172,20 @@
               response.rows[i].typePic = process.env.VUE_APP_BASE_API + typeInfo.typePic
             }
           };
-          this.typeList = response.rows;
+          this.typeList = this.handleTree(response.rows, 'typeId' ,"parentId");
+          // this.typeList = response.rows;
           this.total = response.total;
           this.loading = false;
         });
       },
       // 取消按钮
       cancel() {
-            cancelType(this.form).then(response => {
-              this.open = false;
-              this.reset();
-            });
+        this.open = false;
+        this.reset();
+            // cancelType(this.form).then(response => {
+            //   this.open = false;
+            //   this.reset();
+            // });
       },
       // 表单重置
       reset() {

+ 0 - 35
src/views/community/house/index.vue

@@ -78,46 +78,11 @@
               v-hasPermi="['community:house:add']"
             >新增</el-button>
           </el-col>
-          <el-col :span="1.5">
-            <el-button
-              type="success"
-              plain
-              icon="el-icon-edit"
-              size="mini"
-              :disabled="single"
-              @click="handleUpdate"
-              v-hasPermi="['community:house:edit']"
-            >修改</el-button>
-          </el-col>
-          <el-col :span="1.5">
-            <el-button
-              type="danger"
-              plain
-              icon="el-icon-delete"
-              size="mini"
-              :disabled="multiple"
-              @click="handleDelete"
-              v-hasPermi="['community: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="['community: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="住宅Id" align="center" prop="houseId" /> -->
           <el-table-column label="小区" align="center" prop="estate.name" />
-          <!-- <el-table-column label="网格" align="center" prop="dept.deptName" /> -->
           <el-table-column label="楼栋" align="center" prop="building.number" />
           <el-table-column label="单元" align="center" prop="unit" />
           <el-table-column label="楼层" align="center" prop="floor" />

+ 63 - 273
src/views/community/log/index.vue

@@ -1,162 +1,38 @@
 <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="任务id" prop="natTaskId">
-        <el-input
-          v-model="queryParams.natTaskId"
-          placeholder="请输入任务id"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="居民id" prop="residentId">
-        <el-input
-          v-model="queryParams.residentId"
-          placeholder="请输入居民id"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="姓名" prop="name">
-        <el-input
-          v-model="queryParams.name"
-          placeholder="请输入姓名"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="住址id" prop="houseId">
-        <el-input
-          v-model="queryParams.houseId"
-          placeholder="请输入住址id"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="楼栋编号" prop="buildingNumber">
-        <el-input
-          v-model="queryParams.buildingNumber"
-          placeholder="请输入楼栋编号"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="小区名称" prop="estateName">
-        <el-input
-          v-model="queryParams.estateName"
-          placeholder="请输入小区名称"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="网格号" prop="gridName">
-        <el-input
-          v-model="queryParams.gridName"
-          placeholder="请输入网格号"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="社区名称" prop="communityName">
-        <el-input
-          v-model="queryParams.communityName"
-          placeholder="请输入社区名称"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="手机号" prop="phone">
-        <el-input
-          v-model="queryParams.phone"
-          placeholder="请输入手机号"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item>
-        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
-        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
-      </el-form-item>
-    </el-form>
-
-    <el-row :gutter="10" class="mb8">
-      <el-col :span="1.5">
-        <el-button
-          type="primary"
-          plain
-          icon="el-icon-plus"
-          size="mini"
-          @click="handleAdd"
-          v-hasPermi="['community:log:add']"
-        >新增</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="success"
-          plain
-          icon="el-icon-edit"
-          size="mini"
-          :disabled="single"
-          @click="handleUpdate"
-          v-hasPermi="['community:log:edit']"
-        >修改</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="danger"
-          plain
-          icon="el-icon-delete"
-          size="mini"
-          :disabled="multiple"
-          @click="handleDelete"
-          v-hasPermi="['community:log: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="['community:log:export']"
-        >导出</el-button>
+  <div class="app-container"><el-row :gutter="20">
+      <!--地址数据-->
+      <el-col :span="4" :xs="24">
+        <div class="head-container">
+          <el-input
+            v-model="addrName"
+            placeholder="请输入地址名称"
+            clearable
+            size="small"
+            prefix-icon="el-icon-search"
+            style="margin-bottom: 20px"
+          />
+        </div>
+        <div class="head-container">
+          <el-tree
+            :data="addrOptions"
+            :props="defaultProps"
+            :expand-on-click-node="false"
+            :filter-node-method="filterNode"
+            ref="tree"
+            default-expand-all
+            highlight-current
+            @node-click="handleNodeClick"
+          />
+        </div>
       </el-col>
-      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
-    </el-row>
 
+      <el-col :span="20" :xs="24">
     <el-table v-loading="loading" :data="logList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="${comment}" align="center" prop="natLogId" />
-      <el-table-column label="任务id" align="center" prop="natTaskId" />
-      <el-table-column label="居民id" align="center" prop="residentId" />
-      <el-table-column label="姓名" align="center" prop="name" />
-      <el-table-column label="住址id" align="center" prop="houseId" />
-      <el-table-column label="楼栋编号" align="center" prop="buildingNumber" />
-      <el-table-column label="小区名称" align="center" prop="estateName" />
-      <el-table-column label="网格号" align="center" prop="gridName" />
-      <el-table-column label="社区名称" align="center" prop="communityName" />
-      <el-table-column label="手机号" align="center" prop="phone" />
-      <el-table-column label="检测状态" align="center" prop="status" />
-      <el-table-column label="" align="center" prop="remark" />
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
-        <template slot-scope="scope">
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-edit"
-            @click="handleUpdate(scope.row)"
-            v-hasPermi="['community:log:edit']"
-          >修改</el-button>
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-delete"
-            @click="handleDelete(scope.row)"
-            v-hasPermi="['community:log:remove']"
-          >删除</el-button>
-        </template>
-      </el-table-column>
+      <el-table-column label="任务名称" align="center" prop="name" />
+      <el-table-column label="应检" align="center" prop="buildingNumber" />
+      <el-table-column label="已检" align="center" prop="buildingNumber" />
+      <el-table-column label="未检" align="center" prop="buildingNumber" />
     </el-table>
     
     <pagination
@@ -166,74 +42,30 @@
       :limit.sync="queryParams.pageSize"
       @pagination="getList"
     />
-
-    <!-- 添加或修改检测日志管理对话框 -->
-    <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="任务id" prop="natTaskId">
-          <el-input v-model="form.natTaskId" placeholder="请输入任务id" />
-        </el-form-item>
-        <el-form-item label="居民id" prop="residentId">
-          <el-input v-model="form.residentId" placeholder="请输入居民id" />
-        </el-form-item>
-        <el-form-item label="姓名" prop="name">
-          <el-input v-model="form.name" placeholder="请输入姓名" />
-        </el-form-item>
-        <el-form-item label="住址id" prop="houseId">
-          <el-input v-model="form.houseId" placeholder="请输入住址id" />
-        </el-form-item>
-        <el-form-item label="楼栋编号" prop="buildingNumber">
-          <el-input v-model="form.buildingNumber" placeholder="请输入楼栋编号" />
-        </el-form-item>
-        <el-form-item label="小区名称" prop="estateName">
-          <el-input v-model="form.estateName" placeholder="请输入小区名称" />
-        </el-form-item>
-        <el-form-item label="网格号" prop="gridName">
-          <el-input v-model="form.gridName" placeholder="请输入网格号" />
-        </el-form-item>
-        <el-form-item label="社区名称" prop="communityName">
-          <el-input v-model="form.communityName" placeholder="请输入社区名称" />
-        </el-form-item>
-        <el-form-item label="手机号" prop="phone">
-          <el-input v-model="form.phone" placeholder="请输入手机号" />
-        </el-form-item>
-        <el-form-item label="" prop="remark">
-          <el-input v-model="form.remark" placeholder="请输入" />
-        </el-form-item>
-      </el-form>
-      <div slot="footer" class="dialog-footer">
-        <el-button type="primary" @click="submitForm">确 定</el-button>
-        <el-button @click="cancel">取 消</el-button>
-      </div>
-    </el-dialog>
+    </el-col>
+    </el-row>
   </div>
 </template>
 
 <script>
+import {  addrTreeSelect } from "@/api/community/addr";
 import { listLog, getLog, delLog, addLog, updateLog } from "@/api/community/log";
 
 export default {
   name: "Log",
   data() {
     return {
-      // 遮罩层
-      loading: true,
+      defaultProps: {},
+      // 地址树选项
+      addrOptions: undefined,
+      // 地址名称
+      addrName: undefined,
       // 选中数组
       ids: [],
-      // 非单个禁用
-      single: true,
-      // 非多个禁用
-      multiple: true,
-      // 显示搜索条件
-      showSearch: true,
       // 总条数
       total: 0,
       // 检测日志管理表格数据
       logList: [],
-      // 弹出层标题
-      title: "",
-      // 是否显示弹出层
-      open: false,
       // 查询参数
       queryParams: {
         pageNum: 1,
@@ -258,8 +90,33 @@ export default {
   },
   created() {
     this.getList();
+    this.getAddrTree();
+  },
+  watch: {
+    // 根据名称筛选地址树
+    addrName(val) {
+      this.$refs.tree.filter(val);
+    }
   },
   methods: {
+     /** 查询地址下拉树结构 */
+    getAddrTree() {
+      addrTreeSelect(this.queryParams).then(response => {
+        this.addrOptions = response.data;
+      });
+    },
+    // 节点单击事件
+    handleNodeClick(data) {
+      const { interId, type } = data;
+      this.queryParams.addrInterId = interId;
+      this.queryParams.addrType = type;
+      this.getList();
+    },
+    // 筛选节点
+    filterNode(value, data) {
+      if (!value) return true;
+      return data.label.indexOf(value) !== -1;
+    },
     /** 查询检测日志管理列表 */
     getList() {
       this.loading = true;
@@ -269,11 +126,6 @@ export default {
         this.loading = false;
       });
     },
-    // 取消按钮
-    cancel() {
-      this.open = false;
-      this.reset();
-    },
     // 表单重置
     reset() {
       this.form = {
@@ -293,74 +145,12 @@ export default {
       };
       this.resetForm("form");
     },
-    /** 搜索按钮操作 */
-    handleQuery() {
-      this.queryParams.pageNum = 1;
-      this.getList();
-    },
-    /** 重置按钮操作 */
-    resetQuery() {
-      this.resetForm("queryForm");
-      this.handleQuery();
-    },
     // 多选框选中数据
     handleSelectionChange(selection) {
       this.ids = selection.map(item => item.natLogId)
       this.single = selection.length!==1
       this.multiple = !selection.length
     },
-    /** 新增按钮操作 */
-    handleAdd() {
-      this.reset();
-      this.open = true;
-      this.title = "添加检测日志管理";
-    },
-    /** 修改按钮操作 */
-    handleUpdate(row) {
-      this.reset();
-      const natLogId = row.natLogId || this.ids
-      getLog(natLogId).then(response => {
-        this.form = response.data;
-        this.open = true;
-        this.title = "修改检测日志管理";
-      });
-    },
-    /** 提交按钮 */
-    submitForm() {
-      this.$refs["form"].validate(valid => {
-        if (valid) {
-          if (this.form.natLogId != null) {
-            updateLog(this.form).then(response => {
-              this.$modal.msgSuccess("修改成功");
-              this.open = false;
-              this.getList();
-            });
-          } else {
-            addLog(this.form).then(response => {
-              this.$modal.msgSuccess("新增成功");
-              this.open = false;
-              this.getList();
-            });
-          }
-        }
-      });
-    },
-    /** 删除按钮操作 */
-    handleDelete(row) {
-      const natLogIds = row.natLogId || this.ids;
-      this.$modal.confirm('是否确认删除检测日志管理编号为"' + natLogIds + '"的数据项?').then(function() {
-        return delLog(natLogIds);
-      }).then(() => {
-        this.getList();
-        this.$modal.msgSuccess("删除成功");
-      }).catch(() => {});
-    },
-    /** 导出按钮操作 */
-    handleExport() {
-      this.download('community/log/export', {
-        ...this.queryParams
-      }, `log_${new Date().getTime()}.xlsx`)
-    }
   }
 };
 </script>

+ 206 - 0
src/views/community/realtime/index.vue

@@ -0,0 +1,206 @@
+<template>
+  <div class="app-container">
+    <el-row :gutter="20">
+      <!--地址数据-->
+      <el-col :span="4" :xs="24">
+        <div class="head-container">
+          <el-input
+            v-model="addrName"
+            placeholder="请输入地址名称"
+            clearable
+            size="small"
+            prefix-icon="el-icon-search"
+            style="margin-bottom: 20px"
+          />
+        </div>
+        <div class="head-container">
+          <el-tree
+            :data="addrOptions"
+            :props="defaultProps"
+            :expand-on-click-node="false"
+            :filter-node-method="filterNode"
+            ref="tree"
+            :default-expand-all="false"
+            highlight-current
+            @node-click="handleNodeClick"
+          />
+        </div>
+      </el-col>
+
+      <el-col :span="20" :xs="24">
+        <div>
+          <el-tag>应检:{{ num && num.totalCount }}</el-tag>
+          <el-tag style="margin: 0 20px 20px 20px" type="success">已检:{{ num && num.detectedCount }}</el-tag>
+          <el-tag type="danger">未检: {{ num && num.undetectedCount }}</el-tag>
+        </div>
+        <el-tabs type="card" @tab-click="tabClick" v-model="isName">
+          <el-tab-pane label="已检" name="1"></el-tab-pane>
+          <el-tab-pane label="未检" name="0"></el-tab-pane>
+        </el-tabs>
+        <el-table
+          v-loading="loading"
+          :data="logList"
+          @selection-change="handleSelectionChange"
+        >
+          <el-table-column label="姓名" align="center" prop="name" />
+          <el-table-column label="性别" align="center" prop="sex" />
+          <el-table-column label="出生年月" align="center" prop="birthday" />
+          <el-table-column label="手机号" align="center" prop="phone" />
+          <el-table-column label="是否代领" align="center" prop="entrusted" />
+          <el-table-column label="单元" align="center" prop="unit" />
+          <el-table-column label="楼层" align="center" prop="floor" />
+          <el-table-column label="门牌" align="center" prop="number" />
+          <el-table-column label="备注" align="center" prop="remark" />
+          <el-table-column v-if="isName == '0'" label="操作" align="center" class-name="small-padding fixed-width">
+            <template slot-scope="scope">
+              <el-button size="mini" type="text" icon="el-icon-check" @click="process(scope.row)" v-hasPermi="['community:req:edit']">已检</el-button>
+              <el-button size="mini" type="text" icon="el-icon-tickets" @click="remarks(scope.row)" v-hasPermi="['community:req:edit']">未检</el-button>
+            </template>
+          </el-table-column>
+        </el-table>
+
+        <pagination
+          v-show="total > 0"
+          :total="total"
+          :page.sync="queryParams.pageNum"
+          :limit.sync="queryParams.pageSize"
+          @pagination="getList"
+        />
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import { addrTreeSelect } from "@/api/community/addr";
+import { getrealtime, getrealtimenum, setUserStatus } from "@/api/community/task";
+
+export default {
+  name: "Log",
+  data() {
+    return {
+      num: {},
+      defaultProps: {},
+      // 地址树选项
+      addrOptions: undefined,
+      // 地址名称
+      addrName: undefined,
+      // 选中数组
+      ids: [],
+      // 总条数
+      total: 0,
+      // 检测日志管理表格数据
+      logList: [],
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+      },
+      isName: '1'
+    };
+  },
+  created() {
+    this.tabClick({ name: 1 });
+    this.getAddrTree();
+  },
+  watch: {
+    // 根据名称筛选地址树
+    addrName(val) {
+      this.$refs.tree.filter(val);
+    },
+  },
+  methods: {
+    // 点击标签
+    tabClick(e) {
+      this.queryParams.detectStatus = e.name;
+      this.getList();
+    },
+    process(row) {
+      const { residentId } = row;
+      this.$prompt("请输入备注", "提示", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+      })
+        .then(({ value }) => {
+          setUserStatus({ residentId, status: '1', remark: value }).then((response) => {
+            if (response.code == 200) {
+              this.$message({
+                message: '报备成功',
+                type: 'success'
+              });
+              this.getList();
+            }
+          });
+        })
+        .catch((err) => {
+          this.$message({
+            type: "info",
+            message: "取消驳回",
+          });
+        });
+    },
+    // 备注
+    remarks(row) {
+      const { residentId } = row;
+      this.$prompt("请输入备注", "提示", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+      })
+        .then(({ value }) => {
+          setUserStatus({ residentId, status: '0', remark: value }).then((response) => {
+            if (response.code == 200) {
+              this.$message({
+                message: '备注成功',
+                type: 'success'
+              });
+              this.getList();
+            }
+          });
+        })
+        .catch((err) => {
+          this.$message({
+            type: "info",
+            message: "取消驳回",
+          });
+        });
+    },
+    /** 查询地址下拉树结构 */
+    getAddrTree() {
+      addrTreeSelect().then((response) => {
+        this.addrOptions = response.data;
+      });
+    },
+    // 节点单击事件
+    handleNodeClick(data) {
+      const { interId, type } = data;
+      this.queryParams.addrInterId = interId;
+      this.queryParams.addrType = type;
+      this.getList();
+    },
+    // 筛选节点
+    filterNode(value, data) {
+      if (!value) return true;
+      return data.label.indexOf(value) !== -1;
+    },
+    /** 查询检测日志管理列表 */
+    getList() {
+      this.loading = true;
+      const { addrType, addrInterId } = this.queryParams;
+      getrealtimenum({ addrType, addrInterId }).then((response) => {
+        this.num = response.data;
+      });
+      getrealtime(this.queryParams).then((response) => {
+        this.logList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map((item) => item.natLogId);
+      this.single = selection.length !== 1;
+      this.multiple = !selection.length;
+    },
+  },
+};
+</script>

+ 198 - 221
src/views/community/req/index.vue

@@ -1,187 +1,137 @@
 <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="申请人Id" prop="applicantId">
-        <el-input
-          v-model="queryParams.applicantId"
-          placeholder="请输入申请人Id"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="姓名" prop="name">
-        <el-input
-          v-model="queryParams.name"
-          placeholder="请输入姓名"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="出生年月" prop="birthday">
-        <el-input
-          v-model="queryParams.birthday"
-          placeholder="请输入出生年月"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="手机号" prop="phone">
-        <el-input
-          v-model="queryParams.phone"
-          placeholder="请输入手机号"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="拒绝原因" prop="rejectReason">
-        <el-input
-          v-model="queryParams.rejectReason"
-          placeholder="请输入拒绝原因"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="是否代领" prop="entrusted">
-        <el-input
-          v-model="queryParams.entrusted"
-          placeholder="请输入是否代领"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item>
-        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
-        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
-      </el-form-item>
-    </el-form>
-
-    <el-row :gutter="10" class="mb8">
-      <el-col :span="1.5">
-        <el-button
-          type="primary"
-          plain
-          icon="el-icon-plus"
-          size="mini"
-          @click="handleAdd"
-          v-hasPermi="['community:req:add']"
-        >新增</el-button>
+    <el-row :gutter="20">
+      <!--地址数据-->
+      <el-col :span="4" :xs="24">
+        <div class="head-container">
+          <el-input
+            v-model="addrName"
+            placeholder="请输入地址名称"
+            clearable
+            size="small"
+            prefix-icon="el-icon-search"
+            style="margin-bottom: 20px"
+          />
+        </div>
+        <div class="head-container">
+          <el-tree
+            :data="addrOptions"
+            :props="defaultProps"
+            :expand-on-click-node="false"
+            :filter-node-method="filterNode"
+            ref="tree"
+            default-expand-all
+            highlight-current
+            @node-click="handleNodeClick"
+          />
+        </div>
       </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="success"
-          plain
-          icon="el-icon-edit"
-          size="mini"
-          :disabled="single"
-          @click="handleUpdate"
-          v-hasPermi="['community:req:edit']"
-        >修改</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="danger"
-          plain
-          icon="el-icon-delete"
-          size="mini"
-          :disabled="multiple"
-          @click="handleDelete"
-          v-hasPermi="['community:req: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="['community:req:export']"
-        >导出</el-button>
-      </el-col>
-      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
-    </el-row>
 
-    <el-table v-loading="loading" :data="reqList" @selection-change="handleSelectionChange">
-      <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="申请Id" align="center" prop="residentReqId" />
-      <el-table-column label="申请人Id" align="center" prop="applicantId" />
-      <el-table-column label="姓名" align="center" prop="name" />
-      <el-table-column label="性别" align="center" prop="sex" />
-      <el-table-column label="出生年月" align="center" prop="birthday" />
-      <el-table-column label="手机号" align="center" prop="phone" />
-      <el-table-column label="申请类型" align="center" prop="reqType" />
-      <el-table-column label="申请状态" align="center" prop="reqStatus" />
-      <el-table-column label="拒绝原因" align="center" prop="rejectReason" />
-      <el-table-column label="是否代领" align="center" prop="entrusted" />
-      <el-table-column label="备注" align="center" prop="remark" />
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
-        <template slot-scope="scope">
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-edit"
-            @click="handleUpdate(scope.row)"
-            v-hasPermi="['community:req:edit']"
-          >修改</el-button>
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-delete"
-            @click="handleDelete(scope.row)"
-            v-hasPermi="['community:req:remove']"
-          >删除</el-button>
-        </template>
-      </el-table-column>
-    </el-table>
-    
-    <pagination
-      v-show="total>0"
-      :total="total"
-      :page.sync="queryParams.pageNum"
-      :limit.sync="queryParams.pageSize"
-      @pagination="getList"
-    />
+      <el-col :span="20" :xs="24">
+        <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>
+          <el-form-item label="手机号" prop="phone">
+            <el-input
+              v-model="queryParams.phone"
+              placeholder="请输入手机号"
+              clearable
+              @keyup.enter.native="handleQuery"
+            />
+          </el-form-item>
+          <el-form-item>
+            <el-button
+              type="primary"
+              icon="el-icon-search"
+              size="mini"
+              @click="handleQuery"
+              >搜索</el-button
+            >
+            <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
+              >重置</el-button
+            >
+          </el-form-item>
+        </el-form>
 
-    <!-- 添加或修改审核申请对话框 -->
-    <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="申请人Id" prop="applicantId">
-          <el-input v-model="form.applicantId" placeholder="请输入申请人Id" />
-        </el-form-item>
-        <el-form-item label="姓名" prop="name">
-          <el-input v-model="form.name" placeholder="请输入姓名" />
-        </el-form-item>
-        <el-form-item label="出生年月" prop="birthday">
-          <el-input v-model="form.birthday" placeholder="请输入出生年月" />
-        </el-form-item>
-        <el-form-item label="手机号" prop="phone">
-          <el-input v-model="form.phone" placeholder="请输入手机号" />
-        </el-form-item>
-        <el-form-item label="拒绝原因" prop="rejectReason">
-          <el-input v-model="form.rejectReason" placeholder="请输入拒绝原因" />
-        </el-form-item>
-        <el-form-item label="是否代领" prop="entrusted">
-          <el-input v-model="form.entrusted" placeholder="请输入是否代领" />
-        </el-form-item>
-        <el-form-item label="备注" prop="remark">
-          <el-input v-model="form.remark" placeholder="请输入备注" />
-        </el-form-item>
-      </el-form>
-      <div slot="footer" class="dialog-footer">
-        <el-button type="primary" @click="submitForm">确 定</el-button>
-        <el-button @click="cancel">取 消</el-button>
-      </div>
-    </el-dialog>
+        <el-table
+          v-loading="loading"
+          :data="reqList"
+          @selection-change="handleSelectionChange"
+        >
+          <el-table-column type="selection" width="55" align="center" />
+          <el-table-column label="姓名" align="center" prop="name" />
+          <el-table-column label="性别" align="center" prop="sex" />
+          <el-table-column label="出生年月" align="center" prop="birthday" />
+          <el-table-column label="手机号" align="center" prop="phone" />
+          <el-table-column label="是否代领" align="center" prop="entrusted" />
+          <el-table-column label="申请类型" align="center" prop="reqType" />
+          <el-table-column label="单元" align="center" prop="unit" />
+          <el-table-column label="楼层" align="center" prop="floor" />
+          <el-table-column label="门牌" align="center" prop="number" />
+          <el-table-column
+            label="操作"
+            align="center"
+            class-name="small-padding fixed-width"
+          >
+            <template slot-scope="scope">
+              <el-button
+                size="mini"
+                type="text"
+                icon="el-icon-check"
+                @click="process(scope.row)"
+                v-hasPermi="['community:req:edit']"
+                >通过</el-button
+              >
+              <el-button
+                size="mini"
+                type="text"
+                icon="el-icon-close"
+                @click="reject(scope.row)"
+                v-hasPermi="['community:req:remove']"
+                >驳回</el-button
+              >
+            </template>
+          </el-table-column>
+        </el-table>
+
+        <pagination
+          v-show="total > 0"
+          :total="total"
+          :page.sync="queryParams.pageNum"
+          :limit.sync="queryParams.pageSize"
+          @pagination="getList"
+        />
+      </el-col>
+    </el-row>
   </div>
 </template>
 
 <script>
-import { listReq, getReq, delReq, addReq, updateReq } from "@/api/community/req";
+import {  addrTreeSelect } from "@/api/community/addr";
+import { listReq, getReq, delReq, addReq, updateReq, review } from "@/api/community/req";
 
 export default {
   name: "Req",
   data() {
     return {
+      defaultProps: {},
+      // 地址树选项
+      addrOptions: undefined,
+      // 地址名称
+      addrName: undefined,
       // 遮罩层
       loading: true,
       // 选中数组
@@ -217,19 +167,50 @@ export default {
       // 表单参数
       form: {},
       // 表单校验
-      rules: {
-      }
+      rules: {}
     };
   },
   created() {
     this.getList();
+    this.getAddrTree();
+  },
+  watch: {
+    // 根据名称筛选地址树
+    addrName(val) {
+      this.$refs.tree.filter(val);
+    }
   },
   methods: {
+     /** 查询地址下拉树结构 */
+    getAddrTree() {
+      addrTreeSelect(this.queryParams).then(response => {
+        this.addrOptions = response.data;
+      });
+    },
+    // 节点单击事件
+    handleNodeClick(data) {
+      const { interId, type } = data;
+      this.queryParams.addrInterId = interId;
+      this.queryParams.addrType = type;
+      this.getList();
+    },
+    // 筛选节点
+    filterNode(value, data) {
+      if (!value) return true;
+      return data.label.indexOf(value) !== -1;
+    },
     /** 查询审核申请列表 */
     getList() {
       this.loading = true;
-      listReq(this.queryParams).then(response => {
-        this.reqList = response.rows;
+      listReq({ ...this.queryParams, reqStatus: '0' }).then((response) => {
+        this.reqList = response.rows.map(e => {
+          e.sex = e.sex == 0 ? '女' : '男';
+          e.entrusted = e.entrusted == 0 ? '否' : '是';
+          if (e.reqType == 0) e.reqType = '新增';
+          if (e.reqType == 1) e.reqType = '修改';
+          if (e.reqType == 2) e.reqType = '删除';
+          return { ...e };
+        });
         this.total = response.total;
         this.loading = false;
       });
@@ -254,7 +235,7 @@ export default {
         entrusted: null,
         createTime: null,
         updateTime: null,
-        remark: null
+        remark: null,
       };
       this.resetForm("form");
     },
@@ -270,62 +251,58 @@ export default {
     },
     // 多选框选中数据
     handleSelectionChange(selection) {
-      this.ids = selection.map(item => item.residentReqId)
-      this.single = selection.length!==1
-      this.multiple = !selection.length
-    },
-    /** 新增按钮操作 */
-    handleAdd() {
-      this.reset();
-      this.open = true;
-      this.title = "添加审核申请";
+      this.ids = selection.map((item) => item.residentReqId);
+      this.single = selection.length !== 1;
+      this.multiple = !selection.length;
     },
     /** 修改按钮操作 */
     handleUpdate(row) {
       this.reset();
-      const residentReqId = row.residentReqId || this.ids
-      getReq(residentReqId).then(response => {
+      const residentReqId = row.residentReqId || this.ids;
+      getReq(residentReqId).then((response) => {
         this.form = response.data;
         this.open = true;
-        this.title = "修改审核申请";
+        this.title = "用户详情";
       });
     },
-    /** 提交按钮 */
-    submitForm() {
-      this.$refs["form"].validate(valid => {
-        if (valid) {
-          if (this.form.residentReqId != null) {
-            updateReq(this.form).then(response => {
-              this.$modal.msgSuccess("修改成功");
-              this.open = false;
-              this.getList();
-            });
-          } else {
-            addReq(this.form).then(response => {
-              this.$modal.msgSuccess("新增成功");
-              this.open = false;
-              this.getList();
-            });
-          }
+    /** 驳回按钮操作 */
+    reject(row) {
+      const { residentReqId } = row;
+      this.$prompt('请输入驳回原因', '提示', {
+          confirmButtonText: '确定',
+          cancelButtonText: '取消',
+        }).then(({ value }) => {
+          review({ residentReqId, status: '2', rejectReason: value }).then((response) => {
+            console.log(response)
+            if (response.code == 200) {
+              this.$message({
+                message: '驳回成功',
+                type: 'success'
+              });
+            }
+            this.getList();
+          });
+          
+        }).catch(() => {
+          this.$message({
+            type: 'info',
+            message: '取消驳回'
+          });       
+        });
+    },
+    /** 审核按钮操作 */
+    process(row) {
+      const { residentReqId } = row;
+      review({ residentReqId, status: '1' }).then((response) => {
+        if (response.code == 200) {
+          this.$message({
+            message: '审核成功',
+            type: 'success'
+          });
         }
+        this.getList()
       });
     },
-    /** 删除按钮操作 */
-    handleDelete(row) {
-      const residentReqIds = row.residentReqId || this.ids;
-      this.$modal.confirm('是否确认删除审核申请编号为"' + residentReqIds + '"的数据项?').then(function() {
-        return delReq(residentReqIds);
-      }).then(() => {
-        this.getList();
-        this.$modal.msgSuccess("删除成功");
-      }).catch(() => {});
-    },
-    /** 导出按钮操作 */
-    handleExport() {
-      this.download('community/req/export', {
-        ...this.queryParams
-      }, `req_${new Date().getTime()}.xlsx`)
-    }
-  }
+  },
 };
 </script>

+ 181 - 172
src/views/community/resident/index.vue

@@ -1,145 +1,120 @@
 <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>
-      <el-form-item label="出生年月" prop="birthday">
-        <el-input
-          v-model="queryParams.birthday"
-          placeholder="请输入出生年月"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="手机号" prop="phone">
-        <el-input
-          v-model="queryParams.phone"
-          placeholder="请输入手机号"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="住址" prop="houseId">
-        <el-input
-          v-model="queryParams.houseId"
-          placeholder="请输入住址"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="申请人ID" prop="applicantId">
-        <el-input
-          v-model="queryParams.applicantId"
-          placeholder="请输入申请人ID"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="是否代领" prop="entrusted">
-        <el-input
-          v-model="queryParams.entrusted"
-          placeholder="请输入是否代领"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item>
-        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
-        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
-      </el-form-item>
-    </el-form>
-
-    <el-row :gutter="10" class="mb8">
-      <el-col :span="1.5">
-        <el-button
-          type="primary"
-          plain
-          icon="el-icon-plus"
-          size="mini"
-          @click="handleAdd"
-          v-hasPermi="['community:resident:add']"
-        >新增</el-button>
+    <el-row :gutter="20">
+      <!--地址数据-->
+      <el-col :span="4" :xs="24">
+        <div class="head-container">
+          <el-input
+            v-model="addrName"
+            placeholder="请输入地址名称"
+            clearable
+            size="small"
+            prefix-icon="el-icon-search"
+            style="margin-bottom: 20px"
+          />
+        </div>
+        <div class="head-container">
+          <el-tree
+            :data="addrOptions"
+            :props="defaultProps"
+            :expand-on-click-node="false"
+            :filter-node-method="filterNode"
+            ref="tree"
+            default-expand-all
+            highlight-current
+            @node-click="handleNodeClick"
+          />
+        </div>
       </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="success"
-          plain
-          icon="el-icon-edit"
-          size="mini"
-          :disabled="single"
-          @click="handleUpdate"
-          v-hasPermi="['community:resident:edit']"
-        >修改</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="danger"
-          plain
-          icon="el-icon-delete"
-          size="mini"
-          :disabled="multiple"
-          @click="handleDelete"
-          v-hasPermi="['community:resident: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="['community:resident:export']"
-        >导出</el-button>
+
+      <el-col :span="20" :xs="24">
+        <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>
+          <el-form-item label="手机号" prop="phone">
+            <el-input
+              v-model="queryParams.phone"
+              placeholder="请输入手机号"
+              clearable
+              @keyup.enter.native="handleQuery"
+            />
+          </el-form-item>
+          <el-form-item>
+            <el-button
+              type="primary"
+              icon="el-icon-search"
+              size="mini"
+              @click="handleQuery"
+              >搜索</el-button
+            >
+            <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
+              >重置</el-button
+            >
+          </el-form-item>
+        </el-form>
+
+        <el-table
+          v-loading="loading"
+          :data="residentList"
+          @selection-change="handleSelectionChange"
+        >
+          <el-table-column type="selection" width="55" align="center" />
+          <el-table-column label="姓名" align="center" prop="name" />
+          <el-table-column label="性别" align="center" prop="sex" />
+          <el-table-column label="出生年月" align="center" prop="birthday" />
+          <el-table-column label="手机号" align="center" prop="phone" />
+          <el-table-column label="单元" align="center" prop="unit" />
+          <el-table-column label="楼层" align="center" prop="floor" />
+          <el-table-column label="门牌" align="center" prop="number" />
+          <el-table-column
+            label="操作"
+            align="center"
+            class-name="small-padding fixed-width"
+          >
+            <template slot-scope="scope">
+              <el-button
+                size="mini"
+                type="text"
+                icon="el-icon-edit"
+                @click="handleUpdate(scope.row)"
+                v-hasPermi="['community:resident:edit']"
+                >修改</el-button
+              >
+              <el-button
+                size="mini"
+                type="text"
+                icon="el-icon-delete"
+                @click="handleDelete(scope.row)"
+                v-hasPermi="['community:resident:remove']"
+                >删除</el-button
+              >
+            </template>
+          </el-table-column>
+        </el-table>
+
+        <pagination
+          v-show="total > 0"
+          :total="total"
+          :page.sync="queryParams.pageNum"
+          :limit.sync="queryParams.pageSize"
+          @pagination="getList"
+        />
       </el-col>
-      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
-    <el-table v-loading="loading" :data="residentList" @selection-change="handleSelectionChange">
-      <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="居民Id" align="center" prop="residentId" />
-      <el-table-column label="姓名" align="center" prop="name" />
-      <el-table-column label="性别" align="center" prop="sex" />
-      <el-table-column label="出生年月" align="center" prop="birthday" />
-      <el-table-column label="手机号" align="center" prop="phone" />
-      <el-table-column label="住址" align="center" prop="houseId" />
-      <el-table-column label="申请人ID" align="center" prop="applicantId" />
-      <el-table-column label="是否代领" align="center" prop="entrusted" />
-      <el-table-column label="备注" align="center" prop="remark" />
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
-        <template slot-scope="scope">
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-edit"
-            @click="handleUpdate(scope.row)"
-            v-hasPermi="['community:resident:edit']"
-          >修改</el-button>
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-delete"
-            @click="handleDelete(scope.row)"
-            v-hasPermi="['community:resident:remove']"
-          >删除</el-button>
-        </template>
-      </el-table-column>
-    </el-table>
-    
-    <pagination
-      v-show="total>0"
-      :total="total"
-      :page.sync="queryParams.pageNum"
-      :limit.sync="queryParams.pageSize"
-      @pagination="getList"
-    />
-
     <!-- 添加或修改居民信息管理对话框 -->
     <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
@@ -152,18 +127,6 @@
         <el-form-item label="手机号" prop="phone">
           <el-input v-model="form.phone" placeholder="请输入手机号" />
         </el-form-item>
-        <el-form-item label="住址" prop="houseId">
-          <el-input v-model="form.houseId" placeholder="请输入住址" />
-        </el-form-item>
-        <el-form-item label="申请人ID" prop="applicantId">
-          <el-input v-model="form.applicantId" placeholder="请输入申请人ID" />
-        </el-form-item>
-        <el-form-item label="是否代领" prop="entrusted">
-          <el-input v-model="form.entrusted" placeholder="请输入是否代领" />
-        </el-form-item>
-        <el-form-item label="备注" prop="remark">
-          <el-input v-model="form.remark" placeholder="请输入备注" />
-        </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button type="primary" @click="submitForm">确 定</el-button>
@@ -174,12 +137,24 @@
 </template>
 
 <script>
-import { listResident, getResident, delResident, addResident, updateResident } from "@/api/community/resident";
+import {  addrTreeSelect } from "@/api/community/addr";
+import {
+  listResident,
+  getResident,
+  delResident,
+  addResident,
+  updateResident,
+} from "@/api/community/resident";
 
 export default {
   name: "Resident",
   data() {
     return {
+      defaultProps: {},
+      // 地址树选项
+      addrOptions: undefined,
+      // 地址名称
+      addrName: undefined,
       // 遮罩层
       loading: true,
       // 选中数组
@@ -213,18 +188,42 @@ export default {
       // 表单参数
       form: {},
       // 表单校验
-      rules: {
-      }
+      rules: {},
     };
   },
   created() {
     this.getList();
+    this.getAddrTree();
+  },
+  watch: {
+    // 根据名称筛选地址树
+    addrName(val) {
+      this.$refs.tree.filter(val);
+    }
   },
   methods: {
+     /** 查询地址下拉树结构 */
+    getAddrTree() {
+      addrTreeSelect(this.queryParams).then(response => {
+        this.addrOptions = response.data;
+      });
+    },
+    // 节点单击事件
+    handleNodeClick(data) {
+      const { interId, type } = data;
+      this.queryParams.addrInterId = interId;
+      this.queryParams.addrType = type;
+      this.getList();
+    },
+    // 筛选节点
+    filterNode(value, data) {
+      if (!value) return true;
+      return data.label.indexOf(value) !== -1;
+    },
     /** 查询居民信息管理列表 */
     getList() {
       this.loading = true;
-      listResident(this.queryParams).then(response => {
+      listResident(this.queryParams).then((response) => {
         this.residentList = response.rows;
         this.total = response.total;
         this.loading = false;
@@ -248,7 +247,7 @@ export default {
         entrusted: null,
         createTime: null,
         updateTime: null,
-        remark: null
+        remark: null,
       };
       this.resetForm("form");
     },
@@ -264,9 +263,9 @@ export default {
     },
     // 多选框选中数据
     handleSelectionChange(selection) {
-      this.ids = selection.map(item => item.residentId)
-      this.single = selection.length!==1
-      this.multiple = !selection.length
+      this.ids = selection.map((item) => item.residentId);
+      this.single = selection.length !== 1;
+      this.multiple = !selection.length;
     },
     /** 新增按钮操作 */
     handleAdd() {
@@ -277,8 +276,8 @@ export default {
     /** 修改按钮操作 */
     handleUpdate(row) {
       this.reset();
-      const residentId = row.residentId || this.ids
-      getResident(residentId).then(response => {
+      const residentId = row.residentId || this.ids;
+      getResident(residentId).then((response) => {
         this.form = response.data;
         this.open = true;
         this.title = "修改居民信息管理";
@@ -286,16 +285,16 @@ export default {
     },
     /** 提交按钮 */
     submitForm() {
-      this.$refs["form"].validate(valid => {
+      this.$refs["form"].validate((valid) => {
         if (valid) {
           if (this.form.residentId != null) {
-            updateResident(this.form).then(response => {
+            updateResident(this.form).then((response) => {
               this.$modal.msgSuccess("修改成功");
               this.open = false;
               this.getList();
             });
           } else {
-            addResident(this.form).then(response => {
+            addResident(this.form).then((response) => {
               this.$modal.msgSuccess("新增成功");
               this.open = false;
               this.getList();
@@ -307,19 +306,29 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const residentIds = row.residentId || this.ids;
-      this.$modal.confirm('是否确认删除居民信息管理编号为"' + residentIds + '"的数据项?').then(function() {
-        return delResident(residentIds);
-      }).then(() => {
-        this.getList();
-        this.$modal.msgSuccess("删除成功");
-      }).catch(() => {});
+      this.$modal
+        .confirm(
+          '是否确认删除居民信息管理编号为"' + residentIds + '"的数据项?'
+        )
+        .then(function () {
+          return delResident(residentIds);
+        })
+        .then(() => {
+          this.getList();
+          this.$modal.msgSuccess("删除成功");
+        })
+        .catch(() => {});
     },
     /** 导出按钮操作 */
     handleExport() {
-      this.download('community/resident/export', {
-        ...this.queryParams
-      }, `resident_${new Date().getTime()}.xlsx`)
-    }
-  }
+      this.download(
+        "community/resident/export",
+        {
+          ...this.queryParams,
+        },
+        `resident_${new Date().getTime()}.xlsx`
+      );
+    },
+  },
 };
 </script>

+ 25 - 56
src/views/community/task/index.vue

@@ -25,14 +25,6 @@
           placeholder="请选择结束时间">
         </el-date-picker>
       </el-form-item>
-      <el-form-item label="任务详情" prop="detail">
-        <el-input
-          v-model="queryParams.detail"
-          placeholder="请输入任务详情"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
       <el-form-item>
         <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
         <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
@@ -50,44 +42,10 @@
           v-hasPermi="['community:task:add']"
         >新增</el-button>
       </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="success"
-          plain
-          icon="el-icon-edit"
-          size="mini"
-          :disabled="single"
-          @click="handleUpdate"
-          v-hasPermi="['community:task:edit']"
-        >修改</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="danger"
-          plain
-          icon="el-icon-delete"
-          size="mini"
-          :disabled="multiple"
-          @click="handleDelete"
-          v-hasPermi="['community:task: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="['community:task:export']"
-        >导出</el-button>
-      </el-col>
-      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
     <el-table v-loading="loading" :data="taskList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="${comment}" align="center" prop="natTaskId" />
       <el-table-column label="任务名称" align="center" prop="name" />
       <el-table-column label="开始时间" align="center" prop="startTime" width="180">
         <template slot-scope="scope">
@@ -99,11 +57,17 @@
           <span>{{ parseTime(scope.row.endTime, '{y}-{m}-{d}') }}</span>
         </template>
       </el-table-column>
-      <el-table-column label="任务状态" align="center" prop="status" />
-      <el-table-column label="任务详情" align="center" prop="detail" />
-      <el-table-column label="备注" align="center" prop="remark" />
+      <el-table-column label="任务状态" align="center" prop="statusText" />
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
+          <el-button
+            v-if="scope.row.status == 1"
+            size="mini"
+            type="text"
+            icon="el-icon-close"
+            @click="close(scope.row)"
+            v-hasPermi="['community:task:edit']"
+          >结束</el-button>
           <el-button
             size="mini"
             type="text"
@@ -152,9 +116,6 @@
             placeholder="请选择结束时间">
           </el-date-picker>
         </el-form-item>
-        <el-form-item label="任务详情" prop="detail">
-          <el-input v-model="form.detail" placeholder="请输入任务详情" />
-        </el-form-item>
         <el-form-item label="备注" prop="remark">
           <el-input v-model="form.remark" placeholder="请输入备注" />
         </el-form-item>
@@ -217,7 +178,12 @@ export default {
     getList() {
       this.loading = true;
       listTask(this.queryParams).then(response => {
-        this.taskList = response.rows;
+        this.taskList = response.rows.map(e => {
+          if (e.status == 0) e.statusText = '未开始';
+          if (e.status == 1) e.statusText = '进行中';
+          if (e.status == 2) e.statusText = '已结束';
+          return e;
+        });
         this.total = response.total;
         this.loading = false;
       });
@@ -272,6 +238,15 @@ export default {
         this.title = "修改检测任务管理";
       });
     },
+    /** 结束按钮操作 */
+    close(row) {
+      const { natTaskId } = row;
+       updateTask({ natTaskId, status: '2' }).then(response => {
+              this.$modal.msgSuccess("已结束");
+              this.open = false;
+              this.getList();
+            });
+    },
     /** 提交按钮 */
     submitForm() {
       this.$refs["form"].validate(valid => {
@@ -295,18 +270,12 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const natTaskIds = row.natTaskId || this.ids;
-      this.$modal.confirm('是否确认删除检测任务管理编号为"' + natTaskIds + '"的数据项?').then(function() {
+      this.$modal.confirm(`是否确认删除检测任务管理名称为${ row.name}的数据项?`).then(function() {
         return delTask(natTaskIds);
       }).then(() => {
         this.getList();
         this.$modal.msgSuccess("删除成功");
       }).catch(() => {});
-    },
-    /** 导出按钮操作 */
-    handleExport() {
-      this.download('community/task/export', {
-        ...this.queryParams
-      }, `task_${new Date().getTime()}.xlsx`)
     }
   }
 };