Browse Source

解决用章审批显示签名太大;2.详情页还能上传附件?3.审批意见靠左对齐,不居中问题,分管领导可选择多人审批

LuChongMei 10 months ago
parent
commit
fe5a3ae2a0

+ 3 - 2
jp-mobile/api/commonseal/yzCirculationCardService.js

@@ -24,12 +24,13 @@ export default {
 		});
 	},
 
-	queryById: function(id) {
+	queryById: function(id,type) {
 		return request({
 			url: "/yzcirculation/yzCirculationCard/queryById",
 			method: "get",
 			params: {
-				id: id
+				id: id,
+				type:type
 			},
 		});
 	},

+ 19 - 11
jp-mobile/components/office-user-select/office-user-select.vue

@@ -57,6 +57,7 @@
 		},
 		props: {
 			value: String,
+			limit:Number,
 			size: String,
 			placeholder: String,
 			title: String,
@@ -105,7 +106,6 @@
 						})
 					})
 					data = officeList
-					console.log("this.types.length", data);
 				}
 				this.tab1 = data
 				this.index1 = this.tab1[0].id
@@ -161,18 +161,26 @@
 
 			},
 			tab1click2(item) {
-				if (!this.multiple) {
-					this.selectList = []
-					this.userList.forEach(item1 => {
-						item1.check = false
+				if(this.selectList.length>=this.limit) {
+					uni.showToast({
+						title:`只能选择${this.limit}人`,
+						icon:'none'
 					})
+				}else {
+					if (!this.multiple) {
+						this.selectList = []
+						this.userList.forEach(item1 => {
+							item1.check = false
+						})
+					}
+					item.check = !item.check
+					if (item.check) {
+						this.selectList.push(item)
+					} else {
+						this.selectList = this.selectList.filter(e => item.id != e.id)
+					}
 				}
-				item.check = !item.check
-				if (item.check) {
-					this.selectList.push(item)
-				} else {
-					this.selectList = this.selectList.filter(e => item.id != e.id)
-				}
+				
 			},
 			getSelect(id) {
 				let s = this.selectList.filter(item => item.officeDTO && item.officeDTO.id == id)

+ 0 - 6
jp-mobile/pages/addressbook/addressbook.vue

@@ -15,10 +15,6 @@
         transform: 'scale(1)'
     }" itemStyle=" height: 34px;"></u-tabs>
 		</view>
-		<!-- <view class="tree">
-			<ly-tree :tree-data="officeList" :props="props" node-key="id" :checkOnClickNode="true" :showRadio="false"
-				:show-checkbox="false" :checkOnlyLeaf="false" ref="officeTree" />
-		</view> -->
 		<view>
 			<u-cell-group class="cell_group__title" v-for="(item, index) in indexList" :key="index"
 				:title="indexList[index].name">
@@ -38,8 +34,6 @@
 						<u-icon @click="copyPhone(user)" v-if="user.mobile || user.phone" size="30"
 							name="../../static/img/icon_fz.png"></u-icon>
 					</view>
-
-
 				</u-cell>
 			</u-cell-group>
 		</view>

+ 2 - 4
jp-mobile/pages/commonseal/addCommon.vue

@@ -44,9 +44,8 @@
 						</view>
 					</lsj-upload>
 					<!-- #ifdef H5 -->
-					<view class="takephoto addfile flex" @click="takePhoto"> <u-icon size="20" bold
+					<u-icon class="addfile" @click="takePhoto" size="20" bold
 							name="camera"></u-icon>
-					</view>
 					<!-- #endif -->
 				</u-form-item>
 				<view class="text-danger" style="font-size: 12px!important;">请确保上传图片内容清晰可见,所有涉密敏感信息不得上传</view>
@@ -512,8 +511,7 @@
 		width: 80px;
 		height: 80px;
 		background-color: #eee;
-		padding-left: 30%;
-		/* padding-left: 18%; */
+		justify-content: center;
 		margin: 10px;
 	}
 

+ 5 - 5
jp-mobile/pages/commonseal/commonCard.vue

@@ -154,8 +154,8 @@
 						<view>印数</view>
 					</u-col>
 					<u-col span="3" textAlign="center">
-						<uni-tooltip :content="inputForm.printNum" placement="top">
-							<u--text size="14" align="center" lines="1" :text="inputForm.printNum"></u--text>
+						<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-col>
 				</u-row>
@@ -164,8 +164,8 @@
 						<view>备注</view>
 					</u-col>
 					<u-col span="9" textAlign="center" class="card_col_1">
-						<uni-tooltip :content="inputForm.remark==''?'无':inputForm.remark" placement="top">
-							<u--text size="14" align="center" lines="1" :text="inputForm.remark==''?'无':inputForm.remark"></u--text>
+						<uni-tooltip :content="inputForm.remark" placement="top">
+							<u--text size="14" align="center" lines="1" :text="inputForm.remark"></u--text>
 						</uni-tooltip>
 					</u-col>
 				</u-row>
@@ -206,7 +206,7 @@
 
 	export default {
 		mounted() {
-			yzCirculationCardService.queryById(this.gwId).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(",")

+ 3 - 3
jp-mobile/pages/commonseal/examineCommon.vue

@@ -21,7 +21,7 @@
 					</u-form-item>
 					<u-form-item v-if="!isleader" label="下一位审批人" borderBottom prop="neUser">
 						<office-user-select v-model="auditForm.neUser" placeholder="请选择下一位审批人"
-							title="审批人"></office-user-select>
+							title="审批人" :limit="isoffice?1000:1" :multiple="isoffice"></office-user-select>
 					</u-form-item>
 					<view class="submit_btn flex ">
 						<u-button v-if="isAll" @click="formSubmit" type="success" text="归档"></u-button>
@@ -63,7 +63,7 @@
 				if (gw.length > 0) {
 					this.auditForm = gw[0]
 					if (gw[0].which == '4') this.isAll = true
-					if (!this.auditForm.content) this.auditForm.content = '已阅'
+					if (!this.auditForm.content) this.auditForm.content = '同意'
 				}
 				if (role == '办公室管理员') {
 					this.istransmit = true
@@ -89,7 +89,7 @@
 				auditForm: {
 					id: '',
 					yzId: '',
-					content: '已阅',
+					content: '同意',
 					signfj: '',
 					createTruename: '',
 					nextTruename: '',

+ 37 - 23
jp-mobile/pages/fileTransmit/addFileTransmit.vue

@@ -42,9 +42,10 @@
 						</view>
 					</lsj-upload>
 					<!-- #ifdef H5 -->
-					<view class="takephoto addfile flex" @click="takePhoto"> <u-icon size="20" bold
+					<!-- <view class="takephoto addfile flex" > -->
+					<u-icon class='addfile' @click="takePhoto" size="20" bold
 							name="camera"></u-icon>
-					</view>
+					<!-- </view> -->
 					<!-- #endif -->
 				</u-form-item>
 				<view class="text-danger" style="font-size: 12px!important;">请确保上传图片内容清晰可见,所有涉密敏感信息不得上传</view>
@@ -253,7 +254,8 @@
 							const fileName = result.split(/[/\\=]/).pop();
 							let item1 = {
 								name: fileName,
-								url: BASE_URL + result
+								url: BASE_URL + result,
+								status: 'success',
 							}
 							let item = {
 								name: fileName,
@@ -267,7 +269,6 @@
 
 					},
 					fail: (error) => {
-
 						uni.hideLoading()
 					}
 				});
@@ -387,26 +388,39 @@
 
 				// 更新当前窗口状态变化的文件
 				this.files.set(item.name, item);
-				let file = {
-					name: item.name,
-					path: item.responseText
-				}
-				this.fileLists.push(file)
-
-				const fileName = item.name.split(/[/\\=]/).pop();
-				if (isImageFormat(item.name)) {
-					let item1 = {
-						name: fileName,
-						url: this.BASE_URL + item.responseText
+				if(item.type!='success') {
+					uni.hideLoading()
+					let param = {
+						type: 'error',
+						message: "上传失败,请重新上传",
+						iconUrl: 'https://cdn.uviewui.com/uview/demo/toast/error.png'
 					}
-					this.imgList.push(item1)
-				} else {
-					let a = {
-						name: fileName,
-						url: this.BASE_URL + item.responseText
+					this.showToast(param);
+				}else {
+					let file = {
+						name: item.name,
+						path: item.responseText
+					}
+					this.fileLists.push(file)
+					
+					const fileName = item.name.split(/[/\\=]/).pop();
+					if (isImageFormat(item.name)) {
+						let item1 = {
+							name: fileName,
+							url: this.BASE_URL + item.responseText,
+							status: item.type,
+						}
+						this.imgList.push(item1)
+					} else {
+						let a = {
+							name: fileName,
+							url: this.BASE_URL + item.responseText,
+							status: item.type,
+						}
+						this.fileList.push(a)
 					}
-					this.fileList.push(a)
 				}
+				
 				uni.hideLoading()
 				// 微信小程序Map对象for循环不显示,所以转成普通数组,
 				// 如果你用不惯Map对象,也可以像这样转普通数组,组件使用Map主要是避免反复文件去重操作
@@ -436,8 +450,8 @@
 			formSubmit() {
 				this.loading = true
 				let auditForm = Object.assign({}, this.inputForm);
+				console.log("files",this.files);
 				let files = []
-				console.log("this.fileLists==>", this.fileLists);
 				this.fileLists.forEach(item => {
 					files.push(item.path)
 				})
@@ -513,7 +527,7 @@
 		width: 80px;
 		height: 80px;
 		background-color: #eee;
-		padding-left: 24%;
+		justify-content: center;
 		margin: 10px;
 	}
 

+ 7 - 26
jp-mobile/pages/fileTransmit/examineFile.vue

@@ -17,9 +17,9 @@
 						<jp-picker v-model="auditForm.nextLeadUser" placeholder="请选择转发领导" :range="leaderList"
 							rangeKey="name" rangeValue="loginName"></jp-picker>
 					</u-form-item>
-					<u-form-item v-if="!one" label="科室承办" borderBottom prop="nextDepUser">
-						<office-user-select v-model="auditForm.nextDepUser" placeholder="请选择科室承办"
-							title="科室承办" multiple types="3"></office-user-select>
+					<u-form-item label="科室承办" borderBottom prop="nextDepUser">
+						<office-user-select v-model="auditForm.nextDepUser" placeholder="请选择科室承办" title="科室承办" multiple
+							types="3"></office-user-select>
 					</u-form-item>
 					<u-form-item label="备注" borderBottom prop="remark">
 						<u--input v-model="auditForm.remark" placeholder="请输入备注" border="none"></u--input>
@@ -96,13 +96,7 @@
 			this.gwId = option.id
 			gwFlowService.queryByGwId(this.gwId).then(data => {
 				let down = data.filter(item => item.state == 0)
-				if (down.length != 1) this.one = false
-				if (this.one) {
-					this.roleId = "1770353074553331713"
-				} else {
-					this.roleId = "1773547256256622594"
-				}
-				userService.leaderList(this.roleId).then(data => {
+				userService.leaderList("1773547256256622594").then(data => {
 					this.leaderList = data
 					if (this.one) this.auditForm.nextLeadUser = data[0].loginName
 					if (!this.auditForm.content) this.auditForm.content = '已阅'
@@ -112,7 +106,7 @@
 				let gw = data.filter(item => {
 					return item.nextUser == user.id && item.state == 1
 				})
-				
+
 				if (gw.length > 0) {
 					this.auditForm = gw[0]
 					if (gw[0].which == '4') this.isAll = true
@@ -147,7 +141,6 @@
 				loading: false,
 				isAll: false,
 				show: false,
-				one: true,
 				action: this.BASE_URL + '/gwfile/upload?uploadPath=sign', //上传服务器的地址
 				header: {
 					"token": $auth.getUserToken()
@@ -184,18 +177,6 @@
 						asc: false
 					}],
 				},
-				searchForm: {
-
-					// loginName: "",
-					// name: "",
-					// companyDTO: {
-					// 	id: "",
-					// },
-					// officeDTO: {
-					// 	id: "",
-					// },
-				},
-				roleId: ""
 			}
 		},
 		methods: {
@@ -339,9 +320,9 @@
 		width: 40%;
 		/* #endif */
 		/* #ifdef APP-PLUS */
-		width: 30vw!important;
+		width: 30vw !important;
 		/* #endif */
-		
+
 		border-radius: 50px;
 	}
 </style>

+ 5 - 2
jp-ui/src/api/yzcirculation/yzCirculationCardService.js

@@ -22,11 +22,14 @@ export default {
 		});
 	},
 
-	queryById: function (id) {
+	queryById: function (id, type) {
 		return request({
 			url: "/yzcirculation/yzCirculationCard/queryById",
 			method: "get",
-			params: { id: id },
+			params: {
+				id: id,
+				type: type
+			},
 		});
 	},
 

+ 366 - 332
jp-ui/src/components/officeUserSelect/UserSelectDialog.vue

@@ -1,416 +1,450 @@
 <template>
-	<el-dialog v-model="dialogVisible" title="人员选择" :width="type == 1 ? 680 : 460" destroy-on-close append-to-body
-		@closed="$emit('closed')" draggable>
-		<template v-if="type == 1">
-			<div class="user-select">
-				<div class="user-select__left">
-					<div class="user-select__search">
-						<el-input v-model="searchForm.name" prefix-icon="search" placeholder="搜索成员">
-							<template #append>
-								<el-button icon="search" @click="search"></el-button>
-							</template>
-						</el-input>
-					</div>
-					<div class="user-select__select">
-						<div class="user-select__tree" v-loading="showGrouploading">
-							<el-scrollbar>
-								<el-tree class="menu" ref="groupTree" :data="group" node-key="id" :props="{
-		label: 'name',
-		children: 'children',
-	}" highlight-current :expand-on-click-node="false" :current-node-key="groupId" @node-click="groupClick">
-									<template #default="{ node, data }">
-										<span class="custom-tree-node el-tree-node__label">
-											<span class="label">
-												<el-icon :size="16" class="m-r-5">
-													<qiye v-if="data.type === '1'" :style="{
-		color:
-			$TOOL.data.get(
-				'IS_PRIMARY_TENANT'
-			) &&
-			data.tenantDTO &&
-			$utils.getTenantColorById(
-				data
-					.tenantDTO
-					.id
-			),
-	}"></qiye>
-													<bumen v-else :style="{
-		color:
-			$TOOL.data.get(
-				'IS_PRIMARY_TENANT'
-			) &&
-			data.tenantDTO &&
-			$utils.getTenantColorById(
-				data
-					.tenantDTO
-					.id
-			),
-	}"></bumen>
-												</el-icon>
-												{{ node.label }}
-											</span>
-										</span>
-									</template>
-								</el-tree>
-							</el-scrollbar>
-						</div>
-						<div class="user-select__user" v-loading="showUserloading">
-							<div class="user-select__user__list">
-								<el-scrollbar ref="userScrollbar">
-									<el-tree class="menu" ref="userTree" :data="user" node-key="id" highlight-current
-										:props="{
-		key: 'id',
-		label: 'name',
-		children: 'children',
-	}" :default-checked-keys="selectedIds" :show-checkbox="limit > 1" check-on-click-node
-										@check-change="userClick"></el-tree>
-								</el-scrollbar>
-							</div>
-							<footer>
-								<el-pagination background layout="prev,next" small :total="total" :page-size="pageSize"
-									v-model:currentPage="currentPage"
-									@current-change="paginationChange"></el-pagination>
-							</footer>
-						</div>
-					</div>
-				</div>
-				<div class="user-select__toicon">
-					<el-icon><arrow-right /></el-icon>
-				</div>
-				<div class="user-select__selected">
-					<header>已选 ({{ selected.length }})</header>
-					<ul>
-						<el-scrollbar>
-							<li v-for="(item, index) in selected" :key="item.id">
-								<span class="name">
-									<el-avatar v-if="$TOOL.data.get('IS_PRIMARY_TENANT')
-		" :size="30" :style="{
-		background:
-			$utils.getTenantColorById(
-				item.tenantId
-			) + '!important',
-	}">{{
-		item.name.substring(0, 1)
-	}}</el-avatar>
-									<el-avatar v-else>{{
-			item.name.substring(0, 1)
-		}}</el-avatar>
-									<label>{{ item.name }}</label>
-								</span>
-								<span class="delete">
-									<el-button text type="primary" icon="del-filled" circle size="small"
-										@click="deleteSelected(index)"></el-button>
-								</span>
-							</li>
-						</el-scrollbar>
-					</ul>
-				</div>
-			</div>
-		</template>
+  <el-dialog
+    v-model="dialogVisible"
+    title="人员选择"
+    :width="type == 1 ? 680 : 460"
+    destroy-on-close
+    append-to-body
+    @closed="$emit('closed')"
+    draggable
+  >
+    <template v-if="type == 1">
+      <div class="user-select">
+        <div class="user-select__left">
+          <div class="user-select__search">
+            <el-input
+              v-model="searchForm.name"
+              prefix-icon="search"
+              placeholder="搜索成员"
+            >
+              <template #append>
+                <el-button icon="search" @click="search"></el-button>
+              </template>
+            </el-input>
+          </div>
+          <div class="user-select__select">
+            <div class="user-select__tree" v-loading="showGrouploading">
+              <el-scrollbar>
+                <el-tree
+                  class="menu"
+                  ref="groupTree"
+                  :data="group"
+                  node-key="id"
+                  :props="{
+                    label: 'name',
+                    children: 'children',
+                  }"
+                  highlight-current
+                  :expand-on-click-node="false"
+                  :current-node-key="groupId"
+                  @node-click="groupClick"
+                >
+                  <template #default="{ node, data }">
+                    <span class="custom-tree-node el-tree-node__label">
+                      <span class="label">
+                        <el-icon :size="16" class="m-r-5">
+                          <qiye
+                            v-if="data.type === '1'"
+                            :style="{
+                              color:
+                                $TOOL.data.get('IS_PRIMARY_TENANT') &&
+                                data.tenantDTO &&
+                                $utils.getTenantColorById(data.tenantDTO.id),
+                            }"
+                          ></qiye>
+                          <bumen
+                            v-else
+                            :style="{
+                              color:
+                                $TOOL.data.get('IS_PRIMARY_TENANT') &&
+                                data.tenantDTO &&
+                                $utils.getTenantColorById(data.tenantDTO.id),
+                            }"
+                          ></bumen>
+                        </el-icon>
+                        {{ node.label }}
+                      </span>
+                    </span>
+                  </template>
+                </el-tree>
+              </el-scrollbar>
+            </div>
+            <div class="user-select__user" v-loading="showUserloading">
+              <div class="user-select__user__list">
+                <el-scrollbar ref="userScrollbar">
+                  <el-tree
+                    class="menu"
+                    ref="userTree"
+                    :data="user"
+                    node-key="id"
+                    highlight-current
+                    :props="{
+                      key: 'id',
+                      label: 'name',
+                      children: 'children',
+                    }"
+                    :default-checked-keys="selectedIds"
+                    :show-checkbox="limit > 1"
+                    check-on-click-node
+                    @check-change="userClick"
+                  ></el-tree>
+                </el-scrollbar>
+              </div>
+              <footer>
+                <el-pagination
+                  background
+                  layout="prev,next"
+                  small
+                  :total="total"
+                  :page-size="pageSize"
+                  v-model:currentPage="currentPage"
+                  @current-change="paginationChange"
+                ></el-pagination>
+              </footer>
+            </div>
+          </div>
+        </div>
+        <div class="user-select__toicon">
+          <el-icon><arrow-right /></el-icon>
+        </div>
+        <div class="user-select__selected">
+          <header>已选 ({{ selected.length }})</header>
+          <ul>
+            <el-scrollbar>
+              <li v-for="(item, index) in selected" :key="item.id">
+                <span class="name">
+                  <el-avatar
+                    v-if="$TOOL.data.get('IS_PRIMARY_TENANT')"
+                    :size="30"
+                    :style="{
+                      background:
+                        $utils.getTenantColorById(item.tenantId) + '!important',
+                    }"
+                    >{{ item.name.substring(0, 1) }}</el-avatar
+                  >
+                  <el-avatar v-else>{{ item.name.substring(0, 1) }}</el-avatar>
+                  <label>{{ item.name }}</label>
+                </span>
+                <span class="delete">
+                  <el-button
+                    text
+                    type="primary"
+                    icon="del-filled"
+                    circle
+                    size="small"
+                    @click="deleteSelected(index)"
+                  ></el-button>
+                </span>
+              </li>
+            </el-scrollbar>
+          </ul>
+        </div>
+      </div>
+    </template>
 
