zouling 11 月之前
父节点
当前提交
7570f6cab0

+ 26 - 0
api/mine/work.js

@@ -135,3 +135,29 @@ export function getapplicationXib(data) {
 	'data':data
   })
 }
+
+// 股东附件-列表查询企业股东system:shareholderFj:listNoPage
+export function getGdlistNoPage(data) {
+  return request({
+    'url': '/shareholderFj/listNoPage',
+    'method': 'get',
+	'data':data
+  })
+}
+
+// 暂缓出具放款合规表-风险使用system:application:zanHuan
+export function getZanHuan(data) {
+  return request({
+    'url': '/application/zanHuan',
+    'method': 'post',
+	'data':data
+  })
+}
+// 管理员授权A角色开具放款通知书system:application:authorize
+export function getAuthorize(data) {
+  return request({
+    'url': '/application/authorize',
+    'method': 'post',
+	'data':data
+  })
+}

+ 124 - 0
components/ba-tree-picker/README.md

@@ -0,0 +1,124 @@
+## 树形层级选择器
+### 简介
+为统一样式而生,树形层级选择器,picker弹窗形式的,样式和比例参照uniapp的picker和uni-data-picker组件
+* 支持单选、多选、父级选择,当然也支持单层选择
+* 支持Object对象属性自定义映射
+* 支持显示全部选中、部分选中、未选中三种状态
+* 支持快速自定义简单样式(分割线、按钮、标题、对齐等),深入样式可复写css
+
+### 使用方法
+在 `script` 中引入组件
+``` javascript
+	import baTreePicker from "@/components/ba-tree-picker/ba-tree-picker.vue"
+	export default {
+		components: {
+			baTreePicker
+		}
+```
+在 `template` 中使用组件
+``` javascript
+	<ba-tree-picker ref="treePicker" :multiple='false' @select-change="selectChange" title="选择城市"
+		:localdata="listData" valueKey="value" textKey="label" childrenKey="children" />
+```
+在 `script` 中定义打开方法,和选择监听
+``` javascript
+		methods: {
+			// 显示选择器
+			showPicker() {
+				this.$refs.treePicker._show();
+			},
+			//监听选择(ids为数组)
+			selectChange(ids, names) {
+				console.log(ids, names)
+			}
+		}
+```
+在 `template` 中调用打开
+``` javascript
+	<view @click="showPicker">调用选择器</view>
+```
+
+### 属性
+|属性名|类型|默认值|说明|
+|:-|:-:|:--:|-:|
+|localdata|Array|[]|源数据,目前支持tree结构,后续会考虑支持扁平化结构|
+|valueKey|String|id|指定 Object 中 key 的值作为节点数据id|
+|textKey|String|name|指定 Object 中 key 的值作为节点显示内容|
+|childrenKey|String|children|指定 Object 中 key 的值作为节点子集|
+|multiple|Boolean|false|是否多选,默认单选|
+|selectParent|Boolean|true|是否可以选父级,默认可以|
+|title|String| |标题|
+|titleColor|String||标题颜色|
+|confirmColor|String|#0055ff|确定按钮颜色|
+|cancelColor|String|#757575|取消按钮颜色|
+|switchColor|String|#666|节点切换图标颜色|
+|border|Boolean|false|是否有分割线,默认无|
+
+
+
+###  数据格式
+
+注意:必须有id、name(id可通过valueKey来配置为其它键值,如value)字段,且唯一
+
+``` json
+[
+    {
+        id: 1,
+        name: '公司1',
+        children: [{
+            id: 11,
+            name: '研发部',
+            children: [{
+                id: 111,
+                name: '张三',
+                
+            },{
+                id: 112,
+                name: '李四',
+                
+            }]
+        },{
+            id: 12,
+            name: '综合部',
+            
+        } ]
+    },
+    {
+        id: 2,
+        name: '公司2',
+        children: [{
+            id: 21,
+            name: '研发部',
+            
+        },{
+            id: 22,
+            name: '综合部',
+            
+        },{
+            id: 23,
+            name: '财务部',
+            
+        }, ]
+    },
+    {
+        id: 3,
+        name: '公司3'
+    },
+    {
+        id: 4,
+        name: '公司4',
+        children: [{
+            id: 41,
+            name: '研发部',
+            
+        }]
+    }
+]
+```
+</details>
+
+### 方法
+|方法名|参数|默认值|说明|
+|:-|:-:|:--:|-:|
+|_show()| | |显示选择器|
+|_hide()| | |隐藏选择器|

+ 668 - 0
components/ba-tree-picker/ba-tree-pickerfixed.vue

