Эх сурвалжийг харах

适配乌拉特前旗上报

wanger 5 сар өмнө
parent
commit
77f6300b68

+ 1 - 1
manager/.env.production

@@ -7,6 +7,6 @@ ENV = 'production'
 #启动端口
 port = '5002'
 # 国土空间规划“一张图”实施监督信息系统/生产环境
-VUE_APP_BASE_API = 'http://10.254.98.222:8080'
+VUE_APP_BASE_API = 'http://10.254.131.101:8080'
 #通辽部署环境
 #VUE_APP_BASE_API = 'http://10.255.133.174:8080'

+ 9 - 3
website/.env.production

@@ -19,9 +19,15 @@ port = '5000'
 #VITE_APP_SSO_BASE_API = 'http://10.255.137.105:8080'
 
 #准格尔旗部署环境
-VITE_APP_BASE_API = 'http://10.254.98.222:8080'
-VITE_ARC_SERVER_API = 'http://10.254.98.222:6080'
-VITE_APP_SSO_BASE_API = 'http://10.255.134.200:8080'
+#VITE_APP_BASE_API = 'http://10.254.98.222:8080'
+#VITE_ARC_SERVER_API = 'http://10.254.98.222:6080'
+#VITE_APP_SSO_BASE_API = 'http://10.255.134.200:8080'
+
+# 乌拉特前旗部署环境
+VITE_APP_BASE_API = 'http://10.254.131.101:8080'
+VITE_ARC_SERVER_API = 'http://10.254.131.101:6080'
+VITE_APP_SSO_BASE_API = 'http://10.254.131.101:8080'
+
 
 # 是否在打包时开启压缩,支持 gzip 和 brotli
 #VITE_BUILD_COMPRESS = gzip

+ 4 - 4
website/src/components/ghcgscygl/ghcgsb/search/Shjl.vue

@@ -20,26 +20,26 @@
             tooltip-effect="dark"
           >
             <el-table-column
-              prop="nodename"
+              prop="nodeName"
               label="流程节点名称"
               align="center"
             >
             </el-table-column>
             <el-table-column
-              prop="checkstatus"
+              prop="checkStatus"
               label="流程节点审批状态"
               align="center"
             >
             </el-table-column>
             <el-table-column
-              prop="completetime"
+              prop="completeTime"
               label="审批时间"
               align="center"
             >
             </el-table-column>
             <el-table-column prop="remark" label="审批意见" align="center">
             </el-table-column>
-            <el-table-column prop="ownerid" label="发起人" align="center">
+            <el-table-column prop="ownerId" label="发起人" align="center">
             </el-table-column>
           </el-table>
         </div>

+ 2 - 2
website/src/components/ghfxpj/kfsyxpj/czjssyx/textPj.vue