-		<template #footer>
-			<el-button @click="dialogVisible = false">取 消</el-button>
-			<el-button type="primary" @click="save">确 认</el-button>
-		</template>
-	</el-dialog>
+    <template #footer>
+      <el-button @click="dialogVisible = false">取 消</el-button>
+      <el-button type="primary" @click="save">确 认</el-button>
+    </template>
+  </el-dialog>
 </template>
 
 <script>
 import userService from "@/api/sys/userService";
 import officeService from "@/api/sys/officeService";
 export default {
-	props: {
-		tenantId: { type: String, default: null },
-		limit: {
-			type: Number,
-			default: 999999,
-		},
-	},
-	data() {
-		return {
-			searchForm: {
-				loginName: "",
-				companyDTO: {
-					id: "",
-				},
-				officeDTO: {
-					id: "",
-				},
-				name: "",
-			},
+  props: {
+    tenantId: { type: String, default: null },
+    limit: {
+      type: Number,
+      default: 999999,
+    },
+  },
+  data() {
+    return {
+      searchForm: {
+        loginName: "",
+        companyDTO: {
+          id: "",
+        },
+        officeDTO: {
+          id: "",
+        },
+        name: "",
+      },
 
-			dialogVisible: false,
-			showGrouploading: false,
-			showUserloading: false,
-			groupId: "",
-			pageSize: 10,
-			total: 0,
-			currentPage: 1,
-			group: [],
-			user: [],
-			role: [],
-			type: 1,
-			selected: [],
-			value: [],
-		};
-	},
-	computed: {
-		selectedIds() {
-			return this.selected.map((t) => t.id);
-		},
-	},
-	methods: {
-		//打开赋值
-		open(data) {
-			this.value = data || [];
-			this.selected = JSON.parse(JSON.stringify(data || []));
-			this.dialogVisible = true;
-			this.getGroup();
-			//this.getUser();
-		},
-		//获取组织
-		async getGroup() {
-			this.showGrouploading = true;
-			// officeService.treeData().then((data) => {
-			// 	this.officeTreeData = data
-			// 	this.showGrouploading = false;
-			// })
-			//var res = await officeService.treeData({ tenantId: this.tenantId });
-			var res = await officeService.treeData({ parentId: "1770354728635834369" });
-			// res = res.filter(item => item.type == '3')
+      dialogVisible: false,
+      showGrouploading: false,
+      showUserloading: false,
+      groupId: "",
+      pageSize: 10,
+      total: 0,
+      currentPage: 1,
+      group: [],
+      user: [],
+      role: [],
+      type: 1,
+      selected: [],
+      value: [],
+    };
+  },
+  computed: {
+    selectedIds() {
+      return this.selected.map((t) => t.id);
+    },
+  },
+  methods: {
+    //打开赋值
+    open(data) {
+      this.value = data || [];
+      this.selected = JSON.parse(JSON.stringify(data || []));
+      this.dialogVisible = true;
+      this.getGroup();
+      //this.getUser();
+    },
+    //获取组织
+    async getGroup() {
+      this.showGrouploading = true;
+      // officeService.treeData().then((data) => {
+      // 	this.officeTreeData = data
+      // 	this.showGrouploading = false;
+      // })
+      //var res = await officeService.treeData({ tenantId: this.tenantId });
+      var res = await officeService.treeData({
+        parentId: "1770354728635834369",
+      });
+      // res = res.filter(item => item.type == '3')
 
-			this.showGrouploading = false;
-			// var allNode = { id: "", type: "1", name: "所有" };
-			// res.unshift(allNode);
-			this.group = res;
+      this.showGrouploading = false;
+      // var allNode = { id: "", type: "1", name: "所有" };
+      // res.unshift(allNode);
+      this.group = res;
 
-
-			this.groupClick(this.group[0])
-
-		},
-		//获取用户
-		async getUser() {
-			this.showUserloading = true;
-			userService
-				.list({
-					current: this.currentPage,
-					size: this.pageSize,
-					...this.searchForm,
-					"tenantDTO.id": this.tenantId,
-				})
-				.then((data) => {
-					this.user = data.records;
-					this.total = data.total;
-					// this.pageNo = data.current
-					this.showUserloading = false;
-					this.$refs.userScrollbar.setScrollTop(0);
-				});
-		},
-		//组织点击
-		groupClick(data) {
-			if (data.type === "1") {
-				this.searchForm.companyDTO.id = data.id;
-				this.searchForm.officeDTO.id = "";
-			} else {
-				this.searchForm.companyDTO.id = "";
-				this.searchForm.officeDTO.id = data.id;
-			}
-			this.currentPage = 1;
-			this.groupId = data.id;
-			this.getUser();
-		},
-		//用户点击
-		userClick(data, checked) {
-			if (checked) {
-				if (this.limit === 1) {
-					this.selected = [
-						{
-							id: data.loginName,
-							name: data.name,
-							tenantId: data.tenantDTO?.id,
-						},
-					];
-				} else {
-					this.selected.push({
-						id: data.loginName,
-						name: data.name,
-						tenantId: data.tenantDTO?.id,
-					});
-				}
-			} else {
-				this.selected = this.selected.filter(
-					(item) => item.id != data.loginName
-				);
-			}
-		},
-		//用户分页点击
-		paginationChange() {
-			this.getUser();
-		},
-		//用户搜索
-		search() {
-			// this.groupId = ''
-			// this.$refs.groupTree.setCurrentKey(this.groupId)
-			this.currentPage = 1;
-			this.getUser();
-		},
-		//删除已选
-		deleteSelected(index) {
-			this.selected.splice(index, 1);
-			console.log(this.selected);
-			if (this.type == 1) {
-				this.$refs.userTree.setCheckedKeys(this.selectedIds);
-			} else if (this.type == 2) {
-				this.$refs.groupTree.setCheckedKeys(this.selectedIds);
-			}
-		},
-		//提交保存
-		save() {
-			this.value.splice(0, this.value.length);
-			this.selected.map((item) => {
-				console.log("选择了" + JSON.stringify(item));
-				this.value.push(item);
-			});
-			if (this.limit < this.value.length) {
-				this.$message.error(`你最多只能选择${this.limit}个用户`);
-				return;
-			}
-			this.$emit("doSubmit", this.value);
-			this.dialogVisible = false;
-		},
-	},
+      this.groupClick(this.group[0]);
+    },
+    //获取用户
+    async getUser() {
+      this.showUserloading = true;
+      userService
+        .list({
+          current: this.currentPage,
+          size: this.pageSize,
+          ...this.searchForm,
+          "tenantDTO.id": this.tenantId,
+        })
+        .then((data) => {
+          this.user = data.records;
+          this.total = data.total;
+          // this.pageNo = data.current
+          this.showUserloading = false;
+          this.$refs.userScrollbar.setScrollTop(0);
+        });
+    },
+    //组织点击
+    groupClick(data) {
+      if (data.type === "1") {
+        this.searchForm.companyDTO.id = data.id;
+        this.searchForm.officeDTO.id = "";
+      } else {
+        this.searchForm.companyDTO.id = "";
+        this.searchForm.officeDTO.id = data.id;
+      }
+      this.currentPage = 1;
+      this.groupId = data.id;
+      this.getUser();
+    },
+    //用户点击
+    userClick(data, checked) {
+      if (checked) {
+        if (this.limit === 1) {
+          this.selected = [
+            {
+              id: data.loginName,
+              name: data.name,
+              tenantId: data.tenantDTO?.id,
+            },
+          ];
+        } else {
+          this.selected.push({
+            id: data.loginName,
+            name: data.name,
+            tenantId: data.tenantDTO?.id,
+          });
+        }
+      } else {
+        this.selected = this.selected.filter(
+          (item) => item.id != data.loginName
+        );
+      }
+    },
+    //用户分页点击
+    paginationChange() {
+      this.getUser();
+    },
+    //用户搜索
+    search() {
+      // this.groupId = ''
+      // this.$refs.groupTree.setCurrentKey(this.groupId)
+      this.currentPage = 1;
+      this.getUser();
+    },
+    //删除已选
+    deleteSelected(index) {
+      this.selected.splice(index, 1);
+      console.log(this.selected);
+      if (this.type == 1) {
+        this.$refs.userTree.setCheckedKeys(this.selectedIds);
+      } else if (this.type == 2) {
+        this.$refs.groupTree.setCheckedKeys(this.selectedIds);
+      }
+    },
+    //提交保存
+    save() {
+      this.value.splice(0, this.value.length);
+      this.selected.map((item) => {
+        console.log("选择了" + JSON.stringify(item));
+        this.value.push(item);
+      });
+      if (this.limit < this.value.length) {
+        this.$message.error(`你最多只能选择${this.limit}个用户`);
+        return;
+      }
+      this.$emit("doSubmit", this.value);
+      this.dialogVisible = false;
+    },
+  },
 };
 </script>
 
 <style scoped>
 .user-select {
-	display: flex;
+  display: flex;
 }
 
 .user-select__left {
-	width: 400px;
+  width: 400px;
 }
 
 .user-select__right {
-	flex: 1;
+  flex: 1;
 }
 
 .user-select__selected li .name .el-avatar {
-	margin-right: 2px;
-	height: 10;
-	width: 25px;
-	height: 25px;
+  margin-right: 2px;
+  height: 10;
+  width: 25px;
+  height: 25px;
 }
 
 .user-select__search {
-	padding-bottom: 10px;
+  padding-bottom: 10px;
 }
 
 .user-select__select {
-	display: flex;
-	border: 1px solid var(--el-border-color-light);
-	background: var(--el-color-white);
+  display: flex;
+  border: 1px solid var(--el-border-color-light);
+  background: var(--el-color-white);
 }
 
 .user-select__tree {
-	width: 200px;
-	height: 300px;
-	border-right: 1px solid var(--el-border-color-light);
+  width: 200px;
+  height: 300px;
+  border-right: 1px solid var(--el-border-color-light);
 }
 
 .user-select__user {
-	width: 200px;
-	height: 300px;
-	display: flex;
-	flex-direction: column;
+  width: 200px;
+  height: 300px;
+  display: flex;
+  flex-direction: column;
 }
 
 .user-select__user__list {
-	flex: 1;
-	overflow: auto;
+  flex: 1;
+  overflow: auto;
 }
 
 .user-select__user footer {
-	height: 36px;
-	padding-top: 5px;
-	border-top: 1px solid var(--el-border-color-light);
+  height: 36px;
+  padding-top: 5px;
+  border-top: 1px solid var(--el-border-color-light);
 }
 
 .user-select__toicon {
-	display: flex;
-	justify-content: center;
-	align-items: center;
-	margin: 0 10px;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  margin: 0 10px;
 }
 
 .user-select__toicon i {
-	display: flex;
-	justify-content: center;
-	align-items: center;
-	background: #ccc;
-	width: 20px;
-	height: 20px;
-	text-align: center;
-	line-height: 20px;
-	border-radius: 50%;
-	color: #fff;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  background: #ccc;
+  width: 20px;
+  height: 20px;
+  text-align: center;
+  line-height: 20px;
+  border-radius: 50%;
+  color: #fff;
 }
 
 .user-select__selected {
-	height: 345px;
-	width: 200px;
-	border: 1px solid var(--el-border-color-light);
-	background: var(--el-color-white);
+  height: 345px;
+  width: 200px;
+  border: 1px solid var(--el-border-color-light);
+  background: var(--el-color-white);
 }
 
 .user-select__selected header {
-	height: 43px;
-	line-height: 43px;
-	border-bottom: 1px solid var(--el-border-color-light);
-	padding: 0 15px;
-	font-size: 16px;
+  height: 43px;
+  line-height: 43px;
+  border-bottom: 1px solid var(--el-border-color-light);
+  padding: 0 15px;
+  font-size: 16px;
 }
 
 .user-select__selected ul {
-	height: 300px;
-	overflow: auto;
+  height: 300px;
+  overflow: auto;
 }
 
 .user-select__selected li {
-	display: flex;
-	align-items: center;
-	justify-content: space-between;
-	padding: 5px 5px 5px 15px;
-	height: 38px;
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  padding: 5px 5px 5px 15px;
+  height: 38px;
 }
 
 .user-select__selected li .name {
-	display: flex;
-	align-items: center;
+  display: flex;
+  align-items: center;
 }
 
 .user-select__selected li .name .el-avatar {
-	margin-right: 10px;
+  margin-right: 10px;
 }
 
 .user-select__selected li .delete {
-	display: none;
+  display: none;
 }
 
 .user-select__selected li:hover {
-	background: var(--el-color-primary-light-9);
+  background: var(--el-color-primary-light-9);
 }
 
 .user-select__selected li:hover .delete {
-	display: inline-block;
+  display: inline-block;
 }
 
 .user-select-role .user-select__left {
-	width: 200px;
+  width: 200px;
 }
 
 .user-select-role .user-select__tree {
-	border: none;
-	height: 343px;
+  border: none;
+  height: 343px;
 }
 </style>