@@ -0,0 +1,668 @@
+<!-- 树形层级选择器-->
+<!-- 1、支持单选、多选 -->
+<template>
+	<view>
+		<view class="tree-cover" :class="{'show':showDialog}" @tap="_cancel"></view>
+		<view class="tree-dialog" :class="{'show':showDialog}">
+			<view class="tree-bar">
+				<view class="tree-bar-cancel" :style="{'color':cancelColor}" hover-class="hover-c" @tap="_cancel">取消
+				</view>
+				<view class="tree-bar-title" :style="{'color':titleColor}">{{title}}</view>
+				<view class="tree-bar-confirm" :style="{'color':confirmColor}" hover-class="hover-c" @tap="_confirm">
+					{{multiple?'确定':''}}
+				</view>
+			</view>
+			<view class="tree-view">
+				<scroll-view class="tree-list" :scroll-y="true">
+					<block v-for="(item, index) in treeList" :key="index">
+						<view class="tree-item" :style="[{
+							paddingLeft: item.level*30 + 'rpx'
+						}]" :class="{
+							itemBorder: border === true,
+							show: item.isShow
+						}">
+							<view class="item-label" @tap.stop="_onItemSelect(item, index)">
+								<!-- <view class="item-icon flexcc" @tap.stop="_onItemSwitch(item, index)">
+									<view v-if="!item.isLastLevel&&item.isShowChild" class="switch-on"
+										:style="{'border-left-color':switchColor}">
+									</view>
+									<view v-else-if="!item.isLastLevel&&!item.isShowChild" class="switch-off"
+										:style="{'border-top-color':switchColor}">
+									</view>
+									<view v-else class="item-last-dot" :style="{'border-top-color':switchColor}">
+									</view>
+								</view> -->
+								<view class="flexc uni-inline-item" >
+									
+									<view class="item-check" v-if="selectParent?true:item.isLastLevel">
+										<view class="item-check-yes" v-if="item.checkStatus==1"
+											:class="{'radio':!multiple}" :style="{'border-color':confirmColor}">
+											<view class="item-check-yes-part"
+												:style="{'background-color':confirmColor}">
+											</view>
+										</view>
+										<view class="item-check-yes" v-else-if="item.checkStatus==2"
+											:class="{'radio':!multiple}" :style="{'border-color':confirmColor}">
+											<view class="item-check-yes-all" :style="{'background-color':confirmColor}">
+											</view>
+										</view>
+										<view class="item-check-no" v-else :class="{'radio':!multiple}"
+											:style="{'border-color':confirmColor}"></view>
+									</view>
+									<view class="item-name"> {{item.name+(item.childCount?"("+item.childCount+")":'')}}</view>
+								</view>
+							</view>
+
+						</view>
+					</block>
+				</scroll-view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		emits: ['select-change'],
+		name: "ba-tree-picker",
+		props: {
+			valueKey: {
+				type: String,
+				default: 'id'
+			},
+			textKey: {
+				type: String,
+				default: 'name'
+			},
+			childrenKey: {
+				type: String,
+				default: 'children'
+			},
+			localdata: {
+				type: Array,
+				default: function() {
+					return []
+				}
+			},
+			localTreeList: { //在已经格式化好的数据
+				type: Array,
+				default: function() {
+					return []
+				}
+			},
+			selectedData: {
+				type: Array,
+				default: function() {
+					return []
+				}
+			},
+			title: {
+				type: String,
+				default: ''
+			},
+			deptType:{
+				type: String,
+				default: ''
+			},
+			multiple: { // 是否可以多选
+				type: Boolean,
+				default: true
+			},
+			selectParent: { //是否可以选父级
+				type: Boolean,
+				default: true
+			},
+			checkVal:{//选中的数据value
+				type: String,
+				default: '' 
+			},
+			confirmColor: { // 确定按钮颜色
+				type: String,
+				default: '' // #1D64E2
+			},
+			cancelColor: { // 取消按钮颜色
+				type: String,
+				default: '' // #757575
+			},
+			titleColor: { // 标题颜色
+				type: String,
+				default: '' //
+			},
+			switchColor: { // 节点切换图标颜色
+				type: String,
+				default: '' // #666
+			},
+			border: { // 是否有分割线
+				type: Boolean,
+				default: false
+			},
+		},
+		data() {
+			return {
+				showDialog: false,
+				treeList: []
+			}
+		},
+		computed: {},
+		methods: {
+			_show() {
+				this.showDialog = true
+			},
+			_hide() {
+				this.showDialog = false
+			},
+			_cancel() {
+				this._hide()
+				this.$emit("cancel", '');
+			},
+			_confirm() { //多选
+				var that=this;
+				let selectedList = []; //如果子集全部选中,只返回父级 id
+				let selectedNames;
+				let currentLevel = -1;
+				this.treeList.forEach((item, index) => {
+					// console.log(item,1)
+					if (currentLevel >= 0 && item.level > currentLevel) {
+
+					} else {
+						
+						if (item.checkStatus === 2) {
+							// 判断有无子元素
+							currentLevel = item.level;
+							if(item.children&&item.children.length){
+								var children=item.children;
+								
+								children.forEach(ite=>{
+									var obj={
+										deptId:ite.id,
+										deptName:ite.label,
+										type:that.deptType
+									}
+									selectedList.push(obj);
+								})
+							}else{
+								var obj={
+									deptId:item.id,
+									deptName:item.name,
+									type:that.deptType
+								}
+								selectedList.push(obj);
+							}
+							
+							// selectedNames = selectedNames ? selectedNames + ' / ' + item.name : item.name;
+						} else {
+							currentLevel = -1;
+						}
+					}
+				})
+				// console.log(selectedList,1)
+				// return
+				
+				// this.$emit("select-change", selectedList, selectedNames);
+				this.$nextTick(function(){
+					this._hide()
+					this.$emit("select-change", selectedList);
+				})
+				
+			},
+			//格式化原数据(原数据为tree结构)
+			_formatTreeData(list = [], level = 0, parentItem, isShowChild = true) {
+				let nextIndex = 0;
+				let parentId = -1;
+				let initCheckStatus = 0;
+				if (parentItem) {
+					nextIndex = this.treeList.findIndex(item => item.id === parentItem.id) + 1;
+					parentId = parentItem.id;
+					if (!this.multiple) { //单选
+						initCheckStatus = 0;
+					} else
+						initCheckStatus = parentItem.checkStatus == 2 ? 2 : 0;
+				}
+				list.forEach(item => {
+					let isLastLevel = true;
+					if (item && item[this.childrenKey]) {
+						let children = item[this.childrenKey];
+						if (Array.isArray(children) && children.length > 0) {
+							isLastLevel = false;
+						}
+					}
+					let itemT = {
+						id: item[this.valueKey],
+						name: item[this.textKey],
+						level,
+						isLastLevel,
+						isShow: isShowChild,
+						isShowChild: false,
+						checkStatus: this.checkVal&&this.checkVal.indexOf(item[this.valueKey])>-1?2:0,
+						orCheckStatus: 0,
+						parentId,
+						children: item[this.childrenKey],
+						childCount: item[this.childrenKey] ? item[this.childrenKey].length : 0,
+						childCheckCount: 0,
+						childCheckPCount: 0
+					};
+					if (this.selectedData.indexOf(itemT.id) >= 0) {
+						itemT.checkStatus = 2;
+						itemT.orCheckStatus = 2;
+						itemT.childCheckCount = itemT.children ? itemT.children.length : 0;
+						this._onItemParentSelect(itemT, nextIndex);
+					}
+
+					this.treeList.splice(nextIndex, 0, itemT);
+					nextIndex++;
+				})
+				//console.log(this.treeList);
+			},
+			// 节点打开、关闭切换
+			_onItemSwitch(item, index) {
+				// console.log(item)
+				//console.log('_itemSwitch')
+				if (item.isLastLevel === true) {
+					return;
+				}
+				item.isShowChild = !item.isShowChild;
+				if (item.children) {
+					this._formatTreeData(item.children, item.level + 1, item);
+					item.children = undefined;
+				} else {
+					this._onItemChildSwitch(item, index);
+				}
+			},
+			_onItemChildSwitch(item, index) {
+				//console.log('_onItemChildSwitch')
+				const firstChildIndex = index + 1;
+				if (firstChildIndex > 0)
+					for (var i = firstChildIndex; i < this.treeList.length; i++) {
+						let itemChild = this.treeList[i];
+						if (itemChild.level > item.level) {
+							if (item.isShowChild) {
+								if (itemChild.parentId === item.id) {
+									itemChild.isShow = item.isShowChild;
+									if (!itemChild.isShow) {
+										itemChild.isShowChild = false;
+									}
+								}
+							} else {
+								itemChild.isShow = item.isShowChild;
+								itemChild.isShowChild = false;
+							}
+						} else {
+							return;
+						}
+					}
+			},
+			// 节点选中、取消选中
+			_onItemSelect(item, index) {
+				//console.log('_onItemSelect')
+				//console.log(item)
+				if (!this.multiple) { //单选
+					item.checkStatus = item.checkStatus == 0 ? 2 : 0;
+
+					this.treeList.forEach((v, i) => {
+						if (i != index) {
+							this.treeList[i].checkStatus = 0
+						} else {
+							this.treeList[i].checkStatus = 2
+						}
+					})
+
+					let selectedList = [];
+					let selectedNames;
+					selectedList.push(item.id);
+					selectedNames = item.name;
+					// this._hide()
+					this.$emit("select-change", selectedList, selectedNames);
+					return
+				}
+
+				let oldCheckStatus = item.checkStatus;
+				switch (oldCheckStatus) {
+					case 0:
+						item.checkStatus = 2;
+						item.childCheckCount = item.childCount;
+						item.childCheckPCount = 0;
+						break;
+					case 1:
+					case 2:
+						item.checkStatus = 0;
+						item.childCheckCount = 0;
+						item.childCheckPCount = 0;
+						break;
+					default:
+						break;
+				}
+				//子节点 全部选中
+				this._onItemChildSelect(item, index);
+				//父节点 选中状态变化
+				this._onItemParentSelect(item, index, oldCheckStatus);
+				// 选择返回
+				// this._confirm()
+				// this.$emit("select-change", selectedList, selectedNames);
+			},
+			_onItemChildSelect(item, index) {
+				//console.log('_onItemChildSelect')
+				let allChildCount = 0;
+				if (item.childCount && item.childCount > 0) {
+					index++;
+					while (index < this.treeList.length && this.treeList[index].level > item.level) {
+						let itemChild = this.treeList[index];
+						itemChild.checkStatus = item.checkStatus;
+						if (itemChild.checkStatus == 2) {
+							itemChild.childCheckCount = itemChild.childCount;
+							itemChild.childCheckPCount = 0;
+						} else if (itemChild.checkStatus == 0) {
+							itemChild.childCheckCount = 0;
+							itemChild.childCheckPCount = 0;
+						}
+						// console.log('>>>>index:', index, 'item:', itemChild.name, '  status:', itemChild
+						// 	.checkStatus)
+						index++;
+					}
+				}
+			},
+			_onItemParentSelect(item, index, oldCheckStatus) {
+				//console.log('_onItemParentSelect')
+				//console.log(item)
+				const parentIndex = this.treeList.findIndex(itemP => itemP.id == item.parentId);
+				//console.log('parentIndex:' + parentIndex)
+				if (parentIndex >= 0) {
+					let itemParent = this.treeList[parentIndex];
+					let count = itemParent.childCheckCount;
+					let oldCheckStatusParent = itemParent.checkStatus;
+
+					if (oldCheckStatus == 1) {
+						itemParent.childCheckPCount -= 1;
+					} else if (oldCheckStatus == 2) {
+						itemParent.childCheckCount -= 1;
+					}
+					if (item.checkStatus == 1) {
+						itemParent.childCheckPCount += 1;
+					} else if (item.checkStatus == 2) {
+						itemParent.childCheckCount += 1;
+					}
+
+					if (itemParent.childCheckCount <= 0 && itemParent.childCheckPCount <= 0) {
+						itemParent.childCheckCount = 0;
+						itemParent.childCheckPCount = 0;
+						itemParent.checkStatus = 0;
+					} else if (itemParent.childCheckCount >= itemParent.childCount) {
+						itemParent.childCheckCount = itemParent.childCount;
+						itemParent.childCheckPCount = 0;
+						itemParent.checkStatus = 2;
+					} else {
+						itemParent.checkStatus = 1;
+					}
+					//console.log('itemParent:', itemParent)
+					this._onItemParentSelect(itemParent, parentIndex, oldCheckStatusParent);
+				}
+			},
+			// 重置数据
+			_reTreeList() {
+				this.treeList.forEach((v, i) => {
+					this.treeList[i].checkStatus = v.orCheckStatus
+				})
+			},
+			_initTree() {
+				this.treeList = [];
+				this._formatTreeData(this.localdata);
+			}
+		},
+		watch: {
+			localdata() {
+				this._initTree();
+			},
+			localTreeList() {
+				this.treeList = this.localTreeList;
+			}
+		},
+		mounted() {
+			this._initTree();
+		}
+	}
+</script>
+
+<style scoped>
+	.tree-cover {
+		position: fixed;
+		top: 0rpx;
+		right: 0rpx;
+		bottom: 0rpx;
+		left: 0rpx;
+		z-index: 100;
+		background-color: rgba(0, 0, 0, .4);
+		opacity: 0;
+		transition: all 0.3s ease;
+		visibility: hidden;
+	}
+
+	.tree-cover.show {
+		visibility: visible;
+		opacity: 1;
+	}
+
+	.tree-dialog {
+		position: fixed;
+		top: 0rpx;
+		right: 0rpx;
+		bottom: 0rpx;
+		left: 0rpx;
+		background-color: #fff;
+		border-top-left-radius: 10px;
+		border-top-right-radius: 10px;
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: column;
+		z-index: 100002;
+		top: 20%;
+		transition: all 0.3s ease;
+		transform: translateY(100%);
+	}
+
+	.tree-dialog.show {
+		transform: translateY(0);
+	}
+
+	.tree-bar {
+		/* background-color: #fff; */
+		height: 90rpx;
+		padding-left: 25rpx;
+		padding-right: 25rpx;
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
+		box-sizing: border-box;
+		border-bottom-width: 1rpx !important;
+		border-bottom-style: solid;
+		border-bottom-color: #f5f5f5;
+		font-size: 32rpx;
+		color: #757575;
+		line-height: 1;
+	}
+
+	.tree-bar-confirm {
+		color: #1D64E2;
+		padding: 15rpx;
+	}
+
+	.tree-bar-title {}
+
+	.tree-bar-cancel {
+		color: #757575;
+		padding: 15rpx;
+	}
+
+	.tree-view {
+		flex: 1;
+		padding: 20rpx;
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: column;
+		overflow: hidden;
+		height: 100%;
+	}
+
+	.tree-list {
+		flex: 1;
+		height: 100%;
+		overflow: hidden;
+	}
+
+	.tree-item {
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
+		line-height: 1;
+		height: 0;
+		opacity: 0;
+		transition: 0.2s;
+		overflow: hidden;
+	}
+
+	.tree-item.show {
+		height: 80rpx;
+		opacity: 1;
+	}
+
+	.tree-item.showchild:before {
+		transform: rotate(90deg);
+	}
+
+	.tree-item.last:before {
+		opacity: 0;
+	}
+
+	.switch-on {
+		width: 0;
+		height: 0;
+		border-left: 16rpx solid transparent;
+		border-right: 16rpx solid transparent;
+		border-top: 20rpx solid #666;
+	}
+
+	.switch-off {
+		width: 0;
+		height: 0;
+		border-bottom: 16rpx solid transparent;
+		border-top: 16rpx solid transparent;
+		border-left: 20rpx solid #666;
+	}
+
+	.item-last-dot {
+		position: absolute;
+		width: 12rpx;
+		height: 12rpx;
+		border-radius: 100%;
+		background: #666;
+	}
+
+	.item-icon {
+		width: 26rpx;
+		height: 30rpx;
+		margin-right: 8rpx;
+		padding-right: 20rpx;
+		padding-left: 20rpx;
+	}
+
+	.item-label {
+		flex: 1;
+		display: flex;
+		align-items: center;
+		height: 100%;
+		line-height: 1.2;
+	}
+
+	.item-name {
+		flex: 1;
+		overflow: hidden;
+		text-overflow: ellipsis;
+		white-space: nowrap;
+		/* width: 450rpx; */
+		font-size: 30rpx;
+		font-weight: bold;
+		line-height: 1;
+	}
+
+	.item-check {
+		width: 60rpx;
+		height: 60rpx;
+		display: flex;
+		justify-content: center;
+		align-items: center;
+	}
+
+	.item-check-yes,
+	.item-check-no {
+		width: 32rpx;
+		height: 32rpx;
+		border-top-left-radius: 20%;
+		border-top-right-radius: 20%;
+		border-bottom-right-radius: 20%;
+		border-bottom-left-radius: 20%;
+		border-top-width: 1rpx;
+		border-left-width: 1rpx;
+		border-bottom-width: 1rpx;
+		border-right-width: 1rpx;
+		border-style: solid;
+		border-color: #1D64E2;
+		border-radius: 8rpx;
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		box-sizing: border-box;
+		 /* background-color: #1D64E2; */
+	}
+	.item-check-yes{
+		border: none;
+		background-color: #1D64E2;
+	}
+
+	.item-check-yes-part {
+		width: 24rpx;
+		height: 6rpx;
+		border-top-left-radius: 20%;
+		border-top-right-radius: 20%;
+		border-bottom-right-radius: 20%;
+		border-bottom-left-radius: 20%;
+		background-color: #ffffff;
+	}
+
+	.item-check-yes-all {
+		margin-bottom: 5px;
+		border: 2px solid #ffffff;
+		border-left: 0;
+		border-top: 0;
+		height: 12px;
+		width: 6px;
+		transform-origin: center;
+		/* #ifndef APP-NVUE */
+		transition: all 0.3s;
+		/* #endif */
+		transform: rotate(45deg);
+		/* border: none;
+		background-color: #1D64E2; */
+	}
+
+	.item-check .radio {
+		border-top-left-radius: 50%;
+		border-top-right-radius: 50%;
+		border-bottom-right-radius: 50%;
+		border-bottom-left-radius: 50%;
+	}
+
+	.item-check .radio .item-check-yes-b {
+		border-top-left-radius: 50%;
+		border-top-right-radius: 50%;
+		border-bottom-right-radius: 50%;
+		border-bottom-left-radius: 50%;
+	}
+
+	.hover-c {
+		opacity: 0.6;
+	}
+
+	.itemBorder {
+		border-bottom: 1px solid #e5e5e5;
+	}
+</style>

