Forráskód Böngészése

内蒙运维系统-应急系统前端

dylan 2 éve
szülő
commit
5f97d52596

+ 13 - 0
src/api/baseinfo/wholeregion.js

@@ -0,0 +1,13 @@
+import request from '@/router/axios';
+
+
+export const getLazyTree = (parentCode, params) => {
+    return request({
+        url: '/api/galaxy-business/baseinfo/region/whole/lazy-tree',
+        method: 'get',
+        params: {
+            ...params,
+            parentCode
+        }
+    })
+}

+ 23 - 0
src/api/business/yj/damagetransferregister.js

@@ -0,0 +1,23 @@
+import request from '@/router/axios';
+
+
+export const add = (row) => {
+    return request({
+        url: '/api/yjxt-business/public/rest/transfer/resident/register',
+        method: 'post',
+        data: row
+    })
+}
+
+export const getFamilyList = (params) => {
+    return request({
+        url: '/api/yjxt-business/public/rest/resident/family/list',
+        method: 'get',
+        params: {
+            ...params
+        }
+    })
+}
+
+
+

+ 33 - 0
src/api/business/yj/residentregister.js

@@ -0,0 +1,33 @@
+import request from '@/router/axios';
+
+export const getPage = (current, size, params) => {
+    return request({
+        url: '/api/galaxy-business/yj/resident/page',
+        method: 'get',
+        params: {
+            ...params,
+            current,
+            size,
+        }
+    })
+}
+
+export const getDetail = (id) => {
+    return request({
+        url: '/api/galaxy-business/yj/resident/detail',
+        method: 'get',
+        params: {
+            id
+        }
+    })
+}
+
+export const add = (row) => {
+    return request({
+        url: '/api/yjxt-business/public/rest/dangerarea/resident/register',
+        method: 'post',
+        data: row
+    })
+}
+
+

+ 24 - 0
src/api/business/yj/yjdangerareacheck.js

@@ -0,0 +1,24 @@
+import request from '@/router/axios';
+
+export const getPage = (current, size, params) => {
+    return request({
+        url: '/api/galaxy-business/yj/check/page',
+        method: 'get',
+        params: {
+            ...params,
+            current,
+            size,
+        }
+    })
+}
+
+export const getDetail = (id) => {
+    return request({
+        url: '/api/galaxy-business/yj/check/detail',
+        method: 'get',
+        params: {
+            id
+        }
+    })
+}
+

+ 50 - 0
src/api/business/yj/yjserviceperson.js

@@ -0,0 +1,50 @@
+import request from '@/router/axios';
+
+export const getPage = (current, size, params) => {
+    return request({
+        url: '/api/galaxy-business/yj/base/serviceperson/page',
+        method: 'get',
+        params: {
+            ...params,
+            current,
+            size,
+        }
+    })
+}
+
+export const remove = (ids) => {
+    return request({
+        url: '/api/galaxy-business/yj/base/serviceperson/remove',
+        method: 'post',
+        params: {
+            ids,
+        }
+    })
+}
+
+export const add = (row) => {
+    return request({
+        url: '/api/galaxy-business/yj/base/serviceperson/save',
+        method: 'post',
+        data: row
+    })
+}
+
+export const update = (row) => {
+    return request({
+        url: '/api/galaxy-business/yj/base/serviceperson/update',
+        method: 'post',
+        data: row
+    })
+}
+
+export const getDetail = (id) => {
+    return request({
+        url: '/api/galaxy-business/yj/base/serviceperson/detail',
+        method: 'get',
+        params: {
+            id
+        }
+    })
+}
+

+ 24 - 0
src/api/business/yj/yjtransferresident.js

@@ -0,0 +1,24 @@
+import request from '@/router/axios';
+
+export const getPage = (current, size, params) => {
+    return request({
+        url: '/api/galaxy-business/yj/transfer/page',
+        method: 'get',
+        params: {
+            ...params,
+            current,
+            size,
+        }
+    })
+}
+
+export const getDetail = (id) => {
+    return request({
+        url: '/api/galaxy-business/yj/transfer/detail',
+        method: 'get',
+        params: {
+            id
+        }
+    })
+}
+

+ 24 - 0
src/api/business/yj/yjwarn.js

@@ -0,0 +1,24 @@
+import request from '@/router/axios';
+
+export const getPage = (current, size, params) => {
+    return request({
+        url: '/api/galaxy-business/yj/warn/page',
+        method: 'get',
+        params: {
+            ...params,
+            current,
+            size,
+        }
+    })
+}
+
+export const getDetail = (id) => {
+    return request({
+        url: '/api/galaxy-business/yj/warn/detail',
+        method: 'get',
+        params: {
+            id
+        }
+    })
+}
+

+ 2 - 2
src/config/website.js