+ 6 - 21
jp-ui/src/components/officeUserSelect/index.vue

@@ -3,29 +3,13 @@
 		<label>{{ name }}</label>
 	</template>
 	<template v-else>
-		<el-input
-			placeholder="请选择"
-			readonly
-			:clearable="clearable"
-			:disabled="disabled"
-			style="line-hight: 40px"
-			v-model="name"
-		>
+		<el-input placeholder="请选择" readonly :clearable="clearable" :disabled="disabled" style="line-hight: 40px"
+			v-model="name">
 			<template #append>
-				<el-button
-					:disabled="disabled"
-					:readonly="readonly"
-					@click="showUserSelect"
-					icon="search"
-				></el-button>
+				<el-button :disabled="disabled" :readonly="readonly" @click="showUserSelect" icon="search"></el-button>
 			</template>
 		</el-input>
-		<user-select
-			ref="userSelect"
-			@doSubmit="selectUsersToInput"
-			:tenantId="tenantId"
-			:limit="limit"
-		></user-select>
+		<user-select ref="userSelect" @doSubmit="selectUsersToInput" :tenantId="tenantId" :limit="limit"></user-select>
 	</template>
 </template>
 <script>
@@ -114,7 +98,8 @@ export default {
 .el-form-item__content .el-input-group {
 	vertical-align: middle;
 }
-.el-tag + .el-tag {
+
+.el-tag+.el-tag {
 	margin-left: 5px;
 	margin-bottom: 5px;
 }

+ 436 - 402
jp-ui/src/views/yzcirculation/YzCard.vue

@@ -1,474 +1,508 @@
 <template>
-    <div class="commom_main">
-        <div class="card_info">
-            <div class="card_info_title">
-                <div class="">
-                    盐城市盐都区工业和信息化局拟稿
-                </div>
-                <div class="card_info_min">
-                    都工信{{ inputForm.cardNum }}
-                </div>
+  <div class="commom_main">
+    <div class="card_info">
+      <div class="card_info_title">
+        <div class="">盐城市盐都区工业和信息化局拟稿</div>
+        <div class="card_info_min">都工信{{ inputForm.cardNum }}</div>
+      </div>
+      <div class="card_table">
+        <el-row class="card_first_row"></el-row>
+        <el-row
+          type="flex"
+          v-if="leaderInfo.length > 0"
+          align="middle"
+          justify="space-between"
+          class="card_row"
+        >
+          <el-col :span="6">
+            <div class="justify-text">
+              <span>主</span>
+              <span>要</span>
+              <span>领</span>
+              <span>导</span>
             </div>
-            <div class="card_table">
-                <el-row class="card_first_row"></el-row>
-                <el-row type="flex" v-if="leaderInfo.length > 0" align="middle" justify="space-between"
-                    class="card_row">
-                    <el-col :span="6">
-                        <div class="justify-text">
-                            <span>主</span>
-                            <span>要</span>
-                            <span>领</span>
-                            <span>导</span>
-                        </div>
-                        <div class="justify-text">
-                            <span>意</span>
-                            <span>见</span>
-                        </div>
-                    </el-col>
-                    <el-col :span="18" class="info_abstract">
-                        <div v-for="leader in leaderInfo" class="info_abstract_v">
-                            <div>
-                                {{ leader.content }}
-                            </div>
-                            <div class="flex text-sm" style="line-height: 20px;">
-                                <el-image :src="leader.signfj" width="80px" height="20px"></el-image>
-                                {{ leader.updateTime }}
-                            </div>
-                        </div>
-                    </el-col>
-                </el-row>
-                <el-row type="flex" v-if="fgLeaderInfo.length > 0" align="middle" justify="space-between"
-                    class="card_row ">
-                    <el-col :span="6">
-                        <div class="justify-text">
-                            <span>分</span>
-                            <span>管</span>
-                            <span>领</span>
-                            <span>导</span>
-                        </div>
-                        <div class="justify-text">
-                            <span>意</span>
-                            <span>见</span>
-                        </div>
-                    </el-col>
-                    <el-col :span="18" class="info_abstract">
-                        <div v-for="item in fgLeaderInfo" class="info_abstract_v">
-                            <div>
-                                {{ item.content }}
-                            </div>
-                            <div class="flex text-sm" style="line-height: 20px;">
-                                <el-image :src="item.signfj" width="80px" height="20px"></el-image>
-                                {{ item.updateTime }}
-                            </div>
-                        </div>
-                    </el-col>
-                </el-row>
-                <el-row type="flex" v-if="officeInfo.length > 0" align="middle" justify="space-between"
-                    class="card_row ">
-                    <el-col :span="6">
-                        <div class="justify-text">
-                            <span>办</span>
-                            <span>公</span>
-                            <span>室</span>
-                        </div>
-                        <div class="justify-text">
-                            <span>意</span>
-                            <span>见</span>
-                        </div>
-                    </el-col>
-                    <el-col :span="18" class="info_abstract">
-                        <div v-for="item in officeInfo" class="info_abstract_v">
-                            <div>
-                                {{ item.content }}
-                            </div>
-                            <div class="flex text-sm" style="line-height: 20px;">
-                                <el-image :src="item.signfj" width="80px" height="20px"></el-image>
-                                {{ item.updateTime }}
-                            </div>
-                        </div>
-                    </el-col>
-                </el-row>
-
-                <el-row type="flex" v-if="undertakeInfo.length > 0" align="middle" justify="space-between"
-                    class="card_row ">
-                    <el-col :span="6" textAlign="justify">
-                        <div class="justify-text">
-                            <span>承</span>
-                            <span>办</span>
-                            <span>科</span>
-                            <span>(室)</span>
-                        </div>
-                        <div class="justify-text">
-                            <span>意</span>
-                            <span>见</span>
-                        </div>
-                    </el-col>
-                    <el-col :span="18" class="info_abstract">
-                        <div v-for="item in undertakeInfo" class="info_abstract_v">
-                            <div>
-                                {{ item.content }}
-                            </div>
-                            <div class="flex text-sm" style="line-height: 20px;">
-                                <el-image :src="item.signfj" width="80px" height="20px" mode="aspectFit"></el-image>
-                                {{ item.updateTime }}
-                            </div>
-                        </div>
-                    </el-col>
-                </el-row>
-                <el-row type="flex" justify="space-between" class="card_row card_row_border">
-                    <el-col :span="6" textAlign="center">
-                        <div>
-                            文件名称
-                        </div>
-                    </el-col>
-                    <el-col :span="18" class="card_col_1">
-                        <el-tooltip :content="inputForm.name" placement="top">
-                            <span class="card_col_2">{{ inputForm.name }}</span>
-                        </el-tooltip>
-                    </el-col>
-                </el-row>
-                <el-row type="flex" justify="space-between" class="card_row card_row_border">
-                    <el-col :span="6" textAlign="center">
-                        <div>拟稿人</div>
-                    </el-col>
-                    <el-col :span="6" textAlign="center" class="card_col_1">
-                        <el-tooltip :content="inputForm.authorPerson" placement="top">
-                            <span class="card_col_2">{{ inputForm.authorPerson }}</span>
-                        </el-tooltip>
-                    </el-col>
-                    <el-col :span="6" textAlign="center" class="card_col card_col_1">
-                        <div>校对人</div>
-                    </el-col>
-                    <el-col :span="6" textAlign="center">
-                        <el-tooltip :content="inputForm.proofreader" placement="top">
-                            <span class="card_col_2">{{ inputForm.proofreader }}</span>
-                        </el-tooltip>
-                    </el-col>
-                </el-row>
-                <el-row type="flex" justify="space-between" class="card_row card_row_border">
-                    <el-col :span="6" textAlign="center" class="">
-                        <div>可否公开</div>
-                    </el-col>
-                    <el-col :span="6" textAlign="center" class="card_col_1">
-                        <span class="card_col_2">{{ inputForm.open ? '是' : '否' }}</span>
-                    </el-col>
-                    <el-col :span="6" textAlign="center" class="card_col card_col_1">
-                        <div>印数</div>
-                    </el-col>
-                    <el-col :span="6" textAlign="center">
-                        <span class="card_col_2">{{ inputForm.printNum }}</span>
-                    </el-col>
-                </el-row>
-                <el-row type="flex" justify="space-between" class="card_row card_row_border card_last_row">
-                    <el-col :span="6" textAlign="center">
-                        <div>备注</div>
-                    </el-col>
-                    <el-col :span="18" textAlign="center" class="card_col_1">
-                        <el-tooltip :content="inputForm.remark == '' ? '无' : inputForm.remark" placement="top">
-                            <span class="card_col_2">{{ inputForm.remark == '' ? '无' : inputForm.remark }}</span>
-                        </el-tooltip>
-                    </el-col>
-                </el-row>
-                <span style="margin: 10px;color: red; font-size: 10px">所有涉密敏感信息不得上传</span>
-                <div class="card_other">
-                    附件:
-                    <div class="other_info" v-for="item in fileList">
-                        <div class="other_pdf  flex  ">
-                            <text decoration='underline' color='#36a7f3' :text="item.name"
-                                @click="item.type == 'pdf' ? prediv(item) : download(item)"></text>
-                        </div>
-                    </div>
-
-                </div>
+            <div class="justify-text">
+              <span>意</span>
+              <span>见</span>
+            </div>
+          </el-col>
+          <el-col :span="18" class="info_abstract">
+            <div
+              v-for="leader in leaderInfo"
+              :key="leader"
+              class="info_abstract_v"
+            >
+              <div>
+                {{ leader.content }}
+              </div>
+              <div style="line-height: 20px">
+                <el-image
+                  :src="item.signfj"
+                  style="width: 80px; height: 20px; vertical-align: middle"
+                  :fit="contain"
+                ></el-image>
+                <span style="font-size: 12px">{{ item.updateTime }}</span>
+              </div>
+            </div>
+          </el-col>
+        </el-row>
+        <el-row
+          type="flex"
+          v-if="fgLeaderInfo.length > 0"
+          align="middle"
+          justify="space-between"
+          class="card_row"
+        >
+          <el-col :span="6">
+            <div class="justify-text">
+              <span>分</span>
+              <span>管</span>
+              <span>领</span>
+              <span>导</span>
+            </div>
+            <div class="justify-text">
+              <span>意</span>
+              <span>见</span>
+            </div>
+          </el-col>
+          <el-col :span="18" class="info_abstract">
+            <div
+              v-for="item in fgLeaderInfo"
+              :key="item"
+              class="info_abstract_v"
+            >
+              <div>
+                {{ item.content }}
+              </div>
+              <div style="line-height: 20px">
+                <el-image
+                  :src="item.signfj"
+                  style="width: 80px; height: 20px; vertical-align: middle"
+                  :fit="contain"
+                ></el-image>
+                <span style="font-size: 12px">{{ item.updateTime }}</span>
+              </div>
+            </div>
+          </el-col>
+        </el-row>
+        <el-row
+          type="flex"
+          v-if="officeInfo.length > 0"
+          align="middle"
+          justify="space-between"
+          class="card_row"
+        >
+          <el-col :span="6">
+            <div class="justify-text">
+              <span>办</span>
+              <span>公</span>
+              <span>室</span>
+            </div>
+            <div class="justify-text">
+              <span>意</span>
+              <span>见</span>
             </div>
+          </el-col>
+          <el-col :span="18" class="info_abstract">
+            <div v-for="item in officeInfo" :key="item" class="info_abstract_v">
+              <div>
+                {{ item.content }}
+              </div>
+              <div style="line-height: 20px">
+                <el-image
+                  :src="item.signfj"
+                  style="width: 80px; height: 20px; vertical-align: middle"
+                  :fit="contain"
+                ></el-image>
+                <span style="font-size: 12px">{{ item.updateTime }}</span>
+              </div>
+            </div>
+          </el-col>
+        </el-row>
 
+        <el-row
+          type="flex"
+          v-if="undertakeInfo.length > 0"
+          align="middle"
+          justify="space-between"
+          class="card_row"
+        >
+          <el-col :span="6" textAlign="justify">
+            <div class="justify-text">
+              <span>承</span>
+              <span>办</span>
+              <span>科</span>
+              <span>(室)</span>
+            </div>
+            <div class="justify-text">
+              <span>意</span>
+              <span>见</span>
+            </div>
+          </el-col>
+          <el-col :span="18" class="info_abstract">
+            <div
+              v-for="item in undertakeInfo"
+              :key="item"
+              class="info_abstract_v"
+            >
+              <div>
+                {{ item.content }}
+              </div>
+              <div style="line-height: 20px">
+                <el-image
+                  :src="item.signfj"
+                  style="width: 80px; height: 20px; vertical-align: middle"
+                  :fit="contain"
+                ></el-image>
+                <span style="font-size: 12px">{{ item.updateTime }}</span>
+              </div>
+            </div>
+          </el-col>
+        </el-row>
+        <el-row
+          type="flex"
+          justify="space-between"
+          class="card_row card_row_border"
+        >
+          <el-col :span="6" textAlign="center">
+            <div>文件名称</div>
+          </el-col>
+          <el-col :span="18" class="card_col_1">
+            <el-tooltip :content="inputForm.name" placement="top">
+              <span class="card_col_2">{{ inputForm.name }}</span>
+            </el-tooltip>
+          </el-col>
+        </el-row>
+        <el-row
+          type="flex"
+          justify="space-between"
+          class="card_row card_row_border"
+        >
+          <el-col :span="6" textAlign="center">
+            <div>拟稿人</div>
+          </el-col>
+          <el-col :span="6" textAlign="center" class="card_col_1">
+            <el-tooltip :content="inputForm.authorPerson" placement="top">
+              <span class="card_col_2">{{ inputForm.authorPerson }}</span>
+            </el-tooltip>
+          </el-col>
+          <el-col :span="6" textAlign="center" class="card_col card_col_1">
+            <div>校对人</div>
+          </el-col>
+          <el-col :span="6" textAlign="center">
+            <el-tooltip :content="inputForm.proofreader" placement="top">
+              <span class="card_col_2">{{ inputForm.proofreader }}</span>
+            </el-tooltip>
+          </el-col>
+        </el-row>
+        <el-row
+          type="flex"
+          justify="space-between"
+          class="card_row card_row_border"
+        >
+          <el-col :span="6" textAlign="center" class="">
+            <div>可否公开</div>
+          </el-col>
+          <el-col :span="6" textAlign="center" class="card_col_1">
+            <span class="card_col_2">{{
+              inputForm.open == 1 ? "是" : inputForm.open == 1 ? "否" : ""
+            }}</span>
+          </el-col>
+          <el-col :span="6" textAlign="center" class="card_col card_col_1">
+            <div>印数</div>
+          </el-col>
+          <el-col :span="6" textAlign="center">
+            <span class="card_col_2">{{
+              inputForm.printNum == 0 ? "" : inputForm.printNum
+            }}</span>
+          </el-col>
+        </el-row>
+        <el-row
+          type="flex"
+          justify="space-between"
+          class="card_row card_row_border card_last_row"
+        >
+          <el-col :span="6" textAlign="center">
+            <div>备注</div>
+          </el-col>
+          <el-col :span="18" textAlign="center" class="card_col_1">
+            <el-tooltip :content="inputForm.remark" placement="top">
+              <span class="card_col_2">{{ inputForm.remark }}</span>
+            </el-tooltip>
+          </el-col>
+        </el-row>
+        <span style="margin: 10px; color: red; font-size: 10px"
+          >所有涉密敏感信息不得上传</span
+        >
+        <div class="card_other">
+          附件:
+          <div class="other_info" v-for="item in fileList" :key="item">
+            <div class="">
+              <a style="color: #36a7f3" :href="item.url">{{ item.name }}</a>
+            </div>
+          </div>
         </div>
-        <div style="margin-left: 20px;">
-            <image-upload :fileList="imgList" multiple :maxCount="imgList.length" :predivFullImage="true"
-                :deletable="false"></image-upload>
-        </div>
+      </div>
+    </div>
+    <div
+      style="
+        margin-left: 20px;
+        display: flex;
+        justify-content: flex-start;
+        flex-wrap: wrap;
+      "
+    >
+      <el-image
+        v-for="(item, i) in imgList"
+        :key="i"
+        style="width: 80px; height: 80px"
+        :src="item.url"
+        :preview-src-list="previewSrcList"
+      >
+      </el-image>
     </div>
+  </div>
 </template>
 <script>
-import yzCirculationCardService from '@/api/yzcirculation/yzCirculationCardService.js'
-import yzFlowService from '@/api/yzflow/yzFlowService.js'
+import yzCirculationCardService from "@/api/yzcirculation/yzCirculationCardService.js";
+import yzFlowService from "@/api/yzflow/yzFlowService.js";
 export default {
-    mounted() {
-        yzCirculationCardService.queryById(this.gwId).then(data => {
-            // console.log("data", data);
-            this.inputForm = data
-            this.inputForm.cardNum = "[" + this.inputForm.yearNum + "]" + this.inputForm.cardNum + "号"
-            this.fileLists = this.inputForm.attachment.split(",")
-            this.fileLists.forEach(item => {
-                // if (isImageFormat(item)) {
-                //     let img = {
-                //         url: item
-                //     }
-                //     if (!item.startsWith("http")) img.url = this.BASE_URL + item
-                //     this.imgList.push(img)
-                // } else {
-                //     const fileName = item.split(/[/\\=]/).pop();
-                //     let type = ""
-                //     const pdfFormats = /\.pdf$/i;
-                //     if (pdfFormats.test(item)) type = "pdf";
-                //     let a = {
-                //         name: fileName,
-                //         url: item,
-                //         type: type
-                //     }
-                //     if (!item.startsWith("http")) a.url = this.BASE_URL + item
-                //     this.fileList.push(a)
-                // }
-            })
-        })
-        yzFlowService.queryByYzId(this.gwId).then(data => {
-
-            data.forEach(item => {
-                if (item.which == 0 && item.state == 0) {
-                    // if (item.signfj && !item.signfj.startsWith("http")) item.signfj = this.BASE_URL +
-                    //     item.signfj
-                    this.undertakeInfo.push(item)
-                } else if (item.which == 1 && item.state == 0) {
-                    // if (item.signfj && !item.signfj.startsWith("http")) item.signfj = this.BASE_URL +
-                    //     item.signfj
-                    this.officeInfo.push(item)
-                } else if (item.which == 2 && item.state == 0) {
-                    // if (item.signfj && !item.signfj.startsWith("http")) item.signfj = this.BASE_URL +
-                    //     item.signfj
-                    this.fgLeaderInfo.push(item)
-                }
-                if (item.which == 3 && item.state == 0) {
-                    // if (item.signfj && !item.signfj.startsWith("http")) item.signfj = this.BASE_URL +
-                    //     item.signfj
-                    this.leaderInfo.push(item)
-                }
-            })
-            this.leaderInfo.sort((a, b) => a.updateTime.localeCompare(b.updateTime) || a.updateTime
-                .localeCompare(b.updateTime));
-            this.undertakeInfo.sort((a, b) => a.updateTime.localeCompare(b.updateTime) || a.updateTime
-                .localeCompare(b.updateTime));
-            this.officeInfo.sort((a, b) => a.updateTime.localeCompare(b.updateTime) || a.updateTime
-                .localeCompare(b.updateTime));
-            this.fgLeaderInfo.sort((a, b) => a.updateTime.localeCompare(b.updateTime) || a.updateTime
-                .localeCompare(b.updateTime));
-            this.ismask = false
-        })
-
-    },
-    data() {
-        return {
-            src: 'https://cdn.uviewui.com/uview/album/1.jpg',
-            // 公文附件
-            fileLists: [],
-            fileList: [],
-            imgList: [],
-            // 办公室信息
-            officeInfo: [],
-            // 领导信息
-            leaderInfo: [],
-            // 分管领导
-            fgLeaderInfo: [],
-            // 承办信息
-            undertakeInfo: [],
-            inputForm: {
-                id: '',
-                yearNum: '',
-                cardNum: '',
-                sendingAgency: '',
-                docFontSize: '',
-                fileSource: '',
-                writtenTime: '',
-                receivingTime: '',
-                contentSummary: '',
-                attachedDocumentId: ''
-            },
+  mounted() {
+    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(",");
+      this.fileLists.forEach((item) => {
+        const imageFormats = /\.(jpeg|jpg|gif|png|bmp|svg)$/i;
+        if (imageFormats.test(item)) {
+          let img = {
+            url: item,
+          };
+          if (!item.startsWith("http")) img.url = this.$http.BASE_URL + item;
+          this.imgList.push(img);
+        } else {
+          const fileName = item.split(/[/\\=]/).pop();
+          let type = "";
+          const pdfFormats = /\.pdf$/i;
+          if (pdfFormats.test(item)) type = "pdf";
+          let a = {
+            name: fileName,
+            url: item,
+            type: type,
+          };
+          if (!item.startsWith("http")) a.url = this.$http.BASE_URL + item;
+          this.fileList.push(a);
+        }
+      });
+      this.imgList.forEach((item) => {
+        this.previewSrcList.push(item.url);
+      });
+    });
+    yzFlowService.queryByYzId(this.gwId).then((data) => {
+      data.forEach((item) => {
+        if (item.which == 0 && item.state == 0) {
+          if (item.signfj && !item.signfj.startsWith("http"))
+            item.signfj = this.$http.BASE_URL + item.signfj;
+          this.undertakeInfo.push(item);
+        } else if (item.which == 1 && item.state == 0) {
+          if (item.signfj && !item.signfj.startsWith("http"))
+            item.signfj = this.$http.BASE_URL + item.signfj;
+          this.officeInfo.push(item);
+        } else if (item.which == 2 && item.state == 0) {
+          if (item.signfj && !item.signfj.startsWith("http"))
+            item.signfj = this.$http.BASE_URL + item.signfj;
+          this.fgLeaderInfo.push(item);
         }
+        if (item.which == 3 && item.state == 0) {
+          if (item.signfj && !item.signfj.startsWith("http"))
+            item.signfj = this.$http.BASE_URL + item.signfj;
+          this.leaderInfo.push(item);
+        }
+      });
+      this.leaderInfo.sort(
+        (a, b) =>
+          a.updateTime.localeCompare(b.updateTime) ||
+          a.updateTime.localeCompare(b.updateTime)
+      );
+      this.undertakeInfo.sort(
+        (a, b) =>
+          a.updateTime.localeCompare(b.updateTime) ||
+          a.updateTime.localeCompare(b.updateTime)
+      );
+      this.officeInfo.sort(
+        (a, b) =>
+          a.updateTime.localeCompare(b.updateTime) ||
+          a.updateTime.localeCompare(b.updateTime)
+      );
+      this.fgLeaderInfo.sort(
+        (a, b) =>
+          a.updateTime.localeCompare(b.updateTime) ||
+          a.updateTime.localeCompare(b.updateTime)
+      );
+      this.ismask = false;
+    });
+  },
+  data() {
+    return {
+      src: "https://cdn.uviewui.com/uview/album/1.jpg",
+      // 公文附件
+      fileLists: [],
+      fileList: [],
+      imgList: [],
+      // 图片预览
+      previewSrcList: [],
+      // 办公室信息
+      officeInfo: [],
+      // 领导信息
+      leaderInfo: [],
+      // 分管领导
+      fgLeaderInfo: [],
+      // 承办信息
+      undertakeInfo: [],
+      inputForm: {
+        id: "",
+        yearNum: "",
+        cardNum: "",
+        sendingAgency: "",
+        docFontSize: "",
+        fileSource: "",
+        writtenTime: "",
+        receivingTime: "",
+        contentSummary: "",
+        attachedDocumentId: "",
+      },
+    };
+  },
+  methods: {},
+  props: {
+    isoffice: {
+      type: Boolean,
+      default: false,
     },
-    methods: {
-
-        // 预览pdf
-        preview(fileUrl) {
-            uni.navigateTo({
-                url: "/pages/pdfPreview/pdfPreview?url=" + encodeURIComponent(fileUrl.url)
-            })
-
-        },
-        // 下载文件
-        download(param) {
-            uni.showLoading({
-                title: "下载中"
-            })
-            uni.downloadFile({
-                url: param.url, //调接口返回url
-                success: (res) => {
-                    uni.hideLoading();
-                    if (res.statusCode == 200) {
-                        var tempFilePath = res.tempFilePath;
-                        this.saveFile(tempFilePath, param.name);
-                    } else {
-                        uni.showToast({
-                            icon: 'none',
-                            title: '报告下载失败'
-                        })
-                    }
-                },
-                fail: err => {
-                    uni.hideLoading();
-                    uni.showToast({
-                        icon: 'none',
-                        title: '报告下载失败'
-                    })
-                    reject(err);
-                }
-            })
-
-        },
-        saveFile(url, name) { //保存到本地
-            try {
-                const fileName = name;
-                const link = document.createElement('a');
-                link.style.display = 'none';
-                link.href = url;
-                link.setAttribute('download', fileName);
-                link.setAttribute("target", "_blank");
-                document.body.appendChild(link);
-                link.click();
-                //下载完成移除元素
-                document.body.removeChild(link);
-                //释放掉blob对象
-                window.URL.revokeObjectURL(url)
-                uni.showToast({
-                    title: '下载成功'
-                })
-            } catch (error) {
-                uni.showToast({
-                    title: '下载失败'
-                })
-            }
-        },
+    isleader: {
+      type: Boolean,
+      default: false,
     },
-    props: {
-        isoffice: {
-            type: Boolean,
-            default: false
-        },
-        isleader: {
-            type: Boolean,
-            default: false
-        },
-        isinfo: {
-            type: Boolean,
-            default: false
-        },
-        gwId: {
-            type: String,
-
-        }
+    isinfo: {
+      type: Boolean,
+      default: false,
     },
-}
+    gwId: {
+      type: String,
+    },
+  },
+};
 </script>
 <style>
 .warp {
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    height: 100%;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  height: 100%;
 }
 
 .commom_main {
-    width: 100%;
-    background-color: #fefefe;
-    margin-top: 30px;
+  width: 100%;
+  background-color: #fefefe;
+  margin-top: 30px;
 }
 
 .commom_main .card_banner {
-    width: 100%;
-    height: 60px;
-    background-color: #36a7f3;
+  width: 100%;
+  height: 60px;
+  background-color: #36a7f3;
 }
 
 .commom_main .card_info {
-    width: 96%;
-    /* height: 80vh; */
-    margin: -40px 2% 0;
-    background-color: #fefefe;
-    border-radius: 15px;
-    text-align: center;
-    color: red;
+  width: 96%;
+  /* height: 80vh; */
+  margin: -40px 2% 0;
+  background-color: #fefefe;
+  border-radius: 15px;
+  text-align: center;
+  color: red;
 }
 
 .commom_main .card_info_title {
-    font-size: 20px;
-    font-weight: 700;
-    padding-top: 10px;
-    color: red;
+  font-size: 20px;
+  font-weight: 700;
+  padding-top: 10px;
+  color: red;
 }
 
 .card_info_min {
-    font-size: 16px;
-    font-weight: 400;
-    margin-top: 5px;
+  font-size: 16px;
+  font-weight: 400;
+  margin-top: 5px;
 }
 
 .commom_main .card_table {
-    padding: 20px 20px;
-    font-size: 18px;
+  padding: 20px 20px;
+  font-size: 18px;
 }
 
 .commom_main .card_row {
-    border-top: 1px solid red;
-    word-wrap: break-word;
+  border-top: 1px solid red;
+  word-wrap: break-word;
 }
 
 .commom_main .justify-text {
-    padding: 0 4px;
-    display: flex;
-    flex-direction: row;
-    justify-content: space-between;
-    flex-wrap: wrap;
+  padding: 0 4px;
+  display: flex;
+  flex-direction: row;
+  justify-content: space-between;
+  flex-wrap: wrap;
 }
 
 .justify-text text {
-    display: block;
+  display: block;
 }
 
 .commom_main .card_row_border {
-    line-height: 50px;
-    border-bottom: none;
+  line-height: 50px;
+  border-bottom: none;
 }
 
 .commom_main .card_last_row {
-    border-bottom: 2px solid red;
+  border-bottom: 2px solid red;
 }
 
 .commom_main .card_first_row {
-    border-top: 1px solid red;
+  border-top: 1px solid red;
 }
 
 .commom_main .card_col {
-    border-right: 1px solid;
+  border-right: 1px solid;
 }
 
 .commom_main .card_col_1 {
-    border-left: 1px solid;
+  border-left: 1px solid;
 }
 
 .commom_main .card_col_2 {
-    font-size: 14px;
+  font-size: 14px;
 }
 
 .commom_main .info_abstract {
-    line-height: 34px;
-    font-size: 16px;
-    word-wrap: break-word;
-    border-left: 1px solid;
+  line-height: 34px;
+  font-size: 16px;
+  word-wrap: break-word;
+  border-left: 1px solid;
+  text-align: left;
 }
 
 .commom_main .info_abstract_v {
-    margin: 18px;
+  margin: 18px;
 }
 
 .commom_main .card_other {
-    text-align: left;
+  text-align: left;
+}
+
+.commom_main .other_info {
+  font-size: 14px;
+  text-decoration: underline;
+  color: #36a7f3;
 }
 </style>

+ 327 - 230
jp-ui/src/views/yzcirculation/YzCardInfo.vue

@@ -1,253 +1,350 @@
 <template>
-    <v-dialog :title="title" :close-on-click-modal="false"
-        style="width:1100px;height: auto;max-height: 1000px ;margin-top: 85px;" v-model="visible">
+  <v-dialog
+    :title="title"
+    :close-on-click-modal="false"
+    style="width: 1100px; height: auto; max-height: 1000px; margin-top: 85px"
+    v-model="visible"
+  >
+    <div style="display: flex; flex-direction: row">
+      <yzCard
+        :gwId="gwId"
+        ref="filecard"
+        v-if="visible"
+        style="width: 50%"
+      ></yzCard>
 
+      <div>
+        <div class="cll">
+          <el-steps
+            finish-status="success"
+            direction="vertical"
+            :active="current"
+          >
+            <el-step
+              title="发起"
+              :description="
+                inputForm.createTruename + ' - ' + inputForm.createTime
+              "
+            ></el-step>
+            <el-step
+              v-for="(item, i) in downList"
+              :key="i"
+              :title="
+                item.which == '0'
+                  ? '承办科(室)意见'
+                  : item.which == '1'
+                  ? '办公室意见'
+                  : item.which == '2'
+                  ? '分管领导意见'
+                  : item.which == '3'
+                  ? '主要领导意见'
+                  : '已归档'
+              "
+              :description="item.nextTruename + ' - ' + item.updateTime"
+            />
+            <el-step
+              v-for="(item, i) in gwList"
+              :key="i"
+              :title="
+                item.which == '0'
+                  ? '承办科(室)意见'
+                  : item.which == '1'
+                  ? '办公室意见'
+                  : item.which == '2'
+                  ? '分管领导意见'
+                  : item.which == '3'
+                  ? '主要领导意见'
+                  : '待归档'
+              "
+              :description="item.nextTruename"
+            >
+            </el-step>
+          </el-steps>
+        </div>
 
-        <div style="display: flex; flex-direction: row;">
-            <yzCard :gwId="gwId" ref="filecard" v-if="visible" style="width: 50%;"></yzCard>
-
-            <div>
-
-
-                <div class="cll" :style="{ height: heightpx }">
-                    <el-steps finish-status="success" direction="vertical" :active="current">
-                        <el-step title="发起"
-                            :description="inputForm.createTruename + ' - ' + inputForm.createTime"></el-step>
-                        <el-step v-for="item in downList"
-                            :title="item.which == '0' ? '承办科(室)意见' : item.which == '1' ? '办公室意见' : item.which == '2' ? '分管领导意见' : item.which == '3' ? '主要领导意见' : '已归档'"
-                            :description="item.nextTruename + ' - ' + item.updateTime" />
-                        <el-step v-for="item in gwList"
-                            :title="item.which == '0' ? '承办科(室)意见' : item.which == '1' ? '办公室意见' : item.which == '2' ? '分管领导意见' : item.which == '3' ? '主要领导意见' : '待归档'"
-                            :description="item.nextTruename">
-                        </el-step>
-                    </el-steps>
-                </div>
-
-
-                <div v-if="auditForm.yzId != ''"
-                    style="display: flex; flex-direction:column;margin-left: 60px;margin-top:20px">
-
-
-                    <view v-if="istransmit && method == 'edit'" class="titletab">办公室意见</view>
-                    <view v-if="isoffice && method == 'edit'" class="titletab">分管领导意见</view>
-                    <view v-if="isleader && method == 'edit'" class="titletab">主要领导意见</view>
-                    <view v-if="isundertake && method == 'edit'" class="titletab">承办科(室)意见</view>
-
-
-
-                    <el-form v-if="method == 'edit'" :model="auditForm" ref="auditForm" v-loading="loading"
-                        label-position="right" label-width="auto" style="max-width: 400px;margin-top: 40px;">
-                        <el-row :gutter="15">
-                            <el-col :span="24">
-                                <el-form-item
-                                    :label="istransmit ? '办公室意见' : isundertake ? '承办科(室)意见' : isoffice ? '分管领导意见' : '主要领导意见'"
-                                    prop="content">
-                                    <el-input type="textarea" v-model="auditForm.content" placeholder=""
-                                        style="min-width: 300px;"></el-input>
-                                </el-form-item>
-                            </el-col>
-                        </el-row>
-                        <el-row :gutter="15">
-                            <el-col :span="24">
-                                <el-form-item v-if="!isleader" label="下一位审批人" borderBottom prop="neUser">
-                                    <office-user-select v-model="auditForm.neUser" :limit="1"
-                                        title="审批人"></office-user-select>
-                                </el-form-item>
-                            </el-col>
-                        </el-row>
-                    </el-form>
-                </div>
-
-            </div>
+        <div
+          v-if="auditForm.yzId != ''"
+          style="
+            display: flex;
+            flex-direction: column;
+            margin-left: 60px;
+            margin-top: 20px;
+          "
+        >
+          <view v-if="istransmit && method == 'edit'" class="titletab"
+            >办公室意见</view
+          >
+          <view v-if="isoffice && method == 'edit'" class="titletab"
+            >分管领导意见</view
+          >
+          <view v-if="isleader && method == 'edit'" class="titletab"
+            >主要领导意见</view
+          >
+          <view v-if="isundertake && method == 'edit'" class="titletab"
+            >承办科(室)意见</view
+          >
 
+          <el-form
+            v-if="method == 'edit'"
+            :model="auditForm"
+            ref="auditForm"
+            v-loading="loading"
+            label-position="right"
+            label-width="auto"
+            style="max-width: 400px; margin-top: 40px"
+          >
+            <el-row :gutter="15">
+              <el-col :span="24">
+                <el-form-item
+                  :label="
+                    istransmit
+                      ? '办公室意见'
+                      : isundertake
+                      ? '承办科(室)意见'
+                      : isoffice
+                      ? '分管领导意见'
+                      : '主要领导意见'
+                  "
+                  prop="content"
+                >
+                  <el-input
+                    type="textarea"
+                    v-model="auditForm.content"
+                    placeholder=""
+                    style="min-width: 300px"
+                  ></el-input>
+                </el-form-item>
+              </el-col>
+            </el-row>
+            <el-row :gutter="15">
+              <el-col :span="24">
+                <el-form-item
+                  v-if="!isleader"
+                  label="下一位审批人"
+                  borderBottom
+                  prop="neUser"
+                >
+                  <office-user-select
+                    v-model="auditForm.neUser"
+                    :limit="role == '分管领导' ? 1000 : 1"
+                    title="审批人"
+                  ></office-user-select>
+                </el-form-item>
+              </el-col>
+            </el-row>
+          </el-form>
         </div>
-        <template #footer>
-            <span class="dialog-footer">
-                <el-button @click="visible = false" icon="circle-close">关闭</el-button>
-                <el-button
-                    v-if="((isundertake || isleader || isoffice) && !loading && auditForm.yzId != '') && method == 'edit'"
-                    type="primary" @click="doSubmit()" icon="circle-check" v-noMoreClick>确认签字</el-button>
-                <el-button
-                    v-if="(!(isundertake || isleader || isoffice) && !loading && auditForm.yzId != '') && method == 'edit'"
-                    type="primary" @click="doSubmit()" icon="circle-check" v-noMoreClick>提交</el-button>
-                <el-button type="primary" v-if="isAll && auditForm.yzId != ''" @click="formSubmit()" icon="circle-check"
-                    v-noMoreClick>归档</el-button>
-            </span>
-        </template>
-    </v-dialog>
+      </div>
+    </div>
+    <template #footer>
+      <span class="dialog-footer">
+        <el-button @click="visible = false" icon="circle-close">关闭</el-button>
+        <el-button
+          v-if="
+            (istransmit || isundertake || isleader || isoffice) &&
+            !loading &&
+            auditForm.yzId != '' &&
+            auditForm.state == 1 &&
+            method == 'edit'
+          "
+          type="primary"
+          @click="doSubmit()"
+          icon="circle-check"
+          v-noMoreClick
+          >确认签字</el-button
+        >
+        <el-button
+          type="primary"
+          v-if="isAll && auditForm.yzId != ''"
+          @click="formSubmit()"
+          icon="circle-check"
+          v-noMoreClick
+          >归档</el-button
+        >
+      </span>
+    </template>
+  </v-dialog>
 </template>
 
 <script>
-import yzFlowService from '@/api/yzflow/yzFlowService.js'
-import moment from "moment"
+import yzFlowService from "@/api/yzflow/yzFlowService.js";
+import moment from "moment";
 import officeUserSelect from "@/components/officeUserSelect/index.vue";
-import YzCard from "./YzCard.vue"
+import YzCard from "./YzCard.vue";
 export default {
-    data() {
-        return {
-            title: '',
-            visible: false,
-            loading: false,
-            isAll: false,
-            show: false,
-            one: true,
-            auditForm: {
-                id: '',
-                yzId: '',
-                content: '已阅',
-                signfj: '',
-                createTruename: '',
-                nextTruename: '',
-                nextUser: '',
-                which: '0',
-                state: '0',
-                next: '',
-                neUser: ''
-            },
-            gwId: "",
-            isoffice: false,
-            isleader: false,
-            isundertake: false,
-            istransmit: false,
-            // 步骤条
-            heightpx: '400px',
-            downList: [],
-            gwList: [],
-            current: 0,
-            inputForm: {
-                id: '',
-                yzId: '',
-                content: '',
-                signfj: '',
-                createTruename: '',
-                nextTruename: '',
-                nextUser: '',
-                which: '0',
-                state: '0',
-                next: '',
-                neUser: '',
-                createTime: ''
-            },
-        }
-    },
-    components: {
-        officeUserSelect,
-        YzCard,
-    },
-    created() {
-    },
-    methods: {
-        init(method, id) {
-            this.method = method
-            this.gwId = id
-            if (method === 'add') {
-                this.title = `新建盐都工信拟稿`
-            } else if (method === 'edit') {
-                this.title = '拟稿详情'
-            } else if (method === 'view') {
-                this.title = '拟稿详情'
-            }
-
-            this.visible = true
-            this.loading = false
-            this.$nextTick(() => {
-                if (method === 'edit' || method === 'view') { // 修改或者查看
-                    this.loading = true
-                    this.downList = []
-                    this.gwList = []
-                    yzFlowService.queryByYzId(this.gwId).then(data => {
-                        data.sort((a, b) => a.createTime.localeCompare(b.createTime) || a.createTime
-                            .localeCompare(b.createTime));
-                        this.inputForm = data[0]
-                        data.forEach(item => {
-                            if (item.state == 0) {
-                                this.downList.push(item)
-                            } else {
-                                this.gwList.push(item)
-                            }
-                        })
-                        this.downList.sort((a, b) => a.updateTime.localeCompare(b.updateTime) || a.updateTime
-                            .localeCompare(b.updateTime));
-                        this.current = this.downList.length + 1
-                        let user = JSON.parse(window.localStorage.getItem('USER_INFO'))
-                        let role = user.roleNames
-                        let gw = data.filter(item => {
-                            return item.nextUser == user.id && item.state == 1
-                        })
-                        if (gw.length > 0) {
-                            this.auditForm = gw[0]
-                            if (gw[0].which == '4') this.isAll = true
-                            if (!this.auditForm.content) this.auditForm.content = '已阅'
-                        }
-                        console.log("this.auditForm", this.auditForm);
-                        if (role == '办公室管理员') {
-                            this.istransmit = true
-                        }
-                        if (role == '局领导' && gw.length > 0) this.isleader = true
-                        if (role == '办公室主任' && gw.length > 0) this.istransmit = true
-                        if (role == '分管领导' && gw.length > 0) this.isoffice = true
-                        if (role == '科室负责人' && gw.length > 0) this.isundertake = true
-                        let a = data.length * 60;
-                        this.heightpx = a + "px";
-                        this.loading = false
-                    })
+  data() {
+    return {
+      title: "",
+      visible: false,
+      loading: false,
+      isAll: false,
+      show: false,
+      one: true,
+      auditForm: {
+        id: "",
+        yzId: "",
+        content: "同意",
+        signfj: "",
+        createTruename: "",
+        nextTruename: "",
+        nextUser: "",
+        which: "0",
+        state: "0",
+        next: "",
+        neUser: "",
+      },
+      gwId: "",
+      isoffice: false,
+      isleader: false,
+      isundertake: false,
+      istransmit: false,
+      // 步骤条
+      heightpx: "400px",
+      downList: [],
+      gwList: [],
+      current: 0,
+      role: "",
+      inputForm: {
+        id: "",
+        yzId: "",
+        content: "",
+        signfj: "",
+        createTruename: "",
+        nextTruename: "",
+        nextUser: "",
+        which: "0",
+        state: "0",
+        next: "",
+        neUser: "",
+        createTime: "",
+      },
+    };
+  },
+  components: {
+    officeUserSelect,
+    YzCard,
+  },
+  created() {},
+  methods: {
+    init(method, id) {
+      this.method = method;
+      this.gwId = id;
+      if (method === "add") {
+        this.title = `新建盐都工信拟稿`;
+      } else if (method === "edit") {
+        this.title = "拟稿详情";
+      } else if (method === "view") {
+        this.title = "拟稿详情";
+      }
 
-                }
-            })
-        },
-        // 提交表单
-        doSubmit() {
-            let inputForm = this.auditForm;
-            this.loading = true
-            if (inputForm.neUser && inputForm.neUser != '') {
-                inputForm.next = '1'
-            } else {
-                inputForm.next = ''
+      this.visible = true;
+      this.loading = false;
+      this.$nextTick(() => {
+        if (method === "edit" || method === "view") {
+          // 修改或者查看
+          this.loading = true;
+          this.downList = [];
+          this.gwList = [];
+          yzFlowService.queryByYzId(this.gwId).then((data) => {
+            data.sort(
+              (a, b) =>
+                a.createTime.localeCompare(b.createTime) ||
+                a.createTime.localeCompare(b.createTime)
+            );
+            let a = data.length * 60;
+            this.heightpx = a + "px";
+            this.inputForm = data[0];
+            data.forEach((item) => {
+              if (item.state == 0) {
+                this.downList.push(item);
+              } else {
+                this.gwList.push(item);
+              }
+            });
+            this.downList.sort(
+              (a, b) =>
+                a.updateTime.localeCompare(b.updateTime) ||
+                a.updateTime.localeCompare(b.updateTime)
+            );
+            this.current = this.downList.length + 1;
+            let user = JSON.parse(window.localStorage.getItem("USER_INFO"));
+            this.role = user.roleNames;
+            let role = user.roleNames;
+            let gw = data.filter((item) => {
+              return item.nextUser == user.id && item.state == 1;
+            });
+            if (gw.length > 0) {
+              this.auditForm = gw[0];
+              if (gw[0].which == "4") this.isAll = true;
+              if (!this.auditForm.content) this.auditForm.content = "同意";
             }
-            inputForm.state = "0"
-            inputForm.yzId = this.gwId
-            const date = moment().format('YYYY-MM-DD HH:mm:ss');
-            inputForm.updateTime = date
-
-            yzFlowService.save(inputForm).then(data => {
-                this.visible = false
-                this.$message.success(data)
-                this.$emit('refreshDataList')
-                this.loading = false
-            }).catch(() => {
-                this.loading = false
-            })
-        },
-        // 归档
-        formSubmit() {
-            this.loading = true
-            let inputForm = Object.assign({}, this.auditForm);;
-            inputForm.state = '0'
-            inputForm.next = "0"
-            yzFlowService.save(inputForm).then(data1 => {
-                this.visible = false
-                this.$message.success(data1)
-                this.$emit('refreshDataList')
-                this.loading = false
-            })
+            if (role == "办公室管理员") {
+              this.istransmit = true;
+            }
+            if (role == "局领导" && gw.length > 0) this.isleader = true;
+            if (role == "办公室主任" && gw.length > 0) this.istransmit = true;
+            if (role == "分管领导" && gw.length > 0) this.isoffice = true;
+            if (role == "科室负责人" && gw.length > 0) this.isundertake = true;
 
+            this.loading = false;
+          });
         }
+      });
+    },
+    // 提交表单
+    doSubmit() {
+      let inputForm = this.auditForm;
+      this.loading = true;
+      if (inputForm.neUser && inputForm.neUser != "") {
+        inputForm.next = "1";
+      } else {
+        inputForm.next = "";
+      }
+      inputForm.state = "0";
+      inputForm.yzId = this.gwId;
+      const date = moment().format("YYYY-MM-DD HH:mm:ss");
+      inputForm.updateTime = date;
 
-    }
-}
+      yzFlowService
+        .save(inputForm)
+        .then((data) => {
+          this.visible = false;
+          this.$message.success(data);
+          this.$emit("refreshDataList");
+          this.loading = false;
+        })
+        .catch(() => {
+          this.loading = false;
+        });
+    },
+    // 归档
+    formSubmit() {
+      this.loading = true;
+      let inputForm = Object.assign({}, this.auditForm);
+      inputForm.state = "0";
+      inputForm.next = "0";
+      yzFlowService.save(inputForm).then((data1) => {
+        this.visible = false;
+        this.$message.success(data1);
+        this.$emit("refreshDataList");
+        this.loading = false;
+      });
+    },
+  },
+};
 </script>
 <style>
 .titletab {
-    color: #36a7f3;
-    border-bottom: 1px solid #36a7f3;
-    width: 100%;
-    font-size: 18px;
-    font-weight: 700;
-    padding: 6px;
+  color: #36a7f3;
+  border-bottom: 1px solid #36a7f3;
+  width: 100%;
+  font-size: 18px;
+  font-weight: 700;
+  padding: 6px;
 }
 
 .cll {
-    width: 450px;
-    margin-left: 50px;
+  width: 450px;
+  margin-left: 50px;
 }
 </style>

+ 188 - 96
jp-ui/src/views/yzcirculation/YzCirculationCardForm.vue

@@ -1,164 +1,256 @@
 <template>
   <v-dialog :title="title" :close-on-click-modal="false" v-model="visible">
-    <el-form :model="inputForm" ref="inputForm" v-loading="loading" :class="method === 'view' ? 'readonly' : ''"
-      :disabled="method === 'view'" label-width="120px">
+    <el-form
+      :model="inputForm"
+      :rules="rules"
+      ref="inputForm"
+      v-loading="loading"
+      :class="method === 'view' ? 'readonly' : ''"
+      :disabled="method === 'view'"
+      label-width="120px"
+    >
       <el-row :gutter="15">
-
         <el-col :span="12">
-          <el-form-item label="年份" prop="yearNum" :rules="[
-  ]">
-            <el-input readonly v-model="inputForm.yearNum" placeholder="请填写年份"></el-input>
+          <el-form-item label="年份" prop="yearNum">
+            <el-input
+              readonly
+              v-model="inputForm.yearNum"
+              placeholder="请填写年份"
+            ></el-input>
           </el-form-item>
         </el-col>
         <el-col :span="12">
-          <el-form-item label="卡号" prop="cardNum" :rules="[
-  ]">
-            <el-input readonly v-model="inputForm.cardNum" placeholder="请填写卡号"></el-input>
+          <el-form-item label="卡号" prop="cardNum">
+            <el-input
+              readonly
+              v-model="inputForm.cardNum"
+              placeholder="请填写卡号"
+            ></el-input>
           </el-form-item>
         </el-col>
 
         <el-col :span="12">
-          <el-form-item label="文件名称" prop="name" :rules="[
-  ]">
-            <el-input v-model="inputForm.name" placeholder="请填写文件名称"></el-input>
+          <el-form-item label="文件名称" prop="name" required>
+            <el-input
+              v-model="inputForm.name"
+              placeholder="请填写文件名称"
+            ></el-input>
           </el-form-item>
         </el-col>
         <el-col :span="12">
-          <el-form-item label="拟稿人" readonly prop="authorPerson" :rules="[
-  ]">
-            <el-input readonly v-model="user.name" placeholder="请填写拟稿人"></el-input>
-            <!-- <user-select :limit='1' v-model="inputForm.authorPerson"></user-select> -->
+          <el-form-item label="拟稿人" readonly prop="authorPerson">
+            <el-input
+              readonly
+              v-model="user.name"
+              placeholder="请填写拟稿人"
+            ></el-input>
           </el-form-item>
         </el-col>
         <el-col :span="12">