+ 2 - 1
pages/index/noticedetail.vue

@@ -54,9 +54,10 @@
 						if(res.code==200){
 							this.noticeTitle=res.data.remindTitle;
 							this.createTime=res.data.remindTime;
-							if(res.data.noticeContent){
+							if(res.data.remindContent){
 								this.infoContent=this.formatRichText(res.data.remindContent);
 							}
+							
 						}
 					})
 				}

+ 14 - 0
work/components/business/aqyxx.vue

@@ -47,6 +47,14 @@
 		</view>
 		<view class="flexcw" v-for="(ite,idx) in datainfo.shareholderFjList" :key="idx">
 			<view class="txt" v-if="ite.shareholderFrontUrl||ite.shareholderBackUrl">股东{{Number(idx)+1}}身份证:<text class="txta" @click="getDownGd(ite)">在线查看</text></view>
+			<view class="txt" >股东{{Number(idx)+1}}营业执照:
+				<!-- 其他的营业执照 -->
+				<block v-if="ite.shareholderBusinessUrl">
+					<block v-for="(itea,idxa) in getYyzzFn(ite.shareholderBusinessUrl)">
+						<text class="txtab" v-if="itea" @click="getDown(itea)">在线查看</text>
+					</block>
+				</block>
+			</view>
 			<view class="txt" >股东{{Number(idx)+1}}征信:
 				<!-- 其他的征信 -->
 				<block v-if="ite.shareholderZxUrl">
