Browse Source

新增中止功能和分管领导审批后自动生成局领导记录

LuChongMei 10 months ago
parent
commit
997c72bf13
18 changed files with 648 additions and 344 deletions
  1. 2 0
      jp-console/jeeplus-modules/gw/src/main/java/com/jeeplus/circulation2/controller/GwCirculationCard2Controller.java
  2. 31 1
      jp-console/jeeplus-modules/gw/src/main/java/com/jeeplus/yzcirculation/controller/YzCirculationCardController.java
  3. 4 0
      jp-console/jeeplus-modules/gw/src/main/java/com/jeeplus/yzcirculation/domain/YzCirculationCard.java
  4. 3 2
      jp-console/jeeplus-modules/gw/src/main/java/com/jeeplus/yzcirculation/mapper/xml/YzCirculationCardMapper.xml
  5. 2 0
      jp-console/jeeplus-modules/gw/src/main/java/com/jeeplus/yzcirculation/service/dto/YzCirculationCardDTO.java
  6. 16 1
      jp-console/jeeplus-modules/gw/src/main/java/com/jeeplus/yzflow/controller/YzFlowController.java
  7. 2 0
      jp-console/jeeplus-modules/gw/src/main/java/com/jeeplus/yzflow/mapper/YzFlowMapper.java
  8. 3 0
      jp-console/jeeplus-modules/gw/src/main/java/com/jeeplus/yzflow/mapper/xml/YzFlowMapper.xml
  9. 4 0
      jp-console/jeeplus-modules/gw/src/main/java/com/jeeplus/yzflow/service/YzFlowService.java
  10. 1 1
      jp-mobile/components/office-user-select/office-user-select.vue
  11. 7 6
      jp-mobile/pages/commonseal/commonCard.vue
  12. 7 2
      jp-mobile/pages/commonseal/commonInfo.vue
  13. 39 9
      jp-mobile/pages/commonseal/commonList.vue
  14. 3 0
      jp-mobile/pages/workbench/workbench.vue
  15. 1 0
      jp-ui/src/components/officeUserSelect/UserSelectDialog.vue
  16. 9 7
      jp-ui/src/views/yzcirculation/YzCard.vue
  17. 7 2
      jp-ui/src/views/yzcirculation/YzCardInfo.vue
  18. 507 313
      jp-ui/src/views/yzcirculation/YzCirculationCardList.vue

+ 2 - 0
jp-console/jeeplus-modules/gw/src/main/java/com/jeeplus/circulation2/controller/GwCirculationCard2Controller.java

@@ -155,10 +155,12 @@ public class GwCirculationCard2Controller {
 		UserDTO userDTO=UserUtils.getCurrentUserDTO();
 		HashMap<String, Object> result = gwCirculationCard2Service.getStatistics ( userDTO.getId() );
 		HashMap<String, Object> yz = yzCirculationCardService.getStatistics ( userDTO.getId() );
+		result.put("gw_db",result.get("db"));
 		result.put("allcount",Integer.parseInt(result.get("allcount").toString()) + Integer.parseInt(yz.get("allcount").toString())  );
 		result.put("db",Integer.parseInt(result.get("db").toString()) + Integer.parseInt(yz.get("db").toString())  );
 		result.put("gdcount",Integer.parseInt(result.get("gdcount").toString()) + Integer.parseInt(yz.get("gdcount").toString())  );
 		result.put("yb",Integer.parseInt(result.get("yb").toString()) + Integer.parseInt(yz.get("yb").toString())  );
+		result.put("yz_db",yz.get("db"));
 		return ResponseEntity.ok ( result  );
 	}
 

+ 31 - 1
jp-console/jeeplus-modules/gw/src/main/java/com/jeeplus/yzcirculation/controller/YzCirculationCardController.java