-          <el-form-item label="校对人" prop="proofreader" :rules="[
-  ]">
-            <office-user-select v-model="inputForm.proofreader" :limit="1" title="校对人"></office-user-select>
+          <el-form-item label="校对人" prop="proofreader" required>
+            <office-user-select
+              v-model="inputForm.proofreader"
+              :limit="1"
+              title="校对人"
+            ></office-user-select>
           </el-form-item>
         </el-col>
         <el-col :span="12">
-          <el-form-item label="是否公开" prop="open" :rules="[
-  ]">
+          <el-form-item label="是否公开" prop="open">
             <el-radio-group v-model="inputForm.open">
-              <el-radio v-for="item in $dictUtils.getDictList('yes_no')" :label="item.value" :key="item.value">{{
-    item.label
-  }}</el-radio>
+              <el-radio
+                v-for="item in $dictUtils.getDictList('yes_no')"
+                :label="item.value"
+                :key="item.value"
+                >{{ item.label }}</el-radio
+              >
             </el-radio-group>
           </el-form-item>
         </el-col>
         <el-col :span="12">
-          <el-form-item label="印数" prop="printNum" :rules="[
-    { validator: validator.isNumber, trigger: 'blur' }
-  ]">
-            <el-input-number v-model="inputForm.printNum" placeholder="请填写印数" style="width: 100%;"></el-input-number>
+          <el-form-item
+            label="印数"
+            prop="printNum"
+            :rules="[{ validator: validator.isNumber, trigger: 'blur' }]"
+          >
+            <el-input-number
+              v-model="inputForm.printNum"
+              placeholder="请填写印数"
+              style="width: 100%"
+            ></el-input-number>
           </el-form-item>
         </el-col>
         <el-col :span="12">