@@ -50,8 +50,8 @@ export default {
     //reportUrl: 'http://localhost:20002/ureport',
     reportUrl: 'https://nmwx.dahengsi.com:20001/ureport',
     //文件存储服务器地址,末尾必须/
-    ossServer: 'http://172.31.1.154:20002/oss/galaxy/',
-    //ossServer: 'https://nmwx.dahengsi.com:20001/oss/galaxy/',
+    //ossServer: 'http://172.31.1.154:20002/oss/galaxy/',
+    ossServer: 'https://nmwx.dahengsi.com:20001/oss/galaxy/',
     //ossServer: 'http://111.204.228.227:20002/oss/galaxy/',
     //文件预览服务器地址
     kkfileviewServer: 'http://localhost:8012',

+ 68 - 44
src/router/page/index.js

@@ -1,81 +1,105 @@
 import Layout from '@/page/index/'
 
 export default [{
-  path: '/login',
-  name: '登录页',
-  component: () =>
-    import( /* webpackChunkName: "page" */ '@/page/login/index'),
-  meta: {
-    keepAlive: true,
-    isTab: false,
-    isAuth: false
-  }
+    path: '/login',
+    name: '登录页',
+    component: () =>
+        import( /* webpackChunkName: "page" */ '@/page/login/index'),
+    meta: {
+        keepAlive: true,
+        isTab: false,
+        isAuth: false
+    }
 },
-  {
+{
     path: '/lock',
     name: '锁屏页',
     component: () =>
-      import( /* webpackChunkName: "page" */ '@/page/lock/index'),
+        import( /* webpackChunkName: "page" */ '@/page/lock/index'),
     meta: {
-      keepAlive: true,
-      isTab: false,
-      isAuth: false
+        keepAlive: true,
+        isTab: false,
+        isAuth: false
     }
-  },
-  {
+},
+{
     path: '/404',
     component: () =>
-      import( /* webpackChunkName: "page" */ '@/components/error-page/404'),
+        import( /* webpackChunkName: "page" */ '@/components/error-page/404'),
     name: '404',
     meta: {
-      keepAlive: true,
-      isTab: false,
-      isAuth: false
+        keepAlive: true,
+        isTab: false,
+        isAuth: false
     }
 
-  },
-  {
+},
+{
     path: '/403',
     component: () =>
-      import( /* webpackChunkName: "page" */ '@/components/error-page/403'),
+        import( /* webpackChunkName: "page" */ '@/components/error-page/403'),
     name: '403',
     meta: {
-      keepAlive: true,
-      isTab: false,
-      isAuth: false
+        keepAlive: true,
+        isTab: false,
+        isAuth: false
     }
-  },
-  {
+},
+{
     path: '/500',
     component: () =>
-      import( /* webpackChunkName: "page" */ '@/components/error-page/500'),
+        import( /* webpackChunkName: "page" */ '@/components/error-page/500'),
     name: '500',
     meta: {
-      keepAlive: true,
-      isTab: false,
-      isAuth: false
+        keepAlive: true,
+        isTab: false,
+        isAuth: false
     }
-  },
-  {
+},
+{
+    path: '/damage/transfer/register',
+    component: () =>
+        import( /* webpackChunkName: "page" */ '@/views/yj/damagetransferregister'),
+    name: '预警响应转移',
+    meta: {
+        keepAlive: true,
+        isTab: false,
+        isAuth: false,
+        title: '预警响应转移',
+    }
+},
+{
+    path: '/yj/dangerarea/resident/register',
+    component: () =>
+        import( /* webpackChunkName: "page" */ '@/views/yj/residentregister'),
+    name: '危险区群众登记',
+    meta: {
+        keepAlive: true,
+        isTab: false,
+        isAuth: false,
+        title: '危险区群众登记',
+    }
+},
+{
     path: '/',
     name: '主页',
     redirect: '/wel'
-  },
-  {
+},
+{
     path: '/myiframe',
     component: Layout,
     redirect: '/myiframe',
     children: [{
-      path: ":routerPath",
-      name: 'iframe',
-      component: () =>
-        import( /* webpackChunkName: "page" */ '@/components/iframe/main'),
-      props: true
+        path: ":routerPath",
+        name: 'iframe',
+        component: () =>
+            import( /* webpackChunkName: "page" */ '@/components/iframe/main'),
+        props: true
     }]
 
-  },
-  {
+},
+{
     path: '*',
     redirect: '/404'
-  }
+}
 ]

+ 0 - 1
src/views/baseinfo/project.vue

@@ -93,7 +93,6 @@ export default {
     },
     data() {
         return {
-
             projectPlanDialog: false,
             orderDialog: false,
             warningConfig: {

+ 244 - 0
src/views/business/yjxt/yjdangerareacheck.vue

@@ -0,0 +1,244 @@
+<!--
+ * @Title: 
+ * @Description: 应急人员
+ * @Author: swp
+ * @Date: 2022-08-24 10:49:21
+ * @LastEditors: 
+ * @LastEditTime: 2022-08-24 10:49:21
+-->
+<template>
+    <div>
+        <el-row>
+            <el-col :span="24">
+                <basic-container>
+                    <avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page"
+                        :before-open="beforeOpen" ref="crud" v-model="form" :permission="permissionList"
+                        @search-change="searchChange" @search-reset="searchReset" @selection-change="selectionChange"
+                        @current-change="currentChange" @size-change="sizeChange" @refresh-change="refreshChange"
+                        @on-load="onLoad" @before-open="beforeOpen" @select-change="selectChange">
+                        <template slot-scope="{ row, index }" slot="menu">
+                            <el-button type="text" size="small" @click="toCheckInfo(row)">查看图片
+                            </el-button>
+                        </template>
+                    </avue-crud>
+                </basic-container>
+            </el-col>
+        </el-row>
+        <el-drawer :visible.sync="yjdangerareacheckdetailDialog" v-if="yjdangerareacheckdetailDialog" title="图片"
+            direction="rtl" size="60%" append-to-body="true">
+            <yjdangerareacheckdetail ref="yjdangerareacheckdetailView" :id="id">
+            </yjdangerareacheckdetail>
+        </el-drawer>
+    </div>
+</template>
+
+<script>
+
+
+import { getPage, getDetail } from "@/api/business/yj/yjdangerareacheck.js";
+import { mapGetters } from "vuex";
+import yjdangerareacheckdetail from './yjdangerareacheckdetail.vue'
+
+export default {
+    components: {
+        yjdangerareacheckdetail
+    },
+    data() {
+        return {
+            id: "",
+            editForm: {},
+            editDialog: false,
+            yjdangerareacheckdetailDialog: false,
+            form: {},
+            selectionList: [],
+            query: {},
+            loading: true,
+            page: {
+                pageSize: 10,
+                currentPage: 1,
+                total: 0,
+            },
+            option: {
+                labelWidth: 140,
+                viewLabelWidth: 140,
+                searchlabelWidth: 140,
+                height: "auto",
+                calcHeight: 80,
+                align: "center",
+                headerAlign: "center",
+                tip: false,
+                simplePage: true,
+                searchShow: true,
+                searchMenuSpan: 6,
+                border: true,
+                index: true,
+                selection: false,
+                viewBtn: false,
+                viewTitle: "现场巡检",
+                editBtn: true,
+                delBtn: true,
+                menuWidth: 220,
+                dialogType: "drawer",
+                dialogClickModal: false,
+                columnBtn: false,
+                menu: true,
+                column: [
+                    {
+                        label: "巡查类型",
+                        prop: "checkType",
+                        span: 24,
+                        html: true,
+                        formatter: (val) => {
+                            let htmltext = '';
+                            if (val.isHouseholder === 1) {
+                                htmltext = '<b style="color:blue">独立巡查</b>';
+                            } else {
+                                htmltext = '<b style="color:blue">应急发起巡查</b>';
+                            }
+                            return htmltext;
+                        }
+                    },
+                    {
+                        label: "经度",
+                        prop: "longitude",
+                        span: 24,
+                    },
+                    {
+                        label: "纬度",
+                        prop: "latitude",
+                        span: 24,
+                    },
+                    {
+                        label: "定位地址",
+                        prop: "address",
+                        span: 24,
+                    },
+                    {
+                        label: "是否有山洪",
+                        prop: "isFlood",
+                        span: 24,
+                        html: true,
+                        formatter: (val) => {
+                            let htmltext = '';
+                            if (val.isFlood === 0) {
+                                htmltext = '<b style="color:blue">否</b>';
+                            } else {
+                                htmltext = '<b style="color:red">是</b>';
+                            }
+                            return htmltext;
+                        }
+                    },
+                    {
+                        label: "是否成灾",
+                        prop: "isDamage",
+                        span: 24,
+                        html: true,
+                        formatter: (val) => {
+                            let htmltext = '';
+                            if (val.isDamage === 0) {
+                                htmltext = '<b style="color:blue">否</b>';
+                            } else {
+                                htmltext = '<b style="color:red">是</b>';
+                            }
+                            return htmltext;
+                        }
+                    },
+                    {
+                        label: "巡查说明",
+                        prop: "remark",
+                        span: 24,
+                    },
+                    {
+                        label: "巡查时间",
+                        prop: "createTime",
+                        span: 24,
+                    },
+                ],
+            },
+            data: [],
+        };
+    },
+    computed: {
+        ...mapGetters(["userInfo", "permission"]),
+        permissionList() {
+            return {
+                addBtn: this.vaildData(this.permission.yjxt_service_person_add, false),
+                viewBtn: this.vaildData(this.permission.yjxt_service_person_view, false),
+                delBtn: this.vaildData(this.permission.yjxt_service_person_del, false),
+                editBtn: this.vaildData(this.permission.yjxt_service_person_edit, false),
+            };
+        },
+        ids() {
+            let ids = [];
+            this.selectionList.forEach((ele) => {
+                ids.push(ele.id);
+            });
+            return ids.join(",");
+        },
+    },
+    mounted() { },
+    created() {
+    },
+    methods: {
+        toCheckInfo(row) {
+            this.id = row.id;
+            this.yjdangerareacheckdetailDialog = true;
+            this.$nextTick(() => {
+                this.$refs["yjdangerareacheckdetailView"].initData();
+            });
+        },
+        searchReset() {
+            this.query = {};
+            this.onLoad(this.page);
+        },
+        searchChange(params, done) {
+            this.query = params;
+            this.page.currentPage = 1;
+            this.onLoad(this.page, params);
+            done();
+        },
+        selectionChange(list) {
+            this.selectionList = list;
+        },
+        selectChange(item) {
+            console.log(item)
+        },
+        selectionClear() {
+            this.selectionList = [];
+            this.$refs.crud.toggleSelection();
+        },
+
+        beforeOpen(done, type) {
+            if (["edit", "view"].includes(type)) {
+                getDetail(this.form.id).then((res) => {
+                    this.form = res.data.data;
+                });
+            }
+            done();
+        },
+        currentChange(currentPage) {
+            this.page.currentPage = currentPage;
+        },
+        sizeChange(pageSize) {
+            this.page.pageSize = pageSize;
+        },
+        refreshChange() {
+            this.onLoad(this.page, this.query);
+        },
+        onLoad(page, params = {}) {
+            this.loading = true;
+            getPage(
+                page.currentPage,
+                page.pageSize,
+                Object.assign(params, this.query)
+            ).then((res) => {
+                const data = res.data.data;
+                this.page.total = data.total;
+                this.data = data.records;
+                this.loading = false;
+                this.selectionClear();
+            });
+        },
+    },
+};
+</script>

+ 125 - 0
src/views/business/yjxt/yjdangerareacheckdetail.vue

@@ -0,0 +1,125 @@
+<!--
+ * @Title: 
+ * @Description: 巡检填报详情
+ * @Author: swp
+ * @Date: 2022-08-24 10:49:21
+ * @LastEditors: 
+ * @LastEditTime: 2022-08-24 10:49:21
+-->
+<template>
+    <basic-container>
+        <el-card shadow="hover" style="margin-top: 10px;">
+            <div slot="header">
+                <span>巡查照片</span>
+            </div>
+            <div style="width: 100%;">
+                <el-row v-for="(item, index) in data.photoList" :key="index" type="flex">
+                    <el-col :span="24">
+                        <el-image :src=toOss(item)></el-image>
+                    </el-col>
+                </el-row>
+            </div>
+
+        </el-card>
+    </basic-container>
+</template>
+
+<script>
+
+import {
+    getDetail,
+} from "@/api/business/yj/yjdangerareacheck.js";
+
+export default {
+    components: {
+
+    },
+    props: {
+        id: {
+            type: [Number],
+            required: true
+        },
+    },
+    name: '',
+    data() {
+        return {
+            data: {
+                photoList: []
+            }
+        }
+    },
+    created() {
+        this.initData();
+    },
+    methods: {
+        toOss(path) {
+            console.log("1111111111oss " + this.website.ossServer + path);
+            return this.website.ossServer + path;
+        },
+        initData() {
+            getDetail(this.id).then(res => {
+                const data = res.data;
+                console.log(JSON.stringify(data));
+                if (data.success) {
+                    let photos = data.data['checkPhotos'];
+
+                    if (null != photos && photos.length > 0) {
+                        console.log(photos)
+
+                        let photoList = photos.split(",");
+                        console.log(photoList)
+                        this.data.photoList = photoList;
+                    }
+
+                }
+            })
+        },
+
+    }
+}
+</script>
+
+
+<style lang="scss" scoped>
+.item-line-start {
+    display: flex;
+    flex-direction: row;
+    justify-content: flex-start;
+}
+
+.item-line-end {
+    display: flex;
+    flex-direction: row;
+    justify-content: flex-end;
+}
+
+.item-line-center {
+    display: flex;
+    flex-direction: row;
+    justify-content: center;
+    width: 100%;
+}
+
+.block-line {
+    border-bottom: 1px solid lightblue;
+}
+
+.item-title {
+    display: flex;
+    flex-direction: column;
+    ;
+    justify-content: center;
+    font-size: 1rem;
+}
+
+.item-content {
+    display: flex;
+    flex-direction: column;
+    ;
+    justify-content: center;
+    padding-left: 10px;
+    color: grey;
+    font-size: 1rem;
+}
+</style>
+

+ 336 - 0
src/views/business/yjxt/yjdangerareachecklist.vue

@@ -0,0 +1,336 @@
+<!--
+ * @Title: 
+ * @Description: 应急人员
+ * @Author: swp
+ * @Date: 2022-08-24 10:49:21
+ * @LastEditors: 
+ * @LastEditTime: 2022-08-24 10:49:21
+-->
+<template>
+    <div>
+        <el-row>
+            <el-col :span="24">
+                <basic-container>
+                    <avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page"
+                        :before-open="beforeOpen" ref="crud" v-model="form" :permission="permissionList"
+                        @search-change="searchChange" @search-reset="searchReset" @selection-change="selectionChange"
+                        @current-change="currentChange" @size-change="sizeChange" @refresh-change="refreshChange"
+                        @before-open="beforeOpen" @select-change="selectChange">
+                        <template slot-scope="{ row, index }" slot="menu">
+                            <el-button type="text" size="small" @click="toCheckInfo(row)">查看图片
+                            </el-button>
+                        </template>
+                    </avue-crud>
+                </basic-container>
+            </el-col>
+        </el-row>
+        <el-drawer :visible.sync="yjdangerareacheckdetailDialog" v-if="yjdangerareacheckdetailDialog" title="图片"
+            direction="rtl" size="60%" append-to-body="true">
+            <yjdangerareacheckdetail ref="yjdangerareacheckdetailView" :id="id">
+            </yjdangerareacheckdetail>
+        </el-drawer>
+    </div>
+</template>
+
+<script>
+
+import { getPage, getDetail } from "@/api/business/yj/yjdangerareacheck.js";
+import { mapGetters } from "vuex";
+import yjdangerareacheckdetail from './yjdangerareacheckdetail.vue'
+export default {
+    components: {
+        yjdangerareacheckdetail
+    },
+    props: {
+        warnId: {
+            type: [Number],
+            required: true
+        },
+    },
+    data() {
+        return {
+            id: '',
+            editForm: {},
+            editDialog: false,
+            yjdangerareacheckdetailDialog: false,
+            form: {},
+            selectionList: [],
+            query: {},
+            loading: true,
+            page: {
+                pageSize: 10,
+                currentPage: 1,
+                total: 0,
+            },
+            option: {
+                labelWidth: 140,
+                viewLabelWidth: 140,
+                searchlabelWidth: 140,
+                height: "auto",
+                calcHeight: 80,
+                align: "center",
+                headerAlign: "center",
+                tip: false,
+                simplePage: true,
+                searchShow: true,
+                searchMenuSpan: 6,
+                border: true,
+                index: true,
+                selection: false,
+                viewBtn: false,
+                viewTitle: "现场巡检信息",
+                editBtn: true,
+                delBtn: true,
+                menuWidth: 220,
+                dialogType: "drawer",
+                dialogClickModal: false,
+                columnBtn: false,
+                menu: true,
+                column: [
+                    {
+                        label: "巡查类型",
+                        prop: "checkType",
+                        span: 24,
+                        html: true,
+                        formatter: (val) => {
+                            let htmltext = '';
+                            if (val.isHouseholder === 1) {
+                                htmltext = '<b style="color:blue">独立巡查</b>';
+                            } else {
+                                htmltext = '<b style="color:blue">应急发起巡查</b>';
+                            }
+                            return htmltext;
+                        }
+                    },
+                    {
+                        label: "经度",
+                        prop: "longitude",
+                        span: 24,
+                    },
+                    {
+                        label: "纬度",
+                        prop: "latitude",
+                        span: 24,
+                    },
+                    {
+                        label: "定位地址",
+                        prop: "address",
+                        span: 24,
+                    },
+                    {
+                        label: "是否有山洪",
+                        prop: "isFlood",
+                        span: 24,
+                        html: true,
+                        formatter: (val) => {
+                            let htmltext = '';
+                            if (val.isFlood === 0) {
+                                htmltext = '<b style="color:blue">否</b>';
+                            } else {
+                                htmltext = '<b style="color:red">是</b>';
+                            }
+                            return htmltext;
+                        }
+                    },
+                    {
+                        label: "是否成灾",
+                        prop: "isDamage",
+                        span: 24,
+                        html: true,
+                        formatter: (val) => {
+                            let htmltext = '';
+                            if (val.isDamage === 0) {
+                                htmltext = '<b style="color:blue">否</b>';
+                            } else {
+                                htmltext = '<b style="color:red">是</b>';
+                            }
+                            return htmltext;
+                        }
+                    },
+                    {
+                        label: "巡查说明",
+                        prop: "remark",
+                        span: 24,
+                    },
+                    {
+                        label: "巡查时间",
+                        prop: "createTime",
+                        span: 24,
+                    },
+                ],
+            },
+            data: [],
+        };
+    },
+    computed: {
+        ...mapGetters(["userInfo", "permission"]),
+        permissionList() {
+            return {
+                addBtn: false,
+                viewBtn: false,
+                delBtn: false,
+                editBtn: false,
+            };
+        },
+        ids() {
+            let ids = [];
+            this.selectionList.forEach((ele) => {
+                ids.push(ele.id);
+            });
+            return ids.join(",");
+        },
+    },
+    mounted() { },
+    created() {
+    },
+    methods: {
+        initData() {
+            this.onLoad(this.page);
+        },
+        // rowSave(row, done, loading) {
+        //     add(row).then(
+        //         () => {
+        //             this.onLoad(this.page);
+        //             this.$message({
+        //                 type: "success",
+        //                 message: "操作成功!",
+        //             });
+        //             done();
+        //         },
+        //         (error) => {
+        //             window.console.log(error);
+        //             loading();
+        //         }
+        //     );
+        // },
+        // rowUpdate(row, index, done, loading) {
+        //     update(row).then(
+        //         () => {
+        //             this.onLoad(this.page);
+        //             this.$message({
+        //                 type: "success",
+        //                 message: "操作成功!",
+        //             });
+        //             done();
+        //         },
+        //         (error) => {
+        //             window.console.log(error);
+        //             loading();
+        //         }
+        //     );
+        // },
+        // rowDel(row) {
+        //     this.$confirm("确定将选择数据删除?", {
+        //         confirmButtonText: "确定",
+        //         cancelButtonText: "取消",
+        //         type: "warning",
+        //     })
+        //         .then(() => {
+        //             return remove(row.id);
+        //         })
+        //         .then(() => {
+        //             this.onLoad(this.page);
+        //             this.$message({
+        //                 type: "success",
+        //                 message: "操作成功!",
+        //             });
+        //         });
+        // },
+        toCheckInfo(row) {
+            this.id = row.id;
+            this.yjdangerareacheckdetailDialog = true;
+            this.$nextTick(() => {
+                this.$refs["yjdangerareacheckdetailView"].initData();
+            });
+        },
+        searchReset() {
+            this.query = {};
+            this.onLoad(this.page);
+        },
+        searchChange(params, done) {
+            this.query = params;
+            this.page.currentPage = 1;
+            this.onLoad(this.page, params);
+            done();
+        },
+        selectionChange(list) {
+            this.selectionList = list;
+        },
+        selectChange(item) {
+            console.log(item)
+        },
+        selectionClear() {
+            this.selectionList = [];
+            this.$refs.crud.toggleSelection();
+        },
+        // handleDelete() {
+        //     if (this.selectionList.length === 0) {
+        //         this.$message.warning("请选择至少一条数据");
+        //         return;
+        //     }
+        //     this.$confirm("确定将选择数据删除?", {
+        //         confirmButtonText: "确定",
+        //         cancelButtonText: "取消",
+        //         type: "warning",
+        //     })
+        //         .then(() => {
+        //             return remove(this.ids);
+        //         })
+        //         .then(() => {
+        //             this.onLoad(this.page);
+        //             this.$message({
+        //                 type: "success",
+        //                 message: "操作成功!",
+        //             });
+        //             this.$refs.crud.toggleSelection();
+        //         });
+        // },
+        beforeOpen(done, type) {
+            if (["edit", "view"].includes(type)) {
+                getDetail(this.form.id).then((res) => {
+                    this.form = res.data.data;
+                });
+            }
+            done();
+        },
+        currentChange(currentPage) {
+            this.page.currentPage = currentPage;
+        },
+        sizeChange(pageSize) {
+            this.page.pageSize = pageSize;
+        },
+        refreshChange() {
+            this.onLoad(this.page, this.query);
+        },
+        onLoad(page, params = {}) {
+            this.loading = true;
+            params['warnId'] = this.warnId;
+
+            getPage(
+                page.currentPage,
+                page.pageSize,
+                Object.assign(params, this.query)
+            ).then((res) => {
+                const data = res.data.data;
+                this.page.total = data.total;
+                this.data = data.records;
+                this.loading = false;
+                this.selectionClear();
+            });
+        },
+    },
+};
+</script>
+<style>
+.box {
+    height: 800px;
+}
+
+.el-scrollbar {
+    height: 100%;
+}
+
+.box .el-scrollbar__wrap {
+    overflow: scroll;
+}
+</style>

+ 336 - 0
src/views/business/yjxt/yjdangerarearesident.vue

@@ -0,0 +1,336 @@
+<!--
+ * @Title: 
+ * @Description: 应急人员
+ * @Author: swp
+ * @Date: 2022-08-24 10:49:21
+ * @LastEditors: 
+ * @LastEditTime: 2022-08-24 10:49:21
+-->
+<template>
+    <div>
+        <el-row>
+            <el-col :span="6">
+                <div class="box">
+                    <el-scrollbar>
+                        <basic-container>
+                            <avue-tree :option="treeOption" :data="treeData" @node-click="nodeClick">
+                                <span class="el-tree-node__label" slot-scope="{ node, data }">
+                                    <span>
+                                        <i class="el-icon-office-building"></i>
+                                        {{ (node || {}).label }}
+                                    </span>
+                                </span>
+                            </avue-tree>
+                        </basic-container>
+                    </el-scrollbar>
+                </div>
+            </el-col>
+            <el-col :span="18">
+                <basic-container>
+                    <avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page"
+                        :before-open="beforeOpen" ref="crud" v-model="form" :permission="permissionList"
+                        @search-change="searchChange" @search-reset="searchReset" @selection-change="selectionChange"
+                        @current-change="currentChange" @size-change="sizeChange" @refresh-change="refreshChange"
+                        @on-load="onLoad" @before-open="beforeOpen" @select-change="selectChange">
+                        <template slot-scope="{ row, index }" slot="menu">
+                            <el-button type="text" size="small" @click="toFamilyMembers(row)">家庭成员清单
+                            </el-button>
+                        </template>
+                    </avue-crud>
+                </basic-container>
+            </el-col>
+        </el-row>
+        <el-drawer :visible.sync="familymembersViewDialog" v-if="familymembersViewDialog" title="家庭成员清单" direction="rtl"
+            size="60%" append-to-body="true">
+            <yjresidentfamilymembers ref="yjresidentfamilymembersView" :householderId="householderId">
+            </yjresidentfamilymembers>
+        </el-drawer>
+    </div>
+</template>
+
+<script>
+
+import { getPage, getDetail } from "@/api/business/yj/residentregister.js";
+import { getLazyTree } from "@/api/baseinfo/wholeregion.js";
+import yjresidentfamilymembers from './yjresidentfamilymembers.vue'
+import { mapGetters } from "vuex";
+export default {
+    components: {
+        yjresidentfamilymembers
+    },
+    data() {
+        return {
+            id: "",
+            editForm: {},
+            editDialog: false,
+            familymembersViewDialog: false,
+            form: {},
+            selectionList: [],
+            query: {},
+            loading: true,
+            page: {
+                pageSize: 10,
+                currentPage: 1,
+                total: 0,
+            },
+            treeCode: '',
+            treeParentCode: '',
+            treeData: [],
+            treeOption: {
+                nodeKey: "id",
+                defaultExpandedKeys: [],
+                lazy: true,
+                treeLoad: function (node, resolve) {
+                    const parentCode = (node.level === 0) ? "00" : node.data.value;
+                    getLazyTree(parentCode).then(res => {
+                        resolve(res.data.data.map(item => {
+                            return {
+                                ...item,
+                                leaf: !item.hasChildren
+                            }
+                        }))
+
+                        // this.treeOption.defaultExpandedKeys.push(this.treeData[0].id);
+                        // this.treeCode = this.treeData[0].id;
+                    });
+                },
+                addBtn: false,
+                menu: true,
+                size: "small",
+                props: {
+                    labelText: "标题",
+                    label: "title",
+                    value: "value",
+                    children: "children",
+                },
+            },
+            option: {
+                labelWidth: 140,
+                viewLabelWidth: 140,
+                searchlabelWidth: 140,
+                height: "auto",
+                calcHeight: 80,
+                align: "center",
+                headerAlign: "center",
+                tip: false,
+                simplePage: true,
+                searchShow: true,
+                searchMenuSpan: 6,
+                border: true,
+                index: true,
+                selection: false,
+                viewBtn: false,
+                viewTitle: "危险区群众登记信息",
+                editBtn: true,
+                delBtn: true,
+                menuWidth: 220,
+                dialogType: "drawer",
+                dialogClickModal: false,
+                columnBtn: false,
+                column: [
+                    {
+                        label: "户主姓名",
+                        prop: "personName",
+                        search: true,
+                        span: 24,
+                    },
+                    {
+                        label: "身份证号",
+                        prop: "personId",
+                        search: true,
+                        span: 24,
+                    }, {
+                        label: "危险区名称",
+                        prop: "dangerAreaName",
+                        span: 24,
+                    },
+                    {
+                        label: "行政区",
+                        prop: "adName",
+                        span: 24,
+                    },
+                ],
+            },
+            data: [],
+        };
+    },
+    computed: {
+        ...mapGetters(["userInfo", "permission"]),
+        permissionList() {
+            return {
+                addBtn: false,
+                viewBtn: false,
+                delBtn: false,
+                editBtn: false,
+            };
+        },
+        ids() {
+            let ids = [];
+            this.selectionList.forEach((ele) => {
+                ids.push(ele.id);
+            });
+            return ids.join(",");
+        },
+    },
+    mounted() { },
+    created() {
+    },
+    methods: {
+        // rowSave(row, done, loading) {
+        //     add(row).then(
+        //         () => {
+        //             this.onLoad(this.page);
+        //             this.$message({
+        //                 type: "success",
+        //                 message: "操作成功!",
+        //             });
+        //             done();
+        //         },
+        //         (error) => {
+        //             window.console.log(error);
+        //             loading();
+        //         }
+        //     );
+        // },
+        // rowUpdate(row, index, done, loading) {
+        //     update(row).then(
+        //         () => {
+        //             this.onLoad(this.page);
+        //             this.$message({
+        //                 type: "success",
+        //                 message: "操作成功!",
+        //             });
+        //             done();
+        //         },
+        //         (error) => {
+        //             window.console.log(error);
+        //             loading();
+        //         }
+        //     );
+        // },
+        // rowDel(row) {
+        //     this.$confirm("确定将选择数据删除?", {
+        //         confirmButtonText: "确定",
+        //         cancelButtonText: "取消",
+        //         type: "warning",
+        //     })
+        //         .then(() => {
+        //             return remove(row.id);
+        //         })
+        //         .then(() => {
+        //             this.onLoad(this.page);
+        //             this.$message({
+        //                 type: "success",
+        //                 message: "操作成功!",
+        //             });
+        //         });
+        // },
+        toFamilyMembers(row) {
+            this.householderId = row.personId;
+            console.log(JSON.stringify(row))
+            this.familymembersViewDialog = true;
+            this.$nextTick(() => {
+                this.$refs["yjresidentfamilymembersView"].initData();
+            });
+        },
+        nodeClick(data) {
+            this.treeCode = data.id;
+            this.treeParentCode = data.parentId;
+            // this.query = {};
+            // this.query['dangerAreaCode'] = this.treeCode;
+            this.page.currentPage = 1;
+            var params = {};
+            // params['dangerAreaCode'] = this.treeCode;
+            this.onLoad(this.page, params);
+        },
+        searchReset() {
+            this.query = {};
+            this.onLoad(this.page);
+        },
+        searchChange(params, done) {
+            this.query = params;
+            this.page.currentPage = 1;
+            this.onLoad(this.page, params);
+            done();
+        },
+        selectionChange(list) {
+            this.selectionList = list;
+        },
+        selectChange(item) {
+            console.log(item)
+        },
+        selectionClear() {
+            this.selectionList = [];
+            this.$refs.crud.toggleSelection();
+        },
+        // handleDelete() {
+        //     if (this.selectionList.length === 0) {
+        //         this.$message.warning("请选择至少一条数据");
+        //         return;
+        //     }
+        //     this.$confirm("确定将选择数据删除?", {
+        //         confirmButtonText: "确定",
+        //         cancelButtonText: "取消",
+        //         type: "warning",
+        //     })
+        //         .then(() => {
+        //             return remove(this.ids);
+        //         })
+        //         .then(() => {
+        //             this.onLoad(this.page);
+        //             this.$message({
+        //                 type: "success",
+        //                 message: "操作成功!",
+        //             });
+        //             this.$refs.crud.toggleSelection();
+        //         });
+        // },
+        beforeOpen(done, type) {
+            if (["edit", "view"].includes(type)) {
+                getDetail(this.form.id).then((res) => {
+                    this.form = res.data.data;
+                });
+            }
+            done();
+        },
+        currentChange(currentPage) {
+            this.page.currentPage = currentPage;
+        },
+        sizeChange(pageSize) {
+            this.page.pageSize = pageSize;
+        },
+        refreshChange() {
+            this.onLoad(this.page, this.query);
+        },
+        onLoad(page, params = {}) {
+            this.loading = true;
+            params['dangerAreaCode'] = this.treeCode;
+            params['isHouseholder'] = 1;
+            getPage(
+                page.currentPage,
+                page.pageSize,
+                Object.assign(params, this.query)
+            ).then((res) => {
+                const data = res.data.data;
+                this.page.total = data.total;
+                this.data = data.records;
+                this.loading = false;
+                this.selectionClear();
+            });
+        },
+    },
+};
+</script>
+<style>
+.box {
+    height: 800px;
+}
+
+.el-scrollbar {
+    height: 100%;
+}
+
+.box .el-scrollbar__wrap {
+    overflow: scroll;
+}
+</style>

+ 282 - 0
src/views/business/yjxt/yjresidentfamilymembers.vue

@@ -0,0 +1,282 @@
+<!--
+ * @Title: 
+ * @Description: 应急人员
+ * @Author: swp
+ * @Date: 2022-08-24 10:49:21
+ * @LastEditors: 
+ * @LastEditTime: 2022-08-24 10:49:21
+-->
+<template>
+    <div>
+        <el-row>
+            <el-col :span="24">
+                <basic-container>
+                    <avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page"
+                        :before-open="beforeOpen" ref="crud" v-model="form" :permission="permissionList"
+                        @search-change="searchChange" @search-reset="searchReset" @selection-change="selectionChange"
+                        @current-change="currentChange" @size-change="sizeChange" @refresh-change="refreshChange"
+                        @before-open="beforeOpen" @select-change="selectChange">
+                    </avue-crud>
+                </basic-container>
+            </el-col>
+        </el-row>
+    </div>
+</template>
+
+<script>
+
+import { getPage, getDetail } from "@/api/business/yj/residentregister.js";
+import { mapGetters } from "vuex";
+export default {
+    components: {
+
+    },
+    props: {
+        householderId: {
+            type: [Number],
+            required: true
+        },
+    },
+    data() {
+        return {
+            editForm: {},
+            editDialog: false,
+            form: {},
+            selectionList: [],
+            query: {},
+            loading: true,
+            page: {
+                pageSize: 10,
+                currentPage: 1,
+                total: 0,
+            },
+            option: {
+                labelWidth: 140,
+                viewLabelWidth: 140,
+                searchlabelWidth: 140,
+                height: "auto",
+                calcHeight: 80,
+                align: "center",
+                headerAlign: "center",
+                tip: false,
+                simplePage: true,
+                searchShow: true,
+                searchMenuSpan: 6,
+                border: true,
+                index: true,
+                selection: false,
+                viewBtn: false,
+                viewTitle: "家庭成员清单信息",
+                editBtn: true,
+                delBtn: true,
+                menuWidth: 220,
+                dialogType: "drawer",
+                dialogClickModal: false,
+                columnBtn: false,
+                menu: false,
+                column: [
+                    {
+                        label: "姓名",
+                        prop: "personName",
+                        span: 24,
+                    },
+                    {
+                        label: "身份证号",
+                        prop: "personId",
+                        span: 24,
+                    },
+                    {
+                        label: "是否户主",
+                        prop: "isHouseholder",
+                        span: 24,
+                        html: true,
+                        formatter: (val) => {
+                            let htmltext = '';
+                            if (val.isHouseholder === 1) {
+                                htmltext = '<b style="color:blue">是</b>';
+                            } else {
+                                htmltext = '<b style="color:gray">否</b>';
+                            }
+                            return htmltext;
+                        }
+                    }, {
+                        label: "危险区名称",
+                        prop: "dangerAreaName",
+                        span: 24,
+                    },
+                    {
+                        label: "行政区",
+                        prop: "adName",
+                        span: 24,
+                    },
+                ],
+            },
+            data: [],
+        };
+    },
+    computed: {
+        ...mapGetters(["userInfo", "permission"]),
+        permissionList() {
+            return {
+                addBtn: false,
+                viewBtn: false,
+                delBtn: false,
+                editBtn: false,
+            };
+        },
+        ids() {
+            let ids = [];
+            this.selectionList.forEach((ele) => {
+                ids.push(ele.id);
+            });
+            return ids.join(",");
+        },
+    },
+    mounted() { },
+    created() {
+    },
+    methods: {
+        initData() {
+            this.onLoad(this.page);
+        },
+        // rowSave(row, done, loading) {
+        //     add(row).then(
+        //         () => {
+        //             this.onLoad(this.page);
+        //             this.$message({
+        //                 type: "success",
+        //                 message: "操作成功!",
+        //             });
+        //             done();
+        //         },
+        //         (error) => {
+        //             window.console.log(error);
+        //             loading();
+        //         }
+        //     );
+        // },
+        // rowUpdate(row, index, done, loading) {
+        //     update(row).then(
+        //         () => {
+        //             this.onLoad(this.page);
+        //             this.$message({
+        //                 type: "success",
+        //                 message: "操作成功!",
+        //             });
+        //             done();
+        //         },
+        //         (error) => {
+        //             window.console.log(error);
+        //             loading();
+        //         }
+        //     );
+        // },
+        // rowDel(row) {
+        //     this.$confirm("确定将选择数据删除?", {
+        //         confirmButtonText: "确定",
+        //         cancelButtonText: "取消",
+        //         type: "warning",
+        //     })
+        //         .then(() => {
+        //             return remove(row.id);
+        //         })
+        //         .then(() => {
+        //             this.onLoad(this.page);
+        //             this.$message({
+        //                 type: "success",
+        //                 message: "操作成功!",
+        //             });
+        //         });
+        // },
+
+        searchReset() {
+            this.query = {};
+            this.onLoad(this.page);
+        },
+        searchChange(params, done) {
+            this.query = params;
+            this.page.currentPage = 1;
+            this.onLoad(this.page, params);
+            done();
+        },
+        selectionChange(list) {
+            this.selectionList = list;
+        },
+        selectChange(item) {
+            console.log(item)
+        },
+        selectionClear() {
+            this.selectionList = [];
+            this.$refs.crud.toggleSelection();
+        },
+        // handleDelete() {
+        //     if (this.selectionList.length === 0) {
+        //         this.$message.warning("请选择至少一条数据");
+        //         return;
+        //     }
+        //     this.$confirm("确定将选择数据删除?", {
+        //         confirmButtonText: "确定",
+        //         cancelButtonText: "取消",
+        //         type: "warning",
+        //     })
+        //         .then(() => {
+        //             return remove(this.ids);
+        //         })
+        //         .then(() => {
+        //             this.onLoad(this.page);
+        //             this.$message({
+        //                 type: "success",
+        //                 message: "操作成功!",
+        //             });
+        //             this.$refs.crud.toggleSelection();
+        //         });
+        // },
+        beforeOpen(done, type) {
+            if (["edit", "view"].includes(type)) {
+                getDetail(this.form.id).then((res) => {
+                    this.form = res.data.data;
+                });
+            }
+            done();
+        },
+        currentChange(currentPage) {
+            this.page.currentPage = currentPage;
+        },
+        sizeChange(pageSize) {
+            this.page.pageSize = pageSize;
+        },
+        refreshChange() {
+            this.onLoad(this.page, this.query);
+        },
+        onLoad(page, params = {}) {
+            this.loading = true;
+            params['householderId'] = this.householderId;
+
+            getPage(
+                page.currentPage,
+                page.pageSize,
+                Object.assign(params, this.query)
+            ).then((res) => {
+                const data = res.data.data;
+                this.page.total = data.total;
+                this.data = data.records;
+                this.loading = false;
+                this.selectionClear();
+            });
+        },
+    },
+};
+</script>
+<style>
+.box {
+    height: 800px;
+}
+
+.el-scrollbar {
+    height: 100%;
+}
+
+.box .el-scrollbar__wrap {
+    overflow: scroll;
+}
+</style>

+ 273 - 0
src/views/business/yjxt/yjserviceperson.vue

@@ -0,0 +1,273 @@
+<!--
+ * @Title: 
+ * @Description: 应急人员
+ * @Author: swp
+ * @Date: 2022-08-24 10:49:21
+ * @LastEditors: 
+ * @LastEditTime: 2022-08-24 10:49:21
+-->
+<template>
+    <div>
+        <el-row>
+            <el-col :span="24">
+                <basic-container>
+                    <avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page"
+                        :before-open="beforeOpen" ref="crud" v-model="form" :permission="permissionList" @row-del="rowDel"
+                        @row-update="rowUpdate" @row-save="rowSave" @search-change="searchChange"
+                        @search-reset="searchReset" @selection-change="selectionChange" @current-change="currentChange"
+                        @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad"
+                        @before-open="beforeOpen" @select-change="selectChange">
+                        <template slot="state" slot-scope="{ row }">
+                            <el-button type="text" @click="openConfig(row)"> 正常 </el-button>
+                        </template>
+                        <template slot-scope="{ row, index }" slot="menu">
+                        </template>
+                        <template slot="state" slot-scope="{ row }">
+                            <el-button type="text" @click="openConfig(row)"> 正常 </el-button>
+                        </template>
+                    </avue-crud>
+                </basic-container>
+            </el-col>
+        </el-row>
+    </div>
+</template>
+
+<script>
+
+import { getPage, getDetail, add, update, remove } from "@/api/business/yj/yjserviceperson.js";
+import { mapGetters } from "vuex";
+export default {
+    components: {
+
+    },
+    data() {
+        return {
+            id: "",
+            editForm: {},
+            editDialog: false,
+            form: {},
+            selectionList: [],
+            query: {},
+            loading: true,
+            page: {
+                pageSize: 10,
+                currentPage: 1,
+                total: 0,
+            },
+            option: {
+                labelWidth: 140,
+                viewLabelWidth: 140,
+                searchlabelWidth: 140,
+                height: "auto",
+                calcHeight: 80,
+                align: "center",
+                headerAlign: "center",
+                tip: false,
+                simplePage: true,
+                searchShow: true,
+                searchMenuSpan: 6,
+                border: true,
+                index: true,
+                selection: false,
+                viewBtn: false,
+                viewTitle: "运维人员信息",
+                editBtn: true,
+                delBtn: true,
+                menuWidth: 220,
+                dialogType: "drawer",
+                dialogClickModal: false,
+                addBtnText: "新增用户",
+                columnBtn: false,
+                column: [
+                    {
+                        label: "登录帐号",
+                        prop: "userAccount",
+                        span: 24,
+                        tip: "密码默认为帐号+@8282",
+                        tipPlacement: 'right-end',
+                        editDisabled: true,
+                        rules: [
+                            {
+                                required: true,
+                                message: "请录入登录帐号",
+                                trigger: "click",
+                            },
+                        ],
+                    },
+                    {
+                        label: "用户名称",
+                        prop: "userName",
+                        search: true,
+                        span: 24,
+                        rules: [
+                            {
+                                required: true,
+                                message: "请录入用户名称",
+                                trigger: "click",
+                            },
+                        ],
+                    },
+                    {
+                        label: "联系电话",
+                        prop: "phone",
+                        span: 24,
+                        rules: [
+                            {
+                                required: true,
+                                message: "请录入联系电话",
+                                trigger: "click",
+                            },
+                        ],
+                    },
+                ],
+            },
+            data: [],
+        };
+    },
+    computed: {
+        ...mapGetters(["userInfo", "permission"]),
+        permissionList() {
+            return {
+                addBtn: this.vaildData(this.permission.yjxt_service_person_add, false),
+                viewBtn: this.vaildData(this.permission.yjxt_service_person_view, false),
+                delBtn: this.vaildData(this.permission.yjxt_service_person_del, false),
+                editBtn: this.vaildData(this.permission.yjxt_service_person_edit, false),
+            };
+        },
+        ids() {
+            let ids = [];
+            this.selectionList.forEach((ele) => {
+                ids.push(ele.id);
+            });
+            return ids.join(",");
+        },
+    },
+    mounted() { },
+    created() {
+    },
+    methods: {
+        rowSave(row, done, loading) {
+            add(row).then(
+                () => {
+                    this.onLoad(this.page);
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!",
+                    });
+                    done();
+                },
+                (error) => {
+                    window.console.log(error);
+                    loading();
+                }
+            );
+        },
+        rowUpdate(row, index, done, loading) {
+            update(row).then(
+                () => {
+                    this.onLoad(this.page);
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!",
+                    });
+                    done();
+                },
+                (error) => {
+                    window.console.log(error);
+                    loading();
+                }
+            );
+        },
+        rowDel(row) {
+            this.$confirm("确定将选择数据删除?", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+                type: "warning",
+            })
+                .then(() => {
+                    return remove(row.id);
+                })
+                .then(() => {
+                    this.onLoad(this.page);
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!",
+                    });
+                });
+        },
+        searchReset() {
+            this.query = {};
+            this.onLoad(this.page);
+        },
+        searchChange(params, done) {
+            this.query = params;
+            this.page.currentPage = 1;
+            this.onLoad(this.page, params);
+            done();
+        },
+        selectionChange(list) {
+            this.selectionList = list;
+        },
+        selectChange(item) {
+            console.log(item)
+        },
+        selectionClear() {
+            this.selectionList = [];
+            this.$refs.crud.toggleSelection();
+        },
+        handleDelete() {
+            if (this.selectionList.length === 0) {
+                this.$message.warning("请选择至少一条数据");
+                return;
+            }
+            this.$confirm("确定将选择数据删除?", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+                type: "warning",
+            })
+                .then(() => {
+                    return remove(this.ids);
+                })
+                .then(() => {
+                    this.onLoad(this.page);
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!",
+                    });
+                    this.$refs.crud.toggleSelection();
+                });
+        },
+        beforeOpen(done, type) {
+            if (["edit", "view"].includes(type)) {
+                getDetail(this.form.id).then((res) => {
+                    this.form = res.data.data;
+                });
+            }
+            done();
+        },
+        currentChange(currentPage) {
+            this.page.currentPage = currentPage;
+        },
+        sizeChange(pageSize) {
+            this.page.pageSize = pageSize;
+        },
+        refreshChange() {
+            this.onLoad(this.page, this.query);
+        },
+        onLoad(page, params = {}) {
+            this.loading = true;
+            getPage(
+                page.currentPage,
+                page.pageSize,
+                Object.assign(params, this.query)
+            ).then((res) => {
+                const data = res.data.data;
+                this.page.total = data.total;
+                this.data = data.records;
+                this.loading = false;
+                this.selectionClear();
+            });
+        },
+    },
+};
+</script>