@@ -188,6 +196,12 @@
 				urls: url,
 			});
 		},
+		// 营业执照
+		getYyzzFn(url){
+			var list=url.split(',')
+			return list
+		},
+		//征信报表
 		getFilteFn(url){
 			var list=url.split(',')
 			list=list.filter((ite) => {

+ 25 - 0
work/components/business/cfdbrxx.vue

@@ -66,6 +66,31 @@
 			</view>
 		</view>
 	</view>
+	<view class="boxt">
+		<view class="tit">
+			<image :src="titimg"></image>企业反担保证明
+		</view>
+		<view class="txt flext">营业执照:
+			<view class="flex1 over">
+				<block v-if="basicFj.fdbqyyyzz&&basicFj.fdbqyyyzz.length">
+					<block v-if="basicFj.fdbqyyyzz.length>1">
+						<view v-for="(ite,idx) in basicFj.fdbqyyyzz" class="filist over" @click="getDown(ite.url)">{{ite.name}}</view>
+					</block>
+					<text v-else class="txta" @click="getDown(basicFj.fdbqyyyzz[0].url)">在线查看</text>
+				</block>
+			</view>
+		</view>
+		<view class="txt flext">企业征信:
+			<view class="flex1 over">
+				<block v-if="basicFj.fdbqyzx&&basicFj.fdbqyzx.length">
+					<block v-if="basicFj.fdbqyzx.length>1">
+						<view v-for="(ite,idx) in basicFj.fdbqyzx" class="filist over" @click="getDown(ite.url)">{{ite.name}}</view>
+					</block>
+					<text v-else class="txta" @click="getDown(basicFj.fdbqyzx[0].url)">在线查看</text>
+				</block>
+			</view>
+		</view>
+	</view>
   </view>
 </template>
 

+ 20 - 0
work/components/popup/popup.vue

@@ -359,6 +359,18 @@
 				<!-- <view class="cbtns bgb">确认</view> -->
 			</view>
 		</view>
+		<!-- 暂缓出具弹窗 -->
+		<view class="fixbox" v-if="type=='zhfkhgb'">
+			<view class="cloimg" @click="getClose">
+				<image :src="closeimg"></image>
+			</view>
+			<view class="ttit">风险审核</view>
+			<view class="mb16">
+				<view class="ttxt mb18">暂缓原因</view>
+				<textarea class="textar" style="height: 156rpx;" v-model="shtext" placeholder="请填写理由…"></textarea>
+			</view>
+			<view class="btns" @click="getupSubmit">确认</view>
+		</view>
 	</view>
 </template>
 
@@ -645,6 +657,14 @@
 						data.reviewTime=this.jtri;
 						data.sysUserConferenceList=this.shrylist;
 					}
+				}else if(type=='zhfkhgb'){
+					if(!this.shtext){
+						this.$toast("请输入暂缓原因")
+						return
+					}
+					data={
+						remark:this.shtext,
+					}
 				}
 				this.$emit('getupSubmit',data)
 			},

+ 216 - 34
work/pages/business/add.vue

@@ -194,7 +194,7 @@
 							</view>
 							<view class="phobox">
 								<view class="phoboxa">
-									<lsj-upload ref="lsjUpload" childId="upload1" :fileName="'股东'+(Number(idx)+1)+'营业执照'" :fileVal='idx' bigType="zhz"  :width="pwidth" :height="pheight" :option="option" :size="size" :formats="formats" :debug="debug" :instantly="instantly"
+									<lsj-upload ref="lsjUpload" childId="upload1" :fileName="'股东'+(Number(idx)+1)+'营业执照'" :fileVal='idx' bigType="zhz"  :width="pwidth" :height="pheight" :option="option" :size="size" :formats="gdformats" :debug="debug" :instantly="instantly"
 										    @progress="" @uploadEnd="gdonuploadEnd" >
 										<view  class="photop" >
 											<image :src="zico" class="bgimg"></image>
@@ -644,7 +644,14 @@
 				<!--  担保类型 -->
 				<view class="addtit mt3"><text>*</text>担保类型</view>
 				<view class="bgf plr12">
-					<picker  range-key='label' :value="dblxidx" :range="dblxlist" class=""  @change='bindDateChangee'>
+					<uni-forms-item label="担保类型" name="guaranteeType">
+						<view class="lbtabp" @click="getRecorddwFn">
+							<view v-if="datainfo.guaranteeType&&!dblx">{{statusFormats(datainfo.guaranteeType,dblxlist,'dblx')}}</view>
+							<view v-else :class="dblx?'':'coa'">{{dblx||"请选择担保类型"}}</view>
+							<image :src="hrimg" class="rimg"></image>
+						</view>
+					</uni-forms-item>
+					<!-- <picker  range-key='label' :value="dblxidx" :range="dblxlist" class=""  @change='bindDateChangee'>
 						<uni-forms-item label="担保类型" name="guaranteeType">
 							<view class="lbtabp">
 								<view v-if="datainfo.guaranteeType&&!dblx">{{statusFormat(datainfo.guaranteeType,dblxlist,'dblx')}}</view>
@@ -652,7 +659,7 @@
 								<image :src="hrimg" class="rimg"></image>
 							</view>
 						</uni-forms-item>
-					</picker>
+					</picker> -->
 				</view>
 				<!-- 反担保人基本信息 v-if="datainfo.guaranteeType==2"-->
 				<block>
@@ -782,6 +789,67 @@
 						</view>
 					</uni-forms-item>
 				</view>
+				<!-- 企业反担保 -->
+				<view class="addtit mt3">企业反担保证明</view>
+				<view class="bgf plr12">
+					<picker  range-key='shareholderName' :value="qyidx" :range="qygdlist" class="isborder"  @change='bindDateChangeg'>
+						<uni-forms-item label="企业名称" name="guaranteeShareholderName">
+							<view class="lbtabp">
+								<view class="chtit" :class="datainfo.guaranteeShareholderName?'':'coa'">{{datainfo.guaranteeShareholderName||"请选择关联企业"}}</view>
+								<image :src="hrimg" class="rimg"></image>
+							</view>
+						</uni-forms-item>
+					</picker>
+					<uni-forms-item name="iszcy">
+						<view class="labtxt">营业执照</view>
+						<view class="phobox" style="display: flex;flex-wrap: wrap;justify-content: space-between;">
+							<view class="phoboxa" v-if="jcfjobj.fdbqyyyzz">
+								<lsj-upload ref="lsjUpload" childId="upload1" :fileName="jcfjobj.fdbqyyyzz" fileVal='fdbqyyyzz' bigType="a" :width="pwidth" :height="pheight" :option="option" :size="size" :formats="formats" :debug="debug" :instantly="instantly"
+									    @progress="" @uploadEnd="onuploadEnd" >
+									<view  class="photop" >
+										<image :src="zico" class="bgimg"></image>
+										<image :src="phoicon" class="addimg"></image>
+									</view>
+								</lsj-upload>
+								<view class="photit atit">上传企业营业执照</view>
+							</view>
+							<block v-for="(ite,idx) in filelist" :key='idx'>
+								<view class="phoboxa" v-if="ite.type=='fdbqyyyzz'&&ite.bigType=='a'">
+									<view class="photop" @click="getDown(ite.url)">
+										<image :src="lookico" class="bgimg"></image>
+										<image :src="phoicon" class="addimg"></image>
+										<image :src="delimg" class="delimg" @click.stop="getDelFj(idx)"></image>
+									</view>
+									<view class="photit">{{ite.name}}</view>
+								</view>
+							</block>
+						</view>
+					</uni-forms-item>
+					<uni-forms-item label="企业征信" name="iszcy">
+						<view class="phobox">
+							<view class="phoboxa" v-if="jcfjobj.fdbqyzx">
+								<lsj-upload ref="lsjUpload" childId="upload1" :fileName="jcfjobj.fdbqyzx" fileVal='fdbqyzx' bigType="a" :width="pwidth" :height="pheight" :option="option" :size="size" :formats="formats" :debug="debug" :instantly="instantly"
+									    @progress="" @uploadEnd="onuploadEnd" >
+									<view  class="photop" >
+										<image :src="cardz" class="bgimg"></image>
+										<image :src="phoicon" class="addimg"></image>
+									</view>
+								</lsj-upload>
+								<view class="photit atit">上传企业征信</view>
+							</view>
+							<block v-for="(ite,idx) in filelist" :key='idx'>
+								<view class="phoboxa" v-if="ite.type=='fdbqyzx'&&ite.bigType=='a'">
+									<view class="photop" @click="getDown(ite.url)">
+										<image :src="lookico" class="bgimg"></image>
+										<image :src="phoicon" class="addimg"></image>
+										<image :src="delimg" class="delimg" @click.stop="getDelFj(idx)"></image>
+									</view>
+									<view class="photit">{{ite.name}}</view>
+								</view>
+							</block>
+						</view>
+					</uni-forms-item>
+				</view>
 			</view>
 			<!-- 添加附件 -->
 			<view v-show="stepval==4">