-          <el-form-item label="备注" prop="remark" :rules="[
-  ]">
-            <el-input v-model="inputForm.remark" placeholder="请填写备注"></el-input>
+          <el-form-item label="备注" prop="remark">
+            <el-input
+              v-model="inputForm.remark"
+              placeholder="请填写备注"
+            ></el-input>
           </el-form-item>
         </el-col>
         <el-col :span="24">
-          <el-form-item label="附件" prop="attachment" :rules="[
-  ]">
-            <file-upload v-model="inputForm.attachment" :limit="3" tip="最多上传3个文件,单个文件不要超过10M"></file-upload>
+          <el-form-item label="附件" prop="attachment" :rules="[]">
+            <el-upload
+              :disabled="method === 'view'"
+              ref="upload"
+              :action="`${$http.BASE_URL}/gwfile/upload?uploadPath=commonseal`"
+              :headers="{ token: $cookies.token }"
+              :on-preview="
+                (file, fileList) => {
+                  $window.location.href =
+                    (file.response && file.response.url) || file.url;
+                }
+              "
+              :on-success="getFj"
+              :on-remove="
+                (file, fileList) => {
+                  inputForm.attachment = fileList
+                    .map((item) => item.url)
+                    .join('|');
+                }
+              "
+              :before-remove="
+                (file, fileList) => {
+                  return $confirm(`确定移除 ${file.name}?`);
+                }
+              "
+              :file-list="fileList"
+              :limit="9"
+            >
+              <el-button size="small" type="primary">点击上传</el-button>
+            </el-upload>
           </el-form-item>
         </el-col>