+ 258 - 0
src/views/business/yjxt/yjtransferresidentlist.vue

@@ -0,0 +1,258 @@
+<!--
+ * @Title: 
+ * @Description: 应急人员
+ * @Author: swp
+ * @Date: 2022-08-24 10:49:21
+ * @LastEditors: 
+ * @LastEditTime: 2022-08-24 10:49:21
+-->
+<template>
+    <div>
+        <el-row>
+            <el-col :span="24">
+                <basic-container>
+                    <avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page"
+                        :before-open="beforeOpen" ref="crud" v-model="form" :permission="permissionList"
+                        @search-change="searchChange" @search-reset="searchReset" @selection-change="selectionChange"
+                        @current-change="currentChange" @size-change="sizeChange" @refresh-change="refreshChange"
+                        @before-open="beforeOpen" @select-change="selectChange">
+                    </avue-crud>
+                </basic-container>
+            </el-col>
+        </el-row>
+    </div>
+</template>
+
+<script>
+
+import { getPage, getDetail } from "@/api/business/yj/yjtransferresident.js";
+import { mapGetters } from "vuex";
+export default {
+    components: {
+
+    },
+    props: {
+        warnId: {
+            type: [Number],
+            required: true
+        },
+    },
+    data() {
+        return {
+            editForm: {},
+            editDialog: false,
+            form: {},
+            selectionList: [],
+            query: {},
+            loading: true,
+            page: {
+                pageSize: 10,
+                currentPage: 1,
+                total: 0,
+            },
+            option: {
+                labelWidth: 140,
+                viewLabelWidth: 140,
+                searchlabelWidth: 140,
+                height: "auto",
+                calcHeight: 80,
+                align: "center",
+                headerAlign: "center",
+                tip: false,
+                simplePage: true,
+                searchShow: true,
+                searchMenuSpan: 6,
+                border: true,
+                index: true,
+                selection: false,
+                viewBtn: false,
+                viewTitle: "转移清单信息",
+                editBtn: true,
+                delBtn: true,
+                menuWidth: 220,
+                dialogType: "drawer",
+                dialogClickModal: false,
+                columnBtn: false,
+                menu: false,
+                column: [
+                    {
+                        label: "姓名",
+                        prop: "personName",
+                        span: 24,
+                    },
+                    {
+                        label: "身份证号",
+                        prop: "personId",
+                        span: 24,
+                    },
+
+                ],
+            },
+            data: [],
+        };
+    },
+    computed: {
+        ...mapGetters(["userInfo", "permission"]),
+        permissionList() {
+            return {
+                addBtn: false,
+                viewBtn: false,
+                delBtn: false,
+                editBtn: false,
+            };
+        },
+        ids() {
+            let ids = [];
+            this.selectionList.forEach((ele) => {
+                ids.push(ele.id);
+            });
+            return ids.join(",");
+        },
+    },
+    mounted() { },
+    created() {
+    },
+    methods: {
+        initData() {
+            this.onLoad(this.page);
+        },
+        // rowSave(row, done, loading) {
+        //     add(row).then(
+        //         () => {
+        //             this.onLoad(this.page);
+        //             this.$message({
+        //                 type: "success",
+        //                 message: "操作成功!",
+        //             });
+        //             done();
+        //         },
+        //         (error) => {
+        //             window.console.log(error);
+        //             loading();
+        //         }
+        //     );
+        // },
+        // rowUpdate(row, index, done, loading) {
+        //     update(row).then(
+        //         () => {
+        //             this.onLoad(this.page);
+        //             this.$message({
+        //                 type: "success",
+        //                 message: "操作成功!",
+        //             });
+        //             done();
+        //         },
+        //         (error) => {
+        //             window.console.log(error);
+        //             loading();
+        //         }
+        //     );
+        // },
+        // rowDel(row) {
+        //     this.$confirm("确定将选择数据删除?", {
+        //         confirmButtonText: "确定",
+        //         cancelButtonText: "取消",
+        //         type: "warning",
+        //     })
+        //         .then(() => {
+        //             return remove(row.id);
+        //         })
+        //         .then(() => {
+        //             this.onLoad(this.page);
+        //             this.$message({
+        //                 type: "success",
+        //                 message: "操作成功!",
+        //             });
+        //         });
+        // },
+
+        searchReset() {
+            this.query = {};
+            this.onLoad(this.page);
+        },
+        searchChange(params, done) {
+            this.query = params;
+            this.page.currentPage = 1;
+            this.onLoad(this.page, params);
+            done();
+        },
+        selectionChange(list) {
+            this.selectionList = list;
+        },
+        selectChange(item) {
+            console.log(item)
+        },
+        selectionClear() {
+            this.selectionList = [];
+            this.$refs.crud.toggleSelection();
+        },
+        // handleDelete() {
+        //     if (this.selectionList.length === 0) {
+        //         this.$message.warning("请选择至少一条数据");
+        //         return;
+        //     }
+        //     this.$confirm("确定将选择数据删除?", {
+        //         confirmButtonText: "确定",
+        //         cancelButtonText: "取消",
+        //         type: "warning",
+        //     })
+        //         .then(() => {
+        //             return remove(this.ids);
+        //         })
+        //         .then(() => {
+        //             this.onLoad(this.page);
+        //             this.$message({
+        //                 type: "success",
+        //                 message: "操作成功!",
+        //             });
+        //             this.$refs.crud.toggleSelection();
+        //         });
+        // },
+        beforeOpen(done, type) {
+            if (["edit", "view"].includes(type)) {
+                getDetail(this.form.id).then((res) => {
+                    this.form = res.data.data;
+                });
+            }
+            done();
+        },
+        currentChange(currentPage) {
+            this.page.currentPage = currentPage;
+        },
+        sizeChange(pageSize) {
+            this.page.pageSize = pageSize;
+        },
+        refreshChange() {
+            this.onLoad(this.page, this.query);
+        },
+        onLoad(page, params = {}) {
+            this.loading = true;
+            params['warnId'] = this.warnId;
+            getPage(
+                page.currentPage,
+                page.pageSize,
+                Object.assign(params, this.query)
+            ).then((res) => {
+                const data = res.data.data;
+                this.page.total = data.total;
+                this.data = data.records;
+                this.loading = false;
+                this.selectionClear();
+            });
+        },
+    },
+};
+</script>
+<style>
+.box {
+    height: 800px;
+}
+
+.el-scrollbar {
+    height: 100%;
+}
+
+.box .el-scrollbar__wrap {
+    overflow: scroll;
+}
+</style>