@@ -1185,6 +1253,9 @@
 			<cover-view @click.stop="getGiveupFn" class="txt">放弃编辑</cover-view>
 		</cover-view>
 		<!-- #endif -->
+		<!-- 选择担保类型 -->
+		<bartree-pickerfixed ref="treePickerzrdw" deptType='1' :multiple='true' @select-change="selectChangezrdw" title="选择担保类型"
+		:localdata="dblxlist" :checkVal='datainfo.guaranteeType'  valueKey="value" textKey="label" childrenKey="children"></bartree-pickerfixed>
 		<!--附件 remark==1  后台生成的pdf,自己删除 -->
 		<pop-up :type='ftype' :xwimgList="xwimgList" :content="content" @getClose='getClose'></pop-up>
 	</view>
@@ -1199,14 +1270,15 @@
 	import popUp from "@/work/components/popup/popup.vue"
 	import stepBar from "@/components/toptab/stepbar.vue"
 	import { getToken } from '@/utils/auth'
-	import {getApplicationNum,getApplicationZc,getApplicationAdd,getApplicationDet,getApplicationEdit,getExportMb,getDocumentList} from "@/api/mine/work.js"
-	import {getQyListNoPage,getOcrIdCard,getIdCardDet} from "@/api/mine/card.js"
+	import {getApplicationNum,getApplicationZc,getApplicationAdd,getApplicationDet,getApplicationEdit,getExportMb,getDocumentList,getGdlistNoPage} from "@/api/mine/work.js"
+	import {getQyListNoPage,getOcrIdCard,getIdCardDet,getOcrBusinessLicense} from "@/api/mine/card.js"
 	import {uploadmore,selectValueKey,showConfirm} from '@/utils/common.js'
 	import { checkPermi, checkRole } from "@/utils/permission"; // 权限判断函数
 	import {getDictionaryFn} from "@/api/mine/register.js"
+	import bartreePickerfixed from "@/components/ba-tree-picker/ba-tree-pickerfixed.vue"
 	// 340622185605234521
 	export default{
-		components:{stepBar,popUp},
+		components:{stepBar,popUp,bartreePickerfixed},
 		data(){
 			return{
 				//附件
@@ -1349,7 +1421,7 @@
 				  // score: {rules: [{required: true,errorMessage: '请输入分值'} ]},
 				  // bonusReason: {rules: [{required: true,errorMessage: '请输入加分事由'} ]},
 				},
-				gdlist:[{cardz:'',cardf:'',zxurl:[],zhizhao:[]}],
+				gdlist:[{cardz:'',cardf:'',zxurl:[],zhizhao:[],shareholderName:"",shareholderIdCard:'',}],
 				qylist:[],//企业列表
 				sfList:[{text: '是',value: 'Y'},{text: '否',value: 'N'}],
 				ywList:[{label: '有',value: 'Y'},{label: '无',value: 'N'}],
@@ -1384,7 +1456,7 @@
 				],
 				sqbtfiles:[
 					{tit:'委托担保申请书',type:'wtdbsqs'},
-				{tit:'股东会议纪要',type:'gdhyjy'},{tit:'上一年度财务报表',type:'syndcwbb'},{tit:'主要账户银行流水',type:'zyzhyhls'},{tit:'购销合同',type:'gxht'},
+				{tit:'股东会议',type:'gdhyjy'},{tit:'上一年度财务报表',type:'syndcwbb'},{tit:'主要账户银行流水',type:'zyzhyhls'},{tit:'购销合同',type:'gxht'},
 				{tit:'当前从事项目情况证明',type:'dqcsxmqkzm'},{tit:'企业基本注册信息查询单',type:'qyjbzcxxcxd'},{tit:'水电费发票(一年)',type:'sdffpyn'},{tit:'人员工资表',type:'rggzb'},{tit:'纳税申报表',type:'nssbb'},
 				],
 				content:'',//小微企业富文本
@@ -1398,6 +1470,13 @@
 				//担保类型为抵押{tit:'企业固定资产证明',type:'qygdzczm'},
 				ischange:false,
 				isdetail:false,
+				qygdlist:[],//企业股东列表
+				dfdwpicker: {
+					title: '选择担保类型',
+					layer: null,
+					titflag:true,
+					data: []
+				},
 			}
 		},
 		onUnload(){
@@ -1413,7 +1492,31 @@
 					}  
 				},
 				deep: true
+			},
+		},
+		onBackPress(e) {
+			var that=this;
+			if(this.ischange){
+				var a=0;
+				showConfirm('内容已做修改,是否暂存').then(res => {
+				  if (res.confirm) {  
+				    this.getZanFn('back')
+				  }else{
+					 this.ischange=false;
+					 uni.navigateBack({
+					 	delta:1
+					 })
+					 return false
+				  }
+				})
+				return true
+			}else{
+				return false
+				uni.navigateBack({
+					delta:1
+				})
 			}
+			
 		},
 		onLoad(e) { 
 			// this.getIdCardDet()
@@ -1426,7 +1529,6 @@
 				if(Number(data.val)<4){
 					this.stepval=Number(data.val)+1
 				}
-				
 				this.getDetail()
 			}else{
 				this.datainfo.applicationAmount=data.applicationAmount;
@@ -1449,7 +1551,6 @@
 			this.init()
 			this.getQylist()
 			this.getDocumentList()
-			
 		},
 		mounted() {
 			this.getHeightFn()
@@ -1461,6 +1562,26 @@
 		},
 		methods:{
 			checkPermi, checkRole,
+			getRecorddwFn(){
+				this.$refs.treePickerzrdw._show();
+			},
+			selectChangezrdw(e){
+				var val=e;
+				var newArr=[],newVal=[];
+				var a=0;
+				e.forEach((ite,idx)=>{
+					newArr[idx]=ite.deptName
+					newVal[idx]=ite.deptId
+					if(ite.deptId==4){
+						a=1
+					}
+				})
+				this.dblx=newArr.join(',')
+				this.datainfo.guaranteeType=newVal.join(',');
+				if(a==1){
+					this.getGdFjlist()
+				}
+			},
 			getIdCardDet(){
 				getIdCardDet(this.userId).then(res=>{
 					if(res.code==200){
@@ -1497,7 +1618,7 @@
 						this.dblxlist = res.data.map(v => {
 							return {
 								label: v.dictLabel,
-								value: v.dictValue
+								value: v.dictValue,
 							}
 						})
 					}
@@ -1536,6 +1657,16 @@
 					}
 				})
 			},