-
       </el-row>
     </el-form>
     <template #footer>
       <span class="dialog-footer">
         <el-button @click="visible = false" icon="circle-close">关闭</el-button>
-        <el-button type="primary" v-if="method != 'view'" @click="doSubmit()" icon="circle-check"
-          v-noMoreClick>确定</el-button>
+        <el-button
+          type="primary"
+          v-if="method != 'view'"
+          @click="doSubmit()"
+          icon="circle-check"
+          v-noMoreClick
+          >确定</el-button
+        >
       </span>
     </template>
   </v-dialog>
 </template>
 
 <script>
-import UserSelect from '@/components/userSelect'
-import yzCirculationCardService from '@/api/yzcirculation/yzCirculationCardService'
+import yzCirculationCardService from "@/api/yzcirculation/yzCirculationCardService";
 import officeUserSelect from "@/components/officeUserSelect/index.vue";
+
 export default {
   data() {
     return {
-      title: '',
-      method: '',
+      title: "",
+      method: "",
       visible: false,
       loading: false,
-      user: '',
+      user: "",
+      fileList: [],
       inputForm: {
-        id: '',
-        name: '',
-        authorPerson: '',
-        proofreader: '',
-        open: '1',
-        printNum: '1',
-        state: '',
-        cardNum: '',
-        yearNum: '',
-        attachment: '',
-        remark: ''
-      }
-    }
+        id: "",
+        name: "",
+        authorPerson: "",
+        authorId: "",
+        proofreader: "",
+        open: "",
+        printNum: "",
+        state: "",
+        cardNum: "",
+        yearNum: "",
+        attachment: "",
+        remark: "",
+      },
+      rules: {
+        name: [{ required: true, message: "请输入文件名称", trigger: "blur" }],
+        proofreader: [
+          { required: true, message: "请选择校对人", trigger: "blur" },
+        ],
+      },
+    };
   },
   components: {
-    officeUserSelect
-  },
-  created() {
+    officeUserSelect,
   },