+ 580 - 0
src/views/business/yjxt/yjwarn.vue

@@ -0,0 +1,580 @@
+<!--
+ * @Title: 
+ * @Description: 应急人员
+ * @Author: swp
+ * @Date: 2022-08-24 10:49:21
+ * @LastEditors: 
+ * @LastEditTime: 2022-08-24 10:49:21
+-->
+<template>
+    <div>
+        <el-row>
+            <el-col :span="6">
+                <div class="box">
+                    <el-scrollbar>
+                        <basic-container>
+                            <avue-tree :option="treeOption" :data="treeData" @node-click="nodeClick">
+                                <span class="el-tree-node__label" slot-scope="{ node, data }">
+                                    <span>
+                                        <i class="el-icon-office-building"></i>
+                                        {{ (node || {}).label }}
+                                    </span>
+                                </span>
+                            </avue-tree>
+                        </basic-container>
+                    </el-scrollbar>
+                </div>
+            </el-col>
+            <el-col :span="18">
+                <basic-container>
+                    <avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page"
+                        :before-open="beforeOpen" ref="crud" v-model="form" :permission="permissionList"
+                        @search-change="searchChange" @search-reset="searchReset" @selection-change="selectionChange"
+                        @current-change="currentChange" @size-change="sizeChange" @refresh-change="refreshChange"
+                        @on-load="onLoad" @before-open="beforeOpen" @select-change="selectChange">
+                        <!-- <template slot="warnStatus" slot-scope="row">
+                            <div v-if="row.row.warnStatus == 0" style="color: blue;">
+                                正常
+                            </div>
+                            <div v-else-if="row.row.warnStatus == 1" style="color: blue;">
+                                设备异常
+                            </div>
+                            <div v-else>
+
+                            </div>
+                        </template> -->
+
+                        <template slot-scope="{ row, index }" slot="menu">
+                            <el-button type="text" size="small" @click="toDangerAreaCheckList(row)">巡查信息
+                            </el-button>
+                            <el-button type="text" size="small" @click="toTransferResidentList(row)">转移清单
+                            </el-button>
+                        </template>
+                    </avue-crud>
+                </basic-container>
+            </el-col>
+        </el-row>
+        <el-drawer :visible.sync="dangerAreaCheckDialog" v-if="dangerAreaCheckDialog" title="现场巡查" direction="rtl"
+            size="60%" append-to-body="true">
+            <yjdangerareachecklist ref="dangerareachecklistView" :warnId="warnId">
+            </yjdangerareachecklist>
+        </el-drawer>
+        <el-drawer :visible.sync="transferResidentDialog" v-if="transferResidentDialog" title="转移清单" direction="rtl"
+            size="60%" append-to-body="true">
+            <yjtransferresidentlist ref="transferresidentlistView" :warnId="warnId">
+            </yjtransferresidentlist>
+        </el-drawer>
+    </div>
+</template>
+
+<script>
+
+import { getPage, getDetail } from "@/api/business/yj/yjwarn.js";
+import { getLazyTree } from "@/api/baseinfo/wholeregion.js";
+import { mapGetters } from "vuex";
+import yjdangerareachecklist from "./yjdangerareachecklist.vue";
+import yjtransferresidentlist from './yjtransferresidentlist.vue';
+export default {
+    components: {
+        yjdangerareachecklist,
+        yjtransferresidentlist
+    },
+    data() {
+        return {
+            id: '',
+            warnId: '',
+            editForm: {},
+            editDialog: false,
+            transferResidentDialog: false,
+            dangerAreaCheckDialog: false,
+            form: {},
+            selectionList: [],
+            query: {},
+            loading: true,
+            page: {
+                pageSize: 10,
+                currentPage: 1,
+                total: 0,
+            },
+            treeCode: '',
+            treeParentCode: '',
+            treeData: [],
+            treeOption: {
+                nodeKey: "id",
+                defaultExpandedKeys: [],
+                lazy: true,
+                treeLoad: function (node, resolve) {
+                    const parentCode = (node.level === 0) ? "00" : node.data.value;
+                    getLazyTree(parentCode).then(res => {
+                        resolve(res.data.data.map(item => {
+                            return {
+                                ...item,
+                                leaf: !item.hasChildren
+                            }
+                        }))
+
+                        // this.treeOption.defaultExpandedKeys.push(this.treeData[0].id);
+                        // this.treeCode = this.treeData[0].id;
+                    });
+                },
+                addBtn: false,
+                menu: true,
+                size: "small",
+                props: {
+                    labelText: "标题",
+                    label: "title",
+                    value: "value",
+                    children: "children",
+                },
+            },
+            option: {
+                labelWidth: 140,
+                viewLabelWidth: 140,
+                searchlabelWidth: 140,
+                height: "auto",
+                calcHeight: 80,
+                align: "center",
+                headerAlign: "center",
+                tip: false,
+                simplePage: true,
+                searchShow: true,
+                searchMenuSpan: 6,
+                border: true,
+                index: true,
+                selection: false,
+                viewBtn: true,
+                viewTitle: "预警响应信息",
+                editBtn: true,
+                delBtn: true,
+                menuWidth: 200,
+                dialogType: "drawer",
+                dialogClickModal: false,
+                columnBtn: false,
+                column: [
+                    {
+                        label: "预警编码",
+                        prop: "warnId",
+                        span: 24,
+                        hide: true,
+                    },
+                    {
+                        label: "测站编码",
+                        prop: "stcd",
+                        search: true,
+                        span: 24,
+                        hide: true,
+                    },
+                    {
+                        label: "预警名称",
+                        prop: "warnName",
+                        span: 24,
+                        overHidden: true,
+                    },
+                    {
+                        label: "预警时间",
+                        prop: "warnTime",
+                        span: 24,
+                    },
+                    {
+                        label: "预警等级",
+                        prop: "warnLevelCode",
+                        span: 24,
+                        hide: true,
+                    },
+                    {
+                        label: "预警信息",
+                        prop: "warnInfo",
+                        span: 24,
+                        hide: true,
+                    },
+                    {
+                        label: "预警状态",
+                        prop: "warnStatus",
+                        span: 24,
+                        html: true,
+                        type: 'radio',
+                        dicData: [{
+                            label: '审核未通过',
+                            value: -1
+                        }, {
+                            label: '未审核',
+                            value: 0
+                        }, {
+                            label: '待内部预警',
+                            value: 1
+                        }, {
+                            label: '待外部预警',
+                            value: 2
+                        }, {
+                            label: '待响应启动',
+                            value: 3
+                        }, {
+                            label: '待响应反馈',
+                            value: 4
+                        }, {
+                            label: '已启动响应',
+                            value: 5
+                        },]
+                        // formatter: (val) => {
+                        //     let htmltext = '';
+                        //     if (val.warnStatus === 0) {
+                        //         htmltext = '<b style="color:blue">未审核</b>';
+                        //     } else if (val.warnStatus === 1) {
+                        //         htmltext = '<b style="color:blue">待内部预警</b>';
+                        //     } else if (val.warnStatus === 2) {
+                        //         htmltext = '<b style="color:blue">待外部预警</b>';
+                        //     } else if (val.warnStatus === 3) {
+                        //         htmltext = '<b style="color:blue">待响应启动</b>';
+                        //     } else if (val.warnStatus === 4) {
+                        //         htmltext = '<b style="color:blue">待响应反馈</b>';
+                        //     } else if (val.warnStatus === 5) {
+                        //         htmltext = '<b style="color:blue">已启动响应</b>';
+                        //     } else {
+                        //         htmltext = '审核未通过';
+                        //     }
+                        //     return htmltext;
+                        // }
+                    },
+                    {
+                        label: "审核状态",
+                        prop: "reviewStatus",
+                        span: 24,
+                        hide: true,
+                        type: 'radio',
+                        dicData: [{
+                            label: '关闭',
+                            value: 1
+                        }, {
+                            label: '通过',
+                            value: 2
+                        }]
+                    },
+                    {
+                        label: "站类",
+                        prop: "type",
+                        span: 24,
+                        hide: true,
+                        type: 'radio',
+                        dicData: [{
+                            label: '雨量站',
+                            value: 1
+                        }, {
+                            label: '河道水情站',
+                            value: 2
+                        }, {
+                            label: '水库水情站',
+                            value: 3
+                        }, {
+                            label: '政区',
+                            value: 4
+                        }, {
+                            label: '人工',
+                            value: 5
+                        }]
+                    },
+                    {
+                        label: "备注",
+                        prop: "remark",
+                        span: 24,
+                        hide: true,
+                    },
+                    {
+                        label: "雨量站预警频率",
+                        prop: "rainWarnRate",
+                        span: 24,
+                        hide: true,
+                        type: 'radio',
+                        dicData: [{
+                            label: '30分钟',
+                            value: 1
+                        }, {
+                            label: '1小时',
+                            value: 2
+                        }, {
+                            label: '3小时',
+                            value: 3
+                        }, {
+                            label: '6小时',
+                            value: 4
+                        }, {
+                            label: '12小时',
+                            value: 5
+                        }, {
+                            label: '24小时',
+                            value: 6
+                        }]
+                    },
+                    {
+                        label: "预警类别",
+                        prop: "warnSort",
+                        span: 24,
+                        hide: true,
+                    },
+                    {
+                        label: "预警定位(点,面)",
+                        prop: "warnLocation",
+                        span: 24,
+                        hide: true,
+                    },
+                    {
+                        label: "预警政区",
+                        prop: "warnAdcd",
+                        span: 24,
+                        hide: true,
+                    },
+                    {
+                        label: "预警点经度",
+                        prop: "warnLgtd",
+                        span: 24,
+                        hide: true,
+                    },
+                    {
+                        label: "预警点纬度",
+                        prop: "warnLttd",
+                        span: 24,
+                        hide: true,
+                    },
+                    {
+                        label: "降雨时段",
+                        prop: "intv",
+                        span: 24,
+                        hide: true,
+                    },
+                    {
+                        label: "降雨总量",
+                        prop: "drp",
+                        span: 24,
+                        hide: true,
+                    },
+                    {
+                        label: "河道水位",
+                        prop: "z",
+                        span: 24,
+                        hide: true,
+                    },
+                    {
+                        label: "河道流量",
+                        prop: "q",
+                        span: 24,
+                        hide: true,
+                    },
+                    {
+                        label: "河道水势",
+                        prop: "wptn",
+                        span: 24,
+                        hide: true,
+                    },
+                    {
+                        label: "水库水位",
+                        prop: "rz",
+                        span: 24,
+                        hide: true,
+                    },
+                    {
+                        label: "水库水势",
+                        prop: "rwptn",
+                        span: 24,
+                        hide: true,
+                    },
+                    {
+                        label: "水库流量",
+                        prop: "inq",
+                        span: 24,
+                        hide: true,
+                    },
+                    {
+                        label: "水库流量",
+                        prop: "inq",
+                        span: 24,
+                        hide: true,
+                    },
+                ],
+            },
+            data: [],
+        };
+    },
+    computed: {
+        ...mapGetters(["userInfo", "permission"]),
+        permissionList() {
+            return {
+                addBtn: false,
+                viewBtn: true,
+                delBtn: false,
+                editBtn: false,
+            };
+        },
+        ids() {
+            let ids = [];
+            this.selectionList.forEach((ele) => {
+                ids.push(ele.id);
+            });
+            return ids.join(",");
+        },
+    },
+    mounted() { },
+    created() {
+    },
+    methods: {
+        // rowSave(row, done, loading) {
+        //     add(row).then(
+        //         () => {
+        //             this.onLoad(this.page);
+        //             this.$message({
+        //                 type: "success",
+        //                 message: "操作成功!",
+        //             });
+        //             done();
+        //         },
+        //         (error) => {
+        //             window.console.log(error);
+        //             loading();
+        //         }
+        //     );
+        // },
+        // rowUpdate(row, index, done, loading) {
+        //     update(row).then(
+        //         () => {
+        //             this.onLoad(this.page);
+        //             this.$message({
+        //                 type: "success",
+        //                 message: "操作成功!",
+        //             });
+        //             done();
+        //         },
+        //         (error) => {
+        //             window.console.log(error);
+        //             loading();
+        //         }
+        //     );
+        // },
+        // rowDel(row) {
+        //     this.$confirm("确定将选择数据删除?", {
+        //         confirmButtonText: "确定",
+        //         cancelButtonText: "取消",
+        //         type: "warning",
+        //     })
+        //         .then(() => {
+        //             return remove(row.id);
+        //         })
+        //         .then(() => {
+        //             this.onLoad(this.page);
+        //             this.$message({
+        //                 type: "success",
+        //                 message: "操作成功!",
+        //             });
+        //         });
+        // },
+        toDangerAreaCheckList(row) {
+            this.warnId = row.warnId;
+            this.dangerAreaCheckDialog = true;
+            this.$nextTick(() => {
+                this.$refs["dangerareachecklistView"].initData();
+            });
+        },
+        toTransferResidentList(row) {
+            this.warnId = row.warnId;
+            this.transferResidentDialog = true;
+            this.$nextTick(() => {
+                this.$refs["transferresidentlistView"].initData();
+            });
+        },
+        nodeClick(data) {
+            this.treeCode = data.id;
+            this.treeParentCode = data.parentId;
+            // this.query = {};
+            // this.query['dangerAreaCode'] = this.treeCode;
+            this.page.currentPage = 1;
+            var params = {};
+            // params['dangerAreaCode'] = this.treeCode;
+            this.onLoad(this.page, params);
+        },
+        searchReset() {
+            this.query = {};
+            this.onLoad(this.page);
+        },
+        searchChange(params, done) {
+            this.query = params;
+            this.page.currentPage = 1;
+            this.onLoad(this.page, params);
+            done();
+        },
+        selectionChange(list) {
+            this.selectionList = list;
+        },
+        selectChange(item) {
+            console.log(item)
+        },
+        selectionClear() {
+            this.selectionList = [];
+            this.$refs.crud.toggleSelection();
+        },
+        // handleDelete() {
+        //     if (this.selectionList.length === 0) {
+        //         this.$message.warning("请选择至少一条数据");
+        //         return;
+        //     }
+        //     this.$confirm("确定将选择数据删除?", {
+        //         confirmButtonText: "确定",
+        //         cancelButtonText: "取消",
+        //         type: "warning",
+        //     })
+        //         .then(() => {
+        //             return remove(this.ids);
+        //         })
+        //         .then(() => {
+        //             this.onLoad(this.page);
+        //             this.$message({
+        //                 type: "success",
+        //                 message: "操作成功!",
+        //             });
+        //             this.$refs.crud.toggleSelection();
+        //         });
+        // },
+        beforeOpen(done, type) {
+            if (["edit", "view"].includes(type)) {
+                getDetail(this.form.id).then((res) => {
+                    this.form = res.data.data;
+                });
+            }
+            done();
+        },
+        currentChange(currentPage) {
+            this.page.currentPage = currentPage;
+        },
+        sizeChange(pageSize) {
+            this.page.pageSize = pageSize;
+        },
+        refreshChange() {
+            this.onLoad(this.page, this.query);
+        },
+        onLoad(page, params = {}) {
+            this.loading = true;
+            params['warnAdcd'] = this.treeCode;
+            getPage(
+                page.currentPage,
+                page.pageSize,
+                Object.assign(params, this.query)
+            ).then((res) => {
+                const data = res.data.data;
+                this.page.total = data.total;
+                this.data = data.records;
+                this.loading = false;
+                this.selectionClear();
+            });
+        },
+    },
+};
+</script>
+<style>
+.box {
+    height: 800px;
+}
+
+.el-scrollbar {
+    height: 100%;
+}
+
+.box .el-scrollbar__wrap {
+    overflow: scroll;
+}
+</style>