@@ -87,7 +87,8 @@ public class YzCirculationCardController {
 			}
 		}
 		if(isadmin) {
-			if (state==null||state.equals("null")||state.equals("")||state.equals("5")) yzCirculationCardDTO.setState("");
+			state="";
+			if (state.equals("5")) yzCirculationCardDTO.setState("");
 			queryWrapper = QueryWrapperGenerator.buildQueryCondition (yzCirculationCardDTO, YzCirculationCardDTO.class);
 		}else {
 			yzCirculationCardDTO.setState("");
@@ -97,10 +98,20 @@ public class YzCirculationCardController {
 		//状态:1待办,2暂存,3归档,4已办,
 		//5查看所有
 		if(state!=null&&!state.equals("null")&&!state.equals("")){
+			if (state.equals("5"))isadmin=true;
 			//1待办
 			if(state.equals("1")){
 				queryWrapper.eq ("b.state", "1" );
 			}
+			// 中止
+			else if (state.equals("2")) {
+				queryWrapper.eq ("a.state", "2" );
+			}
+			// 归档
+			else if (state.equals("3")) {
+				queryWrapper.eq ("b.state", "0" );
+				queryWrapper.eq ("a.state", "3" );
+			}
 			//4已办,根据流程上来
 			else if(state.equals("4")){
 				queryWrapper.eq ("b.state", "0" );
@@ -109,9 +120,11 @@ public class YzCirculationCardController {
 		queryWrapper.eq ("a.del_flag", 0 ); // 排除已经删除
 		result=yzCirculationCardService.findList (page, queryWrapper,isadmin,userDTO.getId());
 		for (YzCirculationCardDTO y :result.getRecords()){
+			y.setAuthorId(y.getAuthorPerson());
 			UserDTO userDTO2=userService.get(y.getAuthorPerson());
 			y.setAuthorPerson(userDTO2.getName());
 			UserDTO userDTO1=userService.getUserByLoginName(y.getProofreader(),"10000");
+			y.setProofreaderId(y.getProofreader());
 			y.setProofreader(userDTO1.getName());
 		}
 		return ResponseEntity.ok (result);
@@ -146,6 +159,23 @@ public class YzCirculationCardController {
 	public  ResponseEntity <String> save(@Valid @RequestBody YzCirculationCardDTO yzCirculationCardDTO) {
 		//新增或编辑表单保存
 		if(yzCirculationCardDTO.getId()!=null&&!yzCirculationCardDTO.getId().equals("")){
+			//中止
+			yzFlowService.suspendState(yzCirculationCardDTO.getId());
+			if(yzCirculationCardDTO.getState().equals("2")){
+				//默认一条待办
+				YzFlowDTO yzFlowDTO=new YzFlowDTO();
+				yzFlowDTO.setYzId(yzCirculationCardDTO.getId());
+				yzFlowDTO.setState("0");
+
+				UserDTO userDTO2=UserUtils.getCurrentUserDTO();
+				yzFlowDTO.setCreateBy(userDTO2);
+				yzFlowDTO.setUpdateBy(userDTO2);
+				yzFlowDTO.setCreateTruename(userDTO2.getName());
+				yzFlowDTO.setNextTruename(userDTO2.getName());
+				yzFlowDTO.setNextUser(userDTO2.getId());
+				yzFlowDTO.setWhich("5");
+				yzFlowService.saveOrUpdate (yzFlowWrapper.toEntity (yzFlowDTO));
+			}
 			yzCirculationCardService.saveOrUpdate (yzCirculationCardWrapper.toEntity (yzCirculationCardDTO));
 		}else{
 			//新增的时候需要新增一条下一人待办事项

+ 4 - 0
jp-console/jeeplus-modules/gw/src/main/java/com/jeeplus/yzcirculation/domain/YzCirculationCard.java

@@ -72,5 +72,9 @@ public class YzCirculationCard extends BaseEntity {
      * 备注
      */
 	private String remark;
+	/**
+	 * 中止原因
+	 */
+	private String suspend;
 
 }

+ 3 - 2
jp-console/jeeplus-modules/gw/src/main/java/com/jeeplus/yzcirculation/mapper/xml/YzCirculationCardMapper.xml

@@ -14,6 +14,7 @@
 		a.year_num AS "yearNum",
 		a.attachment AS "attachment",
 		a.remark AS "remark",
+		a.suspend AS "suspend",
 		a.create_by_id AS "createBy.id",
 		a.create_time AS "createTime",
 		a.update_by_id AS "updateBy.id",
@@ -72,8 +73,8 @@
 
 	<select id="getStatistics2" resultType="integer">
 		SELECT count(DISTINCT a.id) FROM yz_circulation_card a
-		left JOIN yz_flow b on a.id=b.yz_id
-		where a.del_flag=0 AND b.del_flag =0 and b.state=1 AND a.state = 1 and b.update_by_id=#{userid}
+		left JOIN yz_flow b on a.id =b.yz_id
+		where a.del_flag = 0 AND b.del_flag =0 and b.state = 1 AND a.state = 1 and b.update_by_id=#{userid}
 	</select>
 
 	<select id="getStatistics3" resultType="integer">

+ 2 - 0
jp-console/jeeplus-modules/gw/src/main/java/com/jeeplus/yzcirculation/service/dto/YzCirculationCardDTO.java

@@ -48,6 +48,7 @@ public class YzCirculationCardDTO extends BaseDTO {
     @Query(tableColumn = "a.proofreader", javaField = "proofreader", type = QueryType.EQ)
     @ExcelProperty(value = "校对人")
 	private String proofreader;
+	private String proofreaderId;
 	        
 	/**
      * 是否公开
@@ -71,6 +72,7 @@ public class YzCirculationCardDTO extends BaseDTO {
 	@ExcelDictProperty("")
 	private String state;
 	private String nowUser;
+	private String suspend;
 	/**
      * 卡号
      */

+ 16 - 1
jp-console/jeeplus-modules/gw/src/main/java/com/jeeplus/yzflow/controller/YzFlowController.java

@@ -111,6 +111,7 @@ public class YzFlowController {
 				isadmin=true;
 			}
 		}
+
 		//根据Next判断此时是哪一类人员提交
 		//1、此时是办公室管理员选人后的操作
 		if(yzFlowDTO.getNext()!=null&&yzFlowDTO.getNext().equals("1")){
@@ -147,6 +148,7 @@ public class YzFlowController {
 
 			//3、此时是局领导、或科室领导审核提交的时候
 		}else{
+
 			//需要判断会签是否结束,结束的时候需要新增一条待归档到办公室管理员的待办
 			int count=yzFlowService.isEnd(yzFlowDTO.getYzId());
 			if(count==0){
@@ -164,7 +166,20 @@ public class YzFlowController {
 			}
 
 		}
-
+		//	判断是否为分管领导
+		if (userDTO.getRoleNames().contains("分管领导")) {
+			YzFlowDTO yzFlowDTOn=new YzFlowDTO();
+			yzFlowDTOn.setYzId(yzFlowDTO.getYzId());
+			yzFlowDTOn.setState("1");
+			UserDTO userDTO3=userService.getUserByLoginName("jld","10000");
+			yzFlowDTOn.setCreateBy(userDTO);
+			yzFlowDTOn.setUpdateBy(userDTO3);
+			yzFlowDTOn.setCreateTruename(userDTO.getName());
+			yzFlowDTOn.setNextTruename(userDTO3.getName());
+			yzFlowDTOn.setNextUser(userDTO3.getId());
+			yzFlowDTOn.setWhich("3");
+			yzFlowService.saveOrUpdate (yzFlowWrapper.toEntity (yzFlowDTOn));
+		}
 		return ResponseEntity.ok ( "保存用章流程成功" );
 	}
 	/**

+ 2 - 0
jp-console/jeeplus-modules/gw/src/main/java/com/jeeplus/yzflow/mapper/YzFlowMapper.java

@@ -39,4 +39,6 @@ public interface YzFlowMapper extends BaseMapper<YzFlow> {
     int isEnd(String yzId);
 
     List<YzFlowDTO> getByYzId(String yzId);
+
+    void suspendState(String id);
 }

+ 3 - 0
jp-console/jeeplus-modules/gw/src/main/java/com/jeeplus/yzflow/mapper/xml/YzFlowMapper.xml

@@ -42,4 +42,7 @@
 	<select id="isEnd" resultType="Integer">
 		SELECT COUNT(id) FROM yz_flow WHERE yz_id =#{yzId} and state=1
 	</select>
+	<update id="suspendState">
+		update yz_flow set state = 2 where yz_id = #{id} and state = 1
+	</update>
 </mapper>

+ 4 - 0
jp-console/jeeplus-modules/gw/src/main/java/com/jeeplus/yzflow/service/YzFlowService.java

@@ -51,4 +51,8 @@ public class YzFlowService extends ServiceImpl<YzFlowMapper, YzFlow> {
 	public int isEnd(String yzId) {
 		return  baseMapper.isEnd(yzId);
 	}
+
+    public void suspendState(String id) {
+		baseMapper.suspendState(id);
+	}
 }

+ 1 - 1
jp-mobile/components/office-user-select/office-user-select.vue

@@ -96,7 +96,6 @@
 
 				if (this.types.length > 0) {
 					let types = this.types.split(",")
-
 					let officeList = []
 					types.forEach(item => {
 						data.forEach(item1 => {
@@ -114,6 +113,7 @@
 					size: 10000
 				}).then(res => {
 					this.userList = res.records
+					this.userList = this.userList.filter(item => item.loginName !='jld')
 					this.userList = this.userList.map(item => ({
 						...item,
 						check: false

+ 7 - 6
jp-mobile/pages/commonseal/commonCard.vue

@@ -144,19 +144,20 @@
 					</u-col>
 				</u-row>
 				<u-row justify="space-between" class="card_row card_row_border">
-					<u-col span="3" textAlign="center" class="">
+					<u-col span="3" textAlign="center">
 						<view>可否公开</view>
 					</u-col>
 					<u-col span="3" textAlign="center" class="card_col_1">
-						<u--text size="14" align="center" lines="1" :text="inputForm.open?'是':'否'"></u--text>
+						<u--text size="14" align="center" lines="1"
+							:text="inputForm.open == '' ? '-' : inputForm.open == 0 ? '否' : '是'"></u--text>
 					</u-col>
 					<u-col span="3" textAlign="center" class="card_col card_col_1">
 						<view>印数</view>
 					</u-col>
 					<u-col span="3" textAlign="center">
-						<uni-tooltip :content="inputForm.printNum==0?'':inputForm.printNum" placement="top">
-							<u--text size="14" align="center" lines="1" :text="inputForm.printNum==0?'':inputForm.printNum"></u--text>
-						</uni-tooltip>
+						<u--text size="14" align="center" lines="1"
+							:text="inputForm.printNum==0?'-':inputForm.printNum"></u--text>
+
 					</u-col>
 				</u-row>
 				<u-row justify="space-between" class="card_row card_row_border card_last_row">
@@ -206,7 +207,7 @@
 
 	export default {
 		mounted() {
-			yzCirculationCardService.queryById(this.gwId,1).then(data => {
+			yzCirculationCardService.queryById(this.gwId, 1).then(data => {
 				this.inputForm = data
 				this.inputForm.cardNum = "[" + this.inputForm.yearNum + "]" + this.inputForm.cardNum + "号"
 				this.fileLists = this.inputForm.attachment.split(",")

+ 7 - 2
jp-mobile/pages/commonseal/commonInfo.vue

@@ -3,10 +3,13 @@
 		<commonCard :gwId="gwId"></commonCard>
 		<view class="info_main">
 			<u-steps :current="current" direction="column" inactiveColor="#36a7f3" activeColor="#5fdf50">
-				<u-steps-item title="发起" :desc="inputForm.createTruename +' - '+inputForm.createTime">
+				<u-steps-item :error="isSuspend" title="发起" :desc="inputForm.createTruename +' - '+inputForm.createTime">
 				</u-steps-item>
 				<u-steps-item v-for="item in downList"
-					:title="item.which=='0'?'承办科(室)意见':item.which=='1'?'办公室意见':item.which=='2'?'分管领导意见':item.which=='3'?'主要领导意见':'已归档'"
+				:error="isSuspend"
+					:title="item.which=='0'?'承办科(室)意见':item.which=='1'?'办公室意见':item.which=='2'?'分管领导意见':item.which=='3'?'主要领导意见':item.which == '4'
+                  ? '已归档'
+                  : '已中止'"
 					:desc="item.nextTruename +' - '+item.updateTime">
 				</u-steps-item>
 				<u-steps-item v-for="item in gwList"
@@ -34,6 +37,7 @@
 		},
 		data() {
 			return {
+				isSuspend: false,
 				gwId: '',
 				downList: [],
 				gwList: [],
@@ -47,6 +51,7 @@
 					.localeCompare(b.createTime));
 				this.inputForm = data[0]
 				data.forEach(item => {
+					if (item.which == "5") this.isSuspend = true;
 					if (item.state == 0) {
 						this.downList.push(item)
 					} else {

+ 39 - 9
jp-mobile/pages/commonseal/commonList.vue

@@ -12,19 +12,17 @@
 							<view class="ellipsis-description">
 								{{item.name}}
 							</view>
-
 						</view>
 					</view>
 					<view slot="value">
-
-						<view class="text-grey text-sm list_label margin-top">
-							{{item.createTime}}
-						</view>
 						<view>
-							<u-tag v-if="type==5" :text="item.state==1?'待办':item.state == 3?'归档':'已办'" plain
-								:type="item.state==1?'warning':item.state == 3?'primary':'success'">
+							<u-tag v-if="type==1 || type==4" text="点击中止" type="warning" @click="suspend(item)">
 							</u-tag>
 						</view>
+						<view class="text-grey text-sm list_label margin-top">
+							{{item.createTime}}
+						</view>
+
 					</view>
 					<view slot="label">
 						<view class="text-grey margin-top">
@@ -46,7 +44,7 @@
 		onShow() {
 			// 先获取页面栈
 			let pages = getCurrentPages();
-			
+
 			// 当前页面的前一个页面
 			let prevPage = pages[pages.length - 1];
 			if (prevPage.options.type) {
@@ -79,7 +77,7 @@
 				this.status = 'loading';
 				this.loadmore()
 			}
-		
+
 		},
 		data() {
 			return {
@@ -108,6 +106,38 @@
 			}
 		},
 		methods: {
+			
+			// 中止
+			suspend(row) {
+				let that = this
+				uni.showModal({
+					title: '中止原因',
+					placeholderText: '输入中止原因',
+					editable: true,
+					success: function(res) {
+						if (res.confirm) {
+							that.status = 'loading';
+							row.suspend = res.content;
+							row.state = 2;
+							row.authorPerson = row.authorId;
+							row.proofreader = row.proofreaderId;
+							yzCirculationCardService.save(row).then((data) => {
+								uni.showToast({
+									title: "已中止",
+								})	
+								that.status = 'loadmore'
+								that.dataList = [];
+								that.tablePage.currentPage = 0;
+								that.tablePage.pageSize = 10;
+								that.tablePage.pages = 0;
+								that.loadmore()
+							});
+						} else if (res.cancel) {
+							console.log('用户点击取消');
+						}
+					}
+				});
+			},
 			// 查看详情
 			toInfo(item) {
 				if (this.type == 3 || this.type == 5 || this.type == 4) {

+ 3 - 0
jp-mobile/pages/workbench/workbench.vue

@@ -44,6 +44,7 @@
 					<text class="grid_text">新增</text>
 				</view>
 				<view @tap="toList(1)" class="circle-button-box">
+					<u-badge type="warning" max="99" :offset="[0,10]" absolute :value="statistics.gw_db?statistics.gw_db:0" showZero="true"></u-badge>
 					<view><u--image src="/static/index/icon1.png" width="40px" height="40px"></u--image></view>
 					<text class="grid_text">待办</text>
 				</view>
@@ -63,6 +64,7 @@
 					<text class="grid_text">新增</text>
 				</view>
 				<view @tap="toCommonList(1)" class="circle-button-box">
+					<u-badge type="warning" max="99" :offset="[0,10]" absolute :value="statistics.yz_db?statistics.yz_db:0" showZero="true"></u-badge>
 					<view><u--image src="/static/index/icon1.png" width="40px" height="40px"></u--image></view>
 					<text class="grid_text">待办</text>
 				</view>
@@ -244,6 +246,7 @@
 	}
 
 	.circle-button-box {
+		position: relative;
 		width: 25%;
 		margin-top: 10px;
 		display: -webkit-box;

+ 1 - 0
jp-ui/src/components/officeUserSelect/UserSelectDialog.vue

@@ -234,6 +234,7 @@ export default {
         })
         .then((data) => {
           this.user = data.records;
+          this.user = this.user.filter((item) => item.loginName != "jld");
           this.total = data.total;
           // this.pageNo = data.current
           this.showUserloading = false;

+ 9 - 7
jp-ui/src/views/yzcirculation/YzCard.vue

@@ -37,11 +37,11 @@
               </div>
               <div style="line-height: 20px">
                 <el-image
-                  :src="item.signfj"
+                  :src="leader.signfj"
                   style="width: 80px; height: 20px; vertical-align: middle"
                   :fit="contain"
                 ></el-image>
-                <span style="font-size: 12px">{{ item.updateTime }}</span>
+                <span style="font-size: 12px">{{ leader.updateTime }}</span>
               </div>
             </div>
           </el-col>
@@ -205,7 +205,7 @@
           </el-col>
           <el-col :span="6" textAlign="center" class="card_col_1">
             <span class="card_col_2">{{
-              inputForm.open == 1 ? "是" : inputForm.open == 1 ? "否" : ""
+              inputForm.open == "" ? "-" : inputForm.open == 0 ? "否" : "是"
             }}</span>
           </el-col>
           <el-col :span="6" textAlign="center" class="card_col card_col_1">
@@ -213,7 +213,7 @@
           </el-col>
           <el-col :span="6" textAlign="center">
             <span class="card_col_2">{{
-              inputForm.printNum == 0 ? "" : inputForm.printNum
+              inputForm.printNum == 0 ? "-" : inputForm.printNum
             }}</span>
           </el-col>
         </el-row>
@@ -231,10 +231,12 @@
             </el-tooltip>
           </el-col>
         </el-row>
-        <span style="margin: 10px; color: red; font-size: 10px"
-          >所有涉密敏感信息不得上传</span
-        >
+
         <div class="card_other">
+          <span
+            style="margin: 10px; color: red; font-size: 10px; text-align: left"
+            >所有涉密敏感信息不得上传</span
+          ><br />
           附件:
           <div class="other_info" v-for="item in fileList" :key="item">
             <div class="">

+ 7 - 2
jp-ui/src/views/yzcirculation/YzCardInfo.vue

@@ -16,7 +16,7 @@
       <div>
         <div class="cll">
           <el-steps
-            finish-status="success"
+            :finish-status="isSuspend ? 'error' : 'success'"
             direction="vertical"
             :active="current"
           >
@@ -38,7 +38,9 @@
                   ? '分管领导意见'
                   : item.which == '3'
                   ? '主要领导意见'
-                  : '已归档'
+                  : item.which == '4'
+                  ? '已归档'
+                  : '已中止'
               "
               :description="item.nextTruename + ' - ' + item.updateTime"
             />
@@ -174,6 +176,7 @@ import YzCard from "./YzCard.vue";
 export default {
   data() {
     return {
+      isSuspend: false,
       title: "",
       visible: false,
       loading: false,
@@ -239,6 +242,7 @@ export default {
 
       this.visible = true;
       this.loading = false;
+      this.isSuspend = false;
       this.$nextTick(() => {
         if (method === "edit" || method === "view") {
           // 修改或者查看
@@ -255,6 +259,7 @@ export default {
             this.heightpx = a + "px";
             this.inputForm = data[0];
             data.forEach((item) => {
+              if (item.which == "5") this.isSuspend = true;
               if (item.state == 0) {
                 this.downList.push(item);
               } else {

+ 507 - 313
jp-ui/src/views/yzcirculation/YzCirculationCardList.vue

@@ -1,320 +1,514 @@
 <template>
-	<div class="page">
-		<el-form :inline="true" v-if="searchVisible" class="query-form m-b-10" ref="searchForm" :model="searchForm"
-			@keyup.enter="refreshList()" @submit.prevent>
-			<!-- 搜索框-->
-			<el-form-item prop="name" label="文件名称:">
-				<el-input v-model="searchForm.name" placeholder="请输入文件名称" clearable></el-input>
-			</el-form-item>
-			<el-form-item prop="yearNum" label="年份:">
-				<el-input v-model="searchForm.yearNum" placeholder="请输入年份" clearable></el-input>
-			</el-form-item>
-			<el-form-item prop="authorPerson" label="拟稿人:">
-				<UserSelect tenantId="10000" :limit="1" v-model="searchForm.authorPerson"></UserSelect>
-			</el-form-item>
-			<el-form-item prop="open" label="是否公开:">
-				<el-select clearable v-model="searchForm.open" placeholder="是否公开">
-					<el-option v-for="item in $dictUtils.getDictList('yes_no')" :key="item.value" :label="item.label"
-						:value="item.value">
-					</el-option>
-				</el-select>
-			</el-form-item>
-			<el-form-item prop="state" label="状态:">
-				<el-select clearable v-model="searchForm.state" placeholder="请选择状态">
-					<el-option v-for="item in $dictUtils.getDictList('gw_state')" :key="item.value" :label="item.label"
-						:value="item.value">
-					</el-option>
-				</el-select>
-			</el-form-item>
-			<el-form-item>
-				<el-button type="primary" @click="refreshList" icon="search">查询</el-button>
-				<el-button type="default" @click="resetSearch" icon="refresh-right">重置</el-button>
-			</el-form-item>
-		</el-form>
+  <div class="page">
+    <el-form
+      :inline="true"
+      v-if="searchVisible"
+      class="query-form m-b-10"
+      ref="searchForm"
+      :model="searchForm"
+      @keyup.enter="refreshList()"
+      @submit.prevent
+    >
+      <!-- 搜索框-->
+      <el-form-item prop="name" label="文件名称:">
+        <el-input
+          v-model="searchForm.name"
+          placeholder="请输入文件名称"
+          clearable
+        ></el-input>
+      </el-form-item>
+      <el-form-item prop="yearNum" label="年份:">
+        <el-input
+          v-model="searchForm.yearNum"
+          placeholder="请输入年份"
+          clearable
+        ></el-input>
+      </el-form-item>
+      <el-form-item prop="authorPerson" label="拟稿人:">
+        <UserSelect
+          tenantId="10000"
+          :limit="1"
+          v-model="searchForm.authorPerson"
+        ></UserSelect>
+      </el-form-item>
+      <el-form-item prop="open" label="是否公开:">
+        <el-select clearable v-model="searchForm.open" placeholder="是否公开">
+          <el-option
+            v-for="item in $dictUtils.getDictList('yes_no')"
+            :key="item.value"
+            :label="item.label"
+            :value="item.value"
+          >
+          </el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item prop="state" label="状态:">
+        <el-select
+          clearable
+          v-model="searchForm.state"
+          placeholder="请选择状态"
+        >
+          <el-option
+            v-for="item in $dictUtils.getDictList('gw_state')"
+            :key="item.value"
+            :label="item.label"
+            :value="item.value"
+          >
+          </el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" @click="refreshList" icon="search"
+          >查询</el-button
+        >
+        <el-button type="default" @click="resetSearch" icon="refresh-right"
+          >重置</el-button
+        >
+      </el-form-item>
+    </el-form>
 
-		<div class="jp-table">
-			<vxe-toolbar ref="yzCirculationCardToolbar" :refresh="{ query: refreshList }" import export print custom>
-				<template #buttons>
-					<el-button v-if="hasPermission('yzcirculation:yzCirculationCard:add')" type="primary" icon="plus"
-						@click="add()">新建</el-button>
-					<el-button v-if="hasPermission('yzcirculation:yzCirculationCard:edit')" type="warning"
-						icon="edit-filled" @click="edit()"
-						v-show="$refs.yzCirculationCardTable && $refs.yzCirculationCardTable.getCheckboxRecords().length === 1"
-						plain>修改</el-button>
-					<el-button v-if="hasPermission('yzcirculation:yzCirculationCard:del')" type="danger"
-						icon="del-filled" @click="del()"
-						v-show="$refs.yzCirculationCardTable && $refs.yzCirculationCardTable.getCheckboxRecords().length > 0"
-						plain>删除</el-button>
-				</template>
-				<template #tools>
-					<vxe-button type="text" :title="searchVisible ? '收起检索' : '展开检索'
-			" icon="vxe-icon-search" class="tool-btn" @click="searchVisible = !searchVisible"></vxe-button>
-					<vxe-button type="text" title="下载导入模板"
-						v-if="hasPermission('yzcirculation:yzCirculationCard:import')" icon="iconfont icon-xiazaimoban1"
-						class="tool-btn m-l-0" @click="downloadTpl()">
-					</vxe-button>
-				</template>
-			</vxe-toolbar>
-			<div class="jp-table-body">
-				<vxe-table border="inner" auto-resize resizable height="auto" :loading="loading" size="small"
-					ref="yzCirculationCardTable" show-header-overflow show-overflow highlight-hover-row
-					:menu-config="{}" :print-config="{}" :import-config="{
-			importMethod: importMethod,
-			types: ['csv', 'xls', 'xlsx'],
-			remote: true,
-		}" :export-config="{
-			remote: true,
-			filename: `拟稿申请数据${moment(new Date()).format(
-				'YYYY-MM-DD'
-			)}`,
-			sheetName: '拟稿申请数据',
-			exportMethod: exportMethod,
-			types: ['xlsx'],
-			modes: ['current', 'selected', 'all'],
-		}" @sort-change="sortChangeHandle" :sort-config="{ remote: true }" :data="dataList" :checkbox-config="{}">
-					<vxe-column type="seq" width="40"></vxe-column>
-					<vxe-column type="checkbox" width="40px"></vxe-column>
-					<vxe-column field="yearNum" sortable title="年份">
-					</vxe-column>
-					<vxe-column field="cardNum" sortable title="卡号">
-					</vxe-column>
-					<vxe-column field="name" sortable title="文件名称">
-					</vxe-column>
-					<vxe-column field="authorPerson" sortable title="拟稿人">
-					</vxe-column>
-					<vxe-column field="proofreader" sortable title="校对人">
-					</vxe-column>
-					<vxe-column field="open" sortable title="是否公开">
-						<template #default="{ row }">
-							{{ $dictUtils.getDictLabel("yes_no", row.open, '-') }}
-						</template>
-					</vxe-column>
-					<vxe-column field="printNum" sortable title="印数">
-						<template #default="{ row }">
-							{{ row.printNum == 0 ? "-" : row.printNum }}
-						</template>
-					</vxe-column>
-					<vxe-column field="state" sortable title="状态">
-						<template #default="{ row }">
-							{{ $dictUtils.getDictLabel("gw_state", row.state, '-') }}
-						</template>
-					</vxe-column>
-
-					<vxe-column fixed="right" align="center" width="300" title="操作">
-						<template #default="{ row }">
-							<el-button v-if="hasPermission('yzcirculation:yzCirculationCard:view')" type="primary" text
-								icon="view-filled" @click="view(row.id)">查看</el-button>
-							<el-button
-								v-if="hasPermission('yzcirculation:yzCirculationCard:edit') && row.state == '1' && role != '租户管理员'"
-								type="success" text icon="edit-filled" @click="examine(row.id)">审批</el-button>
-							<el-button
-								v-if="hasPermission('yzcirculation:yzCirculationCard:edit') && (role == '租户管理员' || role == '办公室管理员')"
-								type="primary" text icon="edit-filled" @click="edit(row.id)">修改</el-button>
-							<el-button v-if="hasPermission('yzcirculation:yzCirculationCard:del')" type="danger" text
-								icon="del-filled" @click="del(row.id)">删除</el-button>
-						</template>
-					</vxe-column>
-				</vxe-table>
-				<vxe-pager background size="small" :current-page="tablePage.currentPage" :page-size="tablePage.pageSize"
-					:total="tablePage.total" :page-sizes="[10, 20, 100, 1000, { label: '全量数据', value: 1000000 }]"
-					:layouts="['PrevPage', 'JumpNumber', 'NextPage', 'FullJump', 'Sizes', 'Total']"
-					@page-change="currentChangeHandle">
-				</vxe-pager>
-			</div>
-		</div>
-		<!-- 弹窗, 新增 / 修改 -->
-		<YzCirculationCardForm ref="yzCirculationCardForm" @refreshDataList="refreshList"></YzCirculationCardForm>
-		<YzCardInfo ref="yzCardInfo" @refreshDataList="refreshList"></YzCardInfo>
-	</div>
+    <div class="jp-table" style="height: calc(100% - 120px)">
+      <vxe-toolbar
+        ref="yzCirculationCardToolbar"
+        :refresh="{ query: refreshList }"
+        import
+        export
+        print
+        custom
+      >
+        <template #buttons>
+          <el-button
+            v-if="hasPermission('yzcirculation:yzCirculationCard:add')"
+            type="primary"
+            icon="plus"
+            @click="add()"
+            >新建</el-button
+          >
+          <el-button
+            v-if="hasPermission('yzcirculation:yzCirculationCard:edit')"
+            type="warning"
+            icon="edit-filled"
+            @click="edit()"
+            v-show="
+              $refs.yzCirculationCardTable &&
+              $refs.yzCirculationCardTable.getCheckboxRecords().length === 1
+            "
+            plain
+            >修改</el-button
+          >
+          <el-button
+            v-if="hasPermission('yzcirculation:yzCirculationCard:del')"
+            type="danger"
+            icon="del-filled"
+            @click="del()"
+            v-show="
+              $refs.yzCirculationCardTable &&
+              $refs.yzCirculationCardTable.getCheckboxRecords().length > 0
+            "
+            plain
+            >删除</el-button
+          >
+        </template>
+        <template #tools>
+          <vxe-button
+            type="text"
+            :title="searchVisible ? '收起检索' : '展开检索'"
+            icon="vxe-icon-search"
+            class="tool-btn"
+            @click="searchVisible = !searchVisible"
+          ></vxe-button>
+          <vxe-button
+            type="text"
+            title="下载导入模板"
+            v-if="hasPermission('yzcirculation:yzCirculationCard:import')"
+            icon="iconfont icon-xiazaimoban1"
+            class="tool-btn m-l-0"
+            @click="downloadTpl()"
+          >
+          </vxe-button>
+        </template>
+      </vxe-toolbar>
+      <div class="jp-table-body">
+        <vxe-table
+          border="inner"
+          auto-resize
+          resizable
+          height="auto"
+          :loading="loading"
+          size="small"
+          ref="yzCirculationCardTable"
+          show-header-overflow
+          show-overflow
+          highlight-hover-row
+          :menu-config="{}"
+          :print-config="{}"
+          :import-config="{
+            importMethod: importMethod,
+            types: ['csv', 'xls', 'xlsx'],
+            remote: true,
+          }"
+          :export-config="{
+            remote: true,
+            filename: `拟稿申请数据${moment(new Date()).format('YYYY-MM-DD')}`,
+            sheetName: '拟稿申请数据',
+            exportMethod: exportMethod,
+            types: ['xlsx'],
+            modes: ['current', 'selected', 'all'],
+          }"
+          @sort-change="sortChangeHandle"
+          :sort-config="{ remote: true }"
+          :data="dataList"
+          :checkbox-config="{}"
+        >
+          <vxe-column type="seq" width="40"></vxe-column>
+          <vxe-column type="checkbox" width="40px"></vxe-column>
+          <vxe-column field="yearNum" sortable title="年份"> </vxe-column>
+          <vxe-column field="cardNum" sortable title="卡号"> </vxe-column>
+          <vxe-column field="name" sortable title="文件名称"> </vxe-column>
+          <vxe-column field="authorPerson" sortable title="拟稿人">
+          </vxe-column>
+          <vxe-column field="proofreader" sortable title="校对人"> </vxe-column>
+          <vxe-column field="open" sortable title="是否公开">
+            <template #default="{ row }">
+              {{ $dictUtils.getDictLabel("yes_no", row.open, "-") }}
+            </template>
+          </vxe-column>
+          <vxe-column field="printNum" sortable title="印数">
+            <template #default="{ row }">
+              {{ row.printNum == 0 ? "-" : row.printNum }}
+            </template>
+          </vxe-column>
+          <vxe-column field="state" sortable title="状态">
+            <template #default="{ row }">
+              {{ $dictUtils.getDictLabel("gw_state", row.state, "-") }}
+            </template>
+          </vxe-column>
+          <vxe-column field="suspend" sortable title="中止原因">
+            <template #default="{ row }">
+              {{ row.state == 2 ? row.suspend : "" }}
+            </template>
+          </vxe-column>
+          <vxe-column fixed="right" align="center" width="300" title="操作">
+            <template #default="{ row }">
+              <el-button
+                v-if="hasPermission('yzcirculation:yzCirculationCard:view')"
+                type="primary"
+                text
+                icon="view-filled"
+                @click="view(row.id)"
+                >查看</el-button
+              >
+              <el-button
+                v-if="
+                  hasPermission('yzcirculation:yzCirculationCard:edit') &&
+                  row.state == '1' &&
+                  role != '租户管理员' &&
+                  row.state != 2
+                "
+                type="success"
+                text
+                @click="examine(row.id)"
+                >审批</el-button
+              >
+              <el-button
+                v-if="
+                  hasPermission('yzcirculation:yzCirculationCard:edit') &&
+                  (role == '租户管理员' || role == '办公室管理员') &&
+                  row.state != 3 &&
+                  row.state != 2
+                "
+                type="primary"
+                text
+                icon="edit-filled"
+                @click="edit(row.id)"
+                >修改</el-button
+              >
+              <el-button
+                v-if="
+                  hasPermission('yzcirculation:yzCirculationCard:edit') &&
+                  row.state != 2 &&
+                  row.state != 3
+                "
+                type="info"
+                text
+                @click="suspend(row)"
+                >中止</el-button
+              >
+              <el-button
+                v-if="
+                  hasPermission('yzcirculation:yzCirculationCard:del') &&
+                  row.state != 3
+                "
+                type="danger"
+                text
+                icon="del-filled"
+                @click="del(row.id)"
+                >删除</el-button
+              >
+            </template>
+          </vxe-column>
+        </vxe-table>
+        <vxe-pager
+          background
+          size="small"
+          :current-page="tablePage.currentPage"
+          :page-size="tablePage.pageSize"
+          :total="tablePage.total"
+          :page-sizes="[
+            10,
+            20,
+            100,
+            1000,
+            { label: '全量数据', value: 1000000 },
+          ]"
+          :layouts="[
+            'PrevPage',
+            'JumpNumber',
+            'NextPage',
+            'FullJump',
+            'Sizes',
+            'Total',
+          ]"
+          @page-change="currentChangeHandle"
+        >
+        </vxe-pager>
+      </div>
+    </div>
+    <!-- 弹窗, 新增 / 修改 -->
+    <YzCirculationCardForm
+      ref="yzCirculationCardForm"
+      @refreshDataList="refreshList"
+    ></YzCirculationCardForm>
+    <YzCardInfo ref="yzCardInfo" @refreshDataList="refreshList"></YzCardInfo>
+  </div>
 </template>
 
 <script>
-import YzCirculationCardForm from './YzCirculationCardForm'
-import YzCardInfo from './YzCardInfo'
-import yzCirculationCardService from '@/api/yzcirculation/yzCirculationCardService'
-import UserSelect from '@/components/userSelect'
+import YzCirculationCardForm from "./YzCirculationCardForm";
+import YzCardInfo from "./YzCardInfo";
+import yzCirculationCardService from "@/api/yzcirculation/yzCirculationCardService";
+import UserSelect from "@/components/userSelect";
 export default {
-	data() {
-		return {
-			searchVisible: true,
-			role: '',
-			searchForm: {
-				name: '',
-				open: '',
-				state: '',
-				yearNum: '',
-				authorPerson: ''
-			},
-			dataList: [],
-			tablePage: {
-				total: 0,
-				currentPage: 1,
-				pageSize: 10,
-				orders: [{ column: "a.state", asc: true }, { column: "a.create_time", asc: false }],
-			},
-			loading: false
-		}
-	},
-	components: {
-		UserSelect,
-		YzCirculationCardForm,
-		YzCardInfo
-	},
-	created() {
-	},
-	mounted() {
-		this.$nextTick(() => {
-			this.role = JSON.parse(window.localStorage.getItem('USER_INFO')).roleNames
-			// 将表格和工具栏进行关联
-			const $table = this.$refs.yzCirculationCardTable
-			const $toolbar = this.$refs.yzCirculationCardToolbar
-			$table.connect($toolbar)
-		})
-	},
-	activated() {
-		this.refreshList()
-	},
-	methods: {
-		// 获取数据列表
-		refreshList() {
-			this.loading = true
-			yzCirculationCardService.list({
-				'current': this.tablePage.currentPage,
-				'size': this.tablePage.pageSize,
-				'orders': this.tablePage.orders,
-				...this.searchForm
-			}).then((data) => {
-				this.dataList = data.records
-				this.tablePage.total = data.total
-				this.loading = false
-			})
-		},
-		// 当前页
-		currentChangeHandle({ currentPage, pageSize }) {
-			this.tablePage.currentPage = currentPage
-			this.tablePage.pageSize = pageSize
-			this.refreshList()
-		},
-		// 排序
-		sortChangeHandle(obj) {
-			this.tablePage.orders = [];
-			if (obj.order != null) {
-				this.tablePage.orders = [{ column: obj.column.sortBy || this.$utils.toLine(obj.property), asc: obj.order === "asc" }];
-			} else {
-				this.tablePage.orders = [{ column: "a.create_time", asc: false }];
-			}
-			this.refreshList();
-		},
-		// 新增
-		add() {
-			this.$refs.yzCirculationCardForm.init('add', '')
-		},
-		// 审批
-		examine(id) {
-			id = id || this.$refs.yzCirculationCardTable.getCheckboxRecords().map(item => {
-				return item.id
-			})[0]
-			this.$refs.yzCardInfo.init('edit', id)
-		},
-		// 修改
-		edit(id) {
-			id = id || this.$refs.yzCirculationCardTable.getCheckboxRecords().map(item => {
-				return item.id
-			})[0]
-			this.$refs.yzCirculationCardForm.init('edit', id)
-		},
-		// 查看
-		view(id) {
-			this.$refs.yzCardInfo.init('view', id)
-		},
-		// 删除
-		del(id) {
-			let ids = id || this.$refs.yzCirculationCardTable.getCheckboxRecords().map(item => {
-				return item.id
-			}).join(',')
-			this.$confirm(`确定删除所选项吗?`, '提示', {
-				confirmButtonText: '确定',
-				cancelButtonText: '取消',
-				type: 'warning'
-			}).then(() => {
-				this.loading = true
-				yzCirculationCardService.delete(ids).then((data) => {
-					this.$message.success(data)
-					this.refreshList()
-					this.loading = false
-				})
-			})
-		},
-		// 下载模板
-		downloadTpl() {
-			this.loading = true
-			yzCirculationCardService
-				.exportTemplate()
-				.then((data) => {
-					// 将二进制流文件写入excel表,以下为重要步骤
-					this.$utils.downloadExcel(data, "拟稿申请导入模板");
-					this.loading = false
-				})
-				.catch(function (err) {
-					this.loading = false
-					if (err.response) {
-						console.log(err.response);
-					}
-				});
-		},
-		// 自定义服务端导入
-		importMethod({ file }) {
-			// 处理表单
-			const formBody = new FormData();
-			formBody.append("file", file);
-			this.loading = true
-			yzCirculationCardService.importExcel(formBody).then((result) => {
-				this.$message.success({
-					dangerouslyUseHTMLString: true,
-					message: result,
-				});
-				this.refreshList();
-			});
-		},
-		// 自定义服务端导出
-		exportMethod({ options }) {
-			// 传给服务端的参数
-			const params = {
-				current: this.tablePage.currentPage,
-				size: this.tablePage.pageSize,
-				orders: this.tablePage.orders,
-				...this.searchForm,
-				filename: options.filename,
-				sheetName: options.sheetName,
-				isHeader: options.isHeader,
-				original: options.original,
-				mode: options.mode,
-				selectIds:
-					options.mode === "selected"
-						? options.data.map((item) => item.id)
-						: [],
-				exportFields: options.columns.map(
-					(column) => column.property && column.property.split(".")[0]
-				),
-			};
-			this.loading = true;
-			return yzCirculationCardService
-				.exportExcel(params)
-				.then((data) => {
-					// 将二进制流文件写入excel表,以下为重要步骤
-					this.$utils.downloadExcel(data, options.filename);
-					this.loading = false;
-				})
-				.catch(function (err) {
-					if (err.response) {
-						console.log(err.response);
-					}
-				});
-		},
-		resetSearch() {
-			this.$refs.searchForm.resetFields()
-			this.refreshList()
-		}
-	}
-}
+  data() {
+    return {
+      searchVisible: true,
+      role: "",
+      searchForm: {
+        name: "",
+        open: "",
+        state: "",
+        yearNum: "",
+        authorPerson: "",
+      },
+      dataList: [],
+      tablePage: {
+        total: 0,
+        currentPage: 1,
+        pageSize: 10,
+        orders: [
+          { column: "a.state", asc: true },
+          { column: "a.create_time", asc: false },
+        ],
+      },
+      loading: false,
+    };
+  },
+  components: {
+    UserSelect,
+    YzCirculationCardForm,
+    YzCardInfo,
+  },
+  created() {},
+  mounted() {
+    this.$nextTick(() => {
+      this.role = JSON.parse(
+        window.localStorage.getItem("USER_INFO")
+      ).roleNames;
+      // 将表格和工具栏进行关联
+      const $table = this.$refs.yzCirculationCardTable;
+      const $toolbar = this.$refs.yzCirculationCardToolbar;
+      $table.connect($toolbar);
+    });
+  },
+  activated() {
+    this.refreshList();
+  },
+  methods: {
+    // 获取数据列表
+    refreshList() {
+      this.loading = true;
+      yzCirculationCardService
+        .list({
+          current: this.tablePage.currentPage,
+          size: this.tablePage.pageSize,
+          orders: this.tablePage.orders,
+          ...this.searchForm,
+        })
+        .then((data) => {
+          this.dataList = data.records;
+          this.tablePage.total = data.total;
+          this.loading = false;
+        });
+    },
+    // 当前页
+    currentChangeHandle({ currentPage, pageSize }) {
+      this.tablePage.currentPage = currentPage;
+      this.tablePage.pageSize = pageSize;
+      this.refreshList();
+    },
+    // 排序
+    sortChangeHandle(obj) {
+      this.tablePage.orders = [];
+      if (obj.order != null) {
+        this.tablePage.orders = [
+          {
+            column: obj.column.sortBy || this.$utils.toLine(obj.property),
+            asc: obj.order === "asc",
+          },
+        ];
+      } else {
+        this.tablePage.orders = [{ column: "a.create_time", asc: false }];
+      }
+      this.refreshList();
+    },
+    // 新增
+    add() {
+      this.$refs.yzCirculationCardForm.init("add", "");
+    },
+    // 审批
+    examine(id) {
+      id =
+        id ||
+        this.$refs.yzCirculationCardTable.getCheckboxRecords().map((item) => {
+          return item.id;
+        })[0];
+      this.$refs.yzCardInfo.init("edit", id);
+    },
+    // 中止
+    suspend(row) {
+      this.$prompt(`输入中止该流程原因`, "提示", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning",
+      }).then(({ value }) => {
+        this.loading = true;
+        row.suspend = value;
+        row.state = 2;
+        row.authorPerson = row.authorId;
+        row.proofreader = row.proofreaderId;
+        yzCirculationCardService.save(row).then((data) => {
+          this.$message.success("已中止");
+          this.refreshList();
+          this.loading = false;
+        });
+      });
+    },
+    // 修改
+    edit(id) {
+      id =
+        id ||
+        this.$refs.yzCirculationCardTable.getCheckboxRecords().map((item) => {
+          return item.id;
+        })[0];
+      this.$refs.yzCirculationCardForm.init("edit", id);
+    },
+    // 查看
+    view(id) {
+      this.$refs.yzCardInfo.init("view", id);
+    },
+    // 删除
+    del(id) {
+      let ids =
+        id ||
+        this.$refs.yzCirculationCardTable
+          .getCheckboxRecords()
+          .map((item) => {
+            return item.id;
+          })
+          .join(",");
+      this.$confirm(`确定删除所选项吗?`, "提示", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning",
+      }).then(() => {
+        this.loading = true;
+        yzCirculationCardService.delete(ids).then((data) => {
+          this.$message.success(data);
+          this.refreshList();
+          this.loading = false;
+        });
+      });
+    },
+    // 下载模板
+    downloadTpl() {
+      this.loading = true;
+      yzCirculationCardService
+        .exportTemplate()
+        .then((data) => {
+          // 将二进制流文件写入excel表,以下为重要步骤
+          this.$utils.downloadExcel(data, "拟稿申请导入模板");
+          this.loading = false;
+        })
+        .catch(function (err) {
+          this.loading = false;
+          if (err.response) {
+            console.log(err.response);
+          }
+        });
+    },
+    // 自定义服务端导入
+    importMethod({ file }) {
+      // 处理表单
+      const formBody = new FormData();
+      formBody.append("file", file);
+      this.loading = true;
+      yzCirculationCardService.importExcel(formBody).then((result) => {
+        this.$message.success({
+          dangerouslyUseHTMLString: true,
+          message: result,
+        });
+        this.refreshList();
+      });
+    },
+    // 自定义服务端导出
+    exportMethod({ options }) {
+      // 传给服务端的参数
+      const params = {
+        current: this.tablePage.currentPage,
+        size: this.tablePage.pageSize,
+        orders: this.tablePage.orders,
+        ...this.searchForm,
+        filename: options.filename,
+        sheetName: options.sheetName,
+        isHeader: options.isHeader,
+        original: options.original,
+        mode: options.mode,
+        selectIds:
+          options.mode === "selected"
+            ? options.data.map((item) => item.id)
+            : [],
+        exportFields: options.columns.map(
+          (column) => column.property && column.property.split(".")[0]
+        ),
+      };
+      this.loading = true;
+      return yzCirculationCardService
+        .exportExcel(params)
+        .then((data) => {
+          // 将二进制流文件写入excel表,以下为重要步骤
+          this.$utils.downloadExcel(data, options.filename);
+          this.loading = false;
+        })
+        .catch(function (err) {
+          if (err.response) {
+            console.log(err.response);
+          }
+        });
+    },
+    resetSearch() {
+      this.$refs.searchForm.resetFields();
+      this.refreshList();
+    },
+  },
+};
 </script>