Browse Source

土地闲置模块

maxiaoxiao 9 months ago
parent
commit
a10b4496e1

+ 49 - 5
src/components/mapView/tablePage.vue

@@ -11,7 +11,7 @@
       row-class-name="datarow"
       fit
     >
-      <el-table-column label="序号" width="70px">
+      <el-table-column v-if="indexed" label="序号" width="70px">
         <template slot-scope="scope">{{ scope.$index + 1 }}</template>
       </el-table-column>
       <el-table-column
@@ -33,7 +33,7 @@
       </el-table-column>
     </el-table>
     <div class="tabs-pagation" v-if="table.data.length">
-      <div class="font">共{{ table.total }}条记录</div>
+      <div class="font" v-if="showTotal">共{{ table.total }}条记录</div>
       <!-- <el-pagination class="tabone-pagination" background layout="prev, pager, next" :current-page="pageNum"
             :pager-count="5" :page-size="5" :total="table.total" @current-change="changePage" /> -->
       <el-pagination
@@ -42,7 +42,7 @@
         :small="false"
         :disabled="false"
         :background="true"
-        layout="prev, pager, next, jumper,sizes"
+        :layout="layout"
         :page-sizes="[10, 15, 20, 30, 50]"
         :total="table.total"
         @size-change="handleSizeChange"