+			getGdFjlist(){
+				var params={
+					loanApplicationNumber:this.datainfo.loanApplicationNumber
+				}
+				getGdlistNoPage(params).then(res=>{
+					if(res.code==200){
+						this.qygdlist=res.data
+					}
+				})
+			},
 			getQylist(){
 				// 需要userid
 				var params={
@@ -1583,22 +1714,9 @@
 			},
 			getBack(){
 				// 暂存
-				var that=this;
-				if(this.ischange){
-					showConfirm('已做修改,是否暂存').then(res => {
-					  if (res.confirm) {
-					    this.getZanFn('back')
-					  }else{
-						uni.navigateBack({
-							delta:1
-						})
-					  }
-					})
-				}else{
-					uni.navigateBack({
-						delta:1
-					})
-				}
+				uni.navigateBack({
+					delta:1
+				})
 			},
 			getGiveupFn(){
 				var that=this;
@@ -1659,7 +1777,7 @@
 				this.$tab.navigateTo('/work/pages/business/talbclass?data='+encodeURIComponent(JSON.stringify(obj)))
 			},
 			getAddGdFn(){
-				var obj = {cardz:'',cardf:'',zxurl:[],zhizhao:[]}
+				var obj = {cardz:'',cardf:'',zxurl:[],zhizhao:[],shareholderName:"",shareholderIdCard:'',}
 				this.gdlist.push(obj);
 			},
 			getdelGdFn(idx){
@@ -1677,6 +1795,15 @@
 					}
 				});
 			},
+			statusFormats(ite,list,type){//多选匹配
+				var actions = [];
+				list.forEach(s => {
+					if(ite.indexOf(s.value)>-1){
+						actions.push(s.label);
+					}
+				})
+				return actions.join(',')
+			},
 			statusFormat(ite,list,type) {
 				var aite=selectValueKey(list, ite);
 				if(type=='qy'){
@@ -1779,6 +1906,24 @@
 				var list=this.btfiles;
 				var sqlist=this.sqlist;
 			},
+			// 反担保企业
+			bindDateChangeg(e){
+				var val=e.detail.value;
+				var data=this.qygdlist[val]
+				this.datainfo.guaranteeShareholderName=data.shareholderName;
+				var obj={
+					name:'企业营业执照',
+					// oldName:oldName,
+					url:data.shareholderBusinessUrl,
+					type:'fdbqyyyzz',
+					bigType:'a',
+				}
+				let indices = this.filelist.filter((ite, index) => ite.type!== "fdbqyyyzz")||[]
+				indices.push(obj)
+				this.filelist=indices
+				this.datainfo.loanApplicationFjList=JSON.parse(JSON.stringify(this.filelist))
+			},
+			// 免税
 			bindDateChangef(e){
 				var val=e.detail.value;
 				// this.dblx=this.sfList[val].text;
@@ -1795,6 +1940,8 @@
 						shareholderBackUrl:gdlist[key].cardf,
 						shareholderZxUrl:gdlist[key].zxurl.join(','),
 						shareholderBusinessUrl:gdlist[key].zhizhao.join(','),
+						shareholderName:gdlist[key].shareholderName,
+						shareholderIdCard:gdlist[key].shareholderIdCard,
 					} 
 					shFjList.push(fjurl)
 				})
@@ -1865,8 +2012,9 @@
 									cardz:gdlist[key].shareholderFrontUrl,
 									cardf:gdlist[key].shareholderBackUrl,
 									zxurl:[],
-									zhizhao:[]
-									
+									zhizhao:[],
+									shareholderName:gdlist[key].shareholderName,
+									shareholderIdCard:gdlist[key].shareholderIdCard,	
 								}
 								if(gdlist[key].shareholderZxUrl){
 									fjurl.zxurl=gdlist[key].shareholderZxUrl.split(',')
@@ -1879,6 +2027,7 @@
 							this.gdlist=JSON.parse(JSON.stringify(shFjList))
 						}
 						this.getSbjListFn()
+						this.getGdFjlist()
 					}
 				})
 			},
@@ -1984,6 +2133,8 @@
 						shareholderBackUrl:gdlist[key].cardf,
 						shareholderZxUrl:gdlist[key].zxurl.join(','),
 						shareholderBusinessUrl:gdlist[key].zhizhao.join(','),
+						shareholderName:gdlist[key].shareholderName,
+						shareholderIdCard:gdlist[key].shareholderIdCard,	
 					} 
 					shFjList.push(fjurl)
 				})
@@ -1994,11 +2145,11 @@
 				var flist=this.filelist;
 				var btfiles=JSON.parse(JSON.stringify(this.btfiles));
 				var sqbtfiles=JSON.parse(JSON.stringify(this.sqbtfiles));
