Explorar el Código

Merge remote-tracking branch 'origin/master'

ZC hace 1 mes
padre
commit
2a0a84de33

+ 74 - 0
docker/ruoyi/gateway/jar/logback.xml

@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration scan="true" scanPeriod="60 seconds" debug="false">
+    <!-- 日志存放路径 -->
+	<property name="log.path" value="logs/ruoyi-gateway" />
+   <!-- 日志输出格式 -->
+	<property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />
+
+    <!-- 控制台输出 -->
+	<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
+		<encoder>
+			<pattern>${log.pattern}</pattern>
+		</encoder>
+	</appender>
+
+    <!-- 系统日志输出 -->
+	<appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
+	    <file>${log.path}/info.log</file>
+        <!-- 循环政策:基于时间创建日志文件 -->
+		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!-- 日志文件名格式 -->
+			<fileNamePattern>${log.path}/info.%d{yyyy-MM-dd}.log</fileNamePattern>
+			<!-- 日志最大的历史 60天 -->
+			<maxHistory>60</maxHistory>
+		</rollingPolicy>
+		<encoder>
+			<pattern>${log.pattern}</pattern>
+		</encoder>
+		<filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <!-- 过滤的级别 -->
+            <level>INFO</level>
+            <!-- 匹配时的操作:接收(记录) -->
+            <onMatch>ACCEPT</onMatch>
+            <!-- 不匹配时的操作:拒绝(不记录) -->
+            <onMismatch>DENY</onMismatch>
+        </filter>
+	</appender>
+
+    <appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
+	    <file>${log.path}/error.log</file>
+        <!-- 循环政策:基于时间创建日志文件 -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!-- 日志文件名格式 -->
+            <fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.log</fileNamePattern>
+			<!-- 日志最大的历史 60天 -->
+			<maxHistory>60</maxHistory>
+        </rollingPolicy>
+        <encoder>
+            <pattern>${log.pattern}</pattern>
+        </encoder>
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <!-- 过滤的级别 -->
+            <level>ERROR</level>
+			<!-- 匹配时的操作:接收(记录) -->
+            <onMatch>ACCEPT</onMatch>
+			<!-- 不匹配时的操作:拒绝(不记录) -->
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+
+    <!-- 系统模块日志级别控制  -->
+	<logger name="com.ruoyi" level="info" />
+	<!-- Spring日志级别控制  -->
+	<logger name="org.springframework" level="warn" />
+
+	<root level="info">
+		<appender-ref ref="console" />
+	</root>
+	
+	<!--系统操作日志-->
+    <root level="info">
+        <appender-ref ref="file_info" />
+        <appender-ref ref="file_error" />
+    </root>
+</configuration>

BIN
docker/ruoyi/gateway/jar/ruoyi-gateway.jar


+ 1 - 1
ruoyi-modules/hh-mast/src/main/java/com/ruoyi/mast/bank/controller/BankUncleardepositController.java