+  created() {},
   methods: {
     init(method, id) {
-      this.method = method
-      this.inputForm.id = id
-      if (method === 'add') {
-        this.title = `新建拟稿申请`
-      } else if (method === 'edit') {
-        this.title = '修改拟稿申请'
-      } else if (method === 'view') {
-        this.title = '查看拟稿申请'
+      this.method = method;
+      this.inputForm.id = id;
+      if (method === "add") {
+        this.title = `新建拟稿申请`;
+      } else if (method === "edit") {
+        this.title = "修改拟稿申请";
+      } else if (method === "view") {
+        this.title = "查看拟稿申请";
       }
-      this.visible = true
-      this.loading = false
+      this.fileList = [];
+      this.visible = true;
+      this.loading = false;
       this.$nextTick(() => {
-        this.$refs.inputForm.resetFields()
-        yzCirculationCardService.getCardNum().then(data => {
-          this.user = JSON.parse(window.localStorage.getItem('USER_INFO'))
-          this.inputForm.authorPerson = this.user.id
+        this.$refs.inputForm.resetFields();
+        yzCirculationCardService.getCardNum().then((data) => {
+          this.user = JSON.parse(window.localStorage.getItem("USER_INFO"));
+          this.inputForm.authorPerson = this.user.id;
           const currentYear = new Date().getFullYear();
-          this.inputForm.yearNum = currentYear
-          this.cardNum = data
-          this.inputForm.cardNum = data
-        })
+          this.inputForm.yearNum = currentYear;
+          this.cardNum = data;
+          this.inputForm.cardNum = data;
+        });
+
+        if (method === "edit" || method === "view") {
+          // 修改或者查看
+          this.loading = true;
 
-        if (method === 'edit' || method === 'view') { // 修改或者查看
-          this.loading = true
           yzCirculationCardService.queryById(this.inputForm.id).then((data) => {
-            this.inputForm = this.recover(this.inputForm, data)
-            this.loading = false
-          })
+            this.inputForm = this.recover(this.inputForm, data);
+            this.inputForm.attachment.split(",").forEach((item) => {
+              if (item.trim().length > 0) {
+                this.fileList.push({
+                  name: decodeURIComponent(
+                    item.substring(item.lastIndexOf("/") + 1)
+                  ),
+                  url: item,
+                });
+              }
+            });
+            this.loading = false;
+          });
         }
-      })
+      });
+    },
+    getFj(response, file, fileList) {
+      this.inputForm.attachment = fileList
+        .map((item) => item.response || item.url)
+        .join(",");
     },
     // 表单提交
     doSubmit() {
-      this.$refs['inputForm'].validate((valid) => {
+      if (this.method === "edit") {
+        this.inputForm.authorPerson = this.inputForm.authorId;
+      }
+      this.$refs["inputForm"].validate((valid) => {
         if (valid) {
-          this.loading = true
-          yzCirculationCardService.save(this.inputForm).then((data) => {
-            this.visible = false
-            this.$message.success(data)
-            this.$emit('refreshDataList')
-            this.loading = false
-          }).catch(() => {
-            this.loading = false
-          })
+          this.loading = true;
+          yzCirculationCardService
+            .save(this.inputForm)
+            .then((data) => {
+              this.visible = false;
+              this.$message.success(data);
+              this.$emit("refreshDataList");
+              this.loading = false;
+            })
+            .catch(() => {
+              this.loading = false;
+            });
         }
-      })
-    }
-  }
-}
+      });
+    },
+  },
+};
 </script>