@@ -211,10 +211,10 @@ export default {
       setOption(data) {
         textPj.option.series[0].data = [];
         textPj.option.series[0].data.push({
-          value: data.bsymj.toFixed(2),
+          value: ((data && data.bsymj) ? parseFloat(data.bsymj).toFixed(2) : 0),
         });
         textPj.option.series[0].data.push({
-          value: data.symj.toFixed(2),
+          value: ((data && data.symj) ? parseFloat(data.symj).toFixed(2) : 0),
         });
       },
       init(data) {

+ 30 - 65
website/src/components/ghfxpj/kfsyxpj/stbhzyx/textPj.vue

@@ -1,9 +1,6 @@
 <template>
   <div class="textPj max-box box-sizing flex-box column align-center">
-    <div
-      class="max-width"
-      style="background-color: #fff"
-    >
+    <div class="max-width" style="background-color: #fff">
       <div class="header max-width height-50 flex-box align-center">
         <h2 class="padding-left-20">生态保护重要性评价</h2>
       </div>
@@ -19,51 +16,27 @@
       </div>
     </div>
     <!-- 评价范围 -->
-    <div
-      class="max-width margin-top-10"
-      style="background-color: #fff"
-      v-if="!isQiXian"
-    >
+    <div class="max-width margin-top-10" style="background-color: #fff" v-if="!isQiXian">
       <div class="header max-width height-50 flex-box align-center">
         <h2 class="padding-left-20">评价范围</h2>
       </div>
-      <div
-        class="height-110 overflow-hidden"
-        style="white-space: initial"
-      >
+      <div class="height-110 overflow-hidden" style="white-space: initial">
         <slot name="city"> </slot>
       </div>
     </div>
     <!--  -->
-    <div
-      class="max-box margin-top-10"
-      style="background-color: #fff"
-    >
-      <div
-        class="header max-width height-50 flex-box align-center"
-        style="justify-content: space-between"
-      >
+    <div class="max-box margin-top-10" style="background-color: #fff">
+      <div class="header max-width height-50 flex-box align-center" style="justify-content: space-between">
         <h2 class="padding-left-20">评价结果统计</h2>
         <div v-if="!isQiXian" class="flex-box align-center">
-          <el-icon
-            class="pointer font-22 margin-right-10"
-            @click="openImg"
-            title="查看图片"
-          ><picture-filled /></el-icon>
-          <el-icon
-            class="pointer font-22 margin-right-15"
-            @click="openbg"
-            title="查看报告"
-          >
+          <el-icon class="pointer font-22 margin-right-10" @click="openImg" title="查看图片"><picture-filled /></el-icon>
+          <el-icon class="pointer font-22 margin-right-15" @click="openbg" title="查看报告">
             <document />
           </el-icon>
         </div>
       </div>
       <div class="echarts flex-box align-center max-width justify-center posi-rel">
-        <div
-          id="fxjg"
-          :style="{ width: '100%', height: '100%' }"
-        ></div>
+        <div id="fxjg" :style="{ width: '100%', height: '100%' }"></div>
         <div class="echarts-text posi-abs flex-box column">
           <div class="echarts-text-item flex-box column font-14 margin-right-30">
             <div class="echarts-text-item-title margin-bottom-10">
@@ -72,19 +45,14 @@
             <div class="flex-box">
               <div class="flex-box column">
                 <span class="font-16 margin-bottom-5 font-bold">{{
-                  cityobj.jzymj ? cityobj.jzymj.toFixed(2) : ""
-                }}</span><span
-                  class="font-12"
-                  style="color: #a2a2a2"
-                >面积(平方千米)</span>
+                  (cityobj && cityobj.jzymj) ? cityobj.jzymj.toFixed(2) : ""
+                }}</span><span class="font-12" style="color: #a2a2a2">面积(平方千米)</span>
               </div>
               <div class="flex-box column margin-left-10 align-center">
                 <span class="font-16 margin-bottom-5 font-bold">{{
-                    ((cityobj.jzymj / (cityobj.jzymj + cityobj.zymj)) * 100).toFixed(2)
-                  }}%</span><span
-                  class="font-12"
-                  style="color: #a2a2a2"
-                >区域占比(%)</span>
+                  (cityobj && cityobj.jzymj && cityobj.zymj) ? ((cityobj.jzymj / (cityobj.jzymj + cityobj.zymj)) *
+                    100).toFixed(2) : 0
+                  }}%</span><span class="font-12" style="color: #a2a2a2">区域占比(%)</span>
               </div>
             </div>
           </div>
@@ -95,19 +63,13 @@
             <div class="flex-box">
               <div class="flex-box column">
                 <span class="font-16 margin-bottom-5 font-bold">{{
-                  cityobj.jzymj ? cityobj.zymj.toFixed(2) : ""
-                }}</span><span
-                  class="font-12"
-                  style="color: #a2a2a2"
-                >面积(平方千米)</span>
+                  (cityobj && cityobj.jzymj) ? cityobj.zymj.toFixed(2) : ""
+                }}</span><span class="font-12" style="color: #a2a2a2">面积(平方千米)</span>
               </div>
               <div class="flex-box column margin-left-10 align-center">
                 <span class="font-16 margin-bottom-5 font-bold">{{
-                    ((cityobj.zymj / (cityobj.jzymj + cityobj.zymj)) * 100).toFixed(2)
-                  }}%</span><span
-                  class="font-12"
-                  style="color: #a2a2a2"
-                >区域占比(%)</span>
+                  (cityobj && cityobj.zymj && cityobj.jzymj)?((cityobj.zymj / (cityobj.jzymj + cityobj.zymj)) * 100).toFixed(2) : 0
+                }}%</span><span class="font-12" style="color: #a2a2a2">区域占比(%)</span>
               </div>
             </div>
           </div>
@@ -115,11 +77,7 @@
       </div>
     </div>
     <div>
-      <ElImageViewer
-        :url-list="imglist"
-        v-if="showBig"
-        @close="showBig = false"
-      ></ElImageViewer>
+      <ElImageViewer :url-list="imglist" v-if="showBig" @close="showBig = false"></ElImageViewer>
     </div>
   </div>
 </template>