+ 208 - 0
src/views/yj/damagetransferregister.vue

@@ -0,0 +1,208 @@
+<template>
+    <div>
+        <basic-container>
+            <avue-form ref="form" :option="option" v-model="form" @submit="handleSubmit"></avue-form>
+        </basic-container>
+    </div>
+</template>
+
+<script>
+
+import { add, getFamilyList } from "@/api/business/yj/damagetransferregister.js";
+
+export default {
+    data() {
+        return {
+            index: 0,
+            warnId: '',
+            form: {
+                warnId: '',
+                personName: '',
+                personId: '',
+                familyMembers: [],
+            },
+            familyMembersItems: [],
+            option: {
+                labelWidth: 160,
+                submitBtn: true,
+                emptyBtn: true,
+                column: [
+                    {
+                        label: '姓名',
+                        prop: 'personName',
+                        span: 24,
+                        rules: [{
+                            required: true,
+                            message: "必填项",
+                            trigger: "blur"
+                        }],
+                        change: ({ value, column }) => {
+                            // this.$message.success('change事件查看控制台')
+                            // console.log('值改变', value, column)
+                            this.nameInput(value, column);
+                        },
+                    },
+                    {
+                        label: '手机号',
+                        prop: 'personId',
+                        span: 24,
+                        rules: [{
+                            required: true,
+                            message: "必填项",
+                            trigger: "blur"
+                        }],
+                        change: ({ value, column }) => {
+                            // this.$message.success('change事件查看控制台')
+                            // console.log('值改变', value, column)
+                            this.phoneInput(value, column);
+                        },
+                    },
+                    {
+                        label: '家庭成员',
+                        type: 'checkbox',
+                        prop: 'familyMembers',
+                        dicData: [],
+                        span: 24,
+                        rules: [{
+                            required: true,
+                            message: "必填项",
+                            trigger: "blur"
+                        }],
+                    },
+
+                    // {
+                    //     label: '家庭户是否转移完成',
+                    //     prop: 'familyMembersTransferStatus',
+                    //     type: 'radio',
+                    //     props: {
+                    //         label: 'label',
+                    //         value: 'value'
+                    //     },
+                    //     span: 24,
+                    //     dicData: [
+                    //         {
+                    //             label: '否',
+                    //             value: 0
+                    //         },
+                    //         {
+                    //             label: '是',
+                    //             value: 1
+                    //         },
+                    //     ],
+                    //     rules: [{
+                    //         required: true,
+                    //         message: "必填项",
+                    //         trigger: "blur"
+                    //     }],
+                    //     value: 0
+                    // },
+                ]
+            }
+        };
+    },
+    created() {
+        const params = new URLSearchParams(this.$route.query)
+        this.warnId = params.get('warnId')
+        console.log(this.warnId)
+        document.getElementById("app").style.overflow = "auto";
+        //     var form = this.$refs.form
+        //   this.$message.success('先设置本地字典1s后请求url')
+        //   form.updateDic('checkbox', [{
+        //     name: '字典1',
+        //     code: 1
+        //   }, {
+        //     name: '字典0',
+        //     code: 2
+        //   }]);
+        //   setTimeout(() => {
+        //     form.updateDic('checkbox');
+        //   }, 1000)
+    },
+    methods: {
+        nameInput(value, column) {
+            var formId = this.$refs.form
+            let that = this;
+            console.log(value, column);
+            console.log(JSON.stringify(this.form))
+            if (value != undefined && value.length > 0) {
+                if (this.form.personId != undefined && this.form.personId.length > 0) {
+                    let p = {
+                        personId: this.form.personId,
+                        personName: value
+                    }
+                    getFamilyList(p).then((res) => {
+                        console.log(JSON.stringify(res))
+                        let data = res.data.data;
+                        let items = data.map(item => {
+                            return {
+                                label: item.personName,
+                                value: item.id,
+                            }
+                        })
+                        formId.updateDic('familyMembers', items);
+                        that.form.familyMembers = [];
+                        if (data.length > 0) {
+                            for (let i = 0; i < data.length; i++) {
+                                if (data[i].personId == that.form.personId && data[i].personName == that.form.personName) {
+                                    that.form.familyMembers.push(data[i].id);
+                                    break;
+                                }
+                            }
+                        }
+                    });
+                }
+            }
+        },
+        phoneInput(value, column) {
+            var formId = this.$refs.form
+            let that = this;
+            console.log(value, column);
+            console.log(JSON.stringify(this.form))
+            if (value != undefined && value.length > 0) {
+                if (this.form.personName != undefined && this.form.personName.length > 0) {
+                    let p = {
+                        personId: value,
+                        personName: this.form.personName
+                    }
+                    getFamilyList(p).then((res) => {
+                        console.log(JSON.stringify(res))
+                        let data = res.data.data;
+                        let items = data.map(item => {
+                            return {
+                                label: item.personName,
+                                value: item.id,
+                            }
+                        })
+                        formId.updateDic('familyMembers', items);
+                        that.form.familyMembers = [];
+                        if (data.length > 0) {
+                            for (let i = 0; i < data.length; i++) {
+                                if (data[i].personId == that.form.personId && data[i].personName == that.form.personName) {
+                                    that.form.familyMembers.push(data[i].id);
+                                    break;
+                                }
+                            }
+                        }
+                    });
+                }
+            }
+        },
+        handleSubmit(from, done) {
+            console.log(JSON.stringify(from));
+            from['warnId'] = this.warnId;
+            add(from).then(() => {
+                this.$message({
+                    type: "success",
+                    message: "提交成功!"
+                });
+                done();
+            }, error => {
+                console.log(error);
+                done();
+            });
+        },
+    }
+};
+</script>
+
+<style></style>

