Ver código fonte

房源管理

LAPTOP-FO2T5SIU\35838 9 meses atrás
pai
commit
9ef7801fa2

+ 182 - 0
src/views/parkAssets/parkBuild/buildView.vue

@@ -0,0 +1,182 @@
+<template>
+  <div>
+    <el-form ref="buildForm" :model="buildForm" style="width: 100%;padding: 5px">
+      <el-row>
+        <el-col style="padding-bottom: 10px">
+          <span class="card_title">基本信息</span>
+          <el-card shadow="always" style="padding-top: 10px">
+            <el-row>
+              <el-col :span="4" class="col-txt"><span>父级</span></el-col>
+              <el-col :span="20" class="col-input">
+                <el-form-item>
+                  <!-- @change="handleChange" -->
+                  <el-cascader ref="findids" v-model="buildForm.findids" class="full" disabled :options="options" clearable @change="handleChange" />
+                </el-form-item>
+              </el-col>
+            </el-row>
+            <el-row>
+              <el-col :span="4" class="col-txt"><span>*楼栋号|地块号</span></el-col>
+              <el-col :span="8" class="col-input">
+                <el-form-item prop="ldmc">
+                  <el-input v-model="buildForm.ldmc" disabled />
+                </el-form-item>
+              </el-col>
+              <el-col :span="4" class="col-txt"><span>关联区域</span></el-col>
+              <el-col :span="8" class="col-input">
+                <el-form-item>
+                  <el-select v-model="buildForm.lcqymc" placeholder="" filterable multiple disabled>
+                    <el-option
+                      v-for="item in dc_data.MNP_BUILDING_LCQY"
+                      :key="item.value"
+                      :label="item.label"
+                      :value="item.value"
+                    />
+                  </el-select>
+                </el-form-item>
+              </el-col>
+            </el-row>
+            <el-row>
+              <el-col :span="4" class="col-txt"><span>*关联楼层</span></el-col>
+              <el-col :span="20" class="col-input">
+                <el-form-item prop="lcmc">
+                  <el-select v-model="buildForm.lcmc" placeholder="" filterable multiple disabled>
+                    <el-option
+                      v-for="item in dc_data.MNP_BUILDING_LC"
+                      :key="item.value"
+                      :label="item.label"
+                      :value="item.value"
+                    />
+                  </el-select>
+                </el-form-item>
+              </el-col>
+            </el-row>
+            <el-row>
+              <el-col :span="4" class="col-txt"><span>*面积(㎡)</span></el-col>
+              <el-col :span="8" class="col-input">
+                <el-form-item prop="mj">
+                  <el-input v-model="buildForm.mj" disabled />
+                </el-form-item>
+              </el-col>
+              <el-col :span="4" class="col-txt"><span>类型</span></el-col>
+              <el-col :span="8" class="col-input">
+                <el-form-item>
+                  <el-select v-model="buildForm.type" placeholder="" filterable disabled>
+                    <el-option
+                      v-for="item in dc_data.parkType"
+                      :key="item.value"
+                      :label="item.label"
+                      :value="item.value"
+                    />
+                  </el-select>
+                </el-form-item>
+              </el-col>
+            </el-row>
+            <el-row>
+              <el-col :span="4" class="col-txt"><span>经纬度</span></el-col>
+              <el-col :span="20" class="col-input">
+                <el-form-item>
+                  <el-input v-model="buildForm.latAndLon" disabled />
+                </el-form-item>
+              </el-col>
+            </el-row>
+            <el-row>
+              <el-col :span="4" class="col-txt"><span>产证名称</span></el-col>
+              <el-col :span="8" class="col-input">
+                <el-form-item prop="mj">
+                  <el-input v-model="buildForm.certificateName" disabled/>
+                </el-form-item>
+              </el-col>
+              <el-col :span="4" class="col-txt"><span>产证编号</span></el-col>
+              <el-col :span="8" class="col-input">
+                <el-form-item prop="mj">
+                  <el-input v-model="buildForm.certificateNumber" disabled/>
+                </el-form-item>
+              </el-col>
+            </el-row>
+            <el-row>
+              <el-col :span="4" class="col-txt"><span>产证地址</span></el-col>
+              <el-col :span="20" class="col-input">
+                <el-form-item>
+                  <el-input v-model="buildForm.certificateAddress" disabled/>
+                </el-form-item>
+              </el-col>
+            </el-row>
+          </el-card>
+        </el-col>
+      </el-row>
+    </el-form>
+    <div slot="footer">
+      <el-button @click="cancel">取 消</el-button>
+    </div>
+  </div>
+</template>
+
+<script>
+import Base from '@/views/base/base'
+import BaseData from '@/views/base/baseData'
+import BaseDept from '@/views/base/baseDept'
+import constant from '../../../static/utils/constant'
+export default {
+    name: 'BuildView',
+    components: {},
+    mixins: [Base, BaseData, BaseDept],
+    data() {
+        return {
+            dc_key: ['parkType', 'MNP_BUILDING_LCQY', 'MNP_BUILDING_LC'],
+            buildForm: {
+
+            },
+            options: []
+        }
+    },
+    mounted() {
+
+    },
+    methods: {
+        initData(val) {
+            this.getTreeSelectData()
+            this.initDict(this.dc_key).then((res) => {
+                this.baseRequest('getById', { id: val.id }).then(res => {
+                    const data = res.data
+                    this.buildForm = data
+                    this.buildForm.findids = []
+                    if (this.buildForm.groupId != null &&
+                        this.buildForm.groupId !== '') {
+                        this.buildForm.findids[0] = this.buildForm.groupId
+                        if (this.buildForm.discId != null &&
+                            this.buildForm.discId !== '') {
+                            this.buildForm.findids[1] = this.buildForm.discId
+                        }
+                    }
+                    this.buildForm.lcqymc = data.lcqymc.split(',')
+                    this.buildForm.lcmc = data.lcmc.split(',')
+                    if (this.buildForm.latAndLon) {
+                        this.buildForm.latAndLon = data.lat + ',' + data.lon
+                    }
+                })
+            })
+        },
+        getTreeSelectData: function() {
+            this.baseInfoRequest('getTreeData3', {}).then((res) => {
+                this.options = res.data.data
+            }).catch(() => {
+            })
+        },
+        cancel() {
+            const _this = this
+            _this.$refs['buildForm'].resetFields()
+            _this.$emit('cancel')
+        },
+        baseRequest: function(opUrl, postData) {
+            return this.$channel.baseRequest('MnpBuildingController', opUrl, postData, 'User')
+        },
+        baseInfoRequest: function(opUrl, postData) {
+            return this.$channel.baseRequest('ParkInfoController', opUrl, postData, 'User')
+        }
+    }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 898 - 0
src/views/parkAssets/parkBuild/index.vue

@@ -0,0 +1,898 @@
+<template>
+  <div>
+    <div class="custom-tree-container">
+      <div class="block-l">
+        <el-card shadow="hover">
+          <el-tag class="full space-vertical">当前所选:载体结构</el-tag>
+          <!-- @node-click="handleDeptNodeClick" -->
+          <el-tree
+            ref="selectTree"
+            default-expand-all
+            :data="DeptTree"
+            node-key="id"
+            :indent="deptTreeIndent"
+            accordion
+            :expand-on-click-node="expandDeptClick"
+            :default-expanded-keys="expandedDeptKey"
+            node-click="(data, node, item) => nodeClick(data, node, item)"
+            @node-click="getCheckedNodes"
+          >
+            <span slot-scope="{ node, data }" class="custom-tree-node">
+              <span>
+                <i v-if="data.level == 0" class="el-icon-s-home" />
+                <i v-else-if="data.level == 1" class="el-icon-menu" />
+                <i v-else class="el-icon-link" />
+                {{ node.label }}
+              </span>
+              <span v-if="data.level == 0">
+                <el-link class="space" type="primary" @click="() => unFoldAll()">展开</el-link>
+                <el-link class="space" type="primary" @click="() => collapseAll()">折叠</el-link>
+              </span>
+            </span>
+          </el-tree>
+        </el-card>
+      </div>
+      <div class="block-r">
+        <el-row class="handle-box" style="margin-bottom: 10px">
+          <el-col :span="1">
+            楼栋号
+          </el-col>
+          <el-col :span="23">
+            <el-input v-model="queryParam.ldmc" size="small" placeholder="请输入楼栋号" class="ch-input-size" @keyup.enter.native="handleSearch()" />
+            <el-button size="small" class="ch-button-export" style="float: right;margin-top: 4px" @click="handleExcel()"><i class="el-icon-menu" />&nbsp;导出Excel</el-button>
+            <el-button size="small" class="ch-button-add" style="float: right; margin-right: 10px; margin-top: 4px" @click="handleAdd()"><i class="el-icon-menu" />&nbsp;新增楼栋</el-button>
+            <el-button size="small" class="ch-button" style="float: right;margin-top: 4px" @click="handleSearch()"><i class="el-icon-menu" />&nbsp;查询</el-button>
+            <el-button size="small" class="ch-button-warning" style="float: right;margin-top: 4px" @click="handleReset()"><i class="el-icon-menu" />&nbsp;重置</el-button>
+          </el-col>
+        </el-row>
+        <el-row class="handle-box">
+          <el-col :span="24">
+            <!-- @current-change="handleRowSelectChange" -->
+            <el-table ref="singleTable" v-loading="loading" :data="AllData" highlight-current-row>
+              <el-table-column label="编号" type="index" width="60" />
+              <el-table-column label="园区" prop="parkName" />
+              <el-table-column label="楼盘" prop="lpmc" />
+              <el-table-column label="楼栋号" prop="ldmc">
+                <template scope="scope">
+                  <span @click="handleView(scope.row)">{{ scope.row.ldmc }}</span>
+                </template>
+              </el-table-column>
+              <el-table-column label="类型" prop="type" :formatter="typeFormatter" />
+              <el-table-column label="面积" prop="mj" header-align="center" align="center" width="80" />
+              <el-table-column label="操作" header-align="center" width="160">
+                <template scope="scope">
+                  <el-button size="mini" type="primary" @click="handleEdit(scope.row)" class="editButton">编辑</el-button>
+                  <el-button v-if="scope.row.id != '1'" size="mini" type="info" @click="buildDel(scope.row)" class="deleButton">删除</el-button>
+                </template>
+              </el-table-column>
+            </el-table>
+            <div class="table-page">
+              <el-pagination
+                :current-page.sync="currentPage"
+                :page-size="pageSize"
+                background
+                layout="total, prev, pager, next"
+                :total="allpage"
+                @size-change="handleSizeChange"
+                @current-change="handleCurrentChange"
+              />
+            </div>
+          </el-col>
+        </el-row>
+      </div>
+    </div>
+
+    <el-dialog :title="dialogTitle" :visible.sync="dialogVisible" width="950px" top="50px" @open="dlgOpen" @close="dlgClose">
+      <el-form ref="buildForm" :model="buildForm" style="width: 100%;padding: 5px" :rules="commitRules">
+        <el-row>
+          <el-col style="padding-bottom: 10px">
+            <span class="card_title">基本信息</span>
+            <el-card shadow="always" style="padding-top: 10px">
+              <el-row>
+                <el-col :span="4" class="col-txt"><span>父级</span></el-col>
+                <el-col :span="20" class="col-input">
+                  <el-form-item>
+                    <!-- @change="handleChange" -->
+                    <el-cascader
+                      ref="findids"
+                      v-model="buildForm.findids"
+                      class="full"
+                      :options="options"
+                      clearable
+                      @change="handleChange"
+                    />
+                  </el-form-item>
+                </el-col>
+              </el-row>
+              <el-row>
+                <el-col :span="4" class="col-txt"><span>*楼栋号|地块号</span></el-col>
+                <el-col :span="8" class="col-input">
+                  <el-form-item prop="ldmc">
+                    <el-input v-model="buildForm.ldmc" />
+                  </el-form-item>
+                </el-col>
+                <el-col :span="4" class="col-txt"><span>*关联区域</span></el-col>
+                <el-col :span="8" class="col-input">
+                  <el-form-item prop="lcqymc">
+                    <el-select v-model="buildForm.lcqymc" placeholder="" filterable multiple>
+                      <el-option
+                        v-for="item in dc_data.MNP_BUILDING_LCQY"
+                        :key="item.value"
+                        :label="item.label"
+                        :value="item.value"
+                      />
+                    </el-select>
+                  </el-form-item>
+                </el-col>
+              </el-row>
+              <el-row>
+                <el-col :span="4" class="col-txt"><span>*关联楼层</span></el-col>
+                <el-col :span="20" class="col-input">
+                  <el-form-item prop="lcmc">
+                    <el-select v-model="buildForm.lcmc" placeholder="" filterable multiple>
+                      <el-option
+                        v-for="item in dc_data.MNP_BUILDING_LC"
+                        :key="item.value"
+                        :label="item.label"
+                        :value="item.value"
+                      />
+                    </el-select>
+                  </el-form-item>
+                </el-col>
+              </el-row>
+              <el-row>
+                <el-col :span="4" class="col-txt"><span>*面积(㎡)</span></el-col>
+                <el-col :span="8" class="col-input">
+                  <el-form-item prop="mj">
+                    <el-input v-model="buildForm.mj" />
+                  </el-form-item>
+                </el-col>
+                <el-col :span="4" class="col-txt"><span>类型</span></el-col>
+                <el-col :span="8" class="col-input">
+                  <el-form-item>
+                    <el-select v-model="buildForm.type" placeholder="" filterable>
+                      <el-option
+                        v-for="item in dc_data.parkType"
+                        :key="item.value"
+                        :label="item.label"
+                        :value="item.value"
+                      />
+                    </el-select>
+                  </el-form-item>
+                </el-col>
+              </el-row>
+              <el-row>
+                <el-col :span="4" class="col-txt"><span>经纬度</span></el-col>
+                <el-col :span="20" class="col-input">
+                  <el-form-item>
+                    <el-input v-model="buildForm.latAndLon" />
+                  </el-form-item>
+                </el-col>
+              </el-row>
+              <el-row>
+                <el-col :span="4" class="col-txt"><span>产证名称</span></el-col>
+                <el-col :span="8" class="col-input">
+                  <el-form-item prop="mj">
+                    <el-input v-model="buildForm.certificateName" />
+                  </el-form-item>
+                </el-col>
+                <el-col :span="4" class="col-txt"><span>产证编号</span></el-col>
+                <el-col :span="8" class="col-input">
+                  <el-form-item prop="mj">
+                    <el-input v-model="buildForm.certificateNumber" />
+                  </el-form-item>
+                </el-col>
+              </el-row>
+              <el-row>
+                <el-col :span="4" class="col-txt"><span>产证地址</span></el-col>
+                <el-col :span="20" class="col-input">
+                  <el-form-item>
+                    <el-input v-model="buildForm.certificateAddress" />
+                  </el-form-item>
+                </el-col>
+              </el-row>
+              <!--              <el-row>-->
+              <!--                <el-col :span="4" class="col-txt"><span>楼栋介绍</span></el-col>-->
+              <!--                <el-col :span="20" class="col-txt">-->
+              <!--                  <el-form-item>-->
+              <!--                    <text-edit ref="textEdit" :text-content="buildForm.introduction" @input="test" />-->
+              <!--                  </el-form-item>-->
+              <!--                </el-col>-->
+              <!--              </el-row>-->
+            </el-card>
+          </el-col>
+        </el-row>
+      </el-form>
+      <div slot="footer">
+        <el-button @click="dialogVisible = false">取 消</el-button>
+        <el-button type="primary" @click="confirmSubmit()">确 定</el-button>
+      </div>
+    </el-dialog>
+
+    <el-dialog
+      :visible.sync="dialogViewVisible"
+      :close-on-click-modal="false"
+      :close-on-press-escape="false"
+      width="950px"
+      top="50px"
+      append-to-body
+    >
+      <build-view ref="buildView" @cancel="cancel" />
+    </el-dialog>
+
+  </div>
+</template>
+
+<script>
+import Base from '@/views/base/base'
+import BaseData from '@/views/base/baseData'
+import BaseDept from '@/views/base/baseDept'
+import constant from '../../../static/utils/constant'
+import BuildView from './buildView'
+// import textEdit from '../../textEdit/index'
+export default {
+    name: 'User',
+    components: { BuildView },
+    mixins: [Base, BaseData, BaseDept],
+    data() {
+        return {
+            dc_key: ['parkType', 'MNP_BUILDING_LCQY', 'MNP_BUILDING_LC'],
+            // 查询参数
+            queryParam: {
+                ldmc: ''
+            },
+            buildForm: {
+
+            },
+            DeptTree: [],
+            options: [],
+
+            // 字典项
+            dc_gender: [],
+            dc_map: {},
+
+            // 列表相关
+            username: '',
+            truename: '',
+            dataRoleId: '',
+            postId: '',
+            AllData: [],
+            loading: false,
+            currentRow: null,
+            isAdminSelect: false,
+            isGroupUser: false,
+
+            // 用户维护相关
+            dialogVisible: false,
+            dialogTitle: '新增用户',
+            isAdd: true,
+            selectDepartment: [],
+            form: this.getBaseForm(),
+            LeaderData: [],
+            commitRules: {
+                ldmc: [{ required: true, trigger: 'blur', message: '请输入楼栋号' }],
+                mj: [{ required: true, trigger: 'blur', message: '请输入面积' }]
+                // lcqymc: [{ required: true, trigger: 'blur', message: '请选择关联区域' }],
+                // lcmc: [{ required: true, trigger: 'blur', message: '请选择关联楼层' }]
+            },
+
+            // 角色维护相关
+            dialogRoleVisible: false,
+            dialogRoleTitle: '角色选择',
+            selectUserId: '',
+            selectUserName: '',
+            SelectMenuRole: [],
+            SelectDataRoleId: '',
+            MenuRole: [],
+            nodeId: '',
+            level: '',
+            dialogViewVisible: false
+
+        }
+    },
+    mounted() {
+        this.initDict(this.dc_key).then((res) => {
+            this.getList()
+        })
+        this.getTreeData()
+        this.getTreeSelectData()
+    },
+    methods: {
+        handleChange(value) {
+
+        },
+
+        handleSearch: function() {
+            this.getList()
+        },
+
+        getTreeData: function() {
+            this.baseInfoRequest('getTreeData2', {}).then((res) => {
+                this.DeptTree = res.data.data
+            }).catch(() => {
+            })
+        },
+
+        getTreeSelectData: function() {
+            this.baseInfoRequest('getTreeData3', {}).then((res) => {
+                this.options = res.data.data
+            }).catch(() => {
+            })
+        },
+
+        handleReset: function() {
+            this.queryParam = {}
+            this.getList()
+        },
+
+        getList: function() {
+            const _this = this
+            _this.loading = true
+            _this.AllData = []
+            this.queryParam.pageNum = this.currentPage
+            this.queryParam.pageSize = this.pageSize
+            this.baseRequest('list', this.queryParam).then((res) => {
+                // if (res.data.rows) {
+                //     res.data.rows.forEach(function(item) {
+                //         _this.AllData.push(_this.getItemJson(item))
+                //     })
+                //     _this.allpage = res.data.total
+                // }
+                _this.AllData = res.data.rows
+                _this.allpage = res.data.total
+                _this.loading = false
+            }).catch(() => {
+            })
+        },
+        handleAdd: function() {
+            this.dialogVisible = true
+            this.dialogTitle = '新增楼栋'
+        },
+
+        // handleExcel: function() {
+        //     this.baseRequest('excelList', this.queryParam).then((res) => {
+        //         console.log(res)
+        //         window.location.href = constant.BASE_URI + '/' + res.data.msg
+        //     }).catch(() => {
+        //     })
+        // },
+
+        // 导出
+        handleExcel: function() {
+            const _this = this
+            this.OutData = []
+            const title = ['园区', '楼盘', '楼栋号', '类型', '面积']
+            this.OutData.push(title)
+            const temp = []
+            this.baseRequest('excelListAll', _this.queryParam).then(res => {
+                const data = res.data
+                data.forEach(function(item) {
+                    const json = _this.getItemJson(item)
+                    temp.push(json)
+                })
+                temp.forEach(function(item) {
+                    const jsonArray = []
+                    jsonArray.push(item.groupName)
+                    jsonArray.push(item.lpmc)
+                    jsonArray.push(item.ldmc)
+                    jsonArray.push(item.type)
+                    jsonArray.push(item.mj)
+                    _this.OutData.push(jsonArray)
+                })
+                const OutSize = [{ wch: 15 }, { wch: 15 }, { wch: 15 }, { wch: 15 }, { wch: 15 }]
+                const fileName = '载体导出 ' + new Date().Format('yyyyMMddhhmm')
+                _this.$outputXlsxFile(this.OutData, OutSize, fileName)
+            })
+        },
+
+        handleEdit: function(val) {
+            this.buildForm = val
+            this.buildForm.findids = []
+            if (this.buildForm.groupId != null &&
+                    this.buildForm.groupId !== '') {
+                this.buildForm.findids[0] = this.buildForm.groupId
+                if (this.buildForm.discId != null &&
+                        this.buildForm.discId !== '') {
+                    this.buildForm.findids[1] = this.buildForm.discId
+                }
+            }
+            this.buildForm.lcqymc = val.lcqymc.split(',')
+            this.buildForm.lcmc = val.lcmc.split(',')
+            if (this.buildForm.latAndLon) {
+                this.buildForm.latAndLon = val.lat + ',' + val.lon
+            }
+            this.dialogVisible = true
+            this.dialogTitle = '编辑楼栋'
+        },
+        buildDel(val) {
+            this.$confirm('此操作将删除楼栋, 是否继续?', '提示', {
+                confirmButtonText: '确定',
+                cancelButtonText: '取消',
+                type: 'warning'
+            }).then(() => {
+                this.baseRequest('remove/' + val.id, {}).then(res => {
+                    if (res.data.code == 200) {
+                        // this.getData()
+                        this.getList()
+                        this.getTreeData()
+                        this.$message({
+                            type: 'success',
+                            message: '删除成功!'
+                        })
+                    }
+                }).catch((err) => {
+                    this.$message({
+                        type: 'error',
+                        message: err
+                    })
+                })
+            }).catch(() => {
+                this.$message({
+                    type: 'info',
+                    message: '已取消删除'
+                })
+            })
+        },
+
+        confirmSubmit: function() {
+            console.log()
+            if (undefined == this.buildForm.lcmc || this.buildForm.lcmc.length < 1) {
+                this.$message({
+                    message: '请选择关联楼层',
+                    type: 'warning'
+                })
+                return
+            }
+            if (undefined == this.buildForm.lcqymc || this.buildForm.lcqymc.length < 1) {
+                this.$message({
+                    message: '请选择关联区域',
+                    type: 'warning'
+                })
+                return
+            }
+            this.$refs.buildForm.validate(valid => {
+                if (valid) {
+                    const _this = this
+                    const extraData = {}
+                    const postData = Object.assign({}, _this.buildForm, extraData)
+                    // 父级
+                    const ids = this.buildForm.findids
+                    const arr = this.$refs['findids'].getCheckedNodes()[0].pathLabels
+                    if (ids != null && ids != [] && ids != '') {
+                        postData.groupId = ids[0]
+                        postData.discId = ids[1]
+                    }
+                    if (arr != null && arr != [] && arr != '') {
+                        postData.groupName = arr[0]
+                        postData.lpmc = arr[1]
+                    }
+                    let urlAdd = 'add'
+                    if (undefined != this.buildForm.id && this.buildForm.id != null && this.buildForm.id != '') {
+                        urlAdd = 'edit'
+                    }
+                    // 经纬度
+                    const latAndLon = this.buildForm.latAndLon
+                    if (latAndLon != null && latAndLon != [] && latAndLon != '') {
+                        const latAndLon = this.buildForm.latAndLon.split(',')
+                        postData.lon = latAndLon[0]
+                        postData.lat = latAndLon[1]
+                    }
+                    // 关联区域
+                    const lcqymc = this.buildForm.lcqymc.join(',')
+                    postData.lcqymc = lcqymc
+                    // 关联楼层
+                    const lcmc = this.buildForm.lcmc.join(',')
+                    postData.lcmc = lcmc
+
+                    // if (ids != null && ids != [] && ids != '') {
+                    //     this.buildForm.groupId = ids[0]
+                    //     this.buildForm.discId = ids[1]
+                    // }
+                    // if (arr != null && arr != [] && arr != '') {
+                    //     this.buildForm.groupName = arr[0]
+                    //     this.buildForm.lpmc = arr[1]
+                    // }
+                    // let urlAdd = 'add'
+                    // if (undefined != this.buildForm.id && this.buildForm.id != null && this.buildForm.id != '') {
+                    //     urlAdd = 'edit'
+                    // }
+                    // // 经纬度
+                    // const latAndLon = this.buildForm.latAndLon
+                    // if (latAndLon != null && latAndLon != [] && latAndLon != '') {
+                    //     const latAndLon = this.buildForm.latAndLon.split(',')
+                    //     this.buildForm.lon = latAndLon[0]
+                    //     this.buildForm.lat = latAndLon[1]
+                    // }
+                    // // 关联区域
+                    // const lcqymc = this.buildForm.lcqymc.join(',')
+                    // this.buildForm.lcqymc = lcqymc
+                    // // 关联楼层
+                    // const lcmc = this.buildForm.lcmc.join(',')
+                    // this.buildForm.lcmc = lcmc
+
+                    this.baseRequest(urlAdd, postData).then((res) => {
+                        if (res.data.code == 200) {
+                            this.buildForm = {}
+                            this.dialogVisible = false
+                            // this.getList()
+                            this.getTreeData()
+                            this.$message({
+                                message: '提交成功',
+                                type: 'success'
+                            })
+                        }
+                    }).catch((err) => {
+                        this.$message({
+                            message: err,
+                            type: 'error'
+                        })
+                    })
+                }
+            })
+        },
+        getCheckedNodes(data, node, item) {
+            const _this = this
+            console.log('节点====', node)
+            console.log('节点id====', node.data.id)
+            console.log('层级====', node.level)
+            _this.queryParam.nodeId = node.data.id
+            _this.queryParam.level = node.level
+            // this.getData()
+            _this.getList()
+        },
+        getData: function() {
+            const _this = this
+            this.loading = true
+            this.AllData = []
+
+            const postData = {
+                department: this.selectDeptNode.id === '0' ? '' : this.selectDeptNode.id,
+                username: this.username,
+                truename: this.truename,
+                dataRole: this.dataRoleId,
+                postId: this.postId,
+                pageNum: this.currentPage,
+                pageSize: this.pageSize,
+                nodeId: this.nodeId,
+                level: this.level
+            }
+            if (this.$common.currUser().groupId) {
+                postData.groupId = this.$common.currUser().groupId
+            }
+            this.baseRequest('list', postData).then((res) => {
+                if (res.data.rows) {
+                    res.data.rows.forEach(function(item) {
+                        _this.AllData.push(_this.getItemJson(item))
+                    })
+                    _this.allpage = res.data.total
+                }
+                _this.loading = false
+            }).catch(() => {
+            })
+
+            // this.initRole()
+        },
+        getItemJson: function(item) {
+            // const posts = item.posts ? item.posts.split(',') : []
+            // if (posts.length > 0) {
+            //     const postStr = []
+            //     posts.forEach(post => {
+            //         postStr.push(this.PostMap[post])
+            //     })
+            //     item.postStr = postStr.join(',')
+            // }
+            // item.type = this.dc_map.parkType[item.type]
+            // item.dataRoleStr = this.DataRoleMap[item.dataRole]
+            // item.department = item.department ? this.DeptMap[item.department] : ''
+            // 合同状态
+            item.type = this.dc_map.parkType[item.type]
+            return item
+        },
+        typeFormatter(row, column) {
+            return this.dc_map.parkType[row.type]
+        },
+        // initRole: function() {
+        //     const _this = this
+        //     this.MenuRole = []
+        //
+        //     this.$channel.baseRequest('RoleController', 'listAll', '', 'All Role').then((res) => {
+        //         if (res.data) {
+        //             res.data.forEach(function(item) {
+        //                 const json = {
+        //                     name: item.name,
+        //                     id: item.id
+        //                 }
+        //                 _this.MenuRole.push(json)
+        //             })
+        //         }
+        //     }).catch(() => {
+        //     })
+        // },
+
+        // handleReset: function() {
+        //     this.username = ''
+        //     this.truename = ''
+        //     this.postId = ''
+        //     this.dataRoleId = ''
+        //     this.handleSearch()
+        // },
+        handleRowSelectChange(val) {
+            this.currentRow = val
+            if (this.currentRow) {
+                if (this.currentRow.id === '1') {
+                    this.isAdminSelect = true
+                } else {
+                    this.isAdminSelect = false
+                }
+            }
+        },
+        getBaseForm: function() {
+            const baseForm = {
+                id: '',
+                groupId: '',
+                username: '',
+                password: null,
+                truename: '',
+                leader: '',
+                department: [],
+                posts: [],
+                gender: '',
+                phone: '',
+                sequenceNo: '',
+                secretKey: '',
+                comment: ''
+            }
+
+            if (this.$common.currUser().groupId) {
+                baseForm.groupId = this.$common.currUser().groupId
+            }
+
+            return baseForm
+        },
+        dlgOpen: function() {
+            // this.$nextTick(() => {
+            //     this.$refs.buildForm.resetFields()
+            // })
+        },
+        dlgClose: function() {
+            const _this = this
+            _this.buildForm = {}
+            _this.getList()
+        },
+
+        assignRole: function() {
+            if (this.currentRow) {
+                this.selectUserId = this.currentRow.id
+                this.selectUserName = this.currentRow.truename
+                this.SelectMenuRole = []
+                this.SelectDataRoleId = this.currentRow.dataRole
+                this.dialogRoleTitle = this.currentRow.username + '[' + this.currentRow.truename + ']角色选择'
+                this.dialogRoleVisible = true
+            }
+        },
+        dlgRoleOpen: function() {
+            const _this = this
+            const postData = {
+                sysUserId: this.selectUserId
+            }
+            this.baseRequest('listUserRole', postData).then((res) => {
+                if (res.data) {
+                    res.data.forEach(function(item) {
+                        _this.SelectMenuRole.push(item.sysRoleId)
+                    })
+                }
+            }).catch(() => {
+            })
+        },
+        confirmSubmitRole: function() {
+            const postRole = {
+                userId: this.selectUserId
+            }
+            if (this.SelectMenuRole) {
+                postRole.prem = this.SelectMenuRole.join(',')
+            }
+
+            this.baseRequest('updateRole', postRole)
+
+            const postUser = {
+                id: this.selectUserId,
+                dataRole: this.SelectDataRoleId
+            }
+            this.opRecord(postUser, 'edit')
+        },
+        // /* 重置密码*/
+        // resetPWD: function() {
+        //     if (!this.currentRow) return
+        //     const _this = this
+        //     this.confirm('是否为' + this.currentRow.username + '重置密码,默认密码为:Ab654321?').then(() => {
+        //         const doing = _this.$notify({
+        //             title: '正在处理,请稍等',
+        //             type: 'warning'
+        //         })
+        //         const postData = {
+        //             id: this.currentRow.id,
+        //             password: 'Ab654321'
+        //         }
+        //         _this.baseRequest('editPwd', postData).then((res) => {
+        //             doing.close()
+        //             _this.$notify({
+        //                 title: '重置成功',
+        //                 type: 'info'
+        //             })
+        //         }).catch(() => {
+        //         })
+        //     })
+        // },
+        // /* 状态变更*/
+        // handleStatusSwitch: function(row) {
+        //     let info = ''
+        //     let preStatus = '0'
+        //     switch (row.status) {
+        //         case '0':
+        //             info = '是否禁用用户?'
+        //             preStatus = '1'
+        //             break
+        //         case '1':
+        //             info = '是否启用用户?'
+        //             preStatus = '0'
+        //             break
+        //     }
+        //     this.confirm(info).then(() => {
+        //         const postData = {
+        //             id: row.id,
+        //             status: row.status
+        //         }
+        //         this.opRecord(postData, 'edit')
+        //     }).catch(() => {
+        //         row.status = preStatus
+        //     })
+        // },
+        // handleStatus: function(_id, _status) {
+        //     let info = ''
+        //     const _this = this
+        //     switch (_status) {
+        //         case '0':
+        //             info = '是否禁用用户?'
+        //             break
+        //         case '1':
+        //             info = '是否启用用户?'
+        //             break
+        //     }
+        //     this.confirm(info).then(() => {
+        //         const postData = {
+        //             id: _id,
+        //             status: _status
+        //         }
+        //         _this.opRecord(postData, 'edit')
+        //     })
+        // },
+        // opRefresh: function() {
+        //     this.getList()
+        //     // this.getData()
+        //     this.dialogVisible = false
+        //     this.dialogRoleVisible = false
+        // },
+        // initValidLeader: function(_uid = '') {
+        //     const _this = this
+        //     this.LeaderData = []
+        //
+        //     const postData = {
+        //         uid: _uid
+        //     }
+        //     return this.globleRequest('UserController', 'listLeaderValid', postData, 'Valid Leader Users').then((res) => {
+        //         if (res.data) {
+        //             res.data.forEach(function(item) {
+        //                 const json = {
+        //                     label: item.truename,
+        //                     value: item.id
+        //                 }
+        //                 _this.LeaderData.push(json)
+        //             })
+        //         }
+        //     }).catch(() => {
+        //     })
+        // },
+        handleView(data) {
+            this.dialogViewVisible = true
+            this.$nextTick(() => {
+                this.$refs.buildView.initData(data)
+            })
+        },
+        cancel() {
+            this.dialogViewVisible = false
+        },
+        test(val) {
+            // this.$set(this.buildForm, 'introduction', val)
+        },
+        // 字典项
+        generateDcMap: function() {
+            this.dc_map['dc_gender'] = this.$common.transDcMap(this.dc_gender)
+        },
+        // 请求封装,继承类中调用,必须存在
+        baseRequest: function(opUrl, postData) {
+            return this.$channel.baseRequest('MnpBuildingController', opUrl, postData, 'User')
+        },
+        baseInfoRequest: function(opUrl, postData) {
+            return this.$channel.baseRequest('ParkInfoController', opUrl, postData, 'User')
+        },
+        postRequest: function(opUrl, postData) {
+            return this.$channel.baseRequest('PostController', opUrl, postData, 'Post')
+        }
+    }
+}
+</script>
+
+<style scoped>
+
+    .el-cascader-menu{
+        max-width:250px;
+    }
+    .custom-tree-node {
+        flex: 1;
+        display: flex;
+        align-items: center;
+        justify-content: space-between;
+        font-size: 16px;
+        padding-right: 8px;
+    }
+    .custom-tree-container .block-l {
+        /*flex-grow: 2 ;*/
+        float: left;
+        width: 20%;
+        padding: 0 8px 0 0;
+    }
+    .custom-tree-container .block-r {
+        /*flex-grow: 10;*/
+        float: left;
+        width: 80%;
+        /*padding: 0 0 0 8px;*/
+    }
+</style>
+
+<style scoped>
+    /*.ch-input .el-input__inner {*/
+        /*border-radius: 0px;*/
+        /*border-color: #32323A;*/
+    /*}*/
+
+    /*.ch-input-size {*/
+        /*width: 200px;*/
+        /*margin-right: 10px;*/
+    /*}*/
+
+    /*.ch-button {*/
+        /*border-radius: 0px;*/
+        /*border-color: #32323A;*/
+        /*background-color: #32323A;*/
+        /*color: #fff;*/
+    /*}*/
+
+    .ch-input .el-input__inner {
+        border-color: #32323A;
+    }
+    .ch-input-size {
+        width: 150px;
+    }
+    .ch-button {
+        border-color: #32323A;
+        background-color: #32323A;
+        color: #fff;
+    }
+    .ch-button-warning {
+        margin-left: 10px;
+        border-color: #E6A23C;
+        background-color: #E6A23C;
+        color: #fff;
+    }
+    .ch-button-export {
+        margin-left: 10px;
+        border-color: #98CC1F;
+        background-color: #98CC1F;
+        color: #fff;
+    }
+    /deep/ .el-card{
+        max-height: 952px;
+        overflow: hidden;
+        overflow-y: scroll;
+    }
+</style>

+ 876 - 0
src/views/parkAssets/parkFloorDisc/index.vue

@@ -0,0 +1,876 @@
+<template>
+  <div class="parkFloor">
+    <div class="custom-tree-container">
+      <div class="block-l">
+        <el-card shadow="hover">
+          <el-tag class="full space-vertical">当前所选:载体结构</el-tag>
+          <!-- @node-click="handleDeptNodeClick" -->
+          <el-tree
+            ref="selectTree"
+            :render-content="renderContent"
+            default-expand-all
+            :data="DeptTree"
+            node-key="id"
+            :indent="deptTreeIndent"
+            accordion
+            :expand-on-click-node="expandDeptClick"
+            :default-expanded-keys="expandedDeptKey"
+            node-click="(data, node, item) => nodeClick(data, node, item)"
+            @node-click="getCheckedNodes"
+          >
+            <span slot-scope="{ node, data }" class="custom-tree-node">
+              <span>
+                <i v-if="data.level == 0" class="el-icon-s-home" />
+                <i v-else-if="data.level == 1" class="el-icon-menu" />
+                <i v-else class="el-icon-link" />
+                {{ node.label }}
+              </span>
+              <span v-if="data.level == 0">
+                <el-link class="space" type="primary" @click="() => unFoldAll()">展开</el-link>
+                <el-link class="space" type="primary" @click="() => collapseAll()">折叠</el-link>
+              </span>
+            </span>
+          </el-tree>
+        </el-card>
+      </div>
+      <div class="block-r">
+        <el-row class="handle-box" style="margin-bottom: 10px">
+          <el-col :span="24">
+            <el-input v-model="queryParam.name" size="small" placeholder="楼盘名称" class="ch-input-size" @keyup.enter.native="handleSearch()" />
+            <el-button size="small" class="ch-button-add" style="float: right; margin-top: 4px; margin-right: 10px;" @click="handleAddFQ()"><i class="el-icon-menu" />&nbsp;楼盘分期导入</el-button>
+            <el-button size="small" class="ch-button-add" style="float: right; margin-top: 4px; margin-right: 10px;" @click="handleAdd()"><i class="el-icon-menu" />&nbsp;楼盘导入</el-button>
+            <el-button size="small" class="ch-button-add" style="float: right; margin-top: 4px; margin-right: 10px;" @click="handleAddFQ()"><i class="el-icon-menu" />&nbsp;新增分期</el-button>
+            <el-button size="small" class="ch-button-add" style="float: right; margin-top: 4px; margin-right: 10px;" @click="handleAdd()"><i class="el-icon-menu" />&nbsp;新增楼盘</el-button>
+            <el-button size="small" class="ch-button" style="float: right;margin-top: 4px" @click="handleSearch()"><i class="el-icon-menu" />&nbsp;查询</el-button>
+            <el-button size="small" class="ch-button-warning" style="float: right;margin-top: 4px" @click="handleReset()"><i class="el-icon-menu" />&nbsp;重置</el-button>
+          </el-col>
+        </el-row>
+        <el-row class="handle-box">
+          <el-col :span="24">
+            <el-table
+              ref="singleTable"
+              v-loading="loading"
+              :data="AllData"
+              @selection-change="handleSelectionChange"
+            >
+              <el-table-column type="selection" width="55" />
+              <el-table-column label="编号" type="index" width="60" />
+              <el-table-column label="楼盘/小区名称" prop="groupName" />
+              <el-table-column label="性质" prop="natureStr" />
+              <el-table-column label="预售许可证编号" prop="preSalesLicenseNumber" />
+              <el-table-column label="分期名称" prop="name" />
+              <el-table-column label="操作" header-align="center" width="160">
+                <template scope="scope">
+                  <el-button size="mini" type="primary" class="editButton" @click="handleEdit(scope.row)">编辑</el-button>
+                  <el-button size="mini" type="info" class="deleButton" @click="handleDelete(scope.row)">删除</el-button>
+                </template>
+              </el-table-column>
+            </el-table>
+            <div class="table-page">
+              <el-pagination
+                :current-page.sync="currentPage"
+                :page-size="pageSize"
+                background
+                layout="total, prev, pager, next"
+                :total="allpage"
+                @size-change="handleSizeChange"
+                @current-change="handleCurrentChange"
+              />
+            </div>
+          </el-col>
+        </el-row>
+      </div>
+    </div>
+
+    <el-dialog :title="dialogTitle" :visible.sync="dialogVisible" width="950px" top="50px" append-to-body @close="dialogClose">
+      <el-form ref="groupfrom" :model="groupfrom" style="width: 100%;padding: 5px" :rules="groupFormRules">
+        <el-row>
+          <el-col style="padding-bottom: 10px">
+            <!--            <span class="card_title">基本信息</span>-->
+            <el-card shadow="always" style="padding-top: 10px">
+              <el-row>
+                <el-col :span="4" class="col-txt"><span>*楼盘/小区名称</span></el-col>
+                <el-col :span="8" class="col-input">
+                  <el-form-item prop="groupName">
+                    <el-input v-model="groupfrom.groupName" />
+                  </el-form-item>
+                </el-col>
+                <el-col :span="4" class="col-txt"><span>*性质</span></el-col>
+                <el-col :span="8" class="col-input">
+                  <el-form-item prop="nature">
+                    <el-select v-model="groupfrom.nature" placeholder="" filterable :disabled="isView">
+                      <el-option
+                        v-for="item in dc_data.GROUP_NATURE"
+                        :key="item.value"
+                        :label="item.label"
+                        :value="item.value"
+                      />
+                    </el-select>
+                  </el-form-item>
+                </el-col>
+              </el-row>
+              <el-row>
+                <el-col :span="4" class="col-txt"><span>*预销售许可证编号:</span></el-col>
+                <el-col :span="8" class="col-input">
+                  <el-form-item prop="preSalesLicenseNumber">
+                    <el-input v-model="groupfrom.preSalesLicenseNumber" />
+                  </el-form-item>
+                </el-col>
+                <el-col :span="4" class="col-txt"><span>开发公司</span></el-col>
+                <el-col :span="8" class="col-input">
+                  <el-form-item>
+                    <el-select v-model="groupfrom.companyId" placeholder="" filterable :disabled="isView">
+                      <el-option
+                        v-for="item in dc_data.companyOptions"
+                        :key="item.value"
+                        :label="item.label"
+                        :value="item.value"
+                      />
+                    </el-select>
+                  </el-form-item>
+                </el-col>
+              </el-row>
+              <el-row>
+                <el-col :span="4" class="col-txt"><span>总建筑面积(㎡):</span></el-col>
+                <el-col :span="8" class="col-input">
+                  <el-form-item prop="">
+                    <el-input v-model="groupfrom.buildArea" />
+                  </el-form-item>
+                </el-col>
+                <el-col :span="4" class="col-txt"><span>总用地面积(㎡):</span></el-col>
+                <el-col :span="8" class="col-input">
+                  <el-form-item prop="">
+                    <el-input v-model="groupfrom.landArea" />
+                  </el-form-item>
+                </el-col>
+              </el-row>
+              <el-row>
+                <el-col :span="4" class="col-txt"><span>立项批文:</span></el-col>
+                <el-col :span="8" class="col-input">
+                  <el-form-item prop="">
+                    <el-input v-model="groupfrom.projectApprovalDocument" />
+                  </el-form-item>
+                </el-col>
+                <el-col :span="4" class="col-txt"><span>工程规划许可证:</span></el-col>
+                <el-col :span="8" class="col-input">
+                  <el-form-item prop="">
+                    <el-input v-model="groupfrom.engineeringPlanningPermit" />
+                  </el-form-item>
+                </el-col>
+              </el-row>
+              <el-row>
+                <el-col :span="4" class="col-txt"><span>施工许可证:</span></el-col>
+                <el-col :span="8" class="col-input">
+                  <el-form-item prop="">
+                    <el-input v-model="groupfrom.construction_permit" />
+                  </el-form-item>
+                </el-col>
+                <el-col :span="4" class="col-txt"><span>土地证号:</span></el-col>
+                <el-col :span="8" class="col-input">
+                  <el-form-item prop="">
+                    <el-input v-model="groupfrom.land_certificate_number" />
+                  </el-form-item>
+                </el-col>
+              </el-row>
+              <el-row>
+                <el-col :span="4" class="col-txt"><span>用地许可证号:</span></el-col>
+                <el-col :span="8" class="col-input">
+                  <el-form-item prop="">
+                    <el-input v-model="groupfrom.landUsePermitNumber" />
+                  </el-form-item>
+                </el-col>
+                <el-col :span="4" class="col-txt"><span>容积率%:</span></el-col>
+                <el-col :span="8" class="col-input">
+                  <el-form-item prop="">
+                    <el-input v-model="groupfrom.volumeRatio" />
+                  </el-form-item>
+                </el-col>
+              </el-row>
+              <el-row>
+                <el-col :span="4" class="col-txt"><span>绿化率%:</span></el-col>
+                <el-col :span="8" class="col-input">
+                  <el-form-item prop="">
+                    <el-input v-model="groupfrom.greenRatio" />
+                  </el-form-item>
+                </el-col>
+                <el-col :span="4" class="col-txt"><span>标准单价:</span></el-col>
+                <el-col :span="8" class="col-input">
+                  <el-form-item prop="">
+                    <el-input v-model="groupfrom.price" />
+                  </el-form-item>
+                </el-col>
+              </el-row>
+              <el-row>
+                <el-col :span="4" class="col-txt"><span>超标单价:</span></el-col>
+                <el-col :span="8" class="col-input">
+                  <el-form-item prop="">
+                    <el-input v-model="groupfrom.exceededPrice" />
+                  </el-form-item>
+                </el-col>
+                <el-col :span="4" class="col-txt"><span>楼盘面积测绘状态:</span></el-col>
+                <el-col :span="8" class="col-input">
+                  <el-form-item prop="">
+                    <el-select v-model="groupfrom.areaStatus" placeholder="" filterable>
+                      <el-option
+                        v-for="item in dc_data.MAPPING_STATUS"
+                        :key="item.id"
+                        :label="item.label"
+                        :value="item.value"
+                      />
+                    </el-select>
+                  </el-form-item>
+                </el-col>
+              </el-row>
+              <el-row>
+                <el-col :span="4" class="col-txt"><span>楼盘销售状态:</span></el-col>
+                <el-col :span="8" class="col-input">
+                  <el-form-item prop="">
+                    <el-select v-model="groupfrom.saleStatus" placeholder="" filterable>
+                      <el-option
+                        v-for="item in dc_data.SALE_STATUS"
+                        :key="item.id"
+                        :label="item.label"
+                        :value="item.value"
+                      />
+                    </el-select>
+                  </el-form-item>
+                </el-col>
+                <el-col :span="4" class="col-txt"><span>行政区划:</span></el-col>
+                <el-col :span="8" class="col-input">
+                  <el-form-item prop="">
+                    <el-select v-model="groupfrom.regionalismCode" placeholder="" filterable>
+                      <el-option
+                        v-for="item in dc_data.REGIONALISM_CODE"
+                        :key="item.id"
+                        :label="item.label"
+                        :value="item.value"
+                      />
+                    </el-select>
+                  </el-form-item>
+                </el-col>
+              </el-row>
+              <el-row>
+                <el-col :span="4" class="col-txt"><span>详细地址</span></el-col>
+                <el-col :span="20" class="col-input">
+                  <el-form-item prop="address">
+                    <el-input v-model="groupfrom.address" type="textarea" :autosize="{ minRows: 2, maxRows: 100}" placeholder="请输入内容" />
+                  </el-form-item>
+                </el-col>
+              </el-row>
+              <el-row>
+                <el-col :span="4" class="col-txt"><span>备注</span></el-col>
+                <el-col :span="20" class="col-input">
+                  <el-form-item prop="address">
+                    <el-input v-model="groupfrom.remark" type="textarea" :autosize="{ minRows: 2, maxRows: 100}" placeholder="请输入内容" />
+                  </el-form-item>
+                </el-col>
+              </el-row>
+            </el-card>
+          </el-col>
+        </el-row>
+      </el-form>
+      <div slot="footer">
+        <el-button @click="dialogVisible = false">关 闭</el-button>
+        <el-button type="primary" @click="confirmSubmit()">保 存</el-button>
+      </div>
+    </el-dialog>
+
+    <el-dialog :title="dialogTitle" :visible.sync="dialogFQVisible" width="950px" top="50px" append-to-body>
+      <el-form ref="commitForm" :model="formLP" style="width: 100%;padding: 5px" :rules="commitRules">
+        <el-row>
+          <el-col style="padding-bottom: 10px">
+            <!--            <span class="card_title">基本信息</span>-->
+            <el-card shadow="always" style="padding-top: 10px">
+              <el-row>
+                <el-col :span="4" class="col-txt"><span>楼盘/小区名称</span></el-col>
+                <el-col :span="20" class="col-input">
+                  <el-form-item>
+                    <el-select v-model="formLP.groupId" placeholder="" filterable>
+                      <el-option
+                        v-for="item in groupList"
+                        :key="item.id"
+                        :label="item.groupName"
+                        :value="item.id"
+                      />
+                    </el-select>
+                  </el-form-item>
+                </el-col>
+              </el-row>
+              <el-row>
+                <el-col :span="4" class="col-txt"><span>分期名称</span></el-col>
+                <el-col :span="20" class="col-input">
+                  <el-form-item>
+                    <el-input v-model="formLP.name" />
+                  </el-form-item>
+                </el-col>
+              </el-row>
+              <el-row>
+                <el-col :span="4" class="col-txt"><span>房屋买卖单价(元/㎡)</span></el-col>
+                <el-col :span="20" class="col-input">
+                  <el-form-item>
+                    <el-input v-model="formLP.unitPrice" />
+                  </el-form-item>
+                </el-col>
+              </el-row>
+              <el-row>
+                <el-col :span="4" class="col-txt"><span>物业费单价(元/㎡)</span></el-col>
+                <el-col :span="20" class="col-input">
+                  <el-form-item>
+                    <el-input v-model="formLP.propertyUnitPrice" oninput="value=value.replace(/[^\d.]/g,'')" />
+                  </el-form-item>
+                </el-col>
+              </el-row>
+              <el-row>
+                <el-col :span="5" class="col-txt"><span>住宅专项维修资金(元/㎡)</span></el-col>
+                <el-col :span="19" class="col-input">
+                  <el-form-item>
+                    <el-input v-model="formLP.maintenanceFunds" oninput="value=value.replace(/[^\d.]/g,'')" />
+                  </el-form-item>
+                </el-col>
+              </el-row>
+              <el-row>
+                <el-col :span="4" class="col-txt"><span>认购金(元)</span></el-col>
+                <el-col :span="20" class="col-input">
+                  <el-form-item>
+                    <el-input v-model="formLP.subscriptionFunds" oninput="value=value.replace(/[^\d.]/g,'')" />
+                  </el-form-item>
+                </el-col>
+              </el-row>
+              <el-row>
+                <el-col :span="4" class="col-txt"><span>共持比例</span></el-col>
+                <el-col :span="20" class="col-input">
+                  <el-form-item>
+                    <el-input v-model="formLP.proportion" oninput="value=value.replace(/[^\d.]/g,'')" />
+                  </el-form-item>
+                </el-col>
+              </el-row>
+              <el-row>
+                <el-col :span="4" class="col-txt"><span>支付方式</span></el-col>
+                <el-col :span="20" class="col-input">
+                  <el-form-item>
+                    <el-select v-model="formLP.paymentMethods" placeholder="" filterable>
+                      <el-option
+                        v-for="item in dc_data.PAYMENT_METHODS"
+                        :key="item.id"
+                        :label="item.label"
+                        :value="item.value"
+                      />
+                    </el-select>
+                  </el-form-item>
+                </el-col>
+              </el-row>
+              <el-row>
+                <el-col :span="4" class="col-txt"><span>户型库</span></el-col>
+              </el-row>
+              <el-row>
+                <!-- 特殊表单 -->
+                <div v-for="(item, index) in formLP.dynamicItem" :key="index" style="border:1px solid #000;">
+                  <el-row>
+                    <el-col :span="2" class="col-txt"><span>户型</span></el-col>
+                    <el-col :span="3" class="col-input">
+                      <el-form-item prop="'dynamicItem.' + index + '.name'">
+                        <el-input
+                          v-model="item.name"
+
+                          placeholder="请填写X室X厅"
+                        />
+                      </el-form-item>
+                    </el-col>
+                    <el-col :span="3" class="col-input">
+                      <el-form-item prop="'dynamicItem.' + index + '.area'">
+                        <el-input
+                          v-model="item.buildArea"
+
+                          placeholder="请填写建筑面积"
+                        />
+                      </el-form-item>
+                    </el-col>
+                    <el-col :span="3" class="col-input">
+                      <el-form-item prop="'dynamicItem.' + index + '.area'">
+                        <el-input
+                          v-model="item.useArea"
+
+                          placeholder="请填写使用面积"
+                        />
+                      </el-form-item>
+                    </el-col>
+                    <el-col :span="2" class="col-input">
+                      <el-button v-if="index !== 0" type="danger" size="mini" @click="deleteItem(item, index)">-</el-button>
+                    </el-col>
+                  </el-row>
+                </div>
+              </el-row>
+            </el-card>
+          </el-col>
+        </el-row>
+      </el-form>
+      <div slot="footer">
+        <el-button @click="cancelLP">取 消</el-button>
+        <el-button type="primary" @click="confirmLPSubmit()">确 定</el-button>
+      </div>
+    </el-dialog>
+
+  </div>
+</template>
+
+<script>
+import Base from '@/views/base/base'
+import BaseData from '@/views/base/baseData'
+import BaseDept from '@/views/base/baseDept'
+import Constant from '@/static/utils/constant'
+import common from '@/static/utils/common'
+// import textEdit from '../../textEdit/index'
+export default {
+    name: 'User',
+    components: {},
+    mixins: [Base, BaseData, BaseDept],
+    data() {
+        return {
+            dc_key: ['GROUP_NATURE', 'MAPPING_STATUS', 'SALE_STATUS', 'REGIONALISM_CODE', 'PAYMENT_METHODS'],
+            // 查询参数
+            queryParam: {
+                groupName: '',
+                name: ''
+            },
+            formLP: {
+                dynamicItem: {}
+            },
+            groupfrom: {},
+            groupList: [],
+            DeptTree: [],
+            typeList: [
+            ],
+
+            // 字典项
+            dc_gender: [],
+            dc_map: {},
+
+            AllData: [],
+            loading: false,
+            currentRow: null,
+            dialogTitle: '新增用户',
+            isAdd: true,
+            form: this.getBaseForm(),
+            LeaderData: [],
+            groupFormRules: {
+                groupName: [{ required: true, trigger: 'blur', message: '请输入楼盘/小区名称' }],
+                nature: [{ required: true, trigger: 'change', message: '请选择性质' }],
+                preSalesLicenseNumber: [{ required: true, trigger: 'blur', message: '请输入预销售许可证编号' }]
+            },
+            commitRules: {
+                size: [{ required: true, trigger: 'blur', message: '请输入面积' }],
+                address: [{ required: true, trigger: 'blur', message: '请输入地址' }]
+            },
+            companyOptions: [],
+            dialogVisible: false,
+            dialogFQVisible: false
+        }
+    },
+    mounted() {
+        this.getTreeData()
+        this.getGroupList()
+        this.initDict(this.dc_key).then((res) => {
+            this.getData()
+        })
+    },
+    methods: {
+        handleSearch: function() {
+            this.getData()
+        },
+
+        handleReset: function() {
+            this.queryParam = {}
+            this.getData()
+        },
+
+        getGroupList: function() {
+            const _this = this
+            this.baseRequest('listAll', {}).then((res) => {
+                if (res.data) {
+                    this.groupList = res.data
+                }
+                _this.loading = false
+            }).catch(() => {
+            })
+        },
+
+        getTreeData: function() {
+            this.baseRequest('getTreeData3', {}).then((res) => {
+                this.DeptTree = res.data.data
+            }).catch(() => {
+            })
+        },
+
+        handleDelete: function(val) {
+            const _this = this
+            this.$confirm('是否确认删除?', '提示', {
+                confirmButtonText: '确定',
+                cancelButtonText: '取消',
+                type: 'warning'
+            }).then(() => {
+                _this.baseLPRequest('remove/' + val.id, '').then((res) => {
+                    if (res.data.code == 200) {
+                        this.getData()
+                        this.getTreeData()
+                        _this.$message({
+                            type: 'success',
+                            message: '删除成功!'
+                        })
+                    }
+                }).catch((err) => {
+                    _this.$message({
+                        type: 'error',
+                        message: err
+                    })
+                })
+            }).catch(function(error) {
+                console.error(error)
+            })
+        },
+
+        getData: function() {
+            const _this = this
+            _this.loading = true
+            _this.AllData = []
+            _this.queryParam.pageNum = _this.currentPage
+            _this.queryParam.pageSize = _this.pageSize
+            _this.baseLPRequest('listByModel', _this.queryParam).then((res) => {
+                if (res.data.rows) {
+                    res.data.rows.forEach(function(item) {
+                        const json = _this.getItemJson(item)
+                        _this.AllData.push(json)
+                    })
+                    _this.allpage = res.data.total
+                }
+                _this.loading = false
+            }).catch(() => {
+            })
+        },
+        getCheckedNodes(data, node, item) {
+            const _this = this
+            _this.queryParam.nodeId = node.data.id
+            _this.queryParam.level = node.level
+            this.getData()
+        },
+        handleAdd: function() {
+            this.dialogVisible = true
+            this.dialogTitle = '新增楼盘'
+        },
+        groupEdit: function(val) {
+            this.baseRequest('/getById', { id: val.id }).then((res) => {
+                console.log('获取详情——:', res)
+                if (res.status == 200) {
+                    this.dialogTitle = '修改园区'
+                    this.groupfrom = res.data
+                    this.dialogVisible = true
+                }
+            })
+        },
+
+        groupRemove: function(val) {
+            console.log('删除阐述——:', val)
+            this.$confirm('此操作将删除园区, 是否继续?', '提示', {
+                confirmButtonText: '确定',
+                cancelButtonText: '取消',
+                type: 'warning'
+            }).then(() => {
+                this.baseRequest('remove/' + val.data.id, {}).then((res) => {
+                    console.log('获取详情——:', res)
+                    if (res.data.code == 200) {
+                        this.getTreeData()
+                        this.$message({
+                            type: 'success',
+                            message: '删除成功!'
+                        })
+                    }
+                }).catch((err) => {
+                    this.$message({
+                        type: 'error',
+                        message: err
+                    })
+                })
+            }).catch(() => {
+                this.$message({
+                    type: 'info',
+                    message: '已取消删除'
+                })
+            })
+        },
+
+        handleEdit: function(val) {
+            this.formLP = val
+            this.dialogFQVisible = true
+            this.dialogTitle = '编辑楼盘'
+        },
+
+        handleAddFQ: function() {
+            this.formLP = {}
+            this.dialogFQVisible = true
+            this.dialogTitle = '新增楼盘'
+        },
+
+        confirmSubmit: function() {
+            this.$refs.groupfrom.validate(valid => {
+                if (valid) {
+                    this.baseRequest('addModel', this.groupfrom).then((res) => {
+                        if (res.data.code == 200) {
+                            this.dialogVisible = false
+                            this.groupfrom = {}
+                            this.getData()
+                            this.getGroupList()
+                            this.getTreeData()
+                            this.$message({
+                                message: '提交成功',
+                                type: 'success'
+                            })
+                        }
+                    }).catch(() => {
+                    })
+                } else {
+                    console.log('error submit!!')
+                    return false
+                }
+            })
+        },
+        cancelLP() {
+            this.dialogFQVisible = false
+            this.getData()
+        },
+        confirmLPSubmit: function() {
+            if (this.formLP.id != null && this.formLP.id != '' && undefined != this.formLP.id) {
+                this.baseLPRequest('edit', this.formLP).then((res) => {
+                    if (res.data.code == 200) {
+                        this.dialogFQVisible = false
+                        this.getData()
+                        this.getTreeData()
+                        this.$message({
+                            message: '提交成功',
+                            type: 'success'
+                        })
+                    }
+                }).catch(() => {
+                })
+            } else {
+                this.baseLPRequest('add', this.formLP).then((res) => {
+                    if (res.data.code == 200) {
+                        this.dialogFQVisible = false
+                        this.getData()
+                        this.getTreeData()
+                        this.$message({
+                            message: '提交成功',
+                            type: 'success'
+                        })
+                    }
+                }).catch(() => {
+                })
+            }
+        },
+
+        handleSelectionChange(val) {
+            this.selectId = ''
+            val.forEach(element => {
+                this.selectId += element.id + ','
+            })
+            this.selectId = this.selectId.substring(0, this.selectId.length - 1)
+        },
+
+        // 绑定物业人员
+        handleAddWY() {
+            if (this.selectId != '' && this.selectId != null && undefined != this.selectId) {
+            // this.roleId = "874248305842847744";
+                this.handleUserSelect()
+            } else {
+                this.$message({
+                    message: '请先选择管理的楼盘',
+                    type: 'warning'
+                })
+            }
+        },
+
+        // 绑定运营人员
+        handleAddYY() {
+            if (this.selectId != '' && this.selectId != null && undefined != this.selectId) {
+            // this.roleId = "874249172914536448";
+                this.handleUserSelect()
+            } else {
+                this.$message({
+                    message: '请先选择管理的楼盘',
+                    type: 'warning'
+                })
+            }
+        },
+
+        // 批量选择用户
+        handleUserSelect: function(val) {
+            this.RawUserData = []
+            this.selectedIds = []
+            this.initStaff().then(() => {
+                this.StaffData.forEach(staff => {
+                    if (staff.status === '1') {
+                        this.RawUserData.push({
+                            key: staff.value,
+                            label: staff.label
+                        })
+                    }
+                })
+                // 获取绑定过的用户
+                this.handleUserByFloor()
+            })
+        },
+
+        // 获取绑定过的用户
+        handleUserByFloor() {
+            const reqData = {
+                floorId: this.selectId,
+                roleId: this.roleId
+            }
+            this.baseLPRequest('getUserByFloor', reqData).then((res) => {
+                res.data.data.forEach(element => {
+                    this.selectedIds.push(element.userId)
+                })
+                this.dialogUserSelect = true
+            }).catch(() => {
+            })
+        },
+
+        confirmUserSelect: function() {
+            const reqData = {
+                floorId: this.selectId,
+                roleId: this.roleId,
+                userIds: String(this.selectedIds)
+            }
+            this.baseLPRequest('bindUserRole', reqData).then((res) => {
+                if (res.data.data) {
+                    this.$message({
+                        message: '绑定成功',
+                        type: 'success'
+                    })
+                    this.getData()
+                    this.dialogUserSelect = false
+                }
+            }).catch(() => {
+            })
+        },
+
+        getItemJson: function(item) {
+            item.parkType = this.dc_map.parkType[item.parkType]
+            return item
+        },
+        getBaseForm: function() {
+            const baseForm = {
+                id: '',
+                groupId: '',
+                username: '',
+                password: null,
+                truename: '',
+                leader: '',
+                department: [],
+                posts: [],
+                gender: '',
+                phone: '',
+                sequenceNo: '',
+                secretKey: '',
+                comment: ''
+            }
+
+            if (this.$common.currUser().groupId) {
+                baseForm.groupId = this.$common.currUser().groupId
+            }
+
+            return baseForm
+        },
+
+        renderContent(h, { node, data, store }) {
+            if (node.level != 1) {
+                return (
+                    <span class='custom-tree-node'>
+                        <span>{node.label}</span>
+                    </span>)
+            } else {
+                return (
+                    <span class='custom-tree-node' style='width: 100%;'>
+                        <span>{node.label}</span>
+                        <span style='float: right;'>
+                            <el-button size='mini' type='text' on-click={ () => this.groupEdit(data) }>修改</el-button>
+                            <el-button size='mini' type='text' on-click={ () => this.groupRemove(node, data) } style='color:#EE3535'>删除</el-button>
+                        </span>
+                    </span>)
+            }
+        },
+        test(val) {
+            this.$set(this.groupfrom, 'introduction', val)
+        },
+        dialogClose() {
+            this.groupfrom = {}
+        },
+        // 字典项
+        generateDcMap: function() {
+            this.dc_map['dc_gender'] = this.$common.transDcMap(this.dc_gender)
+        },
+        // 请求封装,继承类中调用,必须存在
+        baseRequest: function(opUrl, postData) {
+            return this.$channel.baseRequest('ParkInfoController', opUrl, postData, 'User')
+        },
+        baseLPRequest: function(opUrl, postData) {
+            return this.$channel.baseRequest('ParkFloorDiscController', opUrl, postData, 'User')
+        },
+        postRequest: function(opUrl, postData) {
+            return this.$channel.baseRequest('PostController', opUrl, postData, 'Post')
+        }
+    }
+}
+</script>
+
+<style lang="scss">
+.parkFloor{
+    .custom-tree-node {
+        display: flex;
+        align-items: center;
+        justify-content: space-between;
+        font-size: 14px;
+        padding-right: 8px;
+    }
+    .custom-tree-container{
+        display: flex;
+    }
+    .custom-tree-container .block-l {
+        /*flex-grow: 2 ;*/
+        //float: left;
+        width: 20%;
+        padding: 0 8px 0 0;
+    }
+    .custom-tree-container .block-r {
+        /*flex-grow: 10;*/
+        //float: left;
+        width: 80%;
+        /*padding: 0 0 0 8px;*/
+    }
+}
+</style>
+
+<style scoped>
+
+    .ch-input .el-input__inner {
+        border-color: #32323A;
+    }
+    .ch-input-size {
+        width: 150px;
+    }
+    .ch-button {
+        border-color: #32323A;
+        background-color: #32323A;
+        color: #fff;
+    }
+    .ch-button-warning {
+        margin-left: 10px;
+        border-color: #E6A23C;
+        background-color: #E6A23C;
+        color: #fff;
+    }
+    .ch-button-export {
+        margin-left: 10px;
+        border-color: #98CC1F;
+        background-color: #98CC1F;
+        color: #fff;
+    }
+</style>

+ 516 - 0
src/views/parkAssets/parkInfo/index.vue

@@ -0,0 +1,516 @@
+<template>
+  <div>
+    <div class="custom-tree-container">
+      <div class="block-l">
+        <el-card shadow="hover">
+          <el-tag class="full space-vertical">当前所选:{{ selectDeptNode.name }}</el-tag>
+          <!-- @node-click="handleDeptNodeClick" -->
+          <el-tree
+            ref="selectTree"
+            default-expand-all
+            :data="DeptTree"
+            node-key="id"
+            :indent="deptTreeIndent"
+            accordion
+            :expand-on-click-node="expandDeptClick"
+            :default-expanded-keys="expandedDeptKey"
+          >
+            <span slot-scope="{ node, data }" class="custom-tree-node">
+              <span>
+                <i v-if="data.level == 0" class="el-icon-s-home" />
+                <i v-else-if="data.level == 1" class="el-icon-menu" />
+                <i v-else class="el-icon-link" />
+                {{ node.label }}
+              </span>
+              <span v-if="data.level == 0">
+                <el-link class="space" type="primary" @click="() => unFoldAll()">展开</el-link>
+                <el-link class="space" type="primary" @click="() => collapseAll()">折叠</el-link>
+              </span>
+            </span>
+          </el-tree>
+        </el-card>
+      </div>
+      <div class="block-r">
+        <el-row class="handle-box" style="margin-bottom: 10px">
+          <el-col :span="24">
+            <el-input v-model="queryParam.groupName" size="small" placeholder="园区名称" class="ch-input-size" @keyup.enter.native="handleSearch()" />
+            <el-button size="small" class="ch-button" style="float: right; margin-right: 10px; margin-top: 4px" @click="handleAddWY()"><i class="el-icon-menu" />&nbsp;物业团队绑定</el-button>
+            <el-button size="small" class="ch-button" style="float: right; margin-right: 10px; margin-top: 4px" @click="handleAddYY()"><i class="el-icon-menu" />&nbsp;运营团队绑定</el-button>
+            <el-button size="small" class="ch-button-add" style="float: right; margin-top: 4px" @click="handleAddLP()"><i class="el-icon-menu" />&nbsp;新增楼盘</el-button>
+            <el-button size="small" class="ch-button-add" style="float: right; margin-top: 4px" @click="handleAdd()"><i class="el-icon-menu" />&nbsp;新增园区</el-button>
+            <el-button size="small" class="ch-button" style="float: right;margin-top: 4px" @click="handleSearch()"><i class="el-icon-menu" />&nbsp;查询</el-button>
+            <el-button size="small" class="ch-button-warning" style="float: right;margin-top: 4px" @click="handleReset()"><i class="el-icon-menu" />&nbsp;重置</el-button>
+          </el-col>
+        </el-row>
+        <el-row class="handle-box">
+          <el-col :span="24">
+            <el-table ref="singleTable" v-loading="loading" :data="AllData" highlight-current-row @current-change="handleRowSelectChange">
+              <el-table-column label="编号" type="index" width="60" />
+              <el-table-column label="园区名称" prop="groupName" />
+              <!-- <el-table-column label="类型" prop="parkType" /> -->
+              <el-table-column label="类型">
+                <template scope="scope">
+                  {{ scope.row.parkType == 1 ? "商铺": scope.row.parkType == 2 ? "写字楼":"场地" }}
+                </template>
+              </el-table-column>
+              <el-table-column label="面积(㎡)" prop="size" />
+              <!-- <el-table-column label="楼盘" prop="discName" /> -->
+              <el-table-column label="楼盘" header-align="center" width="160">
+                <template scope="scope">
+                  {{ tableLouDetial(scope.row.id) }}
+                </template>
+              </el-table-column>
+<!--              <el-table-column label="对应运营人员" prop="size" header-align="center" align="center" width="80" />-->
+<!--              <el-table-column label="对应物业人员" prop="size" header-align="center" align="center" width="80" />-->
+              <el-table-column label="操作" header-align="center" width="160">
+                <template scope="scope">
+                  <el-button size="mini" type="primary" @click="handleEdit(scope.row)" class="editButton">编辑</el-button>
+                  <el-button v-if="scope.row.id != '1'" size="mini" type="info" @click="handleDel(scope.row)" class="deleButton">删除</el-button>
+                </template>
+              </el-table-column>
+            </el-table>
+            <div class="table-page">
+              <el-pagination
+                :current-page.sync="currentPage"
+                :page-size="pageSize"
+                background
+                layout="total, prev, pager, next"
+                :total="allpage"
+                @size-change="handleSizeChange"
+                @current-change="handleCurrentChange"
+              />
+            </div>
+          </el-col>
+        </el-row>
+      </div>
+    </div>
+
+    <el-dialog :title="dialogTitle" :visible.sync="dialogVisible" :model="groupfrom" width="950px" top="50px">
+      <el-form ref="commitForm" style="width: 100%;padding: 5px" :rules="commitRules">
+        <el-row>
+          <el-col style="padding-bottom: 10px">
+            <span class="card_title">基本信息</span>
+            <el-card shadow="always" style="padding-top: 10px">
+              <el-row>
+                <el-col :span="4" class="col-txt"><span>园区名称</span></el-col>
+                <el-col :span="20" class="col-input">
+                  <el-form-item>
+                    <el-input v-model="groupfrom.groupName" style="width: 95%;" />
+                  </el-form-item>
+                </el-col>
+              </el-row>
+              <el-row>
+                <el-col :span="4" class="col-txt"><span>面积(㎡)</span></el-col>
+                <el-col :span="7" class="col-input">
+                  <el-form-item prop="size">
+                    <el-input v-model="groupfrom.size" />
+                  </el-form-item>
+                </el-col>
+
+                <el-col :span="4" class="col-txt"><span>类型</span></el-col>
+                <el-col :span="8" class="col-input">
+                  <el-form-item>
+                    <el-select v-model="groupfrom.parkType" placeholder="" filterable>
+                      <el-option
+                        v-for="item in dc_data.parkType"
+                        :key="item.value"
+                        :label="item.label"
+                        :value="item.value"
+                      />
+                    </el-select>
+                  </el-form-item>
+                </el-col>
+              </el-row>
+
+              <el-row>
+                <el-col :span="4" class="col-txt"><span>详细地址</span></el-col>
+                <el-col :span="20" class="col-input">
+                  <el-form-item>
+                    <el-input v-model="groupfrom.address" style="width: 95%;" type="textarea" :autosize="{ minRows: 2, maxRows: 100}" placeholder="请输入内容" />
+                  </el-form-item>
+                </el-col>
+              </el-row>
+            </el-card>
+          </el-col>
+        </el-row>
+      </el-form>
+      <div slot="footer">
+        <el-button @click="dialogVisible = false">取 消</el-button>
+        <el-button type="primary" @click="confirmSubmit()">确 定</el-button>
+      </div>
+    </el-dialog>
+
+    <el-dialog :title="dialogTitle" :visible.sync="dialogVisibleLP" width="950px" top="50px" append-to-body>
+      <el-form ref="commitForm" :model="formLP" style="width: 100%;padding: 5px" :rules="commitRules">
+        <el-row>
+          <el-col style="padding-bottom: 10px">
+            <span class="card_title">基本信息</span>
+            <el-card shadow="always" style="padding-top: 10px">
+              <el-row>
+                <el-col :span="4" class="col-txt"><span>园区名称</span></el-col>
+                <el-col :span="20" class="col-input">
+                  <el-form-item>
+                    <el-select v-model="formLP.groupId" placeholder="" filterable>
+                      <el-option
+                        v-for="item in groupList"
+                        :key="item.id"
+                        :label="item.groupName"
+                        :value="item.id"
+                      />
+                    </el-select>
+                  </el-form-item>
+                </el-col>
+              </el-row>
+
+              <el-row>
+                <el-col :span="4" class="col-txt"><span>楼盘名称</span></el-col>
+                <el-col :span="20" class="col-input">
+                  <el-form-item>
+                    <el-input v-model="formLP.name" style="width: 95%;" />
+                  </el-form-item>
+                </el-col>
+              </el-row>
+            </el-card>
+          </el-col>
+        </el-row>
+      </el-form>
+      <div slot="footer">
+        <el-button @click="dialogVisibleLP = false">取 消</el-button>
+        <el-button type="primary" @click="confirmLPSubmit()">确 定</el-button>
+      </div>
+    </el-dialog>
+
+  </div>
+</template>
+
+<script>
+import Base from '@/views/base/base'
+import BaseData from '@/views/base/baseData'
+import BaseDept from '@/views/base/baseDept'
+import Constant from '@/static/utils/constant'
+import common from '@/static/utils/common'
+export default {
+    name: 'User',
+    mixins: [Base, BaseData, BaseDept],
+    data() {
+        return {
+            dc_key: ['parkType'],
+            // 查询参数
+            queryParam: {
+                groupName: ''
+            },
+            louDetial: {},
+            formLP: {},
+            groupfrom: {},
+            groupList: [],
+            DeptTree: [],
+            typeList: [
+                {
+                    lable: '商铺',
+                    value: 1
+                },
+                {
+                    lable: '写字楼',
+                    value: 2
+                },
+                {
+                    lable: '场地',
+                    value: 3
+                }
+            ],
+
+            // 字典项
+            dc_gender: [],
+            dc_map: {},
+
+            // 列表相关
+            username: '',
+            truename: '',
+            dataRoleId: '',
+            postId: '',
+            AllData: [],
+            loading: false,
+            currentRow: null,
+            isAdminSelect: false,
+            isGroupUser: false,
+
+            // 用户维护相关
+            dialogVisible: false,
+            dialogVisibleLP: false,
+            dialogTitle: '新增用户',
+            isAdd: true,
+            selectDepartment: [],
+            form: this.getBaseForm(),
+            LeaderData: [],
+            commitRules: {
+                size: [{ required: true, trigger: 'change', message: '请输入面积' }]
+
+            },
+
+            // 角色维护相关
+            dialogRoleVisible: false,
+            dialogRoleTitle: '角色选择',
+            selectUserId: '',
+            selectUserName: '',
+            SelectMenuRole: [],
+            SelectDataRoleId: '',
+            MenuRole: [],
+
+            RawUserData: [],
+            selectedIds: [],
+        }
+    },
+    mounted() {
+        this.getTreeData()
+        this.getGroupList()
+        this.initDict(this.dc_key).then((res) => {
+            this.getList()
+        })
+    },
+    methods: {
+        handleSearch: function() {
+            this.getList()
+        },
+
+        handleReset: function() {
+            this.queryParam = {}
+            this.getList()
+        },
+
+        getGroupList: function() {
+            this.baseRequest('listAll', {}).then((res) => {
+                if (res.data) {
+                    this.groupList = res.data
+                }
+                _this.loading = false
+            }).catch(() => {
+            })
+        },
+
+        getTreeData: function() {
+            this.baseRequest('getTreeData3', {}).then((res) => {
+                this.DeptTree = res.data.data
+            }).catch(() => {
+            })
+        },
+
+        getList: function() {
+            const _this = this
+            _this.queryParam.pageNum = _this.currentPage
+            _this.queryParam.pageSize = _this.pageSize
+            _this.baseRequest('list', _this.queryParam).then((res) => {
+                // console.log("列表——:", res)
+                if (res.data.rows) {
+                    _this.AllData = []
+                    _this.AllData = res.data.rows
+                    // res.data.rows.forEach(function(item) {
+                    //     console.log("~~~~~~~~~~~~:", item);
+                    //     _this.$set(item, "discName" , _this.getlouDetial(item.id))
+                    //     console.log("~~~~~~~~~~~~:", item);
+                    //     _this.AllData.push(item)
+                    // })
+                    _this.allpage = res.data.total
+                    this.getlouDetial()
+                }
+                _this.loading = false
+            }).catch(() => {
+            })
+        },
+
+        handleAdd: function() {
+            this.dialogVisible = true
+            this.dialogTitle = '新增园区'
+        },
+
+        handleEdit: function(val) {
+            this.groupfrom = val
+            this.dialogVisible = true
+            this.dialogTitle = '编辑园区'
+        },
+
+        handleAddLP: function() {
+            this.dialogVisibleLP = true
+            this.dialogTitle = '新增楼盘'
+        },
+
+        confirmSubmit: function() {
+            this.$refs.groupfrom.validate(valid => {
+                if (valid) {
+                    this.baseRequest('addModel', this.groupfrom).then((res) => {
+                        if (res.data.code == 200) {
+                            this.dialogVisible = false
+                            this.groupfrom = {}
+                            this.getList()
+                            this.getTreeData()
+                            alert('提交成功')
+                        }
+                    }).catch(() => {
+                    })
+                }else {
+                    return false
+                }
+            })
+        },
+
+        confirmLPSubmit: function() {
+            this.baseLPRequest('add', this.formLP).then((res) => {
+                if (res.data.code == 200) {
+                    this.dialogVisibleLP = false
+                    this.getList()
+                    this.getTreeData()
+                    alert('提交成功')
+                }
+            }).catch(() => {
+            })
+        },
+
+        // 获取楼盘信息
+        getlouDetial: function() {
+            let ids = ''
+            this.AllData.forEach(element => {
+                ids += element.id + ','
+            })
+            if (ids != '') {
+                ids = ids.substr(0, ids.length - 1)
+            }
+            const reqData = {
+                ids: ids
+            }
+            this.baseRequest('getlouDetial', reqData).then((res) => {
+                // this.loading = true;
+                this.louDetial = res.data.data
+                // this.loading = false;
+            }).catch(() => {
+            })
+        },
+
+        tableLouDetial(id) {
+            return this.louDetial[id]
+        },
+
+
+        getItemJson: function(item) {
+            const posts = item.posts ? item.posts.split(',') : []
+            if (posts.length > 0) {
+                const postStr = []
+                posts.forEach(post => {
+                    postStr.push(this.PostMap[post])
+                })
+                item.postStr = postStr.join(',')
+            }
+            item.dataRoleStr = this.DataRoleMap[item.dataRole]
+            item.statusStr = item.status === '0' ? '禁用' : '启用'
+            item.department = item.department ? this.DeptMap[item.department] : ''
+            item.loginAt = common.transDate(item.loginAt, Constant.DATE_PATTERN.DATE_TIME_s_h)
+
+            return item
+        },
+
+        handleRowSelectChange(val) {
+            this.currentRow = val
+            if (this.currentRow) {
+                if (this.currentRow.id === '1') {
+                    this.isAdminSelect = true
+                } else {
+                    this.isAdminSelect = false
+                }
+            }
+        },
+
+        getBaseForm: function() {
+            const baseForm = {
+                id: '',
+                groupId: '',
+                username: '',
+                password: null,
+                truename: '',
+                leader: '',
+                department: [],
+                posts: [],
+                gender: '',
+                phone: '',
+                sequenceNo: '',
+                secretKey: '',
+                comment: ''
+            }
+
+            if (this.$common.currUser().groupId) {
+                baseForm.groupId = this.$common.currUser().groupId
+            }
+
+            return baseForm
+        },
+
+        // 字典项
+        generateDcMap: function() {
+            this.dc_map['dc_gender'] = this.$common.transDcMap(this.dc_gender)
+        },
+        // 请求封装,继承类中调用,必须存在
+        baseRequest: function(opUrl, postData) {
+            return this.$channel.baseRequest('ParkInfoController', opUrl, postData, 'User')
+        },
+        baseLPRequest: function(opUrl, postData) {
+            return this.$channel.baseRequest('ParkFloorDiscController', opUrl, postData, 'User')
+        },
+        postRequest: function(opUrl, postData) {
+            return this.$channel.baseRequest('PostController', opUrl, postData, 'Post')
+        },
+        handleDeptNodeClick(data) {
+            // console.log("@@@@@@@@@@@@@@@@@@", data);
+        }
+    }
+}
+</script>
+
+<style scoped>
+    .custom-tree-node {
+        flex: 1;
+        display: flex;
+        align-items: center;
+        justify-content: space-between;
+        font-size: 16px;
+        padding-right: 8px;
+    }
+    .custom-tree-container{
+        display: flex;
+    }
+    .custom-tree-container .block-l {
+        /*flex-grow: 2 ;*/
+        //float: left;
+        width: 20%;
+        padding: 0 8px 0 0;
+    }
+    .custom-tree-container .block-r {
+        /*flex-grow: 10;*/
+        //float: left;
+        width: 80%;
+        /*padding: 0 0 0 8px;*/
+    }
+</style>
+
+<style scoped>
+
+    .ch-input .el-input__inner {
+        border-color: #32323A;
+    }
+    .ch-input-size {
+        width: 150px;
+    }
+    .ch-button {
+        border-color: #32323A;
+        background-color: #32323A;
+        color: #fff;
+    }
+    .ch-button-warning {
+        margin-left: 10px;
+        border-color: #E6A23C;
+        background-color: #E6A23C;
+        color: #fff;
+    }
+    .ch-button-export {
+        margin-left: 10px;
+        border-color: #98CC1F;
+        background-color: #98CC1F;
+        color: #fff;
+    }
+</style>

Diferenças do arquivo suprimidas por serem muito extensas
+ 1166 - 0
src/views/parkAssets/parkRoom/index.vue