@@ -118,7 +118,7 @@ public class BankUncleardepositController extends BaseController {
     @GetMapping(value = "/{uncleardepositid}")
     public AjaxResult getInfo(@PathVariable("uncleardepositid") String uncleardepositid) {
         BankUncleardeposit bankUncleardeposit = bankUncleardepositService.selectBankUncleardepositByUncleardepositid(uncleardepositid);
-        if (bankUncleardeposit == null) return error("保证金退回已申请");
+        if (bankUncleardeposit == null) return error("id错误,明细中无此条数据");
 
         BankUncleardepositrfnd bt = new BankUncleardepositrfnd();
         bt.setSerialno(bankUncleardeposit.getRtnSerialno());

+ 12 - 6
ruoyi-ui/src/views/purchase/stop/bidWinningChange.vue

@@ -17,7 +17,8 @@
 
       <el-tabs v-model="activeName" @tab-click="handleClick">
         <el-tab-pane label="待提交" name="first" v-if="checkRole(['purchaser'])"></el-tab-pane>
-        <el-tab-pane label="已生效" name="second"></el-tab-pane>
+        <el-tab-pane label="待审核" name="second" v-if="checkRole(['commander'])"></el-tab-pane>
+        <el-tab-pane label="已生效" name="third"></el-tab-pane>
       </el-tabs>
 
       <el-table :data="data">
@@ -41,8 +42,8 @@
         </el-table-column>
         <el-table-column label="操作" align="center" class-name="small-padding fixed-width" fixed="right">
           <template slot-scope="scope">
-            <el-button v-if="activeName == 'second'" @click="handleInfo(scope.row)" type="text" size="small">查看详情</el-button>
             <el-button v-if="activeName == 'first'" @click="applyTermination(scope.row)" type="text" size="small">申请变更</el-button>
+            <el-button v-else @click="handleInfo(scope.row)" type="text" size="small">查看详情</el-button>
           </template>
         </el-table-column>
       </el-table>
@@ -110,8 +111,11 @@
       if (checkRole(['purchaser'])) {
         this.activeName = 'first'
         this.queryParams.cState = 0
-      } else {
+      } else if (checkRole(['commander'])) {
         this.activeName = 'second'
+        this.queryParams.cState = 2
+      } else {
+        this.activeName = 'third'
         this.queryParams.cState = 1
       }
 
@@ -127,6 +131,9 @@
             this.queryParams.cState = 0
             break
           case 'second':
+            this.queryParams.cState = 2
+            break
+          case 'third':
             this.queryParams.cState = 1
             break
         }
@@ -136,7 +143,6 @@
       //搜索按钮
       handleQuery() {
         this.queryParams.pageNum = 1
-        this.queryParams.cState = this.activeName == 'first' ? 0 : 1
         this.getList()
 
       },
@@ -171,7 +177,7 @@
         this.dialogFormVisible.visible = true;
         this.applyForm = {
           sid: row.sid,
-          cState: 1
+          cState: 2
         };
         this.changeAnnex = []
         this.fjAnnex = {
@@ -184,7 +190,7 @@
         if (this.changeAnnex && this.changeAnnex.length > 0) {
             this.applyForm.changeFile = this.changeAnnex
 
-          this.$modal.confirm('确定要中标变更吗?').then(() => {
+          this.$modal.confirm('确定要中标变更吗?').then(() => {
             this.fullscreenLoading = true;
             let obj = this.applyForm;
 

+ 93 - 12
ruoyi-ui/src/views/purchase/stop/bidWinningDetail.vue

@@ -52,7 +52,7 @@
             </el-descriptions-item>
             <el-descriptions-item label="附件" :span="3">
               <div v-for="item, index in detail.uploadFiles" :key="index" style="color: blue;margin-bottom: 5px;"><a
-                  :href="item.url" target="_blank" :download="item.name">{{ item.name }}</a></div>
+                :href="item.url" target="_blank" :download="item.name">{{ item.name }}</a></div>
             </el-descriptions-item>
           </el-descriptions>
           <div style="margin-top: 20px;">采购明细</div>
@@ -81,7 +81,7 @@
             <div>申请中标终止附件</div>
             <el-divider></el-divider>
             <div v-for="item, index in detail.stopFile" :key="index" style="color: blue;margin-bottom: 5px;">
-                <a :href="item.url" target="_blank" :download="item.name">{{ item.name }}</a>
+              <a :href="item.url" target="_blank" :download="item.name">{{ item.name }}</a>
             </div>
           </div>
 
@@ -93,7 +93,9 @@
             </div>
           </div>
   
-          <el-card v-if="sState == 1" v-hasRole="['centerFuzong']" ref="card" style="margin-top: 20px" class="never">
+          <!-- 申请终止开始 -->
+          <el-card v-if="sState == 1 || sState == 3" v-hasRole="['commander', 'centerFuzong']" ref="card" 
+            style="margin-top: 20px" class="never">
             <div slot="header" class="clearfix">
               <span>审核意见</span>
               <el-button @click="item.show = !item.show" style="float: right; padding: 3px 0" type="text">
@@ -105,8 +107,8 @@
             </div>
           </el-card>
   
-          <div v-hasRole="['centerFuzong']" style="text-align: right;margin-top: 10px;">
-            <div style=" display: inline-block;margin-right: 10px" v-if="sState == 1">
+          <div v-hasRole="['commander', 'centerFuzong']" style="text-align: right;margin-top: 10px;">
+            <div style=" display: inline-block;margin-right: 10px" v-if="sState == 1 || sState == 3">
               <el-button type="primary" @click="approved"
                 v-loading.fullscreen.lock="fullscreenLoading">审核
               </el-button>
@@ -115,6 +117,33 @@
               </el-button>
             </div>
           </div>
+          <!-- 申请终止结束 -->
+
+          <!-- 申请变更开始 -->
+          <el-card v-if="cState == 2" v-hasRole="['commander']" ref="card" 
+            style="margin-top: 20px" class="never">
+            <div slot="header" class="clearfix">
+              <span>审核意见</span>
+              <el-button @click="item.show = !item.show" style="float: right; padding: 3px 0" type="text">
+                {{ item.show ? '隐藏意见' : '显示意见' }}
+              </el-button>
+            </div>
+            <div v-if="item.show" class="text item">
+              <editor v-model="form.bidEditor" :min-height="120" />
+            </div>
+          </el-card>
+  
+          <div v-hasRole="['commander']" style="text-align: right;margin-top: 10px;">
+            <div style=" display: inline-block;margin-right: 10px" v-if="cState == 2">
+              <el-button type="primary" @click="approvedChange"
+                v-loading.fullscreen.lock="fullscreenLoading">审核变更
+              </el-button>
+              <el-button type="danger" @click="rejectChangePlan"
+                v-loading.fullscreen.lock="fullscreenLoading">驳回
+              </el-button>
+            </div>
+          </div>
+          <!-- 申请变更结束 -->
         </el-tab-pane>
         <el-tab-pane label="审批记录" name="record_approval">
           <el-steps space="200" simple :active="sState + 1">
@@ -123,7 +152,7 @@
             <el-step title="已生效"></el-step>
           </el-steps>
   
-          <el-table style="margin-top: 20px" max-height="250" :data="record_approval">
+          <el-table style="margin-top: 20px" :data="record_approval">
             <el-table-column type="expand">
               <template slot-scope="scope">
                 <el-card class="box-card">
@@ -160,7 +189,7 @@
   <script>
   
   import Decimal from "decimal.js";
-  import { getPlan, editStopPlan, getRecordList, updateTenderByState } from '@/api/system/plan'
+  import { getPlan, editStopPlan, getRecordList, updateTenderByState, postAlterBid } from '@/api/system/plan'
   import { getPlanProfileByAid } from "@/api/system/planprofile"
   import { getPlanDetailsByAid } from "@/api/system/plandetail"
   
@@ -176,6 +205,7 @@
         paneName: 'basic',
         sState: 0,
         oState: null,
+        cState: 0,
         detail: {
           aid: null,
           aCode: '',
@@ -229,7 +259,8 @@
         const data = res.data;
         this.sState = data.sState
         this.oState = data.oState
-        
+        this.cState = data.cState
+
         this.detail.aName = data.aName;
         this.detail.aCode = data.aCode;
         this.detail.projectName = data.projectName;
@@ -292,7 +323,6 @@
       },
       getRecordApproval () {
         getRecordList({ sid: this.sid, flagType: 'StopTender' }).then((res) => {
-  
           this.record_approval = res.rows;
         }).catch(err => {
           this.$modal.msgError("服务器出错,请联系管理员!!!");
@@ -305,21 +335,72 @@
           this.$modal.msgError("请输入审核意见")
           return;
         }
-        this.$modal.confirm("你确定要审核终止该采购计划吗?").then(() => {
-          this.handleExamineApply(2);
+
+        if (this.sState == 3) { // 负责人审核
+          this.$modal.confirm("确定要审核终止该采购计划?").then(() => {
+            this.handleExamineApply(1);
+          })
+        } else if (this.sState == 1) { // 副总审核
+          this.$modal.confirm("确定要审核终止该采购计划吗?").then(() => {
+            this.handleExamineApply(2);
+          })
+        }
+      },
+
+      // 申请变更
+      approvedChange() {
+        if (!this.form.bidEditor) {
+          this.$modal.msgError("请输入审核意见")
+          return;
+        }
+
+        if (this.cState == 2) { // 负责人审核
+          this.$modal.confirm("确定要审核变更该采购计划?").then(() => {
+            this.handleChangeApply(1);
+          })
+        }
+      },
+
+      //审核变更申请
+      handleChangeApply(state) {
+        this.fullscreenLoading = true;
+        let obj = { 
+          sid: this.form.sid,
+          cState: state
+        };
+  
+        postAlterBid(obj).then(res => {
+          this.fullscreenLoading = false;
+          this.$message.success("操作成功!!");
+          this.$tab.closePage()
+        }).catch(err => {
+          this.fullscreenLoading = false;
+          this.$modal.msgError("服务器出错,请联系管理员!!!");
         })
       },
+
       //驳回采购计划
       rejectPlan () {
         if (!this.form.bidEditor) {
           this.$modal.msgError("请输入审核意见")
           return;
         }
-        this.$modal.confirm("你确定要驳回终止采购计划吗?").then(() => {
+        this.$modal.confirm("确定要驳回终止采购计划吗?").then(() => {
           this.handleExamineApply(0);
         })
       },
 
+      // 驳回变更
+      rejectChangePlan() {
+        if (!this.form.bidEditor) {
+          this.$modal.msgError("请输入审核意见")
+          return;
+        }
+        this.$modal.confirm("确定要驳回变更采购计划吗?").then(() => {
+          this.handleChangeApply(0);
+        })
+      },
+
       //审核终止申请
       handleExamineApply(state) {
         this.fullscreenLoading = true;

+ 20 - 6
ruoyi-ui/src/views/purchase/stop/bidWinningStop.vue

@@ -20,12 +20,16 @@
           <el-tab-pane label="待提交" name="first" v-if="checkRole(['purchaser'])">
             <WinTodoSubmitted ref="refWinToBeSubmitted" />
           </el-tab-pane>
+
+          <el-tab-pane label="待负责人审批" name="second" v-if="checkRole(['purchaser', 'commander'])">
+            <winComApproval ref="refWinComApproval" />
+          </el-tab-pane>
   
-          <el-tab-pane label="待审批" name="second" v-if="checkRole(['purchaser', 'centerFuzong'])">
+          <el-tab-pane label="待副总审批" name="third" v-if="checkRole(['purchaser', 'commander', 'centerFuzong'])">
             <WinPendingApproval ref="refWinPendingApproval" />
           </el-tab-pane>
   
-          <el-tab-pane label="已生效" name="third">
+          <el-tab-pane label="已生效" name="fourth">
             <WinEffective ref="refWinEffective" />
           </el-tab-pane>
         </el-tabs>
@@ -36,6 +40,7 @@
 <script>
   import { checkRole } from "@/utils/permission"; // 权限判断函数
   import WinTodoSubmitted from './components/winTodoSubmitted';
+  import WinComApproval from './components/winComApproval'
   import WinPendingApproval from './components/winPendingApproval'
   import WinEffective from './components/winEffective.vue'
   
@@ -44,6 +49,7 @@
     name: 'BidWinningStop',
     components: {
         WinTodoSubmitted,
+        WinComApproval,
         WinPendingApproval,
         WinEffective
     },
@@ -61,10 +67,12 @@
     created () {
       if (checkRole(['purchaser'])) {
         this.activeName = 'first'
-      } else if (checkRole(['centerFuzong'])) {
+      } else if (checkRole(['commander'])) {
         this.activeName = 'second'
-      } else {
+      } else if (checkRole(['centerFuzong'])) {
         this.activeName = 'third'
+      } else {
+        this.activeName = 'fourth'
       }
     },
     methods: {
@@ -77,9 +85,12 @@
             this.$refs.refWinToBeSubmitted.handleQuery(this.queryParams)
             break
           case 'second':
-            this.$refs.refWinPendingApproval.handleQuery(this.queryParams)
+            this.$refs.refWinComApproval.handleQuery(this.queryParams)
             break
           case 'third':
+            this.$refs.refWinPendingApproval.handleQuery(this.queryParams)
+            break
+          case 'fourth':
             this.$refs.refWinEffective.handleQuery(this.queryParams)
             break
         }
@@ -91,9 +102,12 @@
             this.$refs.refWinToBeSubmitted.handleQuery(this.queryParams)
             break
           case 'second':
-            this.$refs.refWinPendingApproval.handleQuery(this.queryParams)
+            this.$refs.refWinComApproval.handleQuery(this.queryParams)
             break
           case 'third':
+            this.$refs.refWinPendingApproval.handleQuery(this.queryParams)
+            break
+          case 'fourth':
             this.$refs.refWinEffective.handleQuery(this.queryParams)
             break
         }

+ 87 - 0
ruoyi-ui/src/views/purchase/stop/components/CompComApproval.vue

@@ -0,0 +1,87 @@
+<template>
+  <div>
+    <el-table :data="data">
+      <el-table-column label="序号" align="center" prop="aid" width="80">
+        <template slot-scope="scope">
+          {{ scope.$index + 1 }}
+        </template>
+      </el-table-column>
+      <el-table-column label="采购单位" align="center" prop="company" />
+      <el-table-column label="工程项目" align="center" prop="projectName" />
+      <el-table-column label="采购计划编号" align="center" prop="aCode" />
+      <el-table-column label="采购事项" align="center" prop="aName">
+        <template slot-scope="scope">
+          <span v-hasPermi="['system:attachments:list']" style="color: #008bcb;cursor: pointer"
+            @click="handleInfo(scope.row)">{{ scope.row.aName }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="报价方式" align="center" prop="quoteMode">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.quote_mode" :value="scope.row.quoteMode" />
+        </template>
+      </el-table-column>
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button v-hasPermi="['system:attachments:list']" @click="handleInfo(scope.row)" type="text" size="small">查看
+          </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" />
+  </div>
+</template>
+
+<script>
+
+import { listPlan as apiList, delPlan as apiDel } from "@/api/system/plan";
+export default {
+  props: {
+  },
+  components: {
+
+  },
+  dicts: ['funding_source', 'quote_mode', 'buying_mode'],
+  data () {
+    return {
+      data: [],
+      total: 0,
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        aAstate: 4
+      },
+    }
+  },
+  created () {
+    this.getList()
+  },
+  methods: {
+    /** 获取数据 */
+    getList () {
+      apiList(this.queryParams).then(res => {
+        this.data = res.rows.map(item => {
+          let fj = []
+          const fjAnnex = item.fjAnnex
+          if (fjAnnex) {
+            const fjAnnexArr = JSON.parse(fjAnnex);
+            fj = fjAnnexArr;
+          }
+          item.fjAnnex = fj
+          return item
+        })
+        this.total = res.total
+      });
+    },
+    handleInfo (row) {
+      this.$router.push({ path: '/purchase/purchasestopdetail', query: { aid: row.aid } })
+    },
+    handleQuery (queryParams) {
+      this.queryParams.pageNum = 1
+      this.queryParams.aCode = queryParams.aCode
+      this.queryParams.aName = queryParams.aName
+      this.getList()
+    },
+  }
+}
+</script>

+ 1 - 1
ruoyi-ui/src/views/purchase/stop/components/CompPendingApproval.vue

@@ -49,7 +49,7 @@ export default {
       queryParams: {
         pageNum: 1,
         pageSize: 10,
-        aAstate: 4
+        aAstate: 8
       },
     }
   },

+ 80 - 0
ruoyi-ui/src/views/purchase/stop/components/winComApproval.vue

@@ -0,0 +1,80 @@
+<template>
+  <div>
+    <el-table :data="data">
+      <el-table-column label="序号" align="center" prop="aid" width="80">
+        <template slot-scope="scope">
+          {{ scope.$index + 1 }}
+        </template>
+      </el-table-column>
+      <el-table-column label="项目编号" align="center" prop="sCode" width="170" />
+      <el-table-column label="项目名称" align="center" prop="sName" min-width="150">
+        <template slot-scope="scope">
+          <el-button @click="handleInfo(scope.row)" type="text">{{ scope.row.sName }}</el-button>
+        </template>
+      </el-table-column>
+      <el-table-column label="采购单位" align="center" prop="sUnit" min-width="150" />
+      <el-table-column label="工程项目" align="center" prop="projectName" min-width="150" />
+      <el-table-column label="项目状态" align="center" prop="sProjectState">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.bid_tender_state" :value="scope.row.sProjectState" />
+        </template>
+      </el-table-column>
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button @click="handleInfo(scope.row)" type="text" size="small">查看</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" />
+  </div>
+</template>
+
+<script>
+
+import { getSelectTenderByState as apiList } from "@/api/system/plan";
+export default {
+  dicts: ['bid_tender_state'],
+  data () {
+    return {
+      data: [],
+      total: 0,
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        sState: 3
+      }
+    }
+  },
+  created () {
+    this.getList()
+  },
+  methods: {
+    /** 获取数据 */
+    getList () {
+      apiList(this.queryParams).then(res => {
+        this.data = res.rows.map(item => {
+          let fj = []
+          const fjAnnex = item.stopFile
+          if (fjAnnex) {
+            const fjAnnexArr = JSON.parse(fjAnnex);
+            fj = fjAnnexArr;
+          }
+          item.fjAnnex = fj
+          return item
+        })
+        this.total = res.total
+      });
+    },
+    handleInfo (row) {
+      this.$router.push({ path: '/purchase/stopBidWinningDetail', query: { aid: row.xyId, sid: row.sid } })
+    },
+    handleQuery (queryParams) {
+      this.queryParams.pageNum = 1
+      this.queryParams.sCode = queryParams.sCode
+      this.queryParams.sName = queryParams.sName
+      this.getList()
+    },
+  }
+}
+</script>

+ 1 - 1
ruoyi-ui/src/views/purchase/stop/components/winTodoSubmitted.vue

@@ -111,7 +111,7 @@
         this.dialogFormVisible.visible = true;
         this.dialogFormVisible.title = '申请终止';
         this.applyForm = {
-          sState: 1,
+          sState: 3,
           sid: row.sid
         };
         this.changeAnnex = []

+ 18 - 10
ruoyi-ui/src/views/purchase/stop/detail.vue

@@ -91,15 +91,15 @@
               :href="item.url" target="_blank" :download="item.name">{{ item.name }}</a></div>
         </div>
 
-        <el-card v-if="aAstate == 4 || aAstate == 6" ref="card" style="margin-top: 20px" class="never">
+        <el-card v-if="aAstate == 4 || aAstate == 6 || aAstate == 8" ref="card" style="margin-top: 20px" class="never">
           <div slot="header" class="clearfix">
             <!-- <span v-if="aAstate != 4 && aAstate != 5">提交意见</span> -->
-            <span v-if="aAstate == 4 || aAstate == 6">审核意见</span>
+            <span v-if="aAstate == 4 || aAstate == 6 || aAstate == 8">审核意见</span>
             <el-button @click="item.show = !item.show" style="float: right; padding: 3px 0" type="text">
               {{ item.show ? '隐藏意见' : '显示意见' }}
             </el-button>
           </div>
-          <div v-if="(aAstate == 4 || aAstate == 6) && item.show" class="text item">
+          <div v-if="(aAstate == 4 || aAstate == 6 || aAstate == 8) && item.show" class="text item">
             <editor v-model="form.editor" :min-height="120" />
           </div>
         </el-card>
@@ -111,7 +111,7 @@
             </el-button>
           </div> -->
 
-          <div style=" display: inline-block;margin-right: 10px" v-if="aAstate == 4 || aAstate == 6">
+          <div style="display: inline-block;margin-right: 10px" v-if="aAstate == 4 || aAstate == 6 || aAstate == 8">
             <el-button v-hasPermi="['system:termination:allow']" type="primary" @click="approved"
               v-loading.fullscreen.lock="fullscreenLoading">审核
             </el-button>
@@ -128,7 +128,7 @@
           <el-step title="已生效"></el-step>
         </el-steps>
 
-        <el-table style="margin-top: 20px" max-height="250" :data="record_approval">
+        <el-table style="margin-top: 20px" :data="record_approval">
           <el-table-column type="expand">
             <template slot-scope="scope">
               <el-card class="box-card">
@@ -291,7 +291,7 @@ export default {
     //提交采购计划修改状态
     sumbitPlan () {
       console.log(this.aAstate);
-      this.$modal.confirm("确定要提交终止采购计划?").then(() => {
+      this.$modal.confirm("确定要提交终止采购计划?").then(() => {
         this.ComUpdatePlan(4, this.aAstate);
       })
     },
@@ -301,9 +301,17 @@ export default {
         this.$modal.msgError("请输入审核意见")
         return;
       }
-      this.$modal.confirm("你确定要审核终止该采购计划吗?").then(() => {
-        this.ComUpdatePlan(5, null);
-      })
+
+      // 4——>8——>5
+      if (this.aAstate == 4) { // 负责人审核
+        this.$modal.confirm("确定要审核终止该采购计划?").then(() => {
+          this.ComUpdatePlan(8, null);
+        })
+      } else if (this.aAstate == 8) { // 副总审核
+        this.$modal.confirm("确定要审核终止该采购计划吗?").then(() => {
+          this.ComUpdatePlan(5, null);
+        })
+      }
     },
     //驳回采购计划
     rejectPlan () {
@@ -311,7 +319,7 @@ export default {
         this.$modal.msgError("请输入审核意见")
         return;
       }
-      this.$modal.confirm("确定要驳回终止采购计划吗?").then(() => {
+      this.$modal.confirm("确定要驳回终止采购计划吗?").then(() => {
         const state = this.oState
         this.ComUpdatePlan(state, '');
       })

+ 20 - 6
ruoyi-ui/src/views/purchase/stop/index.vue

@@ -22,11 +22,15 @@
           <CompTobeSubmitted ref="refToBeSubmitted" />
         </el-tab-pane>
 
-        <el-tab-pane label="待审批" name="second">
+        <el-tab-pane label="待负责人审批" name="second">
+          <CompComApproval ref="CompComApproval" />
+        </el-tab-pane>
+
+        <el-tab-pane label="待副总审批" name="third">
           <CompPendingApproval ref="refPendingApproval" />
         </el-tab-pane>
 
-        <el-tab-pane label="已生效" name="third">
+        <el-tab-pane label="已生效" name="fourth">
           <CompEffective ref="refEffective" />
         </el-tab-pane>
       </el-tabs>
@@ -41,6 +45,7 @@
 <script>
 import { checkPermi, checkRole } from "@/utils/permission"; // 权限判断函数
 import CompTobeSubmitted from './components/CompTobeSubmitted'
+import CompComApproval from './components/CompComApproval'
 import CompPendingApproval from './components/CompPendingApproval'
 import CompEffective from './components/CompEffective'
 
@@ -49,6 +54,7 @@ export default {
   name: 'Plan',
   components: {
     CompTobeSubmitted,
+    CompComApproval,
     CompPendingApproval,
     CompEffective
   },
@@ -66,10 +72,12 @@ export default {
   created () {
     if (checkPermi(['system:termination:add'])) {
       this.activeName = 'first'
-    } else if (checkPermi(['system:termination:allow'])) {
+    } else if (checkRole(['commander'])) {
       this.activeName = 'second'
-    } else {
+    } else if (checkRole(['centerFuzong'])) {
       this.activeName = 'third'
+    } else {
+      this.activeName = 'fourth'
     }
   },
   methods: {
@@ -82,9 +90,12 @@ export default {
           this.$refs.refToBeSubmitted.handleQuery(this.queryParams)
           break
         case 'second':
-          this.$refs.refPendingApproval.handleQuery(this.queryParams)
+          this.$refs.CompComApproval.handleQuery(this.queryParams)
           break
         case 'third':
+          this.$refs.refPendingApproval.handleQuery(this.queryParams)
+          break
+        case 'fourth':
           this.$refs.refEffective.handleQuery(this.queryParams)
           break
       }
@@ -96,9 +107,12 @@ export default {
           this.$refs.refToBeSubmitted.handleQuery(this.queryParams)
           break
         case 'second':
-          this.$refs.refPendingApproval.handleQuery(this.queryParams)
+          this.$refs.CompComApproval.handleQuery(this.queryParams)
           break
         case 'third':
+          this.$refs.refPendingApproval.handleQuery(this.queryParams)
+          break
+        case 'fourth':
           this.$refs.refEffective.handleQuery(this.queryParams)
           break
       }