+ 124 - 0
src/views/yj/residentregister.vue

@@ -0,0 +1,124 @@
+<template>
+    <div>
+        <basic-container>
+            <avue-form :option="option" v-model="form" @submit="handleSubmit"></avue-form>
+        </basic-container>
+    </div>
+</template>
+
+<script>
+
+import { add } from "@/api/business/yj/residentregister.js";
+
+export default {
+    data() {
+        return {
+            index: 0,
+            dangerAreaPid: '',
+            form: {
+                isHouseholder: 1,
+                personName: '',
+                personId: '',
+                dangerAreaPid: '',
+                familyMembers: []
+            },
+            option: {
+                labelWidth: 140,
+                submitBtn: true,
+                emptyBtn: true,
+                column: [
+                    {
+                        label: '户主姓名',
+                        prop: 'personName',
+                        span: 24,
+                        rules: [{
+                            required: true,
+                            message: "必填项",
+                            trigger: "blur"
+                        }],
+                    },
+                    {
+                        label: '身份证号',
+                        prop: 'personId',
+                        span: 24,
+                        rules: [{
+                            required: true,
+                            message: "必填项",
+                            trigger: "blur"
+                        }],
+                    },
+                    {
+                        label: '危险区编码',
+                        prop: 'dangerAreaPid',
+                        span: 24,
+                        disabled: true,
+                        rules: [{
+                            required: true,
+                            message: "必填项",
+                            trigger: "blur"
+                        }],
+                    },
+                    {
+                        label: '添加家庭成员',
+                        prop: 'familyMembers',
+                        type: 'dynamic',
+                        span: 24,
+                        // labelWidth: 120,
+                        labelPosition: 'top',
+                        children: {
+                            index: false,
+                            align: 'center',
+                            type: 'form',
+                            headerAlign: 'center',
+                            rowAdd: (done) => {
+                                //this.$message.success('新增回调');
+                                // done({
+                                //     input: '默认值'
+                                // });
+                                done();
+                            },
+                            rowDel: (row, done) => {
+                                // this.$message.success('删除回调' + JSON.stringify(row));
+                                done();
+                            },
+                            column: [{
+                                // width: 200,
+                                label: '姓名',
+                                prop: "personName"
+                            }, {
+                                label: '身份证号',
+                                prop: "personId"
+                            },]
+                        }
+                    },
+                ]
+            }
+        };
+    },
+    created() {
+        const params = new URLSearchParams(this.$route.query)
+        this.dangerAreaPid = params.get('dangerAreaPid')
+        console.log(this.dangerAreaPid)
+        this.form['dangerAreaPid'] = this.dangerAreaPid;
+        document.getElementById("app").style.overflow = "auto";
+    },
+    methods: {
+        handleSubmit(from, done) {
+            console.log(JSON.stringify(from));
+            // this.$message.success(JSON.stringify(from));
+            add(from).then(() => {
+                this.$message({
+                    type: "success",
+                    message: "提交成功!"
+                });
+                done();
+            }, error => {
+                console.log(error);
+                done();
+            });
+        },
+    }
+};
+</script>
+
+<style></style>