+ 27 - 12
jp-ui/src/views/yzcirculation/YzCirculationCardList.vue

@@ -27,8 +27,8 @@
 				</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-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>
 
@@ -82,28 +82,34 @@
 					</vxe-column>
 					<vxe-column field="authorPerson" sortable title="拟稿人">
 					</vxe-column>
-					<!-- <vxe-column field="proofreader" 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="状态">
+					<vxe-column field="state" sortable title="状态">
 						<template #default="{ row }">
 							{{ $dictUtils.getDictLabel("gw_state", row.state, '-') }}
 						</template>
-					</vxe-column> -->
+					</vxe-column>
 
-					<vxe-column fixed="right" align="center" width="200" title="操作">
+					<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') && searchForm.state == 1"
-								type="primary" text icon="edit-filled" @click="edit(row.id)">审批</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>
@@ -131,10 +137,11 @@ export default {
 	data() {
 		return {
 			searchVisible: true,
+			role: '',
 			searchForm: {
 				name: '',
 				open: '',
-				state: '1',
+				state: '',
 				yearNum: '',
 				authorPerson: ''
 			},
@@ -143,7 +150,7 @@ export default {
 				total: 0,
 				currentPage: 1,
 				pageSize: 10,
-				orders: [{ column: "a.create_time", asc: false }],
+				orders: [{ column: "a.state", asc: true }, { column: "a.create_time", asc: false }],
 			},
 			loading: false
 		}
@@ -157,6 +164,7 @@ export default {
 	},
 	mounted() {
 		this.$nextTick(() => {
+			this.role = JSON.parse(window.localStorage.getItem('USER_INFO')).roleNames
 			// 将表格和工具栏进行关联
 			const $table = this.$refs.yzCirculationCardTable
 			const $toolbar = this.$refs.yzCirculationCardToolbar
@@ -201,12 +209,19 @@ export default {
 		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.yzCardInfo.init('edit', id)
+			this.$refs.yzCirculationCardForm.init('edit', id)
 		},
 		// 查看
 		view(id) {