-				if(params.guaranteeType==1){//抵押担保
+				if(params.guaranteeType.indexOf('1')>-1){//抵押担保
 					var obj={tit:'企业固定资产证明',type:'qygdzczm'}
 					sqbtfiles.push(obj)
 				}
-				 if(params.guaranteeType==2){//反担保人担保
+				if(params.guaranteeType.indexOf('2')>-1){//反担保人担保
 					// 选择担保人担保
 					if(!params.guaranteePhone){
 						// 验证手机号
@@ -2018,6 +2169,16 @@
 						return
 					}
 				}
+				if(params.guaranteeType.indexOf('3')>-1){//企业保证
+					var obj={tit:'反担保抵(质)押复印件',type:'fdbdyfyj'}
+					sqbtfiles.push(obj)
+				}
+				if(params.guaranteeType.indexOf('4')>-1){//企业保证
+					var obj={tit:'反担保企业营业执照',type:'fdbqyyyzz'}
+					var objb={tit:'反担保企业征信',type:'fdbqyzx'}
+					btfiles.push(obj)
+					btfiles.push(objb)
+				}
 				var b=0;
 				Object.keys(btfiles).some((key) => {
 					if (flist.find(l => l.type == btfiles[key].type)) {
@@ -2060,6 +2221,7 @@
 				if(this.ptype=='add'){
 					getApplicationAdd(params).then(res=>{
 						if(res.code==200){
+							that.ischange=false;
 							that.$toast("新增成功")
 							setTimeout(function(){
 								that.$tab.redirectTo('/work/pages/success')
@@ -2069,6 +2231,7 @@
 				}else{
 					getApplicationEdit(params).then(res=>{
 						if(res.code==200){
+							that.ischange=false;
 							that.$toast("修改成功")
 							setTimeout(function(){
 								uni.$emit('refreshywlist')
@@ -2177,6 +2340,21 @@
 						'<img style="max-width:100%;height:auto;display:block;margin:10rpx auto;" src="' +baseUrlimg);
 					return newContent;
 			},
+			getOcrBusinessLicense(url,idx){
+				var that=this;
+				var obj=this.gdlist[idx];
+				var params={
+					image:url,
+				}
+				getOcrBusinessLicense(params).then(res=>{
+					if(res.code==200){
+						var params=JSON.parse(JSON.stringify(res.data))
+						obj.shareholderName=params.enterpriseName
+						obj.shareholderIdCard=params.creditCode
+						this.gdlist.splice(idx,1,obj)
+					}
+				})
+			},
 			getocrIdCard(url,type){
 				var that=this;
 				var burl=url;
@@ -2210,6 +2388,9 @@
 				newobj.bigType=bigType;
 				this.filelist.push(newobj)
 				this.datainfo.loanApplicationFjList=JSON.parse(JSON.stringify(this.filelist))
+				if(fileVal=='fdbqyyyzz'){
+					this.datainfo.guaranteeShareholderName='';
+				}
 			},
 			// 股东附件上传
 			gdonuploadEnd(item,fileVal,bigType){
@@ -2225,8 +2406,9 @@
 					obj.zxurl.push(responseText.fileName)
 					// obj.zxurl[0]=responseText.fileName
 				}else if(type=='zhz'){
-					obj.zhizhao.push(responseText.fileName)
-					// obj.zhizhao[0]=responseText.fileName
+					// obj.zhizhao.push(responseText.fileName)
+					obj.zhizhao[0]=responseText.fileName
+					this.getOcrBusinessLicense(responseText.urlOnline,idx)
 				}
 				console.log(this.gdlist,3)
 				this.gdlist.splice(idx,1,obj)

+ 87 - 30
work/pages/business/details.vue

@@ -47,7 +47,7 @@
 					</view>
 					<view class="lists">
 						<view class="tit">担保类型</view>
-						<view class="txt">{{kaType(datainfo.guaranteeType,dblxlist)}}</view>
+						<view class="txt">{{statusFormats(datainfo.guaranteeType,dblxlist)}}</view>
 					</view>
 				</view>
 			</view>
@@ -113,11 +113,11 @@
 					<view class="fbtns bga" v-if="checkPermi(['system:application:edit'])&&stepval<2" @click="getedit">修改</view>
 					<view class="fbtns bgc" v-if="checkPermi(['system:application:remove'])&&stepval<2" @click="getDel">删除</view>
 				</block>
-				<view class="fbtns bga" v-if="auditSchedule==1&&checkPermi(['system:application:sh'])" @click="getShFn('sh')">审核</view>
+				<view class="fbtns bga" v-if="auditSchedule==1&&checkPermi(['system:application:sh'])&&datainfo.loanApplicationType!=1" @click="getShFn('sh')">审核</view>
 				<view class="fbtns bga" v-if="auditSchedule==4&&datainfo.auditType!=4&&checkPermi(['system:application:sh'])&&checkRole(['auditing_risk'])" @click="getShFn('fxsh')">风险审核</view>
 				<!-- end -->
 				<!-- a,b角按钮 start-->
-				<view class="fbtns bgb" v-if="checkPermi(['system:application:sh'])&&userId==datainfo.aUserId&&auditSchedule==5" @click="getShFn('jztcsh')">尽职调查反馈</view>
+				<view class="fbtns bga" v-if="checkPermi(['system:application:sh'])&&userId==datainfo.aUserId&&auditSchedule==5" @click="getShFn('jztcsh')">尽职调查反馈</view>
 				<view class="fbtns bga" v-if="checkPermi(['system:application:sh'])&&userId==datainfo.aUserId&&auditSchedule==2&&datainfo.auditType==1" @click="getShFn('ajssh')">审核</view>
 				<view class="fbtns bga" v-if="checkPermi(['system:application:sh'])&&userId==datainfo.bUserId&&auditSchedule==3" @click="getShFn('bjssh')">审核</view>
 				<!-- 审核后 -->
@@ -125,27 +125,19 @@
 				<!-- 未通过申诉 风险不通过,上会不通过-->
 				<!-- 撤销, 业务分配,a,b角撤销 -->
 				<view class="fbtns bga" v-if="checkPermi(['system:application:ss'])&&datainfo.auditType==4&&userId==datainfo.aUserId" @click="getSsFn">申诉</view>
-				<!-- <block ></block> -->
-				<!-- 申诉的时候不能撤销 -->
-				<!-- <view class="fbtns" :class="auditSchedule==5?'bga':'bgb'" v-if="checkPermi(['system:application:cx'])&&(stepval!=1&&stepval!=10&&(datainfo.auditType!=1||auditSchedule<6&&auditSchedule>2))" @click="getCxFn">撤销</view> -->
-				<block v-if="checkPermi(['system:application:cx'])&&stepval!=1&&stepval!=10">
-					<view class="fbtns bga" v-if="userId==datainfo.aUserId&&auditSchedule==3" @click="getCxFn">撤销</view>
-					<view class="fbtns bga" v-if="userId==datainfo.bUserId&&auditSchedule==4" @click="getCxFn">撤销</view>
-					<!-- auditSchedule<7&& -->
-					<view class="fbtns" :class="auditSchedule==5?'bga':'bgb'" v-if="(datainfo.auditType!=1||auditSchedule>4)" @click="getCxFn">撤销</view>
-				</block>
 				<!-- 回收站,暂存,归档不能撤  项目进度是申报提交-->
 				<!-- 撤销,管理员在 a待审核 可以撤,  
 					a,b角是自己的时候可以撤
 				-->
-				<view class="fbtns bga" v-if="checkPermi(['system:application:schedule'])&&stepval<9&&stepval>6" @click="getXybFn">项目推进</view>
+				
 				<!-- end -->
 				<!-- 管理员业务初审审核后出具担保意向函-->
+				<!-- 管理员 可以让a角 提前开放款通知书,意向函, a角色和管理员给 -->
 				<!-- <block v-if="auditSchedule>1&&stepval<4"> -->
-				<block v-if="checkRole(['manager'])&&auditSchedule>1&&stepval<4">
+				<block v-if="auditSchedule>1&&stepval<4">
 					<!-- <view class="fbtns bgb" @click="getfjEdit('dbyxh')">上传文件</view> -->
-					<view class="fbtns bga" @click="getIssureFn(3,'dbyxh')">出具担保意向函</view>
-					<view class="fbtns bgb" v-if="checkPermi(['system:application:cx'])&&auditSchedule<3&&datainfo.auditType<2" @click="getCxFn">撤销</view>
+					<view class="fbtns bga" v-if="checkRole(['manager'])||userId==datainfo.aUserId" @click="getIssureFn(3,'dbyxh')">出具担保意向函</view>
+					<view class="fbtns bgb" v-if="checkRole(['manager'])&&checkPermi(['system:application:cx'])&&auditSchedule<3&&datainfo.auditType<2" @click="getCxFn">撤销</view>
 				</block>
 				<!-- 风险部门 start-->
 				<block v-if="stepval==5&&checkRole(['auditing_risk'])">
@@ -156,29 +148,43 @@
 				<!-- end -->
 				<!-- 上会管理员 start -->
 				<block v-if="stepval==6">
-					
 					<view class="fbtns bga" @click="getShFn('shsh')">审核</view>
 				</block>
 				<!-- 上会管理员 end -->
 				<!-- 合同签约start -->
 				<!-- 上传附件 是上传其他 和出具合同的附件-->
 				<block v-if="stepval==7">
-					<view class="fbtns bgb" @click="getMoreFn('shmore')">更多操作</view>
 					<!-- <view class="fbtns bgb" @click="getMoreFn('htsc')">上传附件</view> -->
 					<view class="fbtns bga" @click="getMoreFn('htqy')">出具合同</view>
+					<view class="fbtns bgb" @click="getMoreFn('shmore')">更多操作</view>
 				</block>
 				<!-- 合同签约end -->
 				<!-- 风险部放款 start-->
-				<block v-if="stepval==8">
+				<block v-if="checkRole(['auditing_risk','manager'])">
+					<view class="fbtns bga" v-if="stepval==8||stepval==9&&datainfo.aAuthorize=='Y'" @click="getIssureFn(14,'fkhgb')">出具放款合规表</view>
+					<!-- 暂缓出具  备注原因推给管理员-->
+					<view class="fbtns bgb" v-if="stepval==8&&checkPermi(['system:application:zanHuan'])" @click="getShFn('zhfkhgb')">暂缓出具放款合规表</view>
 					<!-- <view class="fbtns bgb" @click="getfjEdit('fkhgb')">上传附件</view> -->
-					<view class="fbtns bga" @click="getIssureFn(14,'fkhgb')">出具放款合规表</view>
 				</block>
+				<!-- 管理员授权判断是否提前了,步骤7之后,并且暂缓了 -->
+				<view class="fbtns bgb" v-if="checkPermi(['system:application:authorize'])&&stepval==8&&datainfo.aAuthorize!='Y'" @click="getAuthorize">授权放款通知书</view>
 				<!-- end -->
-				<block v-if="stepval==9">
+				<!-- a角 管理员 判断是否提前了,步骤7之后,并且暂缓了-->
+				<block v-if="checkRole(['manager'])||userId==datainfo.aUserId">
 					<!-- <view class="fbtns bgb" @click="getfjEdit('fktzs')">上传附件</view> -->
-					<view class="fbtns bga" @click="getIssureFn(4,'fktzhsh')">放款通知书</view>
-				</block>	
-				<view class="fbtns bga" v-if="stepval==9&&datainfo.loanApplicationType!=4" @click="getGdFn">一键归档</view>
+					<view class="fbtns bgb" v-if="stepval==9||stepval==8&&datainfo.aAuthorize=='Y'" @click="getIssureFn(4,'fktzhsh')">放款通知书</view>
+				</block>
+				<view class="fbtns bga" v-if="checkPermi(['system:application:gd'])&&stepval==9&&datainfo.loanApplicationType!=4" @click="getGdFn">一键归档</view>
+				<view class="fbtns bga" v-if="checkPermi(['system:application:schedule'])&&stepval<9&&stepval>6" @click="getXybFn">项目推进</view>
+				<!-- 申诉的时候不能撤销 -->
+				<!-- <view class="fbtns" :class="auditSchedule==5?'bga':'bgb'" v-if="checkPermi(['system:application:cx'])&&(stepval!=1&&stepval!=10&&(datainfo.auditType!=1||auditSchedule<6&&auditSchedule>2))" @click="getCxFn">撤销</view> -->
+				<block v-if="checkPermi(['system:application:cx'])&&stepval!=1&&stepval!=10">
+					<view class="fbtns bgb" v-if="userId==datainfo.aUserId&&auditSchedule==3" @click="getCxFn">撤销</view>
+					<view class="fbtns bgb" v-if="userId==datainfo.bUserId&&auditSchedule==4" @click="getCxFn">撤销</view>
+					<!-- auditSchedule<7&& -->
+					<view class="fbtns bgb" v-if="(datainfo.auditType!=1||auditSchedule>4)" @click="getCxFn">撤销</view>
+				</block>
+				
 			</view>
 		</block>
 		<!-- 更多操作 -->
@@ -237,8 +243,10 @@
 					<block v-if="datainfo.guaranteeType=='1'">
 						<view @click="getIssureFn(7,'dyfdbhtfr')">抵押反担保合同(法人)</view>
 						<view @click="getIssureFn(8,'dyfdbhtzrr')">抵押反担保合同(自然人)</view>
-						<!-- <view @click="getIssureFn(9,'qlzqfdbhtfr')">权利质权反担保合同(适用于法人)</view>
-						<view @click="getIssureFn(10,'qlzqfdbhtzrr')">权利质权反担保合同(适用于自然人)</view> -->
+					</block>
+					<block v-if="datainfo.guaranteeType=='3'">
+						<view @click="getIssureFn(9,'qlzqfdbhtfr')">权利质权反担保合同(适用于法人)</view>
+						<view @click="getIssureFn(10,'qlzqfdbhtzrr')">权利质权反担保合同(适用于自然人)</view>
 					</block>
 				</block>
 				<!-- 合同签约 end -->
@@ -270,7 +278,9 @@
 	import {getInfo} from "@/api/login.js"
 	import {getDictionaryFn} from "@/api/mine/register.js"
 	import {getUsernoPageList,getFjAdd,getFjDel} from "@/api/common.js"
-	import {getApplicationDet,getScheduleList,getHyperlinkList,getApplicationDel,getApplicationSh,getCommentsList,getApplicationSs,getApplicationCx,getapplicationGd,getapplicationXib,getExportMb} from "@/api/mine/work.js"
+	import {getApplicationDet,getScheduleList,getHyperlinkList,getApplicationDel,getApplicationSh,getCommentsList,getApplicationSs,getApplicationCx,getapplicationGd,getapplicationXib,getExportMb,
+	getZanHuan,getAuthorize
+	} from "@/api/mine/work.js"
 	import { checkPermi, checkRole } from "@/utils/permission"; // 权限判断函数
 	export default{
 		components:{aqyxx,bfrxx,cfdbrxx,dfjxx,ewjcj,fshxx,popUp},
@@ -458,6 +468,15 @@
 			// 	 })
 			// },
 			checkPermi, checkRole,
+			statusFormats(ite,list,type){//多选匹配
+				var actions = [];
+				list.forEach(s => {
+					if(ite.indexOf(s.value)>-1){
+						actions.push(s.label);
+					}
+				})
+				return actions.join(',')
+			},
 			kaType(ite,list){
 				return selectValue(list, ite);
 			},
@@ -820,6 +839,8 @@
 					this.contype=this.type
 					this.type='confirm'
 					this.shtg=data.auditType
+				}else if(type=='zhfkhgb'){
+					this.getZanHuanFn()
 				}else{
 					this.getApplicationSh()
 				}
@@ -862,6 +883,42 @@
 					}
 				})
 			},
+			// 暂缓出具
+			getZanHuanFn(data){
+				var that=this;
+				var params=this.shinfo;
+				params.loanApplicationId=this.id;
+				params.loanApplicationNumber=this.datainfo.loanApplicationNumber;
+				params.aUserId=this.datainfo.aUserId;
+				params.enterpriseName=this.datainfo.enterpriseName;
+				getZanHuan(params).then(res=>{
+					if(res.code==200){
+						that.$toast('暂缓成功')
+						setTimeout(function(){
+							that.getDetail();
+							uni.$emit('refreshdatalist')
+							that.type=''
+						},1200)
+					}
+				})	
+			},
+			//授权
+			getAuthorize(data){
+				var that=this;
+				var params={};
+				params.loanApplicationId=this.id;
+				params.loanApplicationNumber=this.datainfo.loanApplicationNumber;
+				getAuthorize(params).then(res=>{
+					if(res.code==200){
+						that.$toast('授权成功')
+						setTimeout(function(){
+							that.getDetail();
+							uni.$emit('refreshdatalist')
+							that.type=''
+						},1200)
+					}
+				})	
+			},
 			getShFn(type){
 				this.type=type;
 				this.mtype='';
@@ -1047,8 +1104,8 @@
 							// 数据处理
 							var basicFj=res.data.basicFj;
 							Object.keys(basicFj).some((key) => {
-								// 公司章程,企业征信,企业法人,实际控股人,配偶征信,个人征信
-								if(key=='gszc'||key=='sqqyzxbg'||key=='glqyzxbg'||key=='qyfrzxbg'||key=='sjkgrzxbg'||key=='sjkgrpozxbg'||key=='fdbrgrzxbg'){
+								// 公司章程,企业征信,企业法人,实际控股人,配偶征信,个人征信,反担保企业征信
+								if(key=='gszc'||key=='sqqyzxbg'||key=='glqyzxbg'||key=='qyfrzxbg'||key=='sjkgrzxbg'||key=='sjkgrpozxbg'||key=='fdbrgrzxbg'||key=='fdbqyzx'){
 									basicFj[key]=basicFj[key].filter((ite) => {
 										return ite.remark==1||this.getFilterFj(ite.url);
 									})
@@ -1170,7 +1227,7 @@
 				&::after{display: none;}
 			}
 			.tit{font-weight: 500;font-size: 26rpx;color: #AAAAAA;margin-bottom: 38rpx;}
-			.txt{font-weight: bold;font-size: 30rpx;color: #222327;
+			.txt{font-weight: bold;font-size: 30rpx;color: #222327;padding: 0 10rpx;
 				text{font-size: 26rpx;color: #666666;font-weight: normal;}
 			}
 		}

+ 2 - 4
work/pages/prove/addqy.vue

@@ -88,8 +88,8 @@
 
 				},
 				zheList:[{zheflag:true}],
-				idCard:"34282419730618003X",
-				realName:"admin",
+				idCard:"",
+				realName:"",
 				baseUrl:'',
 				id:'',
 				ptype:'add',
@@ -213,8 +213,6 @@
 					if(res.code==200){
 						var params=JSON.parse(JSON.stringify(res.data))
 						params.imageUrl=obj.url
-						params.idCard=that.idCard
-						params.realName=that.realName
 						that.qylist.splice(idx,1,params);
 					}
 				})