@@ -159,7 +117,7 @@ export default {
     const { proxy } = getCurrentInstance();
     const parent = { ...context };
     const textPj = reactive({
-      isQiXian:store.state.user.isQiXian,
+      isQiXian: store.state.user.isQiXian,
       myChart: {},
       showBig: false,
       imglist: [],
@@ -205,10 +163,10 @@ export default {
       setOption(data) {
         textPj.option.series[0].data = [];
         textPj.option.series[0].data.push({
-          value: parseFloat(data.jzymj).toFixed(2),
+          value: ((data && data.jzymj) ? parseFloat(data.jzymj).toFixed(2) : 0),
         });
         textPj.option.series[0].data.push({
-          value: parseFloat(data.zymj).toFixed(2),
+          value: ((data && data.zymj) ? parseFloat(data.zymj).toFixed(2) : 0),
         });
       },
       init(data) {
@@ -217,9 +175,9 @@ export default {
         textPj.setOption(data);
         // 
         if (!textPj.isQiXian) {
-          textPj.option.series[0].radius=["30%", "60%"]
+          textPj.option.series[0].radius = ["30%", "60%"]
         } else {
-          textPj.option.series[0].radius=["25%", "45%"]
+          textPj.option.series[0].radius = ["25%", "45%"]
         }
         textPj.option && proxy.$unwarp(textPj.myChart).setOption(textPj.option);
       },
@@ -283,10 +241,12 @@ export default {
 .textPj {
   padding-right: 15px;
   border-right: 1px solid #e6e6e6;
+
   .header {
     border-bottom: 1px solid #e6e6e6;
     box-sizing: border-box;
   }
+
   .content {
     padding-bottom: 20px;
     height: 180px;
@@ -295,11 +255,14 @@ export default {
     line-height: 30px;
     text-align: justify;
   }
+
   .echarts {
     height: calc(100% - 50px);
     overflow: hidden;
+
     .echarts-text {
       right: 20px;
+
       .echarts-text-item {
         .echarts-text-item-title::before {
           content: "";
@@ -312,6 +275,7 @@ export default {
           border-radius: 50%;
           background-color: rgb(28, 179, 2);
         }
+
         .echarts-text-item-title2::before {
           content: "";
           display: inline-block;
@@ -327,6 +291,7 @@ export default {
       }
     }
   }
+
   .footer {
     height: 100%;
   }

+ 8 - 3
website/src/utils/websocket.js

@@ -56,18 +56,23 @@ export const socket = {
     //心跳检测
     heartbeat() {
         socket.clientTimeout = setTimeout(() => {
-            if (socket.websocket) {
+            console.log("socket.websocket.readyState==" + socket.websocket.readyState);
+            if (socket.websocket && socket.websocket.readyState == 1) {
                 //向后台发送消息进行心跳检测
                 socket.websocket.send("");
                 // socket.websocketState = false;
                 //一分钟内服务器不响应则关闭连接
                 socket.serverTimeout = setTimeout(() => {
                     if (!socket.websocketState) {
-                        socket.websocket.onclose()
+                        socket.websocket.onclose();
                     } else {
-                        this.resetHeartbeat()
+                        this.resetHeartbeat();
                     }
                 }, 100);
+            } else {
+                socket.serverTimeout = setTimeout(() => {
+                    this.resetHeartbeat();
+                }, 100);
             }
         }, 100);
     },

+ 203 - 107
website/src/views/ghcgscygl/ghcgsb/Search.vue

@@ -25,123 +25,239 @@
             </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" @change="setXzqdm" class="cascader-style" style="width: 90%"
-              popper-class="popper-cascader" :filterable="true" :show-all-levels="false"></el-cascader>
+            <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-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
+          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 prop="instId" label="流程主键" align="center">
           </el-table-column>
-          <el-table-column prop="nodename" label="流程节点名称" align="center">
+          <el-table-column prop="nodeName" label="流程节点名称" align="center">
           </el-table-column>
-          <el-table-column prop="createby" label="创建用户" align="center">
+          <el-table-column prop="createBy" label="创建用户" align="center">
           </el-table-column>
-          <el-table-column prop="solid" label="方案主键" align="center">
+          <el-table-column prop="solId" label="方案主键" align="center">
           </el-table-column>
-          <el-table-column prop="createtime" label="创建时间" align="center">
+          <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">
+          <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>
+                <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
+          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 prop="instId" label="流程主键" align="center">
           </el-table-column>
-          <el-table-column prop="nodename" label="流程节点名称" align="center">
+          <el-table-column prop="nodeName" label="流程节点名称" align="center">
           </el-table-column>
-          <el-table-column prop="solid" label="方案主键" align="center">
+          <el-table-column prop="solId" label="方案主键" align="center">
           </el-table-column>
-          <el-table-column prop="createtime" label="创建时间" align="center">
+          <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">
+          <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 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('common') > -1 ||
-                    $store.getters.roles.join(',').indexOf('manager') > -1) &&
-                  scope.row &&
-                  scope.row.nodename == '补正'
-                  && formInline.status == '2'
-                " type="primary" size="mini" @click="upload(scope.row)" style="display: inline-block"
-                  :disabled="instids.indexOf(scope.row.instid) > -1">补正</el-button>
+                <el-button
+                  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('manager') > -1 ||
+                      $store.getters.roles.join(',').indexOf('common') > -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
+          @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('common') > -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: 400px" :before-close="handleClose"
-      append-to-body>
+    <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-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="xbform.id" placeholder="请输入记录主键"></el-input>
-          </el-form-item>
-          <el-form-item label="名称">
-            <el-input readonly v-model="xbform.title" placeholder="请输入名称"></el-input>
-          </el-form-item>
           <el-form-item label="流程主键">
-            <el-input readonly v-model="xbform.instid" placeholder="请输入流程主键"></el-input>
+            <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>
+        <el-button type="primary" @click="xbSubmit()" size="small"
+          >修编</el-button
+        >
       </span>
     </el-dialog>
   </div>
@@ -177,12 +293,6 @@ export default {
     const { proxy } = getCurrentInstance();
     const parent = { ...context };
     const qxyh = reactive({
-      xbform: {
-        xbfile: null,
-        id: "",
-        title: "",
-        instid: ""
-      },
       formInline: {
         status: "1",
         planType: "1",
@@ -246,16 +356,13 @@ export default {
       },
       handleClose() {
         qxyh.dialogVisible = false;
-        qxyh.xbform.xbfile = null;
-        qxyh.xbform.title = "";
-        qxyh.xbform.id = "";
-        qxyh.xbform.instid = "";
+        qxyh.xbfile = null;
         qxyh.fileList = [];
       },
       // 审核记录
       open(row) {
         let id = row.id;
-        let instId = row.instid;
+        let instId = row.instId;
         getLandTaskStatus({
           id: id,
           instId: instId,
@@ -270,9 +377,9 @@ export default {
       },
       // 修编记录
       xbUpload(row) {
-        qxyh.xbform.id = row.id;
-        qxyh.xbform.instid = row.instid;
-        qxyh.xbform.title = row.title;
+        let id = row.id;
+        let instId = row.instId;
+        qxyh.instid = instId;
         qxyh.dialogVisible = true;
       },
       handleRemove() {
@@ -280,25 +387,19 @@ export default {
         qxyh.fileList = [];
       },
       handleChangeFile(file, fileList) {
-        qxyh.xbform.xbfile = file.raw;
+        qxyh.xbfile = file.raw;
         qxyh.fileList = fileList;
       },
       xbSubmit() {
-        if (!qxyh.xbform.instid) {
+        if (!qxyh.instid) {
           ElMessage.error("请输入流程主键");
-        } else if (!qxyh.xbform.id) {
-          ElMessage.error("请输入记录主键");
-        } else if (!qxyh.xbform.title) {
-          ElMessage.error("请输入名称");
-        } else if (!qxyh.xbform.xbfile) {
+        } else if (!qxyh.xbfile) {
           ElMessage.error("请选择修编文件");
         } else {
           console.log("开始修编上传");
           const formdata = new FormData();
-          formdata.append("file", qxyh.xbform.xbfile);
-          formdata.append("instid", qxyh.xbform.instid);
-          formdata.append("id", qxyh.xbform.id);
-          formdata.append("title", qxyh.xbform.title);
+          formdata.append("file", qxyh.xbfile);
+          formdata.append("instid", qxyh.instid);
           reuploadThirdpartyReviseData(formdata).then((res) => {
             if (res.success) {
               ElMessage.success("修编上传成功");
@@ -320,7 +421,7 @@ export default {
         console.log(qxyh.formInline.divisionCode);
       },
       upload(row) {
-        qxyh.instid = row.instid;
+        qxyh.instid = row.instId;
         if (qxyh.formInline.planType == "1") {
           qxyh.ztghDialog = true;
         } else if (qxyh.formInline.planType == "2") {
@@ -340,7 +441,7 @@ export default {
       // 审查报告
       download(row) {
         let id = row.id;
-        let solId = row.solid;
+        let solId = row.solId;
         reportDownloadAction({
           id: id,
           solId: solId,
@@ -372,17 +473,17 @@ export default {
       getlist2() {
         if (qxyh.formInline.status == 1) {
           getLandMyAttendsData(qxyh.formInline).then((res) => {
-            qxyh.tableData1 = res.data;
-            qxyh.formInline.total = res.total || 999;
+            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;
-            qxyh.formInline.total = res.total || 999;
+            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.total || 999;
+            qxyh.formInline.total = res.data.total || 999;
             //待办的村庄规划需要检查补正的状态,未补正的可以上传成果包
             if (
               qxyh.formInline.planType == 2 ||
@@ -390,12 +491,12 @@ export default {
             ) {
               getInstIds().then((res2) => {
                 qxyh.instids = res2.data.join(",");
-                qxyh.tableData2 = res.data;
+                qxyh.tableData2 = res.data.records;
               });
             } else {
               getcgglInstIds().then((res2) => {
                 qxyh.instids = res2.data.join(",");
-                qxyh.tableData2 = res.data;
+                qxyh.tableData2 = res.data.records;
               });
             }
           });
@@ -408,13 +509,13 @@ export default {
         if (qxyh.formInline.status == 1) {
           getLandMyAttendsData(qxyh.formInline).then((res) => {
             qxyh.formInline.current = 1;
-            qxyh.tableData1 = res.data;
-            qxyh.formInline.total = res.total || 999;
+            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.total || 999;
+            qxyh.formInline.total = res.data.total || 999;
             //待办的村庄规划需要检查补正的状态,未补正的可以上传成果包
             if (
               qxyh.formInline.planType == 2 ||
@@ -422,20 +523,20 @@ export default {
             ) {
               getInstIds().then((res2) => {
                 qxyh.instids = res2.data.join(",");
-                qxyh.tableData2 = res.data;
+                qxyh.tableData2 = res.data.records;
               });
             } else {
               getcgglInstIds().then((res2) => {
                 qxyh.instids = res2.data.join(",");
-                qxyh.tableData2 = res.data;
+                qxyh.tableData2 = res.data.records;
               });
             }
           });
         } else if (qxyh.formInline.status == 3) {
           getLandGetRevisePageData(qxyh.formInline).then((res) => {
             qxyh.formInline.current = 1;
-            qxyh.tableData2 = res.data;
-            qxyh.formInline.total = res.total || 999;
+            qxyh.tableData2 = res.data.records;
+            qxyh.formInline.total = res.data.total || 999;
           });
         } else {
           ElMessage.error("请选择规划类型");
@@ -481,15 +582,12 @@ export default {
     flex-wrap: nowrap;
     height: 60px;
   }
-
   .header-left {
     margin-left: 20px;
   }
-
   :deep(.el-form-item) {
     margin-bottom: 0;
   }
-
   .footer {
     width: 100%;
     padding: 10px;
@@ -504,12 +602,10 @@ export default {
     height: inherit;
   }
 }
-
 .search-btn {
   position: absolute;
   right: -40px;
 }
-
 .dialog-footer {
   width: 100%;
   text-align: center;

+ 79 - 40
website/src/views/ghcgscygl/ghcgsb/xxgh/Czgh/Qxyh.vue

@@ -79,24 +79,19 @@
             <template #default="scope">
               <div class="max-width">
                 <slot name="xq" :item="scope.row">
-                  <el-button
-                    type="text"
-                    v-if="scope.row.bz"
-                    class="caozuo"
-                    @click="xmDetail(scope.row.bz)"
-                    >详情</el-button
-                  >
+                  <el-button type="text" v-if="scope.row.bz" class="caozuo"
+                    @click="xmDetail(scope.row.bz)">详情</el-button>
                 </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">
+                <!-- <slot name="bj">
                   <el-button type="text" class="caozuo" @click="edit(scope.row)" :disabled="!(
                     uploadStatus(scope.row.status) === '未上报'
                   )
                     ">编辑</el-button>
-                </slot>
+                </slot> -->
                 <slot name="sbzzzq">
                   <el-button type="text" class="caozuo" @click="showDialog(scope.row, 1, scope.$index)" v-if="
                     (
@@ -113,13 +108,8 @@
                     " -->
                 </slot>
                 <slot name="rz">
-                  <el-button
-                    type="text"
-                    class="caozuo"
-                    v-if="scope.row.msg"
-                    @click="showRzDialog(scope.row.msg)"
-                    >日志</el-button
-                  >
+                  <el-button type="text" class="caozuo" v-if="scope.row.msg"
+                    @click="showRzDialog(scope.row.msg)">日志</el-button>
                 </slot>
                 <slot name="sc" v-if="
                   $store.getters.roles.indexOf('admin') < 0
@@ -159,6 +149,23 @@
     <el-dialog v-model="editDialogVisible" :title="dialogTitle" width="30%" :before-close="handleClose"
       :align-center="true" style="white-space: initial">
       <span>{{ dialogMessage1 + name + dialogMessage2 }}</span>
+      <el-form v-if="editStatus == 1 && !curInstid" :model="reportform" ref="reportformModel" :rules="reportformrule">
+        <el-form-item prop="phone" label="预留电话" :label-width="formLabelWidth" class="margin-item">
+          <el-input v-model="reportform.phone" placeholder="请输入预留电话"></el-input>
+        </el-form-item>
+        <el-form-item prop="wdbh" label="文档编号" :label-width="formLabelWidth" class="margin-item">
+          <el-input v-model="reportform.wdbh" placeholder="请输入文档编号"></el-input>
+        </el-form-item>
+        <el-form-item prop="uploadremark" label="备注说明" :label-width="formLabelWidth" class="margin-item">
+          <el-input v-model="reportform.uploadremark" placeholder="请输入文档编号"></el-input>
+        </el-form-item>
+        <el-form-item prop="file" label="审查报告">
+          <el-upload :limit="1" :on-change="handleChangeFile" :on-remove="handleRemove" :auto-upload="false"
+            :show-file-list="true">
+            <el-button size="small" type="primary">点击上传(pdf格式)</el-button>
+          </el-upload>
+        </el-form-item>
+      </el-form>
       <template #footer>
         <span class="dialog-footer">
           <span class="dialog-footer" v-show="sbjdProgress" style="line-height: 40px">
@@ -200,28 +207,15 @@
     </CzghcgDialog>
     <CzghbjDialog v-if="ghcgbjDialog" v-model:ghcgbjDialog="ghcgbjDialog" @refresh="changeForm" @getlist="getlist"
       v-model:cgb="activeCgb"></CzghbjDialog>
-      <el-dialog
-      v-model="xmDetailDialogVisible"
-      :title="xmDetailDialogTitle"
-      :before-close="handleClose"
-      :align-center="true"
-      style="
+    <el-dialog v-model="xmDetailDialogVisible" :title="xmDetailDialogTitle" :before-close="handleClose"
+      :align-center="true" style="
         white-space: initial;
         overflow: hidden;
         width: 850px;
         height: 600px;
-      "
-    >
-      <el-descriptions
-        column="2"
-        border="true"
-        style="overflow-y: auto; width: 100%; height: 500px"
-      >
-        <el-descriptions-item
-          v-for="(value, key) in xmDetailInfo"
-          :key="key"
-          :label="key"
-        >
+      ">
+      <el-descriptions column="2" border="true" style="overflow-y: auto; width: 100%; height: 500px">
+        <el-descriptions-item v-for="(value, key) in xmDetailInfo" :key="key" :label="key">
           {{ value }}
         </el-descriptions-item>
       </el-descriptions>
@@ -251,6 +245,15 @@ export default {
   setup(prop, context) {
     const store = useStore();
     const { proxy } = getCurrentInstance();
+    const checkPhone = (rule, value, callback) => {
+      if (!value) {
+        return callback(new Error('手机号不能为空'));
+      } else if (!/^1[3456789]\d{9}$/.test(value)) {
+        return callback(new Error('请输入有效的手机号'));
+      } else {
+        callback();
+      }
+    };
     const parent = { ...context };
     const qxyh = reactive({
       xmDetailDialogVisible: false,
@@ -282,6 +285,19 @@ export default {
         ],
         cgid: [{ required: true, message: "请输入成果编号", trigger: "blur" }],
       },
+      reportformrule: {
+        phone: [
+          { required: true, validator: checkPhone, trigger: "blur" },
+        ],
+        wdbh: [{ required: true, message: "请输入文档编号", trigger: "blur" }],
+        file: [{ required: true, message: "请选择审查报告", trigger: "blur" }],
+      },
+      reportform: {
+        phone: "",
+        wdbh: "",
+        uploadremark: "",
+        file: null
+      },
       sbjdText: "0/0",
       sbjdPercentage: 0,
       sbjdProgress: false,
@@ -306,6 +322,23 @@ export default {
       uuidList: [],
       uuidList1: "",
       showType: "",
+      curInstid: "",
+      handleRemove() {
+        qxyh.reportform.file = null;
+      },
+      handleChangeFile(file, fileList) {
+        debugger
+        const reader = new FileReader();
+        reader.readAsArrayBuffer(file.raw);
+        reader.onload = function () {
+          const bytes = new Uint8Array(this.result);
+          const bytesArray = [];
+          for (let i = 0; i < bytes.length; i++) {
+            bytesArray.push(bytes[i]);
+          }
+          qxyh.reportform.file = bytesArray;
+        }
+      },
       xmDetail(detail) {
         try {
           let info = JSON.parse(detail);
@@ -342,6 +375,7 @@ export default {
       showDialog(row, status, index) {
         qxyh.editStatus = status;
         qxyh.name = row.fileName;
+        qxyh.curInstid = row.instid;
         qxyh.index = index;
         if (status === 1) {
           qxyh.dialogTitle = "上报至市";
@@ -356,6 +390,7 @@ export default {
       },
       websocketOnMessage(msg1) {
         let msg = msg1.data;
+        console.log("websocketOnMessage==" + msg);
         if (msg.indexOf("/") > -1) {
           qxyh.sbjdText = msg;
           let percentage =
@@ -368,18 +403,19 @@ export default {
       editQsStatus() {
         // 上报至市
         if (qxyh.editStatus === 1) {
+          // const valid = await this.$refs.reportformModel.validate();
+          // if (valid || qxyh.curInstid) {
+          console.log("表单校验成功");
           let uuid = qxyh.tableData[qxyh.index].uuid
           qxyh.sbjdPercentage = 0;
           qxyh.sbjdText = "0/0";
           qxyh.sbjdProgress = true;
           socket.initWebSocket(uuid);
-          //socket.initWebSocket(`ws://${window.location.host}${import.meta.env.VITE_APP_BASE_API }/apply/sbjd/` + qxyh.editId);
           //绑定接收消息方法
           socket.websocket.onmessage = qxyh.websocketOnMessage;
-          ReportSubmit({
-            uuid: uuid,
-            cglevel: 1,
-          }).then((res) => {
+          qxyh.reportform.uuid = uuid;
+          qxyh.reportform.cglevel = 1;
+          ReportSubmit(qxyh.reportform).then((res) => {
             socket.websocketOnClose();
             qxyh.sbjdProgress = false;
             qxyh.editDialogVisible = false;
@@ -396,7 +432,10 @@ export default {
               });
             }
           });
-          // 删除
+          // } else {
+          //   console.log("表单校验失败");
+          //   return false;
+          // }
         } else if (qxyh.editStatus === 2) {
           Delete({
             uuid: qxyh.tableData[qxyh.index].uuid,

+ 68 - 5
website/src/views/ghcgscygl/ghcgsb/ztgh/Qxjghcg/Qxyh.vue

@@ -120,7 +120,8 @@
                 </slot>
                 <!-- scope.row.fileupload ===  '1' && -->
                 <slot name="sbzzzq">
-                  <el-button v-if="showType == 'manager'" type="text" class="caozuo" @click="showDialog(scope.row, 1)"
+                  <el-button v-if="showType == 'manager' || showType == 'common'" 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">
@@ -178,6 +179,23 @@
     <el-dialog v-model="editDialogVisible" :title="dialogTitle" width="30%" :before-close="handleClose"
       :align-center="true" style="white-space: initial">
       <span>{{ dialogMessage1 + name + dialogMessage2 }}</span>
+      <el-form v-if="editStatus == 1 && !curInstid" :model="reportform" ref="reportformModel" :rules="reportformrule">
+        <el-form-item prop="phone" label="预留电话" :label-width="formLabelWidth" class="margin-item">
+          <el-input v-model="reportform.phone" placeholder="请输入预留电话"></el-input>
+        </el-form-item>
+        <el-form-item prop="wdbh" label="文档编号" :label-width="formLabelWidth" class="margin-item">
+          <el-input v-model="reportform.wdbh" placeholder="请输入文档编号"></el-input>
+        </el-form-item>
+        <el-form-item prop="uploadremark" label="备注说明" :label-width="formLabelWidth" class="margin-item">
+          <el-input v-model="reportform.uploadremark" placeholder="请输入文档编号"></el-input>
+        </el-form-item>
+        <el-form-item prop="file" label="审查报告">
+          <el-upload :limit="1" :on-change="handleChangeFile" :on-remove="handleRemove" :auto-upload="false"
+            :show-file-list="true">
+            <el-button size="small" type="primary">点击上传(pdf格式)</el-button>
+          </el-upload>
+        </el-form-item>
+      </el-form>
       <template #footer>
         <span class="dialog-footer" v-show="sbjdProgress" style="line-height: 40px">
           <el-progress :text-inside="true" :stroke-width="20" :percentage="sbjdPercentage"
@@ -276,6 +294,15 @@ export default {
   setup(prop, context) {
     const { proxy } = getCurrentInstance();
     const parent = { ...context };
+    const checkPhone = (rule, value, callback) => {
+      if (!value) {
+        return callback(new Error('手机号不能为空'));
+      } else if (!/^1[3456789]\d{9}$/.test(value)) {
+        return callback(new Error('请输入有效的手机号'));
+      } else {
+        callback();
+      }
+    };
     watch(
       () => prop.showTypeInfo,
       (count) => {
@@ -302,6 +329,19 @@ export default {
         ],
         cgid: [{ required: true, message: "请输入成果编号", trigger: "blur" }],
       },
+      reportformrule: {
+        phone: [
+          { required: true, validator: checkPhone, trigger: "blur" },
+        ],
+        wdbh: [{ required: true, message: "请输入文档编号", trigger: "blur" }],
+        file: [{ required: true, message: "请选择审查报告", trigger: "blur" }],
+      },
+      reportform: {
+        phone: "",
+        wdbh: "",
+        uploadremark: "",
+        file: null
+      },
       scmxList: [],
       dialogLog: false, // 上传失败日志弹窗
       logData: "", // 错误日志信息
@@ -318,6 +358,7 @@ export default {
         limit: 20,
         total: 0,
       },
+      curInstid: "",
       xzoptions: [],
       sbjdText: "0/0",
       sbjdPercentage: 0,
@@ -338,6 +379,21 @@ export default {
       editId: "",
       name: "",
       showType: "",
+      handleRemove() {
+        qxyh.reportform.file = null;
+      },
+      handleChangeFile(file, fileList) {
+        const reader = new FileReader();
+        reader.readAsArrayBuffer(file.raw);
+        reader.onload = function () {
+          const bytes = new Uint8Array(this.result);
+          const bytesArray = [];
+          for (let i = 0; i < bytes.length; i++) {
+            bytesArray.push(bytes[i]);
+          }
+          qxyh.reportform.file = bytesArray;
+        }
+      },
       xmDetail(detail) {
         try {
           let info = JSON.parse(detail);
@@ -408,6 +464,7 @@ export default {
         console.log(row, 'row-----')
         qxyh.editStatus = status;
         qxyh.editId = row.id;
+        qxyh.curInstid = row.instid;
         qxyh.name = row.name;
         if (status === 1) {
           qxyh.dialogTitle = "上报至市";
@@ -459,6 +516,8 @@ export default {
           qxyh.editDialogVisible = false;
           //上报至自治区
         } else if (qxyh.editStatus === 1) {
+          // const valid = await this.$refs.reportformModel.validate();
+          // if (valid || qxyh.curInstid) {
           qxyh.sbjdPercentage = 0;
           qxyh.sbjdText = "0/0";
           qxyh.sbjdProgress = true;
@@ -466,10 +525,9 @@ export default {
           //socket.initWebSocket(`ws://${window.location.host}${import.meta.env.VITE_APP_BASE_API }/apply/sbjd/` + qxyh.editId);
           //绑定接收消息方法
           socket.websocket.onmessage = qxyh.websocketOnMessage;
-          updateCgInfo({
-            id: qxyh.editId,
-            uploadstatus: 1,
-          }).then((res) => {
+          qxyh.reportform.id = qxyh.editId;
+          qxyh.reportform.uploadstatus = 1;
+          updateCgInfo(qxyh.reportform).then((res) => {
             socket.websocketOnClose();
             qxyh.sbjdProgress = false;
             if (res.success) {
@@ -485,6 +543,10 @@ export default {
             }
             qxyh.editDialogVisible = false;
           });
+          // } else {
+          //   console.log("表单校验失败");
+          //   return false;
+          // }
         }
       },
       // 获取行政区数据
@@ -495,6 +557,7 @@ export default {
       },
       websocketOnMessage(msg1) {
         let msg = msg1.data;
+        console.log("websocketOnMessage==" + msg);
         if (msg.indexOf("/") > -1) {
           qxyh.sbjdText = msg;
           let percentage =