@@ -55,6 +55,10 @@
 export default {
   components: {},
   props: {
+    indexed: {
+      type: Boolean,
+      default: true,
+    },
     cloumn: {
       type: Array,
       default: [],
@@ -62,6 +66,14 @@ export default {
     table: {
       type: Object,
     },
+    showTotal: {
+      type: Boolean,
+      default: true,
+    },
+    layout: {
+      type: String,
+      default: "total, sizes, prev, pager, next, jumper",
+    },
   },
   data() {
     return {
@@ -95,7 +107,7 @@ export default {
 
 // searchFun()
 </script>
-  <style lang="scss" scoped>
+<style lang="scss" scoped>
 .el-table {
   height: calc(100% - 50px);
 }
@@ -103,5 +115,37 @@ export default {
   position: absolute;
   right: 30px;
 }
-//@import url(../assets/styles/tabs.scss);
+</style>
+  <style lang="scss" >
+.cont-table {
+  .el-pager li {
+    background-color: transparent !important;
+    // border: 1px solid #3ea6fe;
+    border-radius: 5px;
+  }
+
+  .el-pager li.active {
+    color: #3ea6fe !important;
+  }
+
+  .el-pagination button {
+    color: #dbdbdb;
+  }
+
+  .el-pagination .btn-prev,
+  .el-pagination .btn-next {
+    background-color: transparent;
+    // border: 1px solid #ebebeb;
+    border-radius: 5px;
+    line-height: 28px;
+  }
+  .el-pagination .btn-prev {
+    padding-right: 5px;
+  }
+  .el-pagination .btn-prev:hover {
+    color: #1890ff;
+  }
+}
+
+// @import url(./tabs.scss);
 </style>

+ 148 - 0
src/views/Idleland/components/config.js

@@ -0,0 +1,148 @@
+export const ysForm = [
+  [
+    {
+      label: '',
+      prop: 'carNo',
+      span: 12,
+      component: 'ElInput',
+      componentProps: {
+        placeholder: '项目名称/土地使用人'
+      }
+    },
+    {
+      label: '',
+      prop: 'region',
+      span: 8
+    },
+    {
+      prop: 'action',
+      span: 4
+    }
+  ]
+]
+export const xzForm = [
+  [
+    {
+      label: '',
+      prop: 'carNo',
+      span: 8,
+      component: 'ElInput',
+      componentProps: {
+        placeholder: '土地使用人/土地证号'
+      }
+    },
+    {
+      label: '',
+      prop: 'region',
+      span: 6
+    },
+    {
+      label: '',
+      prop: 'type',
+      span: 6
+    },
+    {
+      prop: 'action',
+      span: 4
+    }
+  ]
+]
+
+export const TableHeader = [
+  { label: "项目名称", prop: "JGMC" },
+  { label: "面积(亩)", prop: "XQNAME", width: '80px' },
+  { label: "约定动工日期", prop: "type", },
+  { label: "操作", prop: "PHONE", slot: "action" },
+]
+export const TableHeader2 = [
+  { label: "土地使用权人", prop: "JGMC", },
+  { label: "面积(亩)", prop: "XQNAME", width: '80px' },
+  { label: "土地证号", prop: "type" },
+  { label: "操作", prop: "PHONE", slot: "action" },
+]
+
+// 详情字段
+export const detailInfos = [
+  [
+    [
+      { flag: 'label', value: '申请时间', span: 8 },
+      { flag: 'value', value: 'time', span: 16 }
+    ],
+    [
+      { flag: 'label', value: '申请部门', span: 8 },
+      { flag: 'value', value: 'carTypeName', span: 16 }
+    ]
+  ],
+  [
+    [
+      { flag: 'label', value: '数据服务', span: 8 },
+      { flag: 'value', value: 'carColorName', span: 16 }
+    ],
+    [
+      { flag: 'label', value: '数据类型', span: 8 },
+      { flag: 'value', value: 'carBrand', span: 16 }
+    ]
+  ],
+  [
+    [
+      { flag: 'label', value: ' 申请范围', span: 4 },
+      { flag: 'value', value: 'carPropertyName', span: 20 }
+    ],
+  ],
+  [[
+    { flag: 'label', value: '申请理由', span: 4 },
+    { flag: 'value', value: 'carModel', span: 20 }
+  ]],
+  [[
+    { flag: 'label', value: '系统名称', span: 4 },
+    { flag: 'value', value: 'vehicleNumber', unit: '人', span: 20 }
+  ]],
+  [[
+    { flag: 'label', value: '调用IP', span: 4 },
+    { flag: 'value', value: 'owner', span: 20 }
+  ]],
+  [[
+    { flag: 'label', value: '预期使用时间', span: 4 },
+    { flag: 'value', value: 'ownerPhone', span: 20 }
+  ]],
+  [[
+    { flag: 'label', value: '附件', span: 4 },
+    { flag: 'value', value: 'companyImage', span: 20, isslot: true }
+  ]]
+]
+export const shjlInfos = [
+  [[
+    { flag: 'label', value: '审核结果', span: 4 },
+    { flag: 'value', value: 'jg', span: 20 }
+  ]],
+  [[
+    { flag: 'label', value: '审核意见', span: 4 },
+    { flag: 'value', value: 'carTypeName', span: 20 }
+  ]],
+  [[
+    { flag: 'label', value: '有效截止日期', span: 4 },
+    { flag: 'value', value: 'carColorName', span: 20 }
+  ]],
+  [[
+    { flag: 'label', value: '审核人', span: 4 },
+    { flag: 'value', value: 'carPropertyName', span: 20 }
+  ]],
+  [[
+    { flag: 'label', value: '审核时间', span: 4 },
+    { flag: 'value', value: 'carModel', span: 20 }
+  ]],
+]
+export const chInfos = [
+  [[
+    { flag: 'label', value: '撤回时间', span: 4 },
+    { flag: 'value', value: 'carNo', span: 20 }
+  ]],
+  [[
+    { flag: 'label', value: '撤回原因', span: 4 },
+    { flag: 'value', value: 'carTypeName', span: 20 }
+  ]],
+]
+
+
+
+

+ 157 - 0
src/views/Idleland/components/details.vue

@@ -0,0 +1,157 @@
+<template>
+  <div class="conViews" v-if="isShallow">
+    <div class="sm-panel sm-function-module-query" v-drag>
+      <div class="sm-panel-header">
+        <span>
+          {{ type == 0 ? "疑似闲置" : type == 1 ? "闲置未处置" : "闲置已处置" }}
+          详情
+        </span>
+        <i class="el-icon-close" @click="closeInster"></i>
+      </div>
+      <el-tabs
+        type="border-card"
+        class="xz_box info"
+        v-model="activeTabs"
+        stretch
+      >
+        <el-tab-pane label="基本信息" name="jbxx">
+          <Info :data="jbxxData"></Info>
+        </el-tab-pane>
+        <el-tab-pane label="认定信息" name="rdxx" v-if="type != 0">
+          <Info :data="rdData" :fileList="fileList"></Info>
+        </el-tab-pane>
+        <el-tab-pane label="处置信息" name="czxx" v-if="type == 2">
+          <Info :data="rdData" :fileList="fileList"></Info>
+        </el-tab-pane>
+      </el-tabs>
+    </div>
+  </div>
+</template>
+  <script>
+import { getYZ, getgeoms } from "../../../api/ghss/gdbh.js";
+import { loadGeoJSON } from "@/utils/MapHelper/help.js";
+import Info from "./info.vue";
+let layerSources = {};
+export default {
+  props: {
+    interObj: {
+      type: Object,
+    },
+  },
+  components: {
+    Info,
+  },
+  data() {
+    return {
+      activeTabs: "jbxx",
+      isShallow: false,
+      jbxxData: null,
+      rdData: [],
+      tempdataLayerId: null,
+      type: 0,
+      fileList: [],
+      cellstyle: {
+        background: "rgba(10, 25, 38, 0.6)",
+        color: "#66b1ff",
+        fontSize: "14px",
+        fontFamily: "Microsoft YaHei",
+        fontWeight: "400",
+      },
+    };
+  },
+  mounted() {
+    // this.init();
+  },
+  methods: {
+    //关闭详情
+    closeInster() {
+      this.isShallow = false;
+      viewer.entities.removeAll();
+      viewer.dataSources.removeAll();
+    },
+
+    handleView(val, type) {
+      this.isShallow = true;
+      this.type = type;
+      //   getOneDetail({
+      //     bsm: this.interObj.bsm,
+      //     id: val.id,
+      //   }).then((res) => {
+      // this.getAll();
+      //     if (res.statuscode == 200) {
+      //       this.viewsData = res.data;
+      //       this.yzjgData = res.data.yzjg;
+      //       this.jbxxData = Object.keys(res.data.tbxx).map((key) => ({
+      //         name: key,
+      //         value: res.data.tbxx[key],
+      //       }));
+      //     } else {
+      //       this.$message.error(res.message);
+      //     }
+      //   });
+    },
+    flyTo(item) {
+      let id = "h_" + item.id;
+      this.tempdataLayerId = id;
+      loadGeoJSON(item.geom, "#ff0000", { isfly: true }, (data) => {
+        layerSources[id] = data;
+      });
+    },
+    getAll() {
+      getgeoms(this.interObj).then((res) => {
+        if (res.statuscode == 200) {
+          this.tableData = res.data.dataListMap;
+          this.active_tableData(res.data.dataListMap);
+        } else {
+          this.$message.error(res.message);
+        }
+      });
+    },
+    active_tableData(newVal) {
+      newVal.forEach((res, index) => {
+        res.type = "图斑上图";
+        if (res.geom)
+          loadGeoJSON(res.geom, "#55A1E3", { isfly: false }, (data) => {
+            layerSources[res.id] = data;
+          });
+      });
+    },
+  },
+  mounted() {},
+  watch: {
+    tempdataLayerId(newVal, oldVal) {
+      if (oldVal && layerSources[oldVal]) {
+        viewer.dataSources.remove(layerSources[oldVal]);
+        layerSources[oldVal] = null;
+      }
+    },
+  },
+};
+</script>
+  
+  <style lang="scss" scoped>
+/deep/ .el-icon-close:before {
+  position: absolute;
+  top: 10px;
+  right: 10px;
+  font-size: larger;
+  font-weight: bold;
+
+  &:hover {
+    color: aqua;
+  }
+}
+.sm-panel {
+  width: 400px;
+  max-width: 400px;
+}
+.inter_result {
+  // height: 580px;
+  height: 695px;
+}
+
+.sm-function-module-query {
+  max-height: 800px !important;
+  top: 28px !important;
+}
+</style>

+ 109 - 0
src/views/Idleland/components/determineModal.vue

@@ -0,0 +1,109 @@
+<template>
+  <div class="dialog">
+    <el-dialog
+      :title="formData.JGMC"
+      width="40%"
+      :visible.sync="dialogVisible"
+      :before-close="close"
+      :modal-append-to-body="false"
+      :close-on-click-modal="false"
+    >
+      <div class="content">
+        <el-form :model="ruleForm" ref="ruleForm" label-width="100px">
+          <el-form-item label="审核结论:" prop="shjl">
+            <el-radio v-model="ruleForm.shjl" label="1"> 申请通过 </el-radio>
+            <el-radio v-model="ruleForm.shjl" label="2"> 申请不通过 </el-radio>
+          </el-form-item>
+          <el-form-item label="使用截止日期:" prop="jzrq">
+            <el-date-picker
+              v-model="ruleForm.jzrq"
+              type="date"
+              value-format="yyyy-MM-dd"
+              placeholder="选择日期"
+            >
+            </el-date-picker>
+            (默认一年)
+          </el-form-item>
+          <el-form-item label="审核意见:" prop="xmmc">
+            <el-input
+              v-model="ruleForm.xmmc"
+              :rows="5"
+              type="textarea"
+              placeholder="描述"
+            ></el-input>
+          </el-form-item>
+          <el-row :gutter="20" class="elrow">
+            <el-col :span="12">
+              <el-form-item label="审核时间" prop="shsj">
+                <el-date-picker
+                  v-model="ruleForm.shsj"
+                  type="date"
+                  value-format="yyyy-MM-dd"
+                  placeholder="自动读取"
+                >
+                </el-date-picker>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="审核人" prop="shr">
+                <el-input
+                  v-model="ruleForm.shr"
+                  placeholder="自动读取"
+                ></el-input>
+              </el-form-item>
+            </el-col>
+          </el-row>
+        </el-form>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submit">保存</el-button>
+        <el-button type="primary" @click="close">关闭</el-button>
+      </span>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+export default {
+  components: {},
+  props: {},
+  data() {
+    return {
+      formData: {},
+      fieldList: [{ label: "sc", name: "字段" }],
+      dialogVisible: false,
+    };
+  },
+  created() {},
+  methods: {
+    // 关闭弹窗
+    close() {
+      this.dialogVisible = false;
+      this.$emit("close");
+    },
+    Init(rowdata) {
+      this.formData = rowdata;
+      this.dialogVisible = true;
+    },
+    async submit() {
+      this.close();
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.dialog {
+  .content {
+    height: 400px;
+    overflow-y: auto;
+    overflow-x: hidden;
+    color: #fff;
+    .el-checkbox {
+      color: #fff;
+    }
+  }
+}
+</style>
+<style lang="scss" >
+</style>

+ 63 - 0
src/views/Idleland/components/info.vue

@@ -0,0 +1,63 @@
+<template>
+  <div class="inter_result">
+    <el-table
+      :header-cell-style="cellstyle"
+      :data="data"
+      height="455"
+      style="width: 100%"
+    >
+      <el-table-column
+        show-overflow-tooltip="true"
+        prop="name"
+        label="属性名称"
+      >
+      </el-table-column>
+      <el-table-column show-overflow-tooltip="true" prop="value" label="属性值">
+      </el-table-column>
+    </el-table>
+    <div v-if="fileList">
+      相关材料
+      <el-table :data="fileList" height="200" style="width: 100%">
+        <el-table-column label="序号" width="70px">
+          <template slot-scope="scope">{{ scope.$index + 1 }}</template>
+        </el-table-column>
+        <el-table-column
+          show-overflow-tooltip="true"
+          prop="name"
+          label="文件名称"
+        >
+        </el-table-column>
+        <el-table-column label="序号" width="70px">
+          <template slot-scope="scope">
+            <span class="usable" @click="download(scope.row)"> 下载查看 </span>
+          </template>
+        </el-table-column>
+      </el-table>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  props: {
+    data: {
+      type: Array,
+    },
+    fileList: {
+      type: Array,
+    },
+  },
+  methods: {
+    download(obj) {
+      window.open(
+        window.axiosURI +
+          "/analyse/fzss/DownloadReport?filePath=" +
+          `${obj.fxbg}`
+      );
+    },
+  },
+};
+</script>
+
+<style>
+</style>

+ 300 - 0
src/views/Idleland/components/list.vue

@@ -0,0 +1,300 @@
+<template>
+  <div class="xzlist">
+    <div v-if="type == 1" class="xztype">
+      <span :class="{ usable: rdxz }" @click="changerdxz">
+        认定为闲置未处置情况
+      </span>
+      <span :class="{ usable: !rdxz }" @click="changerdxz">
+        认定为未非闲置情况
+      </span>
+    </div>
+
+    <custom-form ref="formRef" :model="pageObj" :config="formConfig">
+      <template #region>
+        <!-- clearable -->
+        <el-cascader
+          v-model="pageObj.id"
+          :show-all-levels="false"
+          :options="store.state.region_tree"
+          placeholder="行政区"
+          :props="{
+            checkStrictly: true,
+            expandTrigger: 'hover',
+            emitPath: false,
+          }"
+        ></el-cascader>
+      </template>
+      <template #type>
+        <el-select v-model="pageObj.placeCode" placeholder="闲置原因">
+          <el-option
+            v-for="item in optionList"
+            :key="item.code"
+            :label="item.name"
+            :value="item.code"
+          >
+          </el-option>
+        </el-select>
+      </template>
+
+      <template #action>
+        <el-button
+          size="mini"
+          type="primary"
+          icon="el-icon-search"
+          @click="getTableData"
+        >
+        </el-button>
+      </template>
+    </custom-form>
+    <div class="content">
+      <div class="item">
+        <p>项目数(个)</p>
+        <span>{{ table.total || 0 }} </span>
+      </div>
+      <div class="item">
+        <p>土地面积(亩)</p>
+        <span>{{ table.mj || 0 }} </span>
+      </div>
+    </div>
+    <tablePage
+      :class="'tablePage' + type"
+      :cloumn="cloumn"
+      :table="table"
+      :indexed="false"
+      :showTotal="false"
+      layout="prev, pager,next"
+      ref="tableDialogRef"
+      @currentChange="searchFun"
+    >
+      <template #action="{ row }">
+        <span class="usable" @click="detail(row)">详情</span>
+        <span class="usable" v-if="type == 0" @click="review(row)"> 判定 </span>
+        <span class="usable" v-if="type == 1" @click="handle(row)"> 处置 </span>
+      </template>
+    </tablePage>
+    <div class="tip" v-if="type == 0">
+      说明:系统判断疑似闲置的条件(合同约定开工之日起仍未开工的项目)
+    </div>
+  </div>
+</template>
+
+<script>
+import tablePage from "@/components/mapView/tablePage.vue";
+import customForm from "@/components/mapView/custom-form.vue";
+
+import { GetPage } from "@/api/ghss/hgxfx.js";
+import { GetXzResList } from "../../../api/ghss/ghxz.js";
+
+import { ysForm, xzForm, TableHeader, TableHeader2 } from "./config";
+let dataSources;
+export default {
+  components: {
+    tablePage,
+    customForm,
+  },
+  props: {
+    type: {
+      type: String,
+    },
+    recordBsm: {
+      type: String,
+    },
+  },
+  data() {
+    return {
+      pageObj: {
+        kssj: "",
+        sj: [],
+        jssj: "",
+        xmmc: "",
+        page: 1,
+      },
+
+      datalist: [{}],
+      formConfig: ysForm,
+      cloumn: TableHeader,
+      optionList: [],
+      table: {
+        data: [
+          { JGMC: "ssmdmm", type: 0, typeN: "正在审核" },
+          {
+            JGMC: "ssmdmm",
+            type: 1,
+            time: "2024/9/3",
+            typeN: "审核通过",
+            url: "snsd",
+            list: [
+              { time: "2024/9/3", jg: "申请通过" },
+              { time: "2024/8/13", jg: "申请通过" },
+            ],
+          },
+          {
+            JGMC: "ssmdmm",
+            type: 2,
+            typeN: "审核不通过",
+            list: [
+              { time: "2024/9/3", jg: "申请通过" },
+              { time: "2024/8/13", jg: "申请通过" },
+            ],
+          },
+          { JGMC: "ssmdmm", type: 3, typeN: "已撤回" },
+        ],
+        total: 20,
+      },
+      now: "",
+      // 闲置未处置
+      rdxz: true,
+    };
+  },
+  mounted() {
+    this.formConfig = this.$props.type == 0 ? ysForm : xzForm;
+    this.cloumn = this.$props.type == 0 ? TableHeader : TableHeader2;
+    this.getData();
+  },
+  methods: {
+    changetype() {
+      // switch (this.$props.type) {
+      //   case 0:
+      //     this.formConfig = ysForm;
+      //     break;
+      //   case 1:
+      //     this.formConfig = xzForm;
+      //     break;
+      //   case 2:
+      //     this.formConfig = ysForm;
+      //     break;
+      //   default:
+      //     break;
+      // }
+    },
+    getData() {
+      this.$emit("updateParent", "loading", true);
+      if (this.$props.type == "hgxfx") {
+        GetPage({ ...this.pageObj }).then((res) => {
+          setTimeout(() => {
+            this.$emit("updateParent", "loading", false);
+          }, 100);
+          this.listdisabled = res.data.length < 10;
+          this.datalist = [...this.datalist, ...res.data];
+        });
+      } else if (this.$props.type == "ghxz") {
+        //规划选址历史记录
+        let tempObj = { ...this.pageObj };
+        let obj = {
+          startTime: tempObj.kssj,
+          endTime: tempObj.jssj,
+          name: tempObj.xmmc,
+          pageNum: this.pageObj.page,
+          pageSize: 10,
+        };
+        GetXzResList(obj).then((res) => {
+          // setTimeout(() => {
+          //   this.$emit("updateParent", "loading", false);
+          // }, 100);
+          // this.datalist = [...this.datalist, ...res.data.items];
+        });
+      } else if (this.$props.type == "gdbh") {
+        //耕保历史记录
+        // SelectGdbhList({ ...this.pageObj }).then((res) => {
+        //   setTimeout(() => {
+        //     this.$emit("updateParent", "loading", false);
+        //   }, 100);
+        //   if (res.code == 200) {
+        //     this.listdisabled = res.rows.length < 10;
+        //     this.datalist = [...this.datalist, ...res.rows];
+        //   }
+        // });
+      }
+    },
+    addPolygon(geojson) {},
+    reset() {
+      if (dataSources) viewer.dataSources.remove(dataSources);
+      dataSources = undefined;
+    },
+    detail(row) {
+      this.bus.$emit("handleView", row, this.$props.type);
+    },
+    review(row) {
+      this.$refs.addEdtModal.Init("info", row);
+    },
+    handle() {
+      this.$refs.addEdtModal.Init("info", row);
+    },
+    changerdxz() {
+      this.rdxz = !this.rdxz;
+      this.getData();
+    },
+  },
+  watch: {},
+  beforeDestroy() {
+    this.pageObj = {
+      kssj: "",
+      sj: [],
+      jssj: "",
+      xmmc: "",
+      page: 1,
+    };
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.xzlist {
+  width: 100%;
+  height: 100%;
+
+  .content {
+    width: 100%;
+    height: 50px;
+    margin: 10px 0;
+    background: #2e5a70;
+    border-radius: 5px;
+    padding-top: 5px;
+    .item {
+      width: 48%;
+      height: 100%;
+      display: inline-block;
+      position: relative;
+
+      text-align: center;
+      span {
+        font-family: "Arial Negreta", "Arial Normal", "Arial";
+        font-weight: 700;
+        font-style: normal;
+        color: #68f4fb;
+      }
+    }
+  }
+  .tablePage0,
+  .tablePage1 {
+    height: calc(100% - 160px);
+  }
+  .tablePage2 {
+    height: calc(100% - 120px);
+  }
+  .tip {
+    color: #f56c6c;
+  }
+  .xztype {
+    display: flex;
+    margin: 5px 0;
+    align-items: center;
+    justify-content: space-between;
+    span {
+      display: inline-block;
+      border: 1px solid #3f93f5;
+      border-radius: 5px;
+      padding: 0 10px;
+      line-height: 30px;
+    }
+  }
+}
+</style>
+
+<style lang="scss">
+.xzlist {
+  .el-col {
+    padding-right: 0 !important;
+  }
+}
+</style>

+ 62 - 0
src/views/Idleland/components/xzgl.vue

@@ -0,0 +1,62 @@
+<template>
+  <div class="tpwjxm">
+    <el-tabs type="border-card" class="xz_box" v-model="activeTabs" stretch>
+      <el-tab-pane label="疑似闲置" name="distrust">
+        <List type="0"></List>
+      </el-tab-pane>
+      <el-tab-pane label="闲置未处置" name="notHandle">
+        <List type="1"></List>
+      </el-tab-pane>
+      <el-tab-pane label="闲置已处置" name="handled">
+        <List type="2"></List>
+      </el-tab-pane>
+    </el-tabs>
+  </div>
+</template>
+
+<script>
+let dataSources;
+import List from "./list.vue";
+export default {
+  components: {
+    List,
+  },
+  props: {},
+  data() {
+    return {
+      activeTabs: "distrust",
+    };
+  },
+  mounted() {},
+  methods: {
+    reset() {
+      // if (dataSources) viewer.dataSources.remove(dataSources);
+      // dataSources = undefined;
+    },
+  },
+  watch: {},
+  beforeDestroy() {
+    this.pageObj = {
+      kssj: "",
+      sj: [],
+      jssj: "",
+      xmmc: "",
+      page: 1,
+    };
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.tpwjxm {
+  width: 100%;
+  height: 100%;
+  .xz_box {
+    padding: 0;
+    height: 100%;
+  }
+}
+</style>
+
+<style lang="scss">
+</style>

+ 17 - 12
src/views/Idleland/index.vue

@@ -14,49 +14,53 @@
           ></Tjzl>
         </el-tab-pane>
         <el-tab-pane label="闲置管理" name="xzgl">
-          <!-- <Lsjl
+          <Xzgl
             v-loading="loading"
-            type="tjzl"
             @updateParent="changeData"
             ref="xzgl"
-          ></Lsjl> -->
+          ></Xzgl>
         </el-tab-pane>
       </el-tabs>
     </div>
+    <Details ref="detailModal"></Details>
   </div>
 </template>
 
 <script>
 import Tjzl from "./components/tjzl.vue";
-// import Lsjl from "./components/lsjl.vue";
-
-// import RzDtails from "./components/rzDtails.vue";
+import Xzgl from "./components/xzgl.vue";
+import Details from "./components/details.vue";
 // import TabelView from "./components/tabelView.vue";
 export default {
   name: "complianceAnalysis",
   components: {
     Tjzl,
-    // Lsjl,
-    // Scjg,
-    // RzDtails,
+    Xzgl,
+    Details,
     // TabelView,
   },
   data() {
     return {
       loading: false,
-      activeTabs: "tjzl",
+      activeTabs: "xzgl",
     };
   },
   created() {},
-  mounted() {},
+  mounted() {
+    this.bus.$on("handleView", this.handleView);
+  },
   methods: {
     changeData(name, updata) {
       this[name] = updata;
     },
+    handleView(row, type) {
+      console.log("handleView", this.$refs);
+      this.$refs.detailModal.handleView(row, type);
+    },
   },
   watch: {
     activeTabs(newValue) {
-      if (newValue != "tjzl") this.$refs.tjzl.reset();
+      // if (newValue != "tjzl") this.$refs.tjzl.reset();
       if (newValue != "xzgl") this.$refs.xzgl.reset();
 
       if (newValue == "tjzl") this.$refs.tjzl.getData();
@@ -72,6 +76,7 @@ export default {
 <style lang="scss" scoped>
 .complianceAnalysis {
   .xz_box {
+    padding-bottom: 0;
     .title {
       padding: 8px;
       margin-bottom: 10px;

+ 1 - 3
src/views/ResourceShare/myApplication/index.vue

@@ -85,8 +85,6 @@ export default {
         placeCode: "", //所属小区
       },
       formConfig: FormConfig,
-      tableData: null,
-      details: {},
       cloumn: TableHeader,
       table: {
         data: [
@@ -128,7 +126,7 @@ export default {
       };
       let data = await QueryList(obj);
       this.active_dableData = data.data;
-      this.tableData = data.data;
+      this.tab.data = data.data;
     },
     // 详情
     detail(row) {

+ 68 - 4
src/views/cockpit/ydjc.vue

@@ -18,7 +18,7 @@
       </el-select>
     </div>
     <!-- 临时用地(期限检测) -->
-    <div class="content">
+    <div class="content" v-show="value != 'xztd'">
       <div class="stacontent_ydjc">
         <div class="item cursor" @click="draw_vector">
           <div class="icon">
@@ -99,6 +99,33 @@
         </div>
       </div>
     </div>
+    <div class="content" v-show="value == 'xztd'">
+      <div class="stacontent_ydjc">
+        <div class="item cursor" @click="toIdleland">
+          <span class="dlabel"> 闲置土地:</span>
+          <span class="dvalue">{{ title.tb_num || 0 }}宗</span>
+          <i style="pointer-events: all" :class="{ 'el-icon-view': true }"></i>
+        </div>
+        <div class="item">
+          <span class="dlabel"> 闲置面积:</span>
+          <span class="dvalue">{{ title.tb_mj.toFixed(2) || 0 }}亩</span>
+        </div>
+        <div class="item">
+          <span class="dlabel">已处置面积:</span>
+          <span class="dvalue">{{ title.czmj }}亩</span>
+        </div>
+        <div class="item">
+          <span class="dlabel"> 处置率:</span>
+          <span class="dvalue">{{ title.czl }}</span>
+        </div>
+      </div>
+      <pie3d
+        id="ydjc_echart_xztd"
+        unit="亩"
+        :legendFlag="true"
+        ref="xztd_echart"
+      ></pie3d>
+    </div>
   </div>
 </template>
 
@@ -107,13 +134,13 @@
 import { QueryOne, QueryList } from "../../api/cockpitNew";
 import ThreeStackedBarAndLine from "./common/ThreeStackedBarAndLine.vue";
 import XZQHPieChart from "./common/XZQHPieChart.vue";
-
+import pie3d from "../../components/echartsTemplate/3dPie.vue";
 import Title from "./common/Title.vue";
 import parse from "wellknown";
 let columns1 = ["名称", "面积(平方米)"];
 let columns2 = ["建设项目", "总面积", "土地用途", "用地单位"];
 export default {
-  components: { ThreeStackedBarAndLine, Title, XZQHPieChart },
+  components: { ThreeStackedBarAndLine, Title, XZQHPieChart, pie3d },
   data() {
     return {
       options: [
@@ -121,11 +148,13 @@ export default {
         // { value: "lsyd_fkjc", label: "临时用地(复垦监测)" },
         { value: "lsyd", label: "临时用地" },
         { value: "nzyd", label: "农转用地" },
+        { value: "xztd", label: "闲置土地" },
       ],
       value: "lsyd",
       xzqh_flag: true,
       sdata: { lsyd: {}, nzyd: {} },
       list: [],
+      title: { tb_mj: 0 },
     };
   },
   //监听属性 类似于data概念
@@ -180,7 +209,7 @@ export default {
         };
 
         this.$refs.nzyd_echart.setOptions(obj);
-      } else {
+      } else if (this.value == "lsyd") {
         let obj = {
           legend_data: ["临时用地面积", "正常使用", "剩余1个月", "已到期"],
           x_data,
@@ -190,6 +219,19 @@ export default {
         this.$nextTick(() => {
           this.$refs.lsyd_echart.setOptions(obj);
         });
+      } else {
+        this.$nextTick(() => {
+          //data.data[0].ce_crmj
+          this.$refs.xztd.setOptions(
+            [
+              { name: "政府原因", value: 66 },
+              { name: "企业原因", value: 66 },
+              { name: "非政府原因和不可抗力", value: 20 },
+              { name: "其他", value: 100 },
+            ],
+            0.2
+          );
+        });
       }
     },
     GetQueryOne(params) {
@@ -232,6 +274,9 @@ export default {
         });
       }
     },
+    toIdleland() {
+      this.$router.push({ path: "/Idleland" });
+    },
     goDetail(item) {
       store.setViewerFlagb(false);
       store.setToolBarShow(false);
@@ -354,6 +399,12 @@ export default {
     color: #ecf6ff;
   }
 }
+#ydjc_echart_xztd {
+  width: 27rem;
+  height: 10rem;
+  position: absolute;
+  right: -1rem;
+}
 
 /deep/ {
   .el-select-dropdown__item.selected {
@@ -387,6 +438,19 @@ export default {
     display: inline-block;
     margin-top: 0.5rem;
     // border: #00FFFF 1px solid;
+    .dlabel {
+      color: #bcd3e5;
+      line-height: 24px;
+      text-align: left;
+    }
+
+    .dvalue {
+      font-weight: bold;
+      color: #64daff;
+      line-height: 16px;
+      text-align: left;
+      font-size: 12px;
+    }
   }
 
   .cursor {

+ 10 - 2
src/views/complianceAnalysis/ghzc.scss

@@ -93,6 +93,8 @@
             }
         }
 
+        
+
         .el-form-item {
             margin-bottom: 0 !important;
         }
@@ -136,6 +138,11 @@
                 }
             }
         }
+
+        .usable {
+            color: #3f93f5;
+            cursor: pointer;
+        }
     }
 
 
@@ -213,11 +220,12 @@
             color: #fff !important;
         }
 
-        .el-input__inner,.el-textarea__inner {
+        .el-input__inner,
+        .el-textarea__inner {
             color: #fff;
             background: #041c3273 !important;
             border: 1px dashed #0f7ac8;
-          }
+        }
 
         .el-input__inner:hover {
             // color: #fff;