Browse Source

一系列改造适配

wanger 1 month ago
parent
commit
e2536e214b

+ 1 - 1
manager/package.json

@@ -5,7 +5,7 @@
     "author": "若依",
     "license": "MIT",
     "scripts": {
-        "dev": "vue-cli-service serve",
+        "dev": "set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve",
         "build:prod": "vue-cli-service build",
         "build:stage": "vue-cli-service build --mode staging",
         "preview": "node build/index.js --preview",

+ 44 - 0
manager/src/api/system/scmx.js

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询规划成果审查模型配置列表
+export function listScmx(query) {
+  return request({
+    url: '/system/scmx/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询规划成果审查模型配置详细
+export function getScmx(id) {
+  return request({
+    url: '/system/scmx/' + id,
+    method: 'get'
+  })
+}
+
+// 新增规划成果审查模型配置
+export function addScmx(data) {
+  return request({
+    url: '/system/scmx',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改规划成果审查模型配置
+export function updateScmx(data) {
+  return request({
+    url: '/system/scmx',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除规划成果审查模型配置
+export function delScmx(id) {
+  return request({
+    url: '/system/scmx/' + id,
+    method: 'delete'
+  })
+}

+ 368 - 0
manager/src/views/system/scmx/index.vue

@@ -0,0 +1,368 @@
+<template>
+  <div class="app-container">
+    <el-form
+      :model="queryParams"
+      ref="queryForm"
+      size="small"
+      :inline="true"
+      v-show="showSearch"
+      label-width="68px"
+    >
+      <el-form-item label="名称" prop="name">
+        <el-input
+          v-model="queryParams.name"
+          placeholder="请输入名称"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="审批用户" prop="users">
+        <el-select v-model="queryParams.users" placeholder="审批用户" clearable>
+          <el-option
+            v-for="dict in userlist"
+            :key="dict.userName"
+            :label="dict.nickName"
+            :value="dict.userName"
+          ></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item>
+        <el-button
+          type="primary"
+          icon="el-icon-search"
+          size="mini"
+          @click="handleQuery"
+          >搜索</el-button
+        >
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
+          >重置</el-button
+        >
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['system:scmx:add']"
+          >新增</el-button
+        >
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['system:scmx:edit']"
+          >修改</el-button
+        >
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['system:scmx:remove']"
+          >删除</el-button
+        >
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['system:scmx:export']"
+          >导出</el-button
+        >
+      </el-col>
+      <right-toolbar
+        :showSearch.sync="showSearch"
+        @queryTable="getList"
+      ></right-toolbar>
+    </el-row>
+
+    <el-table
+      v-loading="loading"
+      :data="scmxList"
+      @selection-change="handleSelectionChange"
+    >
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="名称" align="center" prop="name">
+        <!-- <template slot-scope="scope">
+          <dict-tag :value="scope.row.name" />
+        </template> -->
+      </el-table-column>
+      <el-table-column
+        label="审批用户集合,有先后顺序"
+        align="center"
+        prop="users"
+      >
+        <!-- <template slot-scope="scope">
+          <dict-tag :value="scope.row.users" />
+        </template> -->
+      </el-table-column>
+      <el-table-column label="说明" align="center" prop="remark">
+        <!-- <template slot-scope="scope">
+          <dict-tag :value="scope.row.remark" />
+        </template> -->
+      </el-table-column>
+      <el-table-column
+        label="操作"
+        align="center"
+        class-name="small-padding fixed-width"
+      >
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['system:scmx:edit']"
+            >修改</el-button
+          >
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['system:scmx:remove']"
+            >删除</el-button
+          >
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total > 0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改规划成果审查模型配置对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="主键id" prop="id">
+          <el-input v-model="form.id" placeholder="请输入主键id" disabled />
+        </el-form-item>
+        <el-form-item label="名称" prop="name">
+          <el-input v-model="form.name" placeholder="请输入名称" />
+        </el-form-item>
+        <el-form-item label="审批用户集合,有先后顺序" prop="users">
+          <el-select
+            v-model="form.users"
+            placeholder="请选择审批用户集合,有先后顺序"
+            multiple
+            clearable
+            filterable
+          >
+            <el-option
+              v-for="dict in userlist"
+              :key="dict.userName"
+              :label="dict.nickName"
+              :value="dict.userName"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="说明" prop="remark">
+          <el-input v-model="form.remark" placeholder="请输入说明" />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import {
+  listScmx,
+  getScmx,
+  delScmx,
+  addScmx,
+  updateScmx,
+} from "@/api/system/scmx";
+
+import { listUser } from "@/api/system/user";
+
+export default {
+  name: "Scmx",
+  data() {
+    return {
+      userlist: [],
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 规划成果审查模型配置表格数据
+      scmxList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        name: null,
+        users: null,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        name: [{ required: true, message: "名称不能为空", trigger: "blur" }],
+        remark: [{ required: true, message: "说明不能为空", trigger: "blur" }],
+      },
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询规划成果审查模型配置列表 */
+    getList() {
+      this.loading = true;
+      listScmx(this.queryParams).then((response) => {
+        this.scmxList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+      listUser({
+        pageNum: 1,
+        pageSize: 10000,
+      }).then((response) => {
+        this.userlist = response.rows;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        name: null,
+        users: null,
+        remark: null,
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map((item) => item.id);
+      this.single = selection.length !== 1;
+      this.multiple = !selection.length;
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加规划成果审查模型配置";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids;
+      getScmx(id).then((response) => {
+        if(response.data.users){
+          response.data.users = response.data.users.split(",");
+        }else{
+          response.data.users = []
+        }
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改规划成果审查模型配置";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      debugger;
+      this.$refs["form"].validate((valid) => {
+        if (valid) {
+          console.log(this.form.users);
+          if(this.form.users.length == 0){
+            this.form.users = ""
+          }else{
+            this.form.users = this.form.users.join();
+          }
+          if (this.form.id != null) {
+            updateScmx(this.form).then((response) => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addScmx(this.form).then((response) => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$modal
+        .confirm(
+          '是否确认删除规划成果审查模型配置编号为"' + ids + '"的数据项?'
+        )
+        .then(function () {
+          return delScmx(ids);
+        })
+        .then(() => {
+          this.getList();
+          this.$modal.msgSuccess("删除成功");
+        })
+        .catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download(
+        "system/scmx/export",
+        {
+          ...this.queryParams,
+        },
+        `scmx_${new Date().getTime()}.xlsx`
+      );
+    },
+  },
+};
+</script>

+ 2 - 2
publicservice/src/components/ghcgscygl/ghcgsb/ztgh/ghcgDialog.vue

@@ -75,8 +75,8 @@
                   right: 45px;
                   background-color: #fff;
                   color: #169bd5;
-                  border: none; // 去掉边框
-                  outline: none; // 去掉点击按钮后的边框
+                  border: none;
+                  outline: none;
                 "
                 >选择</el-button
               ></el-upload

+ 36 - 0
website/src/api/ghcgysc/cggl.js

@@ -127,4 +127,40 @@ export function alllist(parameter) {
             'Content-Type': 'application/json;charset=UTF-8'
         }
     })
+}
+
+//获取人工审查模型列表
+export function scmxlist(parameter) {
+    return request({
+        url: '/apply/cggl/scmx',
+        method: 'get',
+        params: parameter,
+        headers: {
+            'Content-Type': 'application/json;charset=UTF-8'
+        }
+    })
+}
+
+//发起总体规划成果审查
+export function startcgsc(parameter) {
+    return request({
+        url: '/apply/cggl/startcgsc',
+        method: 'post',
+        data: parameter,
+        headers: {
+            'Content-Type': 'application/json;charset=UTF-8'
+        }
+    })
+}
+
+//发起村庄规划成果审查
+export function startczghcgsc(parameter) {
+    return request({
+        url: '/apply/xzczghcgsb/startcgsc',
+        method: 'post',
+        data: parameter,
+        headers: {
+            'Content-Type': 'application/json;charset=UTF-8'
+        }
+    })
 }

+ 34 - 0
website/src/api/ghcgysc/search.js

@@ -5,11 +5,45 @@ const searchApi = {
     landGetAllTasks: '/apply/sbsearch/getLandGetAllTasks', //查询待办成果列表
     landTaskStatus: '/apply/sbsearch/getLandTaskStatus', // 查询已办成果审批记录
     reportDownload: '/apply/sbsearch/reportDownloadAction', // 查询已办成果审批记录
+    landGetRevisePage: '/apply/sbsearch/getLandGetRevisePageData', // 查询待修编成果列表
+    reuploadThirdpartyReviseData: '/apply/sbsearch/reuploadThirdpartyReviseData', // 上传待修编成果
     getInstIds: '/apply/xzczghcgsb/getInstIds', // 获取已经补正上传市级未上报自治区的instid集合
     getcgglInstIds: '/apply/xzczghcgsb/getInstIds', // 获取总体规划已经补正上传市级未上报自治区的instid集合
     //getcgglInstIds: '/apply/cggl/getInstIds', // 获取总体规划已经补正上传市级未上报自治区的instid集合
 }
 
+/**
+ * 上传待修编成果
+ * @param parameter
+ * @returns {*}
+ */
+export function reuploadThirdpartyReviseData(data) {
+    return request({
+        url: searchApi.reuploadThirdpartyReviseData,
+        method: 'post',
+        data: data,
+        headers: {
+            'Content-Type': 'multipart/form-data'
+        },
+    })
+}
+
+/**
+ * 查询修编成果列表
+ * @param parameter
+ * @returns {*}
+ */
+export function getLandGetRevisePageData(parameter) {
+    return request({
+        method: 'get',
+        url: searchApi.landGetRevisePage,
+        params: parameter,
+        headers: {
+            'Content-Type': 'application/json;charset=UTF-8'
+        }
+    })
+}
+
 /**
  * 查询已办成果流程
  * @param parameter

+ 3 - 3
website/src/components/ghcgscygl/cgsh/shenHeRule.vue

@@ -129,16 +129,16 @@
                 type="primary"
                 size="small"
                 style="width: 80px"
-                >保存</el-button
+                >通过</el-button
             >
-            <el-button
+            <!-- <el-button
                 :disabled="!canSC"
                 @click="complete"
                 type="primary"
                 size="small"
                 style="width: 80px"
                 >完结</el-button
-            >
+            > -->
             <el-button
                 :disabled="!canSC"
                 @click="reback"

+ 55 - 104
website/src/components/ghcgscygl/ghcgsb/ztgh/ghcgDialog.vue

@@ -1,98 +1,44 @@
 <template>
-  <el-dialog
-    title="规划成果上传"
-    v-model="ghcgscDialog"
-    @close="closeDialog"
-    width="600px"
-  >
-    <el-form
-      :model="formData"
-      :rules="rules"
-      ref="ruleForm"
-      label-width="150px"
-    >
+  <el-dialog title="规划成果上传" v-model="ghcgscDialog" @close="closeDialog" width="600px">
+    <el-form :model="formData" :rules="rules" ref="ruleForm" label-width="150px">
       <el-row>
+        <el-col>
+          <el-form-item label="规划类型:" prop="plantype">
+            <el-select v-model="formData.plantype" placeholder="请选择规划类型" style="width: 368px;">
+              <el-option v-for="item in plantypeoptions" :key="item.value" :label="item.label" :value="item.value">
+              </el-option>
+            </el-select>
+          </el-form-item></el-col>
         <el-col>
           <el-form-item label="成果名称:" prop="name">
-            <el-input
-              v-model="formData.name"
-              placeholder="请输入XXX旗XXXX年现状评估成果"
-              style="width: 90%"
-              autocomplete="off"
-            ></el-input> </el-form-item
-        ></el-col>
+            <el-input v-model="formData.name" placeholder="请输入XXX旗XXXX年现状评估成果" style="width: 90%"
+              autocomplete="off"></el-input> </el-form-item></el-col>
         <el-col>
           <el-form-item label="规划成果时间:" prop="year">
-            <el-select
-              v-model="yearLx"
-              placeholder="请选择时间类型"
-              style="width: 30%; margin-right: 10%"
-              @change="changeLx"
-            >
+            <el-select v-model="yearLx" placeholder="请选择时间类型" style="width: 30%; margin-right: 10%" @change="changeLx">
               <el-option label="年月日" value="年月日"> </el-option>
               <el-option label="年月" value="年月"> </el-option>
               <el-option label="年" value="年"> </el-option>
             </el-select>
-            <el-date-picker
-              style="width: 50%"
-              v-if="yearLx == '年月日'"
-              v-model="formData.year"
-              type="date"
-              placeholder="请选择时间"
-              size="default"
-              class="picker"
-              value-format="YYYY-MM-DD"
-            />
-            <el-date-picker
-              style="width: 50%"
-              v-if="yearLx == '年月'"
-              v-model="formData.year"
-              type="month"
-              placeholder="请选择时间"
-              size="default"
-              class="picker"
-              value-format="YYYY-MM"
-            />
-            <el-date-picker
-              style="width: 50%"
-              v-if="yearLx == '年'"
-              v-model="formData.year"
-              type="year"
-              placeholder="请选择时间"
-              size="default"
-              class="picker"
-              format="YYYY"
-              value-format="YYYY"
-            />
+            <el-date-picker style="width: 50%" v-if="yearLx == '年月日'" v-model="formData.year" type="date"
+              placeholder="请选择时间" size="default" class="picker" value-format="YYYY-MM-DD" />
+            <el-date-picker style="width: 50%" v-if="yearLx == '年月'" v-model="formData.year" type="month"
+              placeholder="请选择时间" size="default" class="picker" value-format="YYYY-MM" />
+            <el-date-picker style="width: 50%" v-if="yearLx == '年'" v-model="formData.year" type="year"
+              placeholder="请选择时间" size="default" class="picker" format="YYYY" value-format="YYYY" />
           </el-form-item>
         </el-col>
         <el-col>
           <el-form-item label="行政区:">
-            <el-input
-              v-model="formData.xzqmc"
-              style="width: 90%"
-              autocomplete="off"
-              disabled
-            ></el-input>
+            <el-input v-model="formData.xzqmc" style="width: 90%" autocomplete="off" disabled></el-input>
           </el-form-item>
         </el-col>
         <el-col>
-          <el-form-item
-            label="上传成果包:"
-            prop="file"
-            style="position: relative; font-weight: 600"
-          >
+          <el-form-item label="上传成果包:" prop="file" style="position: relative; font-weight: 600">
             <el-input style="width: 90%" autocomplete="off" readonly></el-input>
-            <el-upload
-              action="#"
-              :http-request="addFileToFormData"
-              v-model:file-list="fileList"
-            >
+            <el-upload action="#" :http-request="addFileToFormData" v-model:file-list="fileList">
               <!-- // 去掉边框// 去掉点击按钮后的边框 -->
-              <el-button
-                slot="trigger"
-                type="primary"
-                style="
+              <el-button slot="trigger" type="primary" style="
                   height: 90%;
                   padding: 0;
                   position: absolute;
@@ -102,50 +48,29 @@
                   color: #169bd5;
                   border: none;
                   outline: none;
-                "
-                @click="upload"
-                >选择</el-button
-              ></el-upload
-            >
+                " @click="upload">选择</el-button></el-upload>
           </el-form-item>
         </el-col>
         <el-col>
           <el-form-item label="报批单位:" prop="bpdw">
-            <el-input
-              v-model="formData.bpdw"
-              placeholder="默认为当前账户所在旗县局"
-              style="width: 90%"
-              autocomplete="off"
-            ></el-input>
+            <el-input v-model="formData.bpdw" placeholder="默认为当前账户所在旗县局" style="width: 90%"
+              autocomplete="off"></el-input>
           </el-form-item>
         </el-col>
         <el-col>
           <el-form-item label="联系人:" prop="lxr">
-            <el-input
-              v-model="formData.lxr"
-              style="width: 90%"
-              autocomplete="off"
-            ></el-input>
+            <el-input v-model="formData.lxr" style="width: 90%" autocomplete="off"></el-input>
           </el-form-item>
         </el-col>
         <el-col style="padding: 0">
           <el-form-item label="联系电话:" prop="lxdh">
-            <el-input
-              v-model="formData.lxdh"
-              style="width: 90%"
-              autocomplete="off"
-            ></el-input>
+            <el-input v-model="formData.lxdh" style="width: 90%" autocomplete="off"></el-input>
           </el-form-item>
         </el-col>
         <el-col style="padding-top: 20px">
           <el-form-item label="流程主键:" v-show="formData.instid != ''">
-            <el-input
-              v-model="formData.instid"
-              placeholder="补正流程需要(自动填充)"
-              style="width: 90%"
-              disabled
-            ></el-input> </el-form-item
-        ></el-col>
+            <el-input v-model="formData.instid" placeholder="补正流程需要(自动填充)" style="width: 90%" disabled></el-input>
+          </el-form-item></el-col>
       </el-row>
     </el-form>
     <template #footer>
@@ -191,6 +116,31 @@ export default {
         lxr: "",
         lxdh: "",
       },
+      plantypeoptions: [{
+        value: '1',
+        label: '评估成果'
+      }, {
+        value: '2',
+        label: '规划成果'
+      }, {
+        value: '3',
+        label: '总体规划'
+      }, {
+        value: '4',
+        label: '详细规划'
+      }, {
+        value: '5',
+        label: '专项规划'
+      }, {
+        value: '6',
+        label: '报批项目'
+      }, {
+        value: '7',
+        label: '苏木乡镇规划'
+      }, {
+        value: '8',
+        label: '城市更新'
+      }],
       xzqList: [],
       fileList: [],
       fileFormData: [],
@@ -316,6 +266,7 @@ export default {
 .el-col {
   padding-bottom: 20px;
 }
+
 :deep(.el-upload-list) {
   position: absolute;
   width: 80%;

+ 3 - 3
website/src/components/ghcgscygl/sccg/xmscjgCommon.vue

@@ -19,7 +19,7 @@
         <el-tabs type="border-card" class="xz_box" v-model="activeTabs" @tab-change="handleChange"
             style="height: calc(100% - 40px)">
             <el-tab-pane label="审查结果" name="qx">
-                <qxscjg ref="qxscjg" v-if="activeTabs==='qx' && showTabContent && cg_rule && cg_rule.bjscyj" :activeTabs="activeTabs" v-model:cg_option_item="cg_option_item" v-model:cg_rule="cg_rule"></qxscjg>
+                <qxscjg ref="qxscjg" v-if="activeTabs==='qx'" :activeTabs="activeTabs" v-model:cg_option_item="cg_option_item" v-model:cg_rule="cg_rule"></qxscjg>
                 <div v-else style="display:flex;align-items: center;justify-content: center;height: 100vh;font-size: 20px;">该成果尚未审查!</div>
             </el-tab-pane>
             <!-- <el-tab-pane label="市级审查结果" name="sj">
@@ -59,8 +59,8 @@ export default {
         const parent = { ...context };
         const xmscjg = reactive({
             showSHIHI: false,
-            showTabContent: false,
-            activeTabs: prop.act_tab,
+            showTabContent: true,
+            activeTabs: "qx",
             loading: false,
             cg_option_item: {},
             cg_rule: {},

+ 88 - 230
website/src/permission.js

@@ -23,19 +23,35 @@ const whiteList = ['/login', '/auth-redirect', '/bind', '/register'];
 router.beforeEach((to, from, next) => {
     // 全局前置守卫
     NProgress.start()
-    if ("SSO" == LoginMode) {
         // 获取地址栏参数
-        if (to.query && to.query.token && to.path === '/page') {
-            let access_token = to.query.token
-            console.log('校验Token是否过期');
-            checkToken(access_token).then(res => {
-                console.log('Token未过期,获取Token对应登录用户信息');
-                // 获取Token对应登录用户信息
-                currentUserInfo(access_token).then(res => {
+    if (to.query && to.query.token && to.path === '/page') {
+        let access_token = to.query.token
+        console.log('校验Token是否过期');
+        //#region test
+        // // 获取username
+        // let username = 'admin'
+        // // 调用action的登录方法,进行自动认证登录
+        // console.log('开始自动认证登录');
+        // store.dispatch("LoginNew", username)
+        //   .then(() => {
+        //     store.commit("SET_SUPERUSER", username);
+        //     store.commit("SET_SUPERTOKEN", access_token);
+        //     next()
+        //   })
+        //   .catch((e) => {
+        //     console.log('认证登录失败:');
+        //     next(`/login?redirect=/`) // 否则全部重定向到登录页
+        //   });
+        //#endregion
+
+        checkToken(access_token).then(res => {
+            console.log('Token未过期,获取Token对应登录用户信息');
+            // 获取Token对应登录用户信息
+            currentUserInfo(access_token).then(res => {
                     console.log('用户信息获取成功:' + res.data);
                     // 获取username
                     let username = res.data.user_name
-                    // 调用action的登录方法,进行自动认证登录
+                        // 调用action的登录方法,进行自动认证登录
                     console.log('开始自动认证登录');
                     store.dispatch("LoginNew", username)
                         .then(() => {
@@ -45,245 +61,87 @@ router.beforeEach((to, from, next) => {
                         })
                         .catch((e) => {
                             console.log('认证登录失败:');
-                            next(SSOExitUrl) // 否则全部重定向到登录页
+                            next(`/login?redirect=/`) // 否则全部重定向到登录页
                         });
                 })
-                    .catch((e) => {
-                        console.log('用户信息获取失败');
-                        next(SSOExitUrl) // 否则全部重定向到登录页
-                    });
-            }).catch(e => {
-                console.log('Token过期,请重新登录!');
-                next(SSOExitUrl) // 否则全部重定向到登录页
-            })
-        } else if (to.query && to.query.ticket) {//TODO wanger 对接基础信息平台
-            // 通过ticket获取登录用户信息
-            validateTicket(to.query.ticket).then(res => {
-                console.log('用户信息获取成功:' + JSON.stringify(res.data));
-                // 获取username
-                let username = res.data.account;
-                // 调用action的登录方法,进行自动认证登录
-                console.log('开始自动认证登录');
-                store.dispatch("LoginNew", username)
-                    .then(() => {
-                        store.commit("SET_SUPERUSER", username);
-                        next("/")
-                    })
-                    .catch((e) => {
-                        console.log('认证登录失败:');
-                        next(SSOExitUrl) // 否则全部重定向到登录页
-                    });
-            })
                 .catch((e) => {
                     console.log('用户信息获取失败');
-                    next(SSOExitUrl) // 否则全部重定向到登录页
+                    next(`/login?redirect=/`) // 否则全部重定向到登录页
                 });
-        } else if (to.query && to.query.logout) {//TODO wanger 对接基础信息平台
-            store.dispatch("LogOut").then(() => {
-            });
-            // 获取Token对应登录用户信息
-            SsoLogout().then(res => {
-                console.log('单点登录退出成功');
-                next(SSOUrl) // 否则全部重定向到登录页
-            })
-                .catch((e) => {
-                    console.log('单点登录退出失败');
-                    next(SSOExitUrl) // 否则全部重定向到登录页
-                });
-        } else {
-            if (getToken()) {
-                //#region 获取单点登录的token,验证token是否过期
-                let tk = store.getters.superToken
-                if (!tk && to.query && to.query.token) {
-                    tk = to.query.token
-                    store.commit("SET_SUPERTOKEN", tk);
-                }
-                //#endregion
+        }).catch(e => {
+            console.log('Token过期,请重新登录!');
+            next(`/login?redirect=/`) // 否则全部重定向到登录页
+        })
+    } else {
+        if (getToken()) {
+
+            //#region 获取单点登录的token,验证token是否过期
+            let tk = store.getters.superToken
+            if (!tk && to.query && to.query.token) {
+                tk = to.query.token
+                store.commit("SET_SUPERTOKEN", tk);
+            }
+            //#endregion
 
-                to.meta.title && store.dispatch('settings/setTitle', to.meta.title)
+            to.meta.title && store.dispatch('settings/setTitle', to.meta.title)
                 /* has token*/
-                if (to.path === '/login') {
-                    next({ path: '/' })
-                    NProgress.done()
-                } else if (!tk && to.path === '/page') {
-                    next({ path: '/home' })
-                } else {
-                    if (store.getters.roles.length === 0) {
-                        // 判断当前用户是否已拉取完user_info信息
-                        store.dispatch('GetInfo').then(() => {
-                            store.dispatch('GenerateRoutes').then(accessRoutes => {
-                                // 根据roles权限生成可访问的路由表
-                                accessRoutes.forEach(route => {
-                                    if (!isHttp(route.path)) {
-                                        router.addRoute(route) // 动态添加可访问路由表
-                                    }
-                                })
-                                next({ ...to, replace: true }) // hack方法 确保addRoutes已完成
-                            })
-                        }).catch(err => {
-                            store.dispatch('LogOut').then(() => {
-                                ElMessage.error(err)
-                                next({ path: '/' })
+            if (to.path === '/login') {
+                next({ path: '/' })
+                NProgress.done()
+            } else if (!tk && to.path === '/page') {
+                next({ path: '/home' })
+            } else {
+                if (store.getters.roles.length === 0) {
+                    // 判断当前用户是否已拉取完user_info信息
+                    store.dispatch('GetInfo').then(() => {
+                        store.dispatch('GenerateRoutes').then(accessRoutes => {
+                            // 根据roles权限生成可访问的路由表
+                            accessRoutes.forEach(route => {
+                                if (!isHttp(route.path)) {
+                                    router.addRoute(route) // 动态添加可访问路由表
+                                }
                             })
+                            next({...to, replace: true }) // hack方法 确保addRoutes已完成
                         })
-                    } else {
-                        //#region 单点修改代码片段,跳转验证token是否过期
-                        if (tk) {
-                            console.log('检验token是否过期');
-                            checkToken(tk).then(res => {
-                                console.log('Token未过期,正常跳转');
-                                next()
-                            }).catch(e => {
-                                console.log('Token过期,请重新登录!');
-                                store.commit("SET_SUPERUSER", "");
-                                store.commit("SET_SUPERTOKEN", "");
-                                next(SSOExitUrl) // 否则全部重定向到登录页
-                                return
-                            })
-                        } else {
-                            next()
-                        }
-                        //#endregion
-
-                        //#region 改前代码
-                        // next()
-                        //#endregion
-
-                    }
-                }
-            } else {
-                // 没有token
-                if (whiteList.indexOf(to.path) !== -1) {
-                    // 在免登录白名单,直接进入
-                    next()
+                    }).catch(err => {
+                        store.dispatch('LogOut').then(() => {
+                            ElMessage.error(err)
+                            next({ path: '/' })
+                        })
+                    })
                 } else {
-                    window.location = JcptSSOExitUrl;
-                    // next(JcptSSOExitUrl) // 否则全部重定向到登录页
-                    NProgress.done()
-                }
-            }
-        }
-    } else if ("SELF" == LoginMode) {
-        // 获取地址栏参数
-        if (to.query && to.query.token && to.path === '/page') {
-            let access_token = to.query.token
-            console.log('校验Token是否过期');
-            //#region test
-            // // 获取username
-            // let username = 'admin'
-            // // 调用action的登录方法,进行自动认证登录
-            // console.log('开始自动认证登录');
-            // store.dispatch("LoginNew", username)
-            //   .then(() => {
-            //     store.commit("SET_SUPERUSER", username);
-            //     store.commit("SET_SUPERTOKEN", access_token);
-            //     next()
-            //   })
-            //   .catch((e) => {
-            //     console.log('认证登录失败:');
-            //     next(`/login?redirect=/`) // 否则全部重定向到登录页
-            //   });
-            //#endregion
-
-            checkToken(access_token).then(res => {
-                console.log('Token未过期,获取Token对应登录用户信息');
-                // 获取Token对应登录用户信息
-                currentUserInfo(access_token).then(res => {
-                    console.log('用户信息获取成功:' + res.data);
-                    // 获取username
-                    let username = res.data.user_name
-                    // 调用action的登录方法,进行自动认证登录
-                    console.log('开始自动认证登录');
-                    store.dispatch("LoginNew", username)
-                        .then(() => {
-                            store.commit("SET_SUPERUSER", username);
-                            store.commit("SET_SUPERTOKEN", access_token);
+                    //#region 单点修改代码片段,跳转验证token是否过期
+                    if (tk) {
+                        console.log('检验token是否过期');
+                        checkToken(tk).then(res => {
+                            console.log('Token未过期,正常跳转');
                             next()
-                        })
-                        .catch((e) => {
-                            console.log('认证登录失败:');
+                        }).catch(e => {
+                            console.log('Token过期,请重新登录!');
+                            store.commit("SET_SUPERUSER", "");
+                            store.commit("SET_SUPERTOKEN", "");
                             next(`/login?redirect=/`) // 否则全部重定向到登录页
-                        });
-                })
-                    .catch((e) => {
-                        console.log('用户信息获取失败');
-                        next(`/login?redirect=/`) // 否则全部重定向到登录页
-                    });
-            }).catch(e => {
-                console.log('Token过期,请重新登录!');
-                next(`/login?redirect=/`) // 否则全部重定向到登录页
-            })
-        } else {
-            if (getToken()) {
-
-                //#region 获取单点登录的token,验证token是否过期
-                let tk = store.getters.superToken
-                if (!tk && to.query && to.query.token) {
-                    tk = to.query.token
-                    store.commit("SET_SUPERTOKEN", tk);
-                }
-                //#endregion
-
-                to.meta.title && store.dispatch('settings/setTitle', to.meta.title)
-                /* has token*/
-                if (to.path === '/login') {
-                    next({ path: '/' })
-                    NProgress.done()
-                } else if (!tk && to.path === '/page') {
-                    next({ path: '/home' })
-                } else {
-                    if (store.getters.roles.length === 0) {
-                        // 判断当前用户是否已拉取完user_info信息
-                        store.dispatch('GetInfo').then(() => {
-                            store.dispatch('GenerateRoutes').then(accessRoutes => {
-                                // 根据roles权限生成可访问的路由表
-                                accessRoutes.forEach(route => {
-                                    if (!isHttp(route.path)) {
-                                        router.addRoute(route) // 动态添加可访问路由表
-                                    }
-                                })
-                                next({ ...to, replace: true }) // hack方法 确保addRoutes已完成
-                            })
-                        }).catch(err => {
-                            store.dispatch('LogOut').then(() => {
-                                ElMessage.error(err)
-                                next({ path: '/' })
-                            })
+                            return
                         })
                     } else {
-                        //#region 单点修改代码片段,跳转验证token是否过期
-                        if (tk) {
-                            console.log('检验token是否过期');
-                            checkToken(tk).then(res => {
-                                console.log('Token未过期,正常跳转');
-                                next()
-                            }).catch(e => {
-                                console.log('Token过期,请重新登录!');
-                                store.commit("SET_SUPERUSER", "");
-                                store.commit("SET_SUPERTOKEN", "");
-                                next(`/login?redirect=/`) // 否则全部重定向到登录页
-                                return
-                            })
-                        } else {
-                            next()
-                        }
-                        //#endregion
+                        next()
+                    }
+                    //#endregion
 
-                        //#region 改前代码
-                        // next()
-                        //#endregion
+                    //#region 改前代码
+                    // next()
+                    //#endregion
 
-                    }
                 }
+            }
+        } else {
+            // 没有token
+            if (whiteList.indexOf(to.path) !== -1) {
+                // 在免登录白名单,直接进入
+                next()
             } else {
-                // 没有token
-                if (whiteList.indexOf(to.path) !== -1) {
-                    // 在免登录白名单,直接进入
-                    next()
-                } else {
-                    next(`/login?redirect=${to.path}`) // 否则全部重定向到登录页
-                    NProgress.done()
-                }
+                next(`/login?redirect=${to.path}`) // 否则全部重定向到登录页
+                NProgress.done()
             }
         }
     }

+ 8 - 0
website/src/router/ghcgscygl/twomenu.js

@@ -222,6 +222,14 @@ export default {
                     component: () =>
                         import ('@/views/ghcgscygl/ghcgsb/Search.vue'),
 
+                },
+                {
+                    // 成果包查询(自治区)
+                    path: '/ghcgscygl/ghcgsb/cgcxzzq',
+                    name: 'CgcxZzq',
+                    component: () =>
+                        import ('@/views/ghcgscygl/ghcgsb/SearchZzq.vue'),
+
                 }
 
             ]

+ 10 - 1
website/src/views/ghcgscygl/cgsb/Cgsb.vue

@@ -3,7 +3,16 @@
     <!-- <Qxjghcg /> -->
     <el-tabs v-model="activeName" @tab-click="handleClick">
       <el-tab-pane label="总体规划" name="first">
-        <Qxjghcg />
+        <Qxjghcg :plantype="3"/>
+      </el-tab-pane>
+      <el-tab-pane label="报批项目" name="first1">
+        <Qxjghcg :plantype="6"/>
+      </el-tab-pane>
+      <el-tab-pane label="苏木乡镇规划" name="first2">
+        <Qxjghcg :plantype="7"/>
+      </el-tab-pane>
+      <el-tab-pane label="城市更新" name="first3">
+        <Qxjghcg :plantype="8"/>
       </el-tab-pane>
       <el-tab-pane label="村庄规划" name="second">
         <Czgh />

+ 47 - 109
website/src/views/ghcgscygl/common.vue

@@ -1,50 +1,35 @@
 <template>
   <div class="max-box" v-loading="loading">
-    <div
-      class="cgdb max-box flex-box column"
-      v-if="!detailsVisible && !examinationVisible"
-    >
+    <div class="cgdb max-box flex-box column" v-if="!detailsVisible && !examinationVisible">
       <div class="header flex-box align-center box-sizing">
         <div class="header-left">
           <el-form :inline="true" :model="formInline" class="demo-form-inline">
-            <el-form-item
-              v-if="$store.getters.roles.join(',').indexOf('shiji') > -1"
-              label="所属行政区"
-              prop="xzqdm"
-            >
-              <el-cascader
-                :options="options"
-                :props="{
-                  ...props,
-                  checkStrictly: true,
-                  expandTrigger: 'hover',
-                }"
-                v-model="formInline.xzqdm"
-                clearable
-                ref="cascader"
-                size="mini"
-                :filterable="true"
-                :show-all-levels="false"
-                @change="setXzqdm"
-              ></el-cascader
-            ></el-form-item>
+            <el-form-item label="所属行政区" prop="xzqdm">
+              <el-cascader :options="options" :props="{
+                ...props,
+                checkStrictly: true,
+                expandTrigger: 'hover',
+              }" v-model="formInline.xzqdm" clearable ref="cascader" size="mini" :filterable="true"
+                :show-all-levels="false"></el-cascader></el-form-item>
             <el-form-item label="成果名称">
               <el-input v-model="formInline.xmmc" placeholder=""></el-input>
             </el-form-item>
             <el-form-item label="规划类型">
               <el-select v-model="formInline.ghlx" placeholder="请选择规划类型">
-                <el-option label="全部" value="">全部</el-option>
+                <!-- <el-option label="全部" value="">全部</el-option> -->
                 <el-option label="评估成果" value="1"></el-option>
                 <el-option label="规划成果" value="2"></el-option>
                 <el-option label="总体规划" value="3"></el-option>
+                <el-option label="村庄规划" value="9"></el-option>
                 <el-option label="详细规划" value="4"></el-option>
                 <el-option label="专项规划" value="5"></el-option>
+                <el-option label="报批项目" value="6"></el-option>
+                <el-option label="苏木乡镇规划" value="7"></el-option>
+                <el-option label="城市更新" value="8"></el-option>
               </el-select>
             </el-form-item>
             <el-form-item>
-              <el-button type="primary" @click="onSubmit" icon="search"
-                >查询</el-button
-              >
+              <el-button type="primary" @click="onSubmit" icon="search">查询</el-button>
               <el-button @click="reset" icon="refresh-left">重置</el-button>
             </el-form-item>
           </el-form>
@@ -53,20 +38,8 @@
       <div class="table-layout flex-box column height-100-60">
         <div class="max-width height-100-50">
           <!-- :data="tableData.slice((formInline.page - 1) * formInline.limit, formInline.page * formInline.limit)" -->
-          <el-table
-            :data="tableData"
-            style="width: 100%"
-            border
-            fit
-            cell-class-name="cell-item"
-            height="100%"
-          >
-            <el-table-column
-              width="80"
-              align="center"
-              type="index"
-              label="序号"
-            ></el-table-column>
+          <el-table :data="tableData" style="width: 100%" border fit cell-class-name="cell-item" height="100%">
+            <el-table-column width="80" align="center" type="index" label="序号"></el-table-column>
             <el-table-column prop="name" label="成果名称" align="center">
             </el-table-column>
             <el-table-column prop="plantype" label="规划类型" align="center">
@@ -84,49 +57,25 @@
             <el-table-column label="操作" fixed="right" align="center">
               <template #default="scope">
                 <div class="max-width">
-                  <el-button
-                    v-if="
-                      $store.getters.roles.indexOf('manager') > -1 &&
-                      ['待审', '审查中'].indexOf(scope.row.sczt) > -1
-                    "
-                    type="primary"
-                    link
-                    class="caozuo"
-                    @click="examdata(scope.row)"
-                    >审查</el-button
-                  >
+                  <el-button v-if="
+                    $store.getters.roles.indexOf('manager') > -1 &&
+                    ['待审', '审查中'].indexOf(scope.row.sczt) > -1
+                  " type="primary" link class="caozuo" @click="examdata(scope.row)">审查</el-button>
 
-                  <el-button
-                    v-if="
-                      $store.getters.roles.indexOf('manager') > -1 &&
-                      ['待审', '审查中'].indexOf(scope.row.sczt) === -1
-                    "
-                    type="primary"
-                    link
-                    class="caozuo"
-                    @click="viewSCJG(scope.row)"
-                    >查看审查结果</el-button
-                  >
-                  <el-divider
-                    v-if="
-                      ['完结', '退回'].indexOf(
-                        scope.row.sczt
-                      ) > -1
-                    "
-                    direction="vertical"
-                  ></el-divider>
-                  <el-button
-                    v-if="
-                      ['完结', '退回'].indexOf(
-                        scope.row.sczt
-                      ) > -1
-                    "
-                    type="primary"
-                    link
-                    class="caozuo"
-                    @click="download(scope.row)"
-                    >查看审查报告</el-button
-                  >
+                  <el-button v-if="
+                    $store.getters.roles.indexOf('manager') > -1 &&
+                    ['待审', '审查中'].indexOf(scope.row.sczt) === -1
+                  " type="primary" link class="caozuo" @click="viewSCJG(scope.row)">查看审查结果</el-button>
+                  <el-divider v-if="
+                    ['完结', '退回'].indexOf(
+                      scope.row.sczt
+                    ) > -1
+                  " direction="vertical"></el-divider>
+                  <el-button v-if="
+                    ['完结', '退回'].indexOf(
+                      scope.row.sczt
+                    ) > -1
+                  " type="primary" link class="caozuo" @click="download(scope.row)">查看审查报告</el-button>
                   <!-- <el-divider v-if="['完结'].indexOf(scope.row.sczt) > -1" direction="vertical"></el-divider>
                   <el-button v-if="['完结'].indexOf(scope.row.sczt) > -1" type="primary" link class="caozuo"
                     @click="ruku(scope.row)">入库</el-button> -->
@@ -136,32 +85,16 @@
           </el-table>
         </div>
         <div class="flex-box footer height-50 flex-box align-center box-sizing">
-          <el-pagination
-            @size-change="handleSizeChange"
-            @current-change="handleCurrentChange"
-            :current-page="formInline.page"
-            :page-sizes="[10, 20, 50, 100]"
-            :page-size="formInline.limit"
-            background
-            :pager-count="10"
-            layout="total, sizes, prev, pager, next, jumper"
-            :total="formInline.total"
-          >
+          <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
+            :current-page="formInline.page" :page-sizes="[10, 20, 50, 100]" :page-size="formInline.limit" background
+            :pager-count="10" layout="total, sizes, prev, pager, next, jumper" :total="formInline.total">
           </el-pagination>
         </div>
       </div>
     </div>
-    <Details
-      v-if="detailsVisible"
-      v-model:detailsVisible="detailsVisible"
-      :active_bsm="active_bsm"
-    ></Details>
-    <Examination
-      v-if="examinationVisible"
-      v-model:examinationVisible="examinationVisible"
-      :active_bsm="active_bsm"
-      @getlist="getlist"
-    ></Examination>
+    <Details v-if="detailsVisible" v-model:detailsVisible="detailsVisible" :active_bsm="active_bsm"></Details>
+    <Examination v-if="examinationVisible" v-model:examinationVisible="examinationVisible" :active_bsm="active_bsm"
+      @getlist="getlist"></Examination>
   </div>
 </template>
 
@@ -217,7 +150,7 @@ export default {
       active_name: "",
       formInline: {
         xmmc: "",
-        ghlx: "",
+        ghlx: "3",
         xzqdm: "",
         page: 1,
         limit: 20,
@@ -262,7 +195,12 @@ export default {
                 cgdb.loading = false;
               });
           } else {
-            ElMessage.warning("请先联系管理员配置审查模型,再进行审查!");
+            store.commit("SET_XMSCVIEWINFO", row);
+            router.push({
+              path: "/ghcgscygl/cgsc/cgyb",
+              query: { open: true },
+            });
+            //ElMessage.warning("请先联系管理员配置审查模型,再进行审查!");
           }
         } else {
           // 打开项目审查页面(弃用)

+ 614 - 0
website/src/views/ghcgscygl/ghcgsb/SearchZzq.vue

@@ -0,0 +1,614 @@
+<template>
+  <div class="qxyh max-box flex-box column">
+    <div class="header flex-box align-center box-sizing">
+      <div class="header-left">
+        <el-form :inline="true" :model="formInline">
+          <el-form-item label="标题:">
+            <el-input v-model="formInline.subject"></el-input>
+          </el-form-item>
+          <el-form-item label="办理状态:">
+            <el-select v-model="formInline.status" placeholder="请选择">
+              <!-- <el-option label="已办" value="1"></el-option>
+              <el-option label="待办" value="2"></el-option> -->
+              <el-option label="修编" value="3"></el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item label="规划类型:">
+            <el-select v-model="formInline.planType" placeholder="请选择">
+              <el-option label="总体规划" value="1"></el-option>
+              <el-option label="村庄规划" value="2"></el-option>
+              <el-option label="报批项目" value="3"></el-option>
+              <el-option label="总体规划(对部)" value="4"></el-option>
+              <el-option label="详细规划" value="5"></el-option>
+              <el-option label="专项规划" value="6"></el-option>
+              <el-option label="乡镇苏木国土空间规划" value="7"></el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item label="行政区:">
+            <el-cascader
+              :options="xzoptions"
+              :props="{
+                ...props,
+                checkStrictly: true,
+                expandTrigger: 'hover',
+              }"
+              v-model="xzqCode"
+              clearable
+              ref="cascader"
+              class="cascader-style"
+              style="width: 90%"
+              popper-class="popper-cascader"
+              :filterable="true"
+              @change="setXzqdm"
+              :show-all-levels="false"
+            ></el-cascader>
+          </el-form-item>
+          <el-button
+            type="primary"
+            @click="changeForm"
+            style="margin-left: 20px"
+            >查询</el-button
+          >
+        </el-form>
+      </div>
+    </div>
+    <div class="table-layout flex-box column height-100-60">
+      <div class="table max-width height-100-50">
+        <el-table
+          ref="multipleTable"
+          :data="tableData1"
+          style="width: 100%"
+          border
+          fit
+          cell-class-name="cell-item"
+          height="100%"
+          tooltip-effect="dark"
+          v-show="formInline.status == '1'"
+        >
+          <el-table-column prop="id" label="记录主键" align="center">
+          </el-table-column>
+          <el-table-column prop="subject" label="标题" align="center">
+          </el-table-column>
+          <el-table-column prop="instId" label="流程主键" align="center">
+          </el-table-column>
+          <el-table-column prop="createBy" label="创建用户" align="center">
+          </el-table-column>
+          <el-table-column prop="solId" label="方案主键" align="center">
+          </el-table-column>
+          <el-table-column prop="createTime" label="创建时间" align="center">
+          </el-table-column>
+          <el-table-column prop="status" label="状态" align="center">
+          </el-table-column>
+          <el-table-column
+            label="操作"
+            align="center"
+            type="flex"
+            justity="space-between"
+            width="220"
+          >
+            <template #default="scope">
+              <div class="">
+                <el-button
+                  type="primary"
+                  size="mini"
+                  @click="open(scope.row)"
+                  style="display: inline-block"
+                  >审批记录</el-button
+                >
+                <el-button
+                  type="primary"
+                  size="mini"
+                  style="display: inline-block"
+                  @click="download(scope.row)"
+                  v-if="formInline.planType == '1'"
+                  >审查报告</el-button
+                >
+              </div>
+            </template>
+          </el-table-column>
+        </el-table>
+
+        <el-table
+          ref="multipleTable2"
+          :data="tableData2"
+          style="width: 100%"
+          border
+          fit
+          cell-class-name="cell-item"
+          height="100%"
+          tooltip-effect="dark"
+          v-show="formInline.status == '2' || formInline.status == '3'"
+        >
+          <el-table-column prop="id" label="记录主键" align="center">
+          </el-table-column>
+          <el-table-column prop="title" label="成果名称" align="center">
+          </el-table-column>
+          <el-table-column prop="instId" label="流程主键" align="center">
+          </el-table-column>
+          <el-table-column prop="nodeName" label="流程节点名称" align="center">
+          </el-table-column>
+          <el-table-column prop="solId" label="方案主键" align="center">
+          </el-table-column>
+          <el-table-column prop="createTime" label="创建时间" align="center">
+          </el-table-column>
+          <el-table-column prop="executor" label="执行人" align="center">
+          </el-table-column>
+          <el-table-column
+            label="操作"
+            align="center"
+            type="flex"
+            justity="space-between"
+            width="220"
+          >
+            <template #default="scope">
+              <div class="">
+                <el-button
+                  v-if="formInline.status == '3'"
+                  type="primary"
+                  size="mini"
+                  @click="open(scope.row)"
+                  style="display: inline-block"
+                  >审批记录</el-button
+                >
+                <el-button
+                  v-if="formInline.status == '3'"
+                  type="primary"
+                  size="mini"
+                  @click="xbUpload(scope.row)"
+                  style="display: inline-block"
+                  >修编</el-button
+                >
+                <el-button
+                  v-if="
+                    ($store.getters.roles.join(',').indexOf('qixian') > -1 ||
+                      $store.getters.roles.join(',').indexOf('shiji') > -1) &&
+                    scope.row &&
+                    scope.row.nodeName == '补正'
+                  "
+                  type="primary"
+                  size="mini"
+                  @click="upload(scope.row)"
+                  style="display: inline-block"
+                  :disabled="instids.indexOf(scope.row.instId) > -1"
+                  >上传</el-button
+                >
+              </div>
+            </template>
+          </el-table-column>
+        </el-table>
+      </div>
+      <div class="flex-box footer height-50 flex-box align-center box-sizing">
+        <el-pagination
+          @size-change="handleSizeChange"
+          @current-change="handleCurrentChange"
+          :current-page="formInline.current"
+          :page-sizes="[10, 20, 50, 100]"
+          :page-size="formInline.size"
+          background
+          :pager-count="5"
+          layout="total, sizes, prev, pager, next, jumper"
+          :total="formInline.total"
+        >
+        </el-pagination>
+      </div>
+    </div>
+    <ShjlDialog
+      v-model:list="shjllist"
+      v-model:ShjlDialog="shjlShow"
+      v-if="shjlShow"
+      style="margin-top: 300px"
+    ></ShjlDialog>
+    <GhcgDialog
+      v-if="ztghDialog"
+      v-model:ghcgscDialog="ztghDialog"
+      :isCity="
+        $store.getters.roles.join(',').indexOf('qixian') > -1 ? false : true
+      "
+      :instid="instid"
+      @refresh="changeForm"
+      @getlist="changeForm"
+    ></GhcgDialog>
+    <CzghcgDialog
+      v-if="ghcgscDialog"
+      v-model:ghcgscDialog="ghcgscDialog"
+      :instid="instid"
+      @refresh="changeForm"
+      @getlist="changeForm"
+    ></CzghcgDialog>
+    <XxghcgDialog
+      v-if="xxghcgscDialog"
+      v-model:xxghcgscDialog="xxghcgscDialog"
+      :instid="instid"
+      @refresh="changeForm"
+      @getlist="changeForm"
+    ></XxghcgDialog>
+    <el-dialog
+      title="修编上传"
+      v-model="dialogVisible"
+      style="width: 360px; height: 300px"
+      :before-close="handleClose"
+      append-to-body
+    >
+      <div style="width: 100%; height: 100%">
+        <el-form label-width="100px">
+          <el-form-item label="选择文件">
+            <el-upload
+              ref="fileUploadBtn"
+              :limit="1"
+              :file-list="fileList"
+              :on-change="handleChangeFile"
+              :on-remove="handleRemove"
+              :auto-upload="false"
+              :show-file-list="true"
+            >
+              <el-button size="small" type="primary">点击上传</el-button>
+            </el-upload>
+          </el-form-item>
+          <el-form-item label="流程主键">
+            <el-input
+              readonly
+              v-model="instid"
+              placeholder="请输入流程主键"
+            ></el-input>
+          </el-form-item>
+        </el-form>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="xbSubmit()" size="small"
+          >修编</el-button
+        >
+      </span>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { reactive, toRefs, ref } from "@vue/reactivity";
+import { getCurrentInstance, onMounted } from "@vue/runtime-core";
+import {
+  getLandMyAttendsData,
+  getLandGetAllTasks,
+  getLandTaskStatus,
+  reportDownloadAction,
+  getInstIds,
+  getcgglInstIds,
+  getLandGetRevisePageData,
+  reuploadThirdpartyReviseData,
+} from "@/api/ghcgysc/search.js";
+import ShjlDialog from "@/components/ghcgscygl/ghcgsb/search/Shjl.vue";
+import GhcgDialog from "@/components/ghcgscygl/ghcgsb/ztgh/ghcgDialog.vue";
+import CzghcgDialog from "@/components/ghcgscygl/ghcgsb/xxgh/czgh/Qxyh/czghcgDialog.vue";
+import XxghcgDialog from "@/components/ghcgscygl/ghcgsb/xxgh/xxgh/Qxyh/czghcgDialog.vue";
+import { ElMessage } from "element-plus";
+import { GetXzq } from "@/api/homeApi.js";
+export default {
+  components: {
+    ShjlDialog,
+    GhcgDialog,
+    CzghcgDialog,
+    XxghcgDialog,
+  },
+  setup(props, context) {
+    const { proxy } = getCurrentInstance();
+    const parent = { ...context };
+    const qxyh = reactive({
+      formInline: {
+        status: "3",
+        planType: "1",
+        current: 1,
+        size: 20,
+        total: 0,
+        divisionCode: "",
+        subject: "",
+      },
+      fileList: [],
+      xbfile: null,
+      dialogVisible: false,
+      xzqCode: [],
+      xzoptions: [],
+      instid: "",
+      instids: "",
+      cascader: ref(null),
+      multipleTable: ref(null),
+      ckxqDialog: false,
+      ztghDialog: false,
+      ghcgscDialog: false,
+      xxghcgscDialog: false,
+      ghcgbjDialog: false,
+      editDialogVisible: false, //公共弹窗
+      activeCg: {},
+      activeCgb: {},
+      options: [],
+      shjllist: [],
+      shjlShow: false,
+      tableData1: [],
+      tableData2: [],
+      dialogTitle: "",
+      dialogMessage1: "",
+      dialogMessage2: "",
+      editStatus: "",
+      name: "",
+      index: "",
+      uuidList: [],
+      uuidList1: "",
+      handleSizeChange(val) {
+        qxyh.formInline.size = val;
+        qxyh.getlist2();
+      },
+      handleCurrentChange(val) {
+        qxyh.formInline.current = val;
+        qxyh.getlist2();
+      },
+      // 筛选
+      changeForm() {
+        qxyh.formInline.current = 1;
+        qxyh.getlist();
+      },
+      // 查询
+      onSearch() {
+        qxyh.getlist();
+      },
+      // 详情
+      detail(activeCg) {
+        qxyh.activeCg = activeCg;
+        qxyh.ckxqDialog = true;
+      },
+      handleClose() {
+        qxyh.dialogVisible = false;
+        qxyh.xbfile = null;
+        qxyh.fileList = [];
+      },
+      // 审核记录
+      open(row) {
+        let id = row.id;
+        let instId = row.instId;
+        getLandTaskStatus({
+          id: id,
+          instId: instId,
+        }).then((res) => {
+          if (res && res.data && res.data.length > 0) {
+            qxyh.shjllist = res.data;
+            qxyh.shjlShow = true;
+          } else {
+            ElMessage.error("审核记录列表为空");
+          }
+        });
+      },
+      // 修编记录
+      xbUpload(row) {
+        let id = row.id;
+        let instId = row.instId;
+        qxyh.instid = instId;
+        qxyh.dialogVisible = true;
+      },
+      handleRemove() {
+        qxyh.xbfile = null;
+        qxyh.fileList = [];
+      },
+      handleChangeFile(file, fileList) {
+        qxyh.xbfile = file.raw;
+        qxyh.fileList = fileList;
+      },
+      xbSubmit() {
+        if (!qxyh.instid) {
+          ElMessage.error("请输入流程主键");
+        } else if (!qxyh.xbfile) {
+          ElMessage.error("请选择修编文件");
+        } else {
+          console.log("开始修编上传");
+          const formdata = new FormData();
+          formdata.append("file", qxyh.xbfile);
+          formdata.append("instid", qxyh.instid);
+          reuploadThirdpartyReviseData(formdata).then((res) => {
+            if (res.success) {
+              ElMessage.success("修编上传成功");
+              qxyh.dialogVisible = false;
+              qxyh.xbfile = null;
+              qxyh.fileList = [];
+            } else {
+              ElMessage.error("修编上传失败");
+            }
+          });
+        }
+      },
+      setXzqdm() {
+        if (qxyh.xzqCode && qxyh.xzqCode.length > 0) {
+          qxyh.formInline.divisionCode = qxyh.xzqCode[qxyh.xzqCode.length - 1];
+        } else {
+          qxyh.formInline.divisionCode = "";
+        }
+        console.log(qxyh.formInline.divisionCode);
+      },
+      upload(row) {
+        qxyh.instid = row.instId;
+        if (qxyh.formInline.planType == "1") {
+          qxyh.ztghDialog = true;
+        } else if (qxyh.formInline.planType == "2") {
+          qxyh.ghcgscDialog = true;
+        } else if (qxyh.formInline.planType == "3") {
+          qxyh.ztghDialog = true;
+        }
+      },
+      // 获取行政区
+      getXzq() {
+        GetXzq({ city: true }).then((res) => {
+          if (res.success) {
+            qxyh.xzoptions = proxy.$comfun.resetTree(res.data);
+          }
+        });
+      },
+      // 审查报告
+      download(row) {
+        let id = row.id;
+        let solId = row.solId;
+        reportDownloadAction({
+          id: id,
+          solId: solId,
+        }).then((res) => {
+          if (res.type == "application/json") {
+            ElMessage.info("质检审查报告暂没生成。");
+          } else {
+            let blob = new Blob([res], { type: "application/zip" });
+            qxyh.ways(blob, ".zip");
+          }
+        });
+      },
+      //创建文件超链接并进行下载
+      ways(blob, suffix, res) {
+        let elink = document.createElement("a");
+        elink.style.display = "none"; // 隐藏标签
+        elink.href = window.URL.createObjectURL(blob); // 配置href
+        // 获取后端返回的响应头中的名称
+        // let filename = res.headers["content-disposition"];
+        // let newFilename = filename.split(";")[1].split("=")[1];
+        let newFilename = "report" + suffix;
+        newFilename = decodeURIComponent(newFilename);
+        elink.download = newFilename;
+        elink.click();
+        URL.revokeObjectURL(elink.href); // 释放URL 对象(弹出框进行下载)
+        document.body.removeChild(elink); // 移除<a>标签
+      },
+      // 获取列表数据
+      getlist2() {
+        if (qxyh.formInline.status == 1) {
+          getLandMyAttendsData(qxyh.formInline).then((res) => {
+            qxyh.tableData1 = res.data.records;
+            qxyh.formInline.total = res.data.total || 999;
+          });
+        } else if (qxyh.formInline.status == 3) {
+          getLandGetRevisePageData(qxyh.formInline).then((res) => {
+            qxyh.tableData2 = res.data.records;
+            qxyh.formInline.total = res.data.total || 999;
+          });
+        } else if (qxyh.formInline.status == 2) {
+          getLandGetAllTasks(qxyh.formInline).then((res) => {
+            qxyh.formInline.total = res.data.total || 999;
+            //待办的村庄规划需要检查补正的状态,未补正的可以上传成果包
+            if (
+              qxyh.formInline.planType == 2 ||
+              qxyh.formInline.planType == 3
+            ) {
+              getInstIds().then((res2) => {
+                qxyh.instids = res2.data.join(",");
+                qxyh.tableData2 = res.data.records;
+              });
+            } else {
+              getcgglInstIds().then((res2) => {
+                qxyh.instids = res2.data.join(",");
+                qxyh.tableData2 = res.data.records;
+              });
+            }
+          });
+        } else {
+          ElMessage.error("请选择规划类型");
+        }
+      },
+      // 获取列表数据
+      getlist() {
+        if (qxyh.formInline.status == 1) {
+          getLandMyAttendsData(qxyh.formInline).then((res) => {
+            qxyh.formInline.current = 1;
+            qxyh.tableData1 = res.data.records;
+            qxyh.formInline.total = res.data.total || 999;
+          });
+        } else if (qxyh.formInline.status == 2) {
+          getLandGetAllTasks(qxyh.formInline).then((res) => {
+            qxyh.formInline.current = 1;
+            qxyh.formInline.total = res.data.total || 999;
+            //待办的村庄规划需要检查补正的状态,未补正的可以上传成果包
+            if (
+              qxyh.formInline.planType == 2 ||
+              qxyh.formInline.planType == 3
+            ) {
+              getInstIds().then((res2) => {
+                qxyh.instids = res2.data.join(",");
+                qxyh.tableData2 = res.data.records;
+              });
+            } else {
+              getcgglInstIds().then((res2) => {
+                qxyh.instids = res2.data.join(",");
+                qxyh.tableData2 = res.data.records;
+              });
+            }
+          });
+        } else if (qxyh.formInline.status == 3) {
+          getLandGetRevisePageData(qxyh.formInline).then((res) => {
+            qxyh.formInline.current = 1;
+            qxyh.tableData2 = res.data.records;
+            qxyh.formInline.total = res.data.total || 999;
+          });
+        } else {
+          ElMessage.error("请选择规划类型");
+        }
+      },
+      calcTableData() {
+        if (qxyh.formInline.status == 1) {
+          qxyh.tableData1Cur = [];
+          for (
+            let i = (qxyh.formInline.current - 1) * qxyh.formInline.size;
+            i < qxyh.formInline.current * qxyh.formInline.size;
+            i++
+          ) {
+            qxyh.tableData1Cur.push(qxyh.tableData1[i]);
+          }
+        } else if (qxyh.formInline.status == 2) {
+          qxyh.tableData2Cur = [];
+          for (
+            let i = (qxyh.formInline.current - 1) * qxyh.formInline.size;
+            i < qxyh.formInline.current * qxyh.formInline.size;
+            i++
+          ) {
+            qxyh.tableData2Cur.push(qxyh.tableData2[i]);
+          }
+        }
+      },
+    });
+    onMounted(() => {
+      //   qxyh.getlist();
+      //   qxyh.getXzq();
+      qxyh.getXzq();
+    });
+    return { ...toRefs(qxyh) };
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.qxyh {
+  .header {
+    border-bottom: 1px solid rgb(230, 230, 230);
+    justify-content: space-between;
+    flex-wrap: nowrap;
+    height: 60px;
+  }
+  .header-left {
+    margin-left: 20px;
+  }
+  :deep(.el-form-item) {
+    margin-bottom: 0;
+  }
+  .footer {
+    width: 100%;
+    padding: 10px;
+  }
+}
+</style>
+<style lang="less">
+.popper-cascader {
+  .el-cascader-menu {
+    max-height: 400px;
+    overflow: auto;
+    height: inherit;
+  }
+}
+.search-btn {
+  position: absolute;
+  right: -40px;
+}
+.dialog-footer {
+  width: 100%;
+  text-align: center;
+  position: absolute;
+  bottom: 30px;
+}
+</style>

+ 88 - 15
website/src/views/ghcgscygl/ghcgsb/xxgh/Czgh/Qxyh.vue

@@ -3,6 +3,12 @@
     <div class="header flex-box align-center box-sizing">
       <div class="header-left">
         <el-form :inline="true" :model="formInline">
+          <el-form-item label="成果包名称:">
+            <el-input
+              v-model="formInline.fileName"
+              type="text"
+            ></el-input>
+          </el-form-item>
           <el-form-item label="行政区:" style="width: 280px">
             <el-cascader
               :options="xzoptions"
@@ -17,7 +23,6 @@
               class="cascader-style"
               popper-class="popper-cascader"
               :filterable="true"
-              @change="setXzqdm"
               :show-all-levels="false"
             ></el-cascader>
           </el-form-item>
@@ -25,21 +30,15 @@
             <el-select
               v-model="formInline.status"
               placeholder="全部"
-              @change="changeForm"
+              clearable
             >
               <el-option label="" value="">全部</el-option>
+              <el-option label="待审" value="10"></el-option>
               <el-option label="未上报" value="11"></el-option>
               <el-option label="已上报" value="12"></el-option>
               <!-- <el-option label="退回" value="14"></el-option> -->
             </el-select>
           </el-form-item>
-          <el-form-item label="成果包名称:">
-            <el-input
-              v-model="formInline.fileName"
-              type="text"
-              @change="changeForm"
-            ></el-input>
-          </el-form-item>
           <el-button type="primary" @click="onSearch" style="margin-left: 20px"
             >查询</el-button
           >
@@ -49,12 +48,12 @@
         <el-button type="primary" @click="ghcgscDialog = true"
           >上传村庄规划成果包</el-button
         >
-        <el-button
+        <!-- <el-button
           type="primary"
           @click="pushPlus()"
           v-if="showType == 'manager'"
           >批量上报至市</el-button
-        >
+        > -->
       </div>
     </div>
     <div class="table-layout flex-box column height-100-60">
@@ -155,6 +154,10 @@
                       uploadStatus1(scope.row.uploadStatus) !== '上传成功'
                     " -->
                 </slot>
+                <slot name="startjqsc" :item="scope.row">
+                    <el-button type="text" class="caozuo" v-if="scope.row.status == '10' && !scope.row.msg"
+                      @click="startscmodel(scope.row)">发起审查</el-button>
+                  </slot>
                 <slot name="bj">
                   <el-button
                     type="text"
@@ -168,13 +171,13 @@
                     >编辑</el-button
                   >
                 </slot>
-                <slot name="sbzzzq" v-if="showType == 'manager'">
+                <slot name="sbzzzq">
                   <el-button
                     type="text"
                     class="caozuo"
                     @click="showDialog(scope.row, 1, scope.$index)"
-                    :disabled="
-                      !(
+                    v-if="
+                      (
                         uploadStatus1(scope.row.uploadStatus) === '上传成功' &&
                         uploadStatus(scope.row.status) === '未上报'
                       )
@@ -257,6 +260,29 @@
         </span>
       </template>
     </el-dialog>
+    <el-dialog title="发起审查" v-model="startjqscVisible" style="width: 360px">
+      <el-form :model="jqscform" ref="jqscformModel" :rules="formrule">
+        <el-form-item prop="cgid" label="成果编号" :label-width="formLabelWidth" class="margin-item">
+          <el-input v-model="jqscform.cgid" placeholder="请输入成果编号" disabled></el-input>
+        </el-form-item>
+        <el-form-item prop="jqscmodel" label="机器审查模型" :label-width="formLabelWidth" class="margin-item">
+          <el-select v-model="jqscform.jqscmodel" placeholder="请选择审查模型">
+          </el-select>
+        </el-form-item>
+        <el-form-item prop="scmodel" class="margin-item" label="人工审查模型" :label-width="formLabelWidth">
+          <el-select v-model="jqscform.scmodel" placeholder="请选择审查模型">
+            <el-option v-for="item in scmxList" :label="item.name" :value="item.id"></el-option>
+          </el-select>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" style="text-align: center">
+        <el-button type="primary" @click="startsc()">审 查</el-button>
+        <el-button @click="startjqscVisible = false">取 消</el-button>
+        <!-- <el-button type="primary" @click="startjqscVisible = false"
+          >跳过机审</el-button
+        > -->
+      </div>
+    </el-dialog>
     <XqDialog
       v-model:ckxqDialog="ckxqDialog"
       v-model:cgDetail="activeCg"
@@ -281,6 +307,7 @@
 import { reactive, toRefs, ref } from "@vue/reactivity";
 import { getCurrentInstance, onMounted, watch } from "@vue/runtime-core";
 import { GetXzq } from "@/api/homeApi.js";
+import { scmxlist, startczghcgsc } from "@/api/ghcgysc/cggl.js";
 import { Getlist, ReportSubmit, Delete } from "@/api/ghcgysc/czghApi.js";
 import XqDialog from "@/components/ghcgscygl/ghcgsb/xxgh/czgh/Qxyh/xqDialog.vue";
 import CzghcgDialog from "@/components/ghcgscygl/ghcgsb/xxgh/czgh/Qxyh/czghcgDialog.vue";
@@ -311,6 +338,20 @@ export default {
         limit: 20,
         total: 0,
       },
+      startjqscVisible: false,
+      formLabelWidth: "120px",
+      jqscform: {
+        scmodel: "",
+        jqscmodel: "",
+        cgid: "",
+      },
+      formrule: {
+        scmodel: [
+          { required: true, message: "请选择审查模型", trigger: "blur" },
+        ],
+        cgid: [{ required: true, message: "请输入成果编号", trigger: "blur" }],
+      },
+      scmxList: [],
       xzoptions: [],
       cascader: ref(null),
       multipleTable: ref(null),
@@ -398,13 +439,41 @@ export default {
         qxyh.formInline.page = 1;
         qxyh.getlist();
       },
+      startscmodel(row) {
+        qxyh.startjqscVisible = true;
+        qxyh.jqscform.cgid = row.uuid;
+      },
+      startsc() {
+        this.$refs.jqscformModel.validate(function (valid, msg) {
+          if (valid) {
+            console.log("表单校验成功");
+            startczghcgsc(qxyh.jqscform).then((res) => {
+              if (res.success) {
+                qxyh.startjqscVisible = false;
+                qxyh.getlist();
+                ElMessage.success(res.message);
+              } else {
+                ElMessage.error(res.message);
+              }
+            });
+          } else {
+            console.log("表单校验失败");
+            return false;
+          }
+        });
+      },
+      getScmxlist() {
+        scmxlist().then((res) => {
+          qxyh.scmxList = res.data;
+        });
+      },
       // 查询
       onSearch() {
         qxyh.getlist();
       },
       // 上报状态
       uploadStatus(status) {
-        let arr = ["未上报", "已上报"];
+        let arr = ["待审","未上报", "已上报"];
         return arr[status - 10];
       },
       // 上传状态
@@ -518,6 +587,7 @@ export default {
       }
       qxyh.getlist();
       qxyh.getXzq();
+      qxyh.getScmxlist();
     });
     watch(
       () => qxyh.formInline.xzqCode,
@@ -573,4 +643,7 @@ export default {
   position: absolute;
   right: -40px;
 }
+.margin-item {
+  margin-bottom: 20px !important;
+}
 </style>

+ 6 - 1
website/src/views/ghcgscygl/ghcgsb/ztgh/Qxjghcg.vue

@@ -1,6 +1,6 @@
 <template>
   <Sjyh v-model:showTypeInfo="showTypeInfo" v-if="showTypeInfo.type==='shiji'"></Sjyh>
-  <Qxyh v-model:showTypeInfo="showTypeInfo" v-else-if="showTypeInfo.type==='common'|| showTypeInfo.type==='manager'"></Qxyh>
+  <Qxyh :plantype="plantype" v-model:showTypeInfo="showTypeInfo" v-else-if="showTypeInfo.type==='common'|| showTypeInfo.type==='manager'"></Qxyh>
   <Scjg v-model:showTypeInfo="showTypeInfo" v-else-if="showTypeInfo.type==='scjg'" :act_tab="act_tab"></Scjg>
 </template>
 
@@ -17,6 +17,11 @@ export default {
     Sjyh,
     Scjg
   },
+  props: {
+    plantype: {
+      type: String,
+    },
+  },
   setup(prop) {
     const store = useStore()
     const sjghcg = reactive({

+ 144 - 203
website/src/views/ghcgscygl/ghcgsb/ztgh/Qxjghcg/Qxyh.vue

@@ -4,11 +4,7 @@
       <div class="header-left">
         <el-form :inline="true" :model="formInline">
           <el-form-item label="年份:">
-            <el-select
-              v-model="formInline.year"
-              placeholder="全部"
-              @change="changeForm"
-            >
+            <el-select v-model="formInline.year" placeholder="全部">
               <el-option label="" value="">全部</el-option>
               <el-option label="2024" value="2024"></el-option>
               <el-option label="2023" value="2023"></el-option>
@@ -22,11 +18,7 @@
             </el-select>
           </el-form-item>
           <el-form-item label="上报状态:">
-            <el-select
-              v-model="formInline.uploadstatus"
-              placeholder="全部"
-              @change="changeForm"
-            >
+            <el-select v-model="formInline.uploadstatus" placeholder="全部">
               <el-option label="" value="">全部</el-option>
               <el-option label="未上报" value="0"></el-option>
               <el-option label="已上报" value="1"></el-option>
@@ -38,27 +30,16 @@
               <!-- <el-option label="撤回" value="6"></el-option> -->
             </el-select>
           </el-form-item>
+          <el-button type="primary" @click="changeForm" style="margin-left: 20px">查询</el-button>
         </el-form>
       </div>
-      <div
-        class="margin-right-20"
-        v-if="$store.getters.roles.indexOf('shiji') === -1"
-      >
-        <el-button type="primary" @click="ghcgscDialog = true"
-          >规划成果上传</el-button
-        >
+      <div class="margin-right-20" v-if="$store.getters.roles.indexOf('shiji') === -1">
+        <el-button type="primary" @click="ghcgscDialog = true">规划成果上传</el-button>
       </div>
     </div>
     <div class="table-layout flex-box column height-100-60">
       <div class="table max-width height-100-50">
-        <el-table
-          :data="tableData"
-          style="width: 100%"
-          border
-          fit
-          cell-class-name="cell-item"
-          height="100%"
-        >
+        <el-table :data="tableData" style="width: 100%" border fit cell-class-name="cell-item" height="100%">
           <el-table-column label="序号" align="center" type="index" width="80">
             <template #default="scope">
               {{ (formInline.page - 1) * formInline.limit + scope.$index + 1 }}
@@ -70,28 +51,14 @@
           </el-table-column>
           <el-table-column prop="xzqmc" label="行政区" align="center">
           </el-table-column>
-          <el-table-column
-            v-if="$store.getters.roles.indexOf('shiji') === -1"
-            prop="fileupload"
-            label="上传状态"
-            align="center"
-          >
+          <el-table-column v-if="$store.getters.roles.indexOf('shiji') === -1" prop="fileupload" label="上传状态"
+            align="center">
             <template #default="scope">
-              <el-tag
-                v-if="
-                  scope.row.fileupload === '0' || scope.row.fileupload === '9'
-                "
-                >正在上传</el-tag
-              >
-              <el-tag v-if="scope.row.fileupload === '1'" type="success"
-                >上传成功</el-tag
-              >
-              <el-tag
-                @click="errorLogOpen(scope.row)"
-                v-if="scope.row.fileupload === '2'"
-                type="danger"
-                >上传失败</el-tag
-              >
+              <el-tag v-if="
+                scope.row.fileupload === '0' || scope.row.fileupload === '9'
+              ">正在上传</el-tag>
+              <el-tag v-if="scope.row.fileupload === '1'" type="success">上传成功</el-tag>
+              <el-tag @click="errorLogOpen(scope.row)" v-if="scope.row.fileupload === '2'" type="danger">上传失败</el-tag>
             </template>
           </el-table-column>
           <el-table-column prop="uploadtime" label="上报时间" align="center">
@@ -103,12 +70,7 @@
               </span>
             </template>
           </el-table-column>
-          <el-table-column
-            prop="sczt"
-            label="审查结果"
-            align="center"
-            style="position: relative"
-          >
+          <el-table-column prop="sczt" label="审查结果" align="center" style="position: relative">
             <template #default="scope">
               <!-- <div v-if="['3','7'].includes(scope.row.sczt)" style="color: #d9001b">
                 退回
@@ -131,104 +93,55 @@
               </span>
             </template>
           </el-table-column>
-          <el-table-column
-            label="操作"
-            align="center"
-            type="flex"
-            justity="space-between"
-            width="450"
-          >
+          <el-table-column label="操作" align="center" type="flex" justity="space-between" width="450">
             <template #default="scope">
               <div class="max-width">
                 <slot name="xq" :item="scope.row">
-                  <el-button
-                    type="text"
-                    class="caozuo"
-                    @click="detail(scope.row)"
-                    >详情</el-button
-                  >
+                  <el-button type="text" class="caozuo" @click="detail(scope.row)">详情</el-button>
+                  <slot name="startjqsc" :item="scope.row">
+                    <el-button type="text" class="caozuo" v-if="scope.row.fileupload == '9'"
+                      @click="startscmodel(scope.row)" :disabled="scope.row.fileupload != '9'">发起审查</el-button>
+                  </slot>
                   <!-- :disabled="!scope.row.fileid" -->
                 </slot>
                 <!-- scope.row.fileupload ===  '1' && -->
                 <slot name="sbzzzq">
-                  <el-button
-                    v-if="showType == 'manager'"
-                    type="text"
-                    class="caozuo"
-                    @click="showDialog(scope.row, 1)"
-                    :disabled="!(scope.row.fileid && scope.row.sczt === '2' && uploadStatus(scope.row.uploadstatus) === '未上报' )"
-                    >上报至市</el-button
-                  >
+                  <el-button v-if="showType == 'manager'" type="text" class="caozuo" @click="showDialog(scope.row, 1)"
+                    :disabled="!(scope.row.fileid && scope.row.sczt === '2' && uploadStatus(scope.row.uploadstatus) === '未上报')">上报至市</el-button>
                 </slot>
                 <slot name="ckscjg">
-                  <el-button
-                    type="text"
-                    class="caozuo"
-                    @click="viewSCJG(scope.row)"
-                    :disabled="scope.row.sczt !== '2'"
-                    >查看审查结果</el-button
-                  >
+                  <el-button type="text" class="caozuo" @click="viewSCJG(scope.row)"
+                    :disabled="scope.row.sczt !== '2'">查看审查结果</el-button>
                 </slot>
                 <slot name="ch">
-                  <el-button
-                    v-if="
-                      $store.getters.roles.indexOf('common') > -1 ||
-                      $store.getters.roles.indexOf('manager')
-                    "
-                    type="text"
-                    class="caozuo"
-                    @click="retractCg(scope.row)"
-                    :disabled="
-                      !(
+                  <el-button v-if="
+                    $store.getters.roles.indexOf('common') > -1 ||
+                    $store.getters.roles.indexOf('manager')
+                  " type="text" class="caozuo" @click="retractCg(scope.row)" :disabled="!(
                         uploadStatus(scope.row.uploadstatus) === '已上报' &&
                         scope.row.sczt === '4'
                       )
-                    "
-                    >撤回</el-button
-                  >
+                      ">撤回</el-button>
                 </slot>
-                <slot
-                  name="sbjd"
-                  v-if="
-                    $store.getters.roles.indexOf('common') > -1 ||
-                    $store.getters.roles.indexOf('manager') > -1
-                  "
-                >
-                  <el-button
-                    type="text"
-                    class="caozuo"
-                    @click="progressCg(scope.row)"
-                    >上报进度</el-button
-                  >
+                <slot name="sbjd" v-if="
+                  $store.getters.roles.indexOf('common') > -1 ||
+                  $store.getters.roles.indexOf('manager') > -1
+                ">
+                  <el-button type="text" class="caozuo" @click="progressCg(scope.row)">上报进度</el-button>
                 </slot>
                 <slot name="xz">
-                  <el-button
-                    type="text"
-                    class="caozuo"
-                    @click="downLoadCgFile(scope.row.id)"
-                    :disabled="!scope.row.id"
-                    >下载</el-button
-                  >
+                  <el-button type="text" class="caozuo" @click="downLoadCgFile(scope.row.id)"
+                    :disabled="!scope.row.id">下载</el-button>
                 </slot>
-                <slot
-                  name="sc"
-                  v-if="
-                    $store.getters.roles.indexOf('common') > -1 ||
-                    $store.getters.roles.indexOf('manager') > -1
-                  "
-                >
-                  <el-button
-                    type="text"
-                    class="caozuo"
-                    @click="showDialog(scope.row, 2)"
-                    :disabled="
-                      (
-                        scope.row.fileid &&
-                        scope.row.sczt === '2' || scope.row.sczt === '1'
-                      )
-                    "
-                    >删除</el-button
-                  >
+                <slot name="sc" v-if="
+                  $store.getters.roles.indexOf('common') > -1 ||
+                  $store.getters.roles.indexOf('manager') > -1
+                ">
+                  <el-button type="text" class="caozuo" @click="showDialog(scope.row, 2)" :disabled="(
+                      scope.row.fileid &&
+                      scope.row.sczt === '2' || scope.row.sczt === '1'
+                    )
+                    ">删除</el-button>
                 </slot>
               </div>
             </template>
@@ -236,91 +149,61 @@
         </el-table>
       </div>
       <div class="flex-box footer height-50 flex-box align-center box-sizing">
-        <el-pagination
-          @size-change="handleSizeChange"
-          @current-change="handleCurrentChange"
-          :current-page="formInline.page"
-          :page-sizes="[10, 20, 50, 100]"
-          :page-size="formInline.limit"
-          background
-          :pager-count="5"
-          layout="total, sizes, prev, pager, next, jumper"
-          :total="formInline.total"
-        >
+        <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
+          :current-page="formInline.page" :page-sizes="[10, 20, 50, 100]" :page-size="formInline.limit" background
+          :pager-count="5" layout="total, sizes, prev, pager, next, jumper" :total="formInline.total">
         </el-pagination>
       </div>
     </div>
-    <el-dialog
-      v-model="editDialogVisible"
-      :title="dialogTitle"
-      width="30%"
-      :before-close="handleClose"
-      :align-center="true"
-      style="white-space: initial"
-    >
+    <el-dialog v-model="editDialogVisible" :title="dialogTitle" width="30%" :before-close="handleClose"
+      :align-center="true" style="white-space: initial">
       <span>{{ dialogMessage1 + name + dialogMessage2 }}</span>
       <template #footer>
-        <span
-          class="dialog-footer"
-          v-show="sbjdProgress"
-          style="line-height: 40px"
-        >
-          <el-progress
-            :text-inside="true"
-            :stroke-width="20"
-            :percentage="sbjdPercentage"
-            :format="sbjdFormat"
-          ></el-progress>
+        <span class="dialog-footer" v-show="sbjdProgress" style="line-height: 40px">
+          <el-progress :text-inside="true" :stroke-width="20" :percentage="sbjdPercentage"
+            :format="sbjdFormat"></el-progress>
         </span>
         <span class="dialog-footer">
-          <el-button
-            @click="editDialogVisible = false"
-            style="margin-right: 20px"
-            :disabled="sbjdProgress"
-          >
+          <el-button @click="editDialogVisible = false" style="margin-right: 20px" :disabled="sbjdProgress">
             取消
           </el-button>
-          <el-button
-            type="primary"
-            :disabled="sbjdProgress"
-            @click="editQsStatus()"
-          >
+          <el-button type="primary" :disabled="sbjdProgress" @click="editQsStatus()">
             确定
           </el-button>
         </span>
       </template>
     </el-dialog>
-    <GhcgDialog
-      v-if="ghcgscDialog"
-      v-model:ghcgscDialog="ghcgscDialog"
-      :isCity="false"
-      @refresh="changeForm"
-    ></GhcgDialog>
-    <ScjgDialog
-      v-model:thyyDialog="thyyDialog"
-      v-model:cgDetail="activeCg"
-      :isCity="false"
-    ></ScjgDialog>
-    <XqDialog
-      v-model:ckxqDialog="ckxqDialog"
-      v-model:cgDetail="activeCg"
-    ></XqDialog>
-    <ChDialog
-      v-if="chDialog"
-      v-model:chDialog="chDialog"
-      v-model:cgDetail="activeCg"
-      @refresh="changeForm"
-    ></ChDialog>
-    <SbjdDialog
-      v-model:sbjdDialog="sbjdDialog"
-      v-model:cgDetail="activeCg"
-    ></SbjdDialog>
+    <el-dialog title="发起审查" v-model="startjqscVisible" style="width: 360px">
+      <el-form :model="jqscform" ref="jqscformModel" :rules="formrule">
+        <el-form-item prop="cgid" label="成果编号" :label-width="formLabelWidth" class="margin-item">
+          <el-input v-model="jqscform.cgid" placeholder="请输入成果编号" disabled></el-input>
+        </el-form-item>
+        <el-form-item prop="jqscmodel" label="机器审查模型" :label-width="formLabelWidth" class="margin-item">
+          <el-select v-model="jqscform.jqscmodel" placeholder="请选择审查模型">
+          </el-select>
+        </el-form-item>
+        <el-form-item prop="scmodel" class="margin-item" label="人工审查模型" :label-width="formLabelWidth">
+          <el-select v-model="jqscform.scmodel" placeholder="请选择审查模型">
+            <el-option v-for="item in scmxList" :label="item.name" :value="item.id"></el-option>
+          </el-select>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" style="text-align: center">
+        <el-button type="primary" @click="startsc()">审 查</el-button>
+        <el-button @click="startjqscVisible = false">取 消</el-button>
+        <!-- <el-button type="primary" @click="startjqscVisible = false"
+          >跳过机审</el-button
+        > -->
+      </div>
+    </el-dialog>
+    <GhcgDialog v-if="ghcgscDialog" v-model:ghcgscDialog="ghcgscDialog" :isCity="false" @refresh="changeForm">
+    </GhcgDialog>
+    <ScjgDialog v-model:thyyDialog="thyyDialog" v-model:cgDetail="activeCg" :isCity="false"></ScjgDialog>
+    <XqDialog v-model:ckxqDialog="ckxqDialog" v-model:cgDetail="activeCg"></XqDialog>
+    <ChDialog v-if="chDialog" v-model:chDialog="chDialog" v-model:cgDetail="activeCg" @refresh="changeForm"></ChDialog>
+    <SbjdDialog v-model:sbjdDialog="sbjdDialog" v-model:cgDetail="activeCg"></SbjdDialog>
   </div>
-  <errorLog
-    v-model:dialogLog="dialogLog"
-    v-model:logData="logData"
-    v-model:logName="logName"
-  ></errorLog>
+  <errorLog v-model:dialogLog="dialogLog" v-model:logData="logData" v-model:logName="logName"></errorLog>
 </template>
 
 <script>
@@ -335,6 +218,7 @@ import ChDialog from "@/components/ghcgscygl/ghcgsb/ztgh/chDialog.vue";
 import SbjdDialog from "@/components/ghcgscygl/ghcgsb/ztgh/sbjdDialog.vue";
 import request from "@/utils/request.js";
 import { GetXzqList } from "@/api/homeApi.js";
+import { scmxlist, startcgsc } from "@/api/ghcgysc/cggl.js";
 import { cgInfoList, cgDelete, updateCgInfo } from "@/api/ghcgysc/cgsbApi.js";
 import errorLog from "@/components/ghfxpj/wtsbztyy/errorLog.vue";
 import { ElMessage } from "element-plus";
@@ -351,6 +235,9 @@ export default {
     showTypeInfo: {
       type: String,
     },
+    plantype: {
+      type: String,
+    },
   },
   setup(prop, context) {
     const { proxy } = getCurrentInstance();
@@ -364,6 +251,20 @@ export default {
       }
     );
     const qxyh = reactive({
+      startjqscVisible: false,
+      formLabelWidth: "120px",
+      jqscform: {
+        scmodel: "",
+        jqscmodel: "",
+        cgid: "",
+      },
+      formrule: {
+        scmodel: [
+          { required: true, message: "请选择审查模型", trigger: "blur" },
+        ],
+        cgid: [{ required: true, message: "请输入成果编号", trigger: "blur" }],
+      },
+      scmxList: [],
       dialogLog: false, // 上传失败日志弹窗
       logData: "", // 错误日志信息
       logName: "", // 错误数据名称
@@ -415,9 +316,37 @@ export default {
         qxyh.formInline.page = val;
         qxyh.getlist();
       },
+      startscmodel(row) {
+        qxyh.startjqscVisible = true;
+        qxyh.jqscform.cgid = row.id;
+      },
+      startsc() {
+        this.$refs.jqscformModel.validate(function (valid, msg) {
+          if (valid) {
+            console.log("表单校验成功");
+            startcgsc(qxyh.jqscform).then((res) => {
+              if (res.success) {
+                qxyh.startjqscVisible = false;
+                qxyh.getlist();
+                ElMessage.success(res.message);
+              } else {
+                ElMessage.error(res.message);
+              }
+            });
+          } else {
+            console.log("表单校验失败");
+            return false;
+          }
+        });
+      },
+      getScmxlist() {
+        scmxlist().then((res) => {
+          qxyh.scmxList = res.data;
+        });
+      },
       // 显示弹窗
       showDialog(row, status) {
-        console.log(row,'row-----')
+        console.log(row, 'row-----')
         qxyh.editStatus = status;
         qxyh.editId = row.id;
         qxyh.name = row.name;
@@ -570,6 +499,9 @@ export default {
       },
       // 获取列表数据
       getlist() {
+        if(prop.plantype){
+          qxyh.formInline.plantype = prop.plantype
+        }
         cgInfoList({ ...qxyh.formInline }).then((res) => {
           qxyh.tableData = res.data;
           qxyh.formInline.total = res.recordstotal;
@@ -592,6 +524,7 @@ export default {
         qxyh.showType = "common";
       }
       qxyh.getXzqdm();
+      qxyh.getScmxlist();
     });
     return { ...toRefs(qxyh) };
   },
@@ -606,16 +539,20 @@ export default {
     flex-wrap: nowrap;
     height: 60px;
   }
+
   .header-left {
     margin-left: 20px;
   }
+
   :deep(.el-form-item) {
     margin-bottom: 0;
   }
+
   .footer {
     width: 100%;
     padding: 10px;
   }
+
   :deep(.height-100-50) {
     height: 76vh;
   }
@@ -629,4 +566,8 @@ export default {
     height: inherit;
   }
 }
+
+.margin-item {
+  margin-bottom: 20px !important;
+}
 </style>