liyuanpeng пре 3 година
родитељ
комит
43f3d5ae01

+ 75 - 67
public/static/js/fullScreen.js

@@ -1,72 +1,80 @@
-function fullScreen() {
-    $('#monthSelect').hide()
-    $('#quarter').hide()
-    $("#exitFullScreen").css("display", "show");
-    $("#fullScreen").css("display", "");
-    $('.excel-style').css('width', $(window.top).width())
-    $('.excel-style').css('height', window.screen.height)
-    var isFullscreen = document.fullScreenElement//W3C
-        || document.msFullscreenElement //IE
-        || document.mozFullScreenElement //火狐
-        || document.webkitFullscreenElement //谷歌
-        || false;
-    if (!isFullscreen) {
-        var el = document.documentElement;
-        if (el.requestFullscreen) {
-            el.requestFullscreen();
-        } else if (el.mozRequestFullScreen) {
-            el.mozRequestFullScreen();
-        } else if (el.webkitRequestFullscreen) {
-            el.webkitRequestFullscreen();
-        } else if (el.msRequestFullscreen) {
-            el.msRequestFullscreen();
-        }
-    } else {
-        if (document.exitFullscreen) {
-            document.exitFullscreen();
-        } else if (document.msExitFullscreen) {
-            document.msExitFullscreen();
-        } else if (document.mozCancelFullScreen) {
-            document.mozCancelFullScreen();
-        } else if (document.webkitCancelFullScreen) {
-            document.webkitCancelFullScreen();
-        }
-    }
+function fullScreen(e) {
+	$('#monthSelect').hide()
+	$('#quarter').hide()
+	$("#exitFullScreen").css("display", "show");
+	$("#fullScreen").css("display", "");
+	$('.excel-style').css('width', $(window.top).width())
+	$('.excel-style').css('height', window.screen.height)
+	var isFullscreen = document.fullScreenElement //W3C
+		||
+		document.msFullscreenElement //IE
+		||
+		document.mozFullScreenElement //火狐
+		||
+		document.webkitFullscreenElement //谷歌
+		||
+		false;
+	if (!isFullscreen) {
+		var el = document.documentElement;
+		if (el.requestFullscreen) {
+			el.requestFullscreen();
+		} else if (el.mozRequestFullScreen) {
+			el.mozRequestFullScreen();
+		} else if (el.webkitRequestFullscreen) {
+			el.webkitRequestFullscreen();
+		} else if (el.msRequestFullscreen) {
+			el.msRequestFullscreen();
+		}
+	} else {
+		if (document.exitFullscreen) {
+			document.exitFullscreen();
+		} else if (document.msExitFullscreen) {
+			document.msExitFullscreen();
+		} else if (document.mozCancelFullScreen) {
+			document.mozCancelFullScreen();
+		} else if (document.webkitCancelFullScreen) {
+			document.webkitCancelFullScreen();
+		}
+	}
 
 }
 
 //退出全屏 
 function exitFullscreen() {
-    $('#monthSelect').show()
-    $("#exitFullScreen").css("display", "");
-    $("#fullScreen").css("display", "show");
-    $('.excel-style').css('width', '100%')
-    $('.excel-style').css('height', '97%')
-    var isFullscreen = document.fullScreenElement//W3C
-        || document.msFullscreenElement //IE
-        || document.mozFullScreenElement //火狐
-        || document.webkitFullscreenElement //谷歌
-        || false;
-    if (!isFullscreen) {
-        var el = document.documentElement;
-        if (el.requestFullscreen) {
-            el.requestFullscreen();
-        } else if (el.mozRequestFullScreen) {
-            el.mozRequestFullScreen();
-        } else if (el.webkitRequestFullscreen) {
-            el.webkitRequestFullscreen();
-        } else if (el.msRequestFullscreen) {
-            el.msRequestFullscreen();
-        }
-    } else {
-        if (document.exitFullscreen) {
-            document.exitFullscreen();
-        } else if (document.msExitFullscreen) {
-            document.msExitFullscreen();
-        } else if (document.mozCancelFullScreen) {
-            document.mozCancelFullScreen();
-        } else if (document.webkitCancelFullScreen) {
-            document.webkitCancelFullScreen();
-        }
-    }
-}
+	$('#monthSelect').show()
+	$("#exitFullScreen").css("display", "");
+	$("#fullScreen").css("display", "show");
+	$('.excel-style').css('width', '100%')
+	$('.excel-style').css('height', '97%')
+	var isFullscreen = document.fullScreenElement //W3C
+		||
+		document.msFullscreenElement //IE
+		||
+		document.mozFullScreenElement //火狐
+		||
+		document.webkitFullscreenElement //谷歌
+		||
+		false;
+	if (!isFullscreen) {
+		var el = document.documentElement;
+		if (el.requestFullscreen) {
+			el.requestFullscreen();
+		} else if (el.mozRequestFullScreen) {
+			el.mozRequestFullScreen();
+		} else if (el.webkitRequestFullscreen) {
+			el.webkitRequestFullscreen();
+		} else if (el.msRequestFullscreen) {
+			el.msRequestFullscreen();
+		}
+	} else {
+		if (document.exitFullscreen) {
+			document.exitFullscreen();
+		} else if (document.msExitFullscreen) {
+			document.msExitFullscreen();
+		} else if (document.mozCancelFullScreen) {
+			document.mozCancelFullScreen();
+		} else if (document.webkitCancelFullScreen) {
+			document.webkitCancelFullScreen();
+		}
+	}
+}

+ 2 - 1
public/static/views/publiAccount.html

@@ -55,7 +55,7 @@
     }
 </style>
 
-<body>
+<body style="background: #fff;">
 	<div class="layui-inline" id="monthSelect">
 	    <label class="layui-form-label">控制权限</label>
 	    <div class="layui-input-inline">
@@ -278,6 +278,7 @@
             // 绑定按钮事件
             function initHandel() {
                 $("#fullScreen").on("click", function () {
+					console.log(document.getElementById('container'))
                     fullScreen();
                 })
                 //退出全屏

+ 5 - 1
public/static/views/quarterExcel.html

@@ -126,7 +126,11 @@
         var nowDate = date.getFullYear(); // 当前时间
         $(function () {
             userId = JSON.parse(window.top.sessionStorage.userInfo).loginNo
-            getData(nowDate + '-' + $('#quarter').val())
+			if($('#quarter').val()){
+				getData(nowDate + '-' + $('#quarter').val())
+			}else{
+				getData(nowDate + '-' + '01')
+			}
         })
         layui.use(['laydate', 'form'], function () {
             var laydate = layui.laydate;

+ 1 - 1
src/pages/main/advertising/businessHall.vue

@@ -258,7 +258,7 @@
 					value: '',
 					width: '98%',
 				}, ],
-				tooltit: '二采物料管理',
+				tooltit: '物料基础信息维护',
 				fullscreen: false,
 				total: 0,
 				pageSize: 1,

+ 1 - 1
src/pages/main/advertising/contractCap.vue

@@ -174,7 +174,7 @@
                         width: '98%',
                     },
                 ],
-                tooltit:'地市预算上限',
+                tooltit:'预算及合同上限',
                 fullscreen: false,
                 total: 0,
                 pageSize: 1,

+ 14 - 14
src/pages/main/advertising/index.vue

@@ -2,7 +2,7 @@
     <fullscreen :fullscreen.sync="fullscreen" class="container">
         <div class="container-box">
 			
-			<h2>广告宣传费台账</h2>
+			<!-- <h2>广告宣传费台账</h2>
 			<div class="adv-type">
 			    <div @click="jumpinfop('/publicityAccount',1,'宣传费台账')" v-if="lockFlag == 'updata'">
 			        <span><i class="el-icon-folder-opened"></i></span>
@@ -16,16 +16,16 @@
 			        <span><i class="el-icon-folder-opened"></i></span>
 			        <span>查看/下载</span>
 			    </div>
-			</div>
+			</div> -->
 			<h2 style="margin-top: 20px;">宣传物料管理</h2>
 			<div class="adv-type">
-			    <div class="wfour" @click="jumpinfo('/materialApplication','宣传物料管理')">
+			    <div class="wfour" @click="jumpinfo('/materialApplication','省级物料申请')">
 			        <span><i class="el-icon-folder-opened"></i></span>
-			        <span>省级物料管理</span>
+			        <span>省级物料申请</span>
 			    </div>
-				<div class="wfour" @click="jumpinfo('/materialApplicationc','宣传物料管理')">
+				<div class="wfour" @click="jumpinfo('/materialApplicationc','市级物料申请')">
 			        <span><i class="el-icon-folder-opened"></i></span>
-			        <span>市级物料管理</span>
+			        <span>市级物料申请</span>
 			    </div>
 				<div class="wfour" @click="jumpinfo('/materialApplicationExa','物料申请审核')">
 				    <span><i class="el-icon-folder-opened"></i></span>
@@ -38,25 +38,25 @@
 			</div>
 			<h2 style="margin-top: 20px;">基础数据管理</h2>
 			<div class="adv-type">
-			    <div class="wfive" @click="jumpinfo('/materielPick','一采物料类型管理')" v-if="province">
+			    <div class="wfive" @click="jumpinfo('/materielPick','一采物料类型建档')" v-if="province">
 			        <span><i class="el-icon-folder-opened"></i></span>
-			        <span>一采物料类型管理</span>
+			        <span>一采物料类型建档</span>
 			    </div>
-				<div class="wfive" @click="jumpinfo('/materiel','二采物料类型管理')" v-if="province">
+				<div class="wfive" @click="jumpinfo('/materiel','二采物料类型建档')" v-if="province">
 			        <span><i class="el-icon-folder-opened"></i></span>
-			        <span>二采物料类型管理</span>
+			        <span>二采物料类型建档</span>
 			    </div>
-				<div class="wfive" @click="jumpinfo('/contractCap','地市预算上限')">
+				<div class="wfive" @click="jumpinfo('/contractCap','预算及合同上限')">
 			        <span><i class="el-icon-folder-opened"></i></span>
-			        <span>地市预算及上限</span>
+			        <span>预算及合同上限</span>
 			    </div>
 				<div class="wfive" @click="jumpinfo('/supplier','供应商管理')" v-if="province">
 				    <span><i class="el-icon-folder-opened"></i></span>
 				    <span>供应商管理</span>
 				</div>
-				<div class="wfive" @click="jumpinfo('/businessHall','营业厅物料管理')">
+				<div class="wfive" @click="jumpinfo('/businessHall','物料基础信息维护')">
 				    <span><i class="el-icon-folder-opened"></i></span>
-				    <span>营业厅物料管理</span>
+				    <span>物料基础信息维护</span>
 				</div>
 				<div class="wfive" @click="jumpinfo('/materialApplistatic','物料统计')">
 				    <span><i class="el-icon-folder-opened"></i></span>

+ 153 - 0
src/pages/main/advertising/indexs.vue

@@ -0,0 +1,153 @@
+<template>
+    <fullscreen :fullscreen.sync="fullscreen" class="container">
+        <div class="container-box">
+			
+			<h2>广告宣传费台账</h2>
+			<div class="adv-type">
+			    <div @click="jumpinfop('/publicityAccount',1,'宣传费台账')" v-if="lockFlag == 'updata'">
+			        <span><i class="el-icon-folder-opened"></i></span>
+			        <span>创建模板</span>
+			    </div>
+				<div @click="jumpinfop('/publicityAccount',2,'宣传费台账')">
+			        <span><i class="el-icon-folder-opened"></i></span>
+			        <span>录入/更新</span>
+			    </div>
+				<div @click="jumpinfop('/publicityAccount',3,'宣传费台账')" v-if="lockFlag == 'updata'">
+			        <span><i class="el-icon-folder-opened"></i></span>
+			        <span>查看/下载</span>
+			    </div>
+			</div>
+			
+      </div>
+
+    </fullscreen>
+
+</template>
+<script>
+    import mySearch from "../../../components/search.vue";
+    import myMessage from "../../../components/myMessage.vue"
+    import toolList from '../../../components/toolList'
+	import myUpload from '../../../components/upload'
+
+    export default {
+        components: {
+            mySearch,
+            myMessage,
+            toolList,
+			myUpload
+        },
+        data() {
+          
+            return {
+                fullscreen: false,
+				lockFlag:'see',
+				province:true
+            }
+        },
+        methods: {
+            jumpinfop(p,v,n){
+				this.$router.push({
+				    path: p,
+				    query:{
+				        type:v
+				    }
+				});
+				this.setabList(n, p+"?type="+v);
+			},
+			jumpinfo(p,n){
+				this.$router.push({
+				    path: p,
+				});
+				this.setabList(n, p);
+			},
+			setabList(n, p) {
+			    let params = {
+			        children: "",
+			        name: n,
+			        rountPath: p,
+			        target: "_self",
+			    };
+			    for (let i = 0; i < this.$store.state.tabList.length; i++) {
+			        if (this.$store.state.tabList[i].name === params.name) {
+			            this.$store.state.tabList[i] = params;
+			        }
+			    }
+			    let set = new Set([...this.$store.state.tabList, params]);
+			    set.add(params);
+			    this.$store.commit("setDefaultActive", params.rountPath);
+			    this.$store.commit("setTabList", Array.from(set));
+			},
+            getUser() {
+                this.userInfo = JSON.parse(window.sessionStorage.userInfo);
+				let Menus = JSON.parse(window.sessionStorage.childrenMenus);
+				for (let i = 0; i < Menus.length; i++) {
+					if(Menus[i].systemflag == 1 && Menus[i].jspUrl == '/publicityAccount'){
+						this.lockFlag = 'add';//省级
+					}
+					if(Menus[i].systemflag == 1 && Menus[i].jspUrl == '/publicity'){
+						this.lockFlag = 'updata';//管理员
+						i = Menus.length;
+					}
+				}
+				for (let i = 0; i < Menus.length; i++) {
+					if(Menus[i].systemflag == 1 && Menus[i].jspUrl == '/province'){
+						this.province = true;//省公司
+					}
+				}
+            }
+        },
+        mounted() {
+            this.getUser();
+        },
+        created() {
+
+        }
+    }
+</script>
+<style scoped lang="scss">
+	.container-box{
+		height: calc(100vh - 200px);
+		overflow-y: scroll;
+		padding-bottom: 20px;
+	}
+	.adv-type{
+	    margin-top: 20px;
+	    display: flex;
+	    justify-content: space-between;
+	    flex-wrap: wrap;
+	    // border: 1px solid #ddd;
+	    border-radius: 5px;
+	    padding: 20px;
+	    box-shadow: 0 2px 12px 0 rgba(0,0,0,.1);
+	    div{
+	        width: 33%;
+	        text-align: center;
+	        height: 80px;
+	        overflow: hidden;
+	        min-width: 100px;
+	        cursor: pointer;
+	        padding-top: 10px;
+	        margin: 10px 0;
+	    }
+	    div:hover{
+	        background: #CFE8FC;
+	        border-radius: 5px;
+	    }
+	    span{
+	        width: 100%;
+	        display: inline-block;
+	        height: 40px;
+	        // line-height: 40px;
+	        i{
+	            color: #0074D9;
+	            font-size: 36px;
+	        }
+	    }
+		.wfour{
+			width: 25%;
+		}
+		.wfive{
+			width: 20%;
+		}
+	}
+</style>

+ 1 - 1
src/pages/main/advertising/materialApplicationadd.vue

@@ -283,7 +283,7 @@
 		},
 		methods: {
 			terminalChange(v) {
-				if (v == '707409929100312576') {
+				if (v == '722389970331279360') {
 					this.regionsts = true;
 				} else {
 					this.regionsts = false;

+ 4 - 4
src/pages/main/advertising/materiel.vue

@@ -12,7 +12,7 @@
 					tooltip-effect="dark" size="small" border style="width: 100%" v-loading="loading">
 					<el-table-column prop="sceneName" label="场景">
 					</el-table-column>
-					<el-table-column prop="metirialType" label="物料类别">
+					<el-table-column prop="metirialType" label="细分类型">
 					</el-table-column>
 					<el-table-column prop="metirialName" label="物料名称">
 					</el-table-column>
@@ -68,8 +68,8 @@
 							</el-input>
 						</el-form-item>
 						<el-form-item prop="metirialType">
-							<span>物料类别</span>
-							<el-input v-model="infolist.metirialType" placeholder="物料类别" :disabled="disableStatus">
+							<span>细分类型</span>
+							<el-input v-model="infolist.metirialType" placeholder="细分类型" :disabled="disableStatus">
 							</el-input>
 						</el-form-item>
 						<el-form-item prop="metirialCode">
@@ -277,7 +277,7 @@
 					value: '',
 					width: '98%',
 				}, ],
-				tooltit: '物料类型管理',
+				tooltit: '二采物料类型建档',
 				fullscreen: false,
 				total: 0,
 				pageSize: 1,

+ 4 - 4
src/pages/main/advertising/materielPick.vue

@@ -12,7 +12,7 @@
 					tooltip-effect="dark" size="small" border style="width: 100%" v-loading="loading">
 					<el-table-column prop="sceneName" label="场景">
 					</el-table-column>
-					<el-table-column prop="metirialType" label="物料类别">
+					<el-table-column prop="metirialType" label="细分类型">
 					</el-table-column>
 					<el-table-column prop="metirialName" label="物料名称">
 					</el-table-column>
@@ -68,8 +68,8 @@
 							</el-input>
 						</el-form-item>
 						<el-form-item prop="metirialType">
-							<span>物料类别</span>
-							<el-input v-model="infolist.metirialType" placeholder="物料类别" :disabled="disableStatus">
+							<span>细分类型</span>
+							<el-input v-model="infolist.metirialType" placeholder="细分类型" :disabled="disableStatus">
 							</el-input>
 						</el-form-item>
 						<el-form-item prop="metirialCode">
@@ -281,7 +281,7 @@
 					value: '',
 					width: '98%',
 				}, ],
-				tooltit: '物料类型管理',
+				tooltit: '一采物料类型建档',
 				fullscreen: false,
 				total: 0,
 				pageSize: 1,

+ 14 - 8
src/pages/main/advertising/publicityAccount.vue

@@ -1,10 +1,16 @@
 <template>
-  <div class="container">
-    <iframe
-      height="100%"
-      width="100%"
-      src="/static/views/publiAccount.html"
-      frameborder="0"
-    ></iframe>
-  </div>
+	<div class="container" id="container">
+		<iframe height="100%" width="100%" src="/static/views/publiAccount.html" frameborder="0"></iframe>
+	</div>
 </template>
+<style scoped>
+	.containerr {
+		background: #fff;
+		height: calc(100vh);
+		width: calc(100vw);
+		position: fixed;
+		left: 0;
+		top: 0;
+		overflow: hidden;
+	}
+</style>

+ 68 - 7
src/pages/main/budget/budgetIndex.vue

@@ -1,10 +1,15 @@
 <template>
 	<div class="inner-container">
 		<el-col :span="3">
-			<el-tabs tab-position="left" v-model="activeName" @tab-click="handleClick">
+			<span :class="item.sts?'spanbox bg':'spanbox'" v-for="(item, index) in menuList" :key="index" :name="item.path" :label="item.label" @click="handleClick(item)">
+				<el-badge :value="item.num" :max="99" :hidden="item.num == 0">
+					<span style="padding-right: 10px;">{{item.label}}</span>
+				</el-badge>
+			</span>
+			<!-- <el-tabs tab-position="left" v-model="activeName" @tab-click="handleClick">
 				<el-tab-pane v-for="(item, index) in menuList" :key="index" :name="item.path" :label="item.label">
 				</el-tab-pane>
-			</el-tabs>
+			</el-tabs> -->
 		</el-col>
 		<el-col :span="21">
 			<div style="height: 100%">
@@ -22,32 +27,44 @@
 				routerList: [{
 						label: "月度部门预算",
 						path: "/monthExcel",
-						name: "monthExcel"
+						name: "monthExcel",
+						sts:1,
+						num:0
 					},
 					{
 						label: "季度部门预算",
 						path: "/quarterExcel",
-						name: "quarterExcel"
+						name: "quarterExcel",
+						sts:0,
+						num:0
 					},
 					{
 						label: "年度部门预算",
 						path: "/yearExcel",
-						name: "yearExcel"
+						name: "yearExcel",
+						sts:0,
+						num:0
 					},
 					{
 						label: "采购部门预算",
 						path: "/projectExcel",
 						name: "projectExcel",
+						sts:0,
+						num:0
 					},
 					{
 						label: "预算回复",
 						path: "/recallAdmin",
-						name: "recallAdmin"
+						name: "recallAdmin",
+						sts:0,
+						num:0
 					},
 					{
 						label: "预算模板管理",
 						path: "/budgetList",
-						name: "budgetList"
+						name: "budgetList",
+						sts:0,
+						num:0
 					},
 				],
 			};
@@ -56,6 +73,7 @@
 			menuList: function() {
 				let arr = [];
 				this.routerList.map((item) => {
+					// arr.push(item);
 					this.showList.map((row) => {
 						if (item.path == row.jspUrl && row.systemflag == '1') {
 							arr.push(item);
@@ -67,10 +85,41 @@
 		},
 		methods: {
 			handleClick(val) {
+				this.activeName = val.path;
+				for (let i = 0; i < this.routerList.length; i++) {
+					this.routerList[i].sts = 0;
+				}
+				val.sts = 1;
 				if (this.$route.path != this.activeName) {
 					this.$router.push(this.activeName);
 				}
+				this.getnunm();
 			},
+			getnunm(){
+				this.$http({
+					url: "/market/preTask/queryTaskToDoNumByFunc",
+					method: "post",
+					headers: {
+						"Content-Type": "application/json",
+					},
+					data: {},
+				}).then((res) => {
+					for (let i = 0; i < res.data.length; i++) {
+						if(res.data[i].funcCode == '1000'){
+							this.routerList[2].num = res.data[i].taskNum;
+						}
+						if(res.data[i].funcCode == '1001'){
+							this.routerList[0].num = res.data[i].taskNum;
+						}
+						if(res.data[i].funcCode == '1003'){
+							this.routerList[3].num = res.data[i].taskNum;
+						}
+						if(res.data[i].funcCode == '1004'){
+							this.routerList[1].num = res.data[i].taskNum;
+						}
+					}
+				});
+			}
 		},
 		mounted() {
 			this.activeName = this.$route.path;
@@ -79,6 +128,7 @@
 			JSON.parse(sessionStorage.childrenMenus).map((item) => {
 				this.showList.push(item);
 			});
+			this.getnunm();
 		},
 		watch: {
 			$route(to, from) {
@@ -91,4 +141,15 @@
 	.el-tabs__content {
 		display: none;
 	}
+	.spanbox{
+		display: block;
+		text-align: center;
+		padding: 10px 0;
+		border-right: 3px solid #f1f1f1;
+		margin-right: 20px;
+	}
+	.bg{
+		border-right: 3px solid #0080FF;
+		color: #007AFF;
+	}
 </style>

+ 1 - 1
src/pages/main/budget/recall.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="container">
-    <fullscreen :fullscreen.sync="fullscreen" class="container-box">
+    <fullscreen :fullscreen.sync="fullscreen" class="container-box" style="margin: 0;padding: 0;">
       <div class="titbox">
         <h2>部门预算回复</h2>
         <div>

+ 734 - 0
src/pages/main/cooOperation/index.vue

@@ -0,0 +1,734 @@
+<template>
+	<fullscreen :fullscreen.sync="fullscreen" class="container">
+		<div class="container-box">
+			<toolList @iconCli='iconCli' :tooltit='tooltit'></toolList>
+			<div style="overflow: hidden;">
+				<el-button style="float: right;margin-top: 10px;" type="primary" @click="dialogCheck(3)">添加</el-button>
+				<el-button style="float: right;margin-top: 10px;margin-right: 20px;" type="primary"
+					@click="getStanding">台账</el-button>
+			</div>
+			<div class="tabbox">
+				<el-table height="calc(100% - 40px)" class="com-table" ref="multipleTable" :data="tableData"
+					tooltip-effect="dark" size="small" border style="width: 100%" v-loading="loading">
+					<el-table-column prop="woTitle" label="业务名称">
+					</el-table-column>
+					<el-table-column prop="opName" label="申请姓名">
+					</el-table-column>
+					<el-table-column prop="createTime" label="申请时间">
+					</el-table-column>
+					<el-table-column prop="stsDesc" label="状态">
+					</el-table-column>
+					<el-table-column label="操作" width="120px" align="center">
+						<template slot-scope="scope">
+							<el-button size="mini" type="primary" @click="dialogCheck(1,scope.row)">查看</el-button>
+							<el-button size="mini" type="danger" v-if="scope.row.sts != 1"
+								@click="dialogCheck(2,scope.row)">处理</el-button>
+							<!-- <el-button size="mini" type="danger" @click="delLine(scope.row)">删除</el-button> -->
+						</template>
+					</el-table-column>
+				</el-table>
+				<el-pagination class="pageBox" @current-change="currchange" layout="prev, pager, next" background
+					:total="total">
+				</el-pagination>
+			</div>
+		</div>
+
+		<el-dialog :title="titname" :visible.sync="dialogStatus" width="50%" :destroy-on-close="true"
+			:modal-append-to-body="false" :close-on-click-modal="false" :before-close="closedia" :fullscreen="true">
+			<div v-loading="loadinged">
+				<el-form :model="infolist" ref="infolist" :rules="rules"
+					style="height: calc(100vh - 180px);overflow-y: scroll;">
+					<div class="info-line">
+						<el-form-item prop="woName">
+							<span>工单名称</span>
+							<el-input v-model="infolist.woName" placeholder="工单名称" :disabled="disableStatus">
+							</el-input>
+						</el-form-item>
+						<el-form-item prop="terminal">
+							<span>申请流程</span>
+							<el-select clearable v-model="terminal" placeholder="申请流程" :disabled="disableStatus">
+								<el-option v-for="items in options" :key="items.procId" :label="items.procName"
+									:value="items.procId">
+								</el-option>
+							</el-select>
+						</el-form-item>
+					</div>
+					<el-form-item class="info-line online">
+						<span>正文内容</span>
+						<el-input v-model="infolist.textContent" placeholder="正文内容" type="textarea" :rows="3"
+							:disabled="disableStatus">
+						</el-input>
+					</el-form-item>
+
+					<div style="padding:0 20px 0 120px;margin-bottom: 20px;" v-if="disableStatus">
+						<uploadDown :datalist="datalist" :dialogStatus="uploadstatus"></uploadDown>
+					</div>
+					<div style="padding-left: 100px" v-if="!disableStatus">
+						<myUpload @uploadBack="uploadBack" :fileInfo="fileInfo" :fileList="fileInfo.fileList">
+						</myUpload>
+					</div>
+
+
+					<div style="margin: 20px 0;padding: 0 20px;">
+						<el-table class="com-table" ref="multipleTable" :data="infodatas" tooltip-effect="dark"
+							size="small" border style="width: 100%">
+							<el-table-column prop="infoName" label="合作伙伴名称">
+								<template slot-scope="scope">
+									<el-input v-model="scope.row.factoryName" :disabled="titname != '添加'&&vision != '流程发起'"></el-input>
+								</template>
+							</el-table-column>
+							<el-table-column prop="infoCode" label="评估时间">
+								<template slot-scope="scope">
+									<el-date-picker :disabled="titname != '添加'&&vision != '流程发起'" v-model="scope.row.assessTime" type="date">
+									</el-date-picker>
+								</template>
+							</el-table-column>
+							<el-table-column prop="infoResult" label="评估打分">
+								<template slot-scope="scope">
+									<el-input v-model="scope.row.assessScore" :disabled="titname != '添加'&&vision != '流程发起'"></el-input>
+								</template>
+							</el-table-column>
+							<el-table-column prop="infoIf" label="后续管理动作">
+								<template slot-scope="scope">
+									<el-input v-model="scope.row.followAction" :disabled="titname != '添加'&&vision != '流程发起'"></el-input>
+								</template>
+							</el-table-column>
+							<el-table-column prop="infoTime" label="管理动作落地执行情况">
+								<template slot-scope="scope">
+									<el-input v-model="scope.row.exeCon" :disabled="vision != '填报信息'||titname == '查看'"></el-input>
+								</template>
+							</el-table-column>
+							<el-table-column label="操作" width="120px" align="center" v-if="titname == '添加'">
+								<template slot-scope="scope">
+									<el-button size="mini" type="primary" @click="choline(1,scope)">添加</el-button>
+									<el-button size="mini" type="danger" @click="choline(2,scope)">删除</el-button>
+								</template>
+							</el-table-column>
+						</el-table>
+					</div>
+
+
+					<el-form-item class="info-line online" v-if="vision == '审批'">
+						<span>审批说明</span>
+						<el-input v-model="remark" placeholder="审批说明" type="textarea" :rows="3"
+							:disabled="titname == '查看'">
+						</el-input>
+					</el-form-item>
+
+					<div style="margin-bottom: 20px;padding: 0 20px;" v-if="titname != '添加'">
+						<el-table class="com-table" ref="multipleTable" :data="rovaList" tooltip-effect="dark"
+							size="small" border style="width: 100%">
+							<el-table-column prop="taskId" label="编号">
+							</el-table-column>
+							<el-table-column prop="taskName" label="环节">
+							</el-table-column>
+							<el-table-column prop="assigneeName" label="处理人">
+							</el-table-column>
+							<el-table-column prop="assigneeNo" label="处理人工号">
+							</el-table-column>
+							<el-table-column prop="opTime" label="处理时间">
+							</el-table-column>
+							<el-table-column prop="remark" label="备注">
+							</el-table-column>
+						</el-table>
+					</div>
+				</el-form>
+
+				<div slot="footer" class="dialog-footer myfooter">
+					<el-button v-if="titname != '查看' && vision == '流程发起'" type="primary" @click="dialogCli(2)">确 定
+					</el-button>
+					<el-button v-if="titname != '查看' && vision == '填报信息'" type="primary" @click="dialogCli(2)">确 定
+					</el-button>
+					<el-button v-if="titname != '查看' && vision == '审批'" type="primary" @click="dialogCli(2)">通 过
+					</el-button>
+					<el-button v-if="titname != '查看' && vision == '审批'" type="primary" @click="dialogCli(1)">打 回
+					</el-button>
+					<el-button v-if="titname == '添加'" type="primary" @click="dialogCliadd">确 定</el-button>
+					<el-button v-if="titname == '查看'" @click="dialogCli(3)">确 定</el-button>
+					<el-button @click="dialogCli(3)">取 消</el-button>
+				</div>
+			</div>
+		</el-dialog>
+
+		<myMessage :messTit='messTit' @closeMessage="closeMessage" :centerDialogVisible="centerDialogVisible"
+			v-if="centerDialogVisible"></myMessage>
+	</fullscreen>
+
+</template>
+<script>
+	import mySearch from "../../../components/search.vue";
+	import myMessage from "../../../components/myMessage.vue"
+	import toolList from '../../../components/toolList'
+	import myUpload from '../../../components/upload'
+	import uploadDown from '../../../components/uploadDown.vue'
+
+	export default {
+		components: {
+			mySearch,
+			myMessage,
+			toolList,
+			myUpload,
+			uploadDown
+		},
+		data() {
+			const woName = (rule, value, callback) => {
+				if (!this.infolist.woName) {
+					callback(new Error('不能为空'))
+				} else {
+					callback()
+				}
+			}
+			const terminal = (rule, value, callback) => {
+				if (!this.terminal) {
+					callback(new Error('不能为空'))
+				} else {
+					callback()
+				}
+			}
+			return {
+				rules: {
+					woName: [{
+						required: true,
+						trigger: 'blur',
+						validator: woName
+					}],
+					terminal: [{
+						required: true,
+						trigger: 'change',
+						validator: terminal
+					}],
+				},
+				tooltit: '线上渠道合作运营',
+				fullscreen: false,
+				total: 0,
+				pageSize: 1,
+				tableData: [{}],
+				dialogStatus: false,
+				disableStatus: false,
+				titname: '',
+				infolist: {
+			
+				},
+				userInfo: {},
+				params: {},
+				centerDialogVisible: false,
+				messTit: '',
+				delid: '',
+				loading: false,
+				loadinged: false,
+				fileInfo: {
+					limit: 5,
+					url: '/bpm/api/upload',
+					fileList: []
+				},
+				rovaList: [],
+				vision: '',
+				datalist: {
+					url: '/bpm/api/download',
+					type: 1
+				},
+				uploadstatus: false,
+				rovaList: [],
+				mydisable: 1,
+				opname: '',
+				opno: '',
+				attList: [],
+				options: [],
+				terminal: '',
+				remark: '',
+				visionsts: '1',
+				ifopt: [{
+					id: 1,
+					name: '是'
+				}, {
+					id: 0,
+					name: '否'
+				}],
+				infodatas: [{}, {}, {}, {}, {}]
+			}
+		},
+		methods: {
+			choline(v, n) {
+				if (v == 1) {
+					this.infodatas.push({})
+				} else {
+					this.infodatas.splice(n.$index, 1)
+				}
+			},
+			closedia() {
+				this.infolist = {};
+				this.attList = [];
+				this.fileInfo.fileList = [];
+				this.dialogStatus = false;
+			},
+			//获取列表
+			getList(v, n) {
+				this.pageSize = n;
+				let _this = this;
+				this.loading = true;
+				v.procName = "合作运营流程";
+				this.$http({
+					url: "/bpm/api/queryToDoAndFinishTaskList",
+					method: "post",
+					headers: {
+						"Content-Type": "application/json",
+						"page": '{"pageNo":"' + n + '","pageSize":"10"}'
+					},
+					data: v,
+				}).then((res) => {
+					this.tableData = res.data.data;
+					this.total = res.data.totalRecord;
+					this.loading = false;
+				});
+			},
+			// 分页
+			currchange(v) {
+				this.pageSize = v;
+				this.getList(this.params, this.pageSize);
+			},
+			//申请
+			dialogCheck(v, n) {
+				this.dialogStatus = true;
+				let infolist = Object.assign({}, n);
+				this.vision = '';
+				this.visionsts = '';
+				this.infodatas = [{}, {}, {}, {}, {}];
+				if (v === 1) {
+					this.titname = '查看';
+					this.disableStatus = true;
+				} else if (v === 2) {
+					this.titname = '审批';
+					this.disableStatus = true;
+				} else if (v === 3) {
+					this.titname = '添加';
+					this.disableStatus = false;
+					return
+				}
+				this.$http({
+					url: '/bpm/api/taskInit',
+					method: "post",
+					headers: {
+						"Content-Type": "application/json",
+					},
+					data: {
+						woNo: n.woNo
+					},
+				}).then((res) => {
+					// this.infolist = Object.assign({}, res.data);
+					this.terminal = infolist.procId;
+					this.opname = res.data.opName;
+					this.opno = res.data.opNo;
+					this.infolist = JSON.parse(res.data.params.terminalRes);
+					this.infodatas = JSON.parse(res.data.params.factoryList);
+					this.infolist.procId = infolist.procId;
+					this.infolist.procVersion = infolist.procVersion;
+					this.remark = infolist.remark;
+					this.infolist.stepId = infolist.stepId;
+					this.infolist.taskId = infolist.taskId;
+					this.infolist.taskName = infolist.taskName;
+					this.infolist.opName = infolist.opName;
+					this.infolist.opNo = infolist.opNo;
+					this.infolist.opTime = infolist.opTime;
+					this.infolist.woNo = infolist.woNo;
+					if (res.data.taskList[res.data.taskList.length - 1].taskName == '流程发起') {
+						this.vision = '流程发起';
+						if(this.titname == '审批'){
+							this.disableStatus = false;
+						}
+					} else if (res.data.taskList[res.data.taskList.length - 1].taskName == '科室主任审批') {
+						this.vision = '审批';
+					} else if (res.data.taskList[res.data.taskList.length - 1].taskName == '主管副总审批') {
+						this.vision = '审批';
+						this.visionsts = '2';
+					} else if (res.data.taskList[res.data.taskList.length - 1].taskName == '填报信息') {
+						this.vision = '填报信息';
+					}
+					this.datalist.attList = JSON.parse(res.data.params.attList);
+					this.attList = [];
+					this.fileInfo.fileList = [];
+					this.datalist.attList.forEach(item => {
+						item.id = item.attchFileId;
+						this.fileInfo.fileList.push({
+							name: item.fileName,
+							url: '',
+							id: item.id,
+							attchFileId: item.attchFileId,
+							fileName: item.fileName
+						});
+						this.attList.push({
+							name: item.fileName,
+							url: '',
+							id: item.id,
+							attchFileId: item.attchFileId,
+							fileName: item.fileName
+						});
+					})
+					this.rovaList = res.data.taskList;
+					this.uploadstatus = true;
+				});
+			},
+			//审批
+			dialogCli(v) {
+				this.dialogStatus = false;
+				if (v === 3) {
+					this.infolist = {};
+					this.attList = [];
+					this.fileInfo.fileList = [];
+					return
+				}
+				let _this = this;
+				this.infolist.opTime = _this.$formatDate(new Date(), "YYYY-MM-DD HH:mm:ss")
+				if (v === 1) {
+					let params = {
+						dealType: '1',
+						dealTypeDesc: '打回',
+						procId: this.infolist.procId,
+						procVersion: this.infolist.procVersion,
+						remark: this.remark,
+						stepId: this.infolist.stepId,
+						taskId: this.infolist.taskId,
+						taskName: this.infolist.taskName,
+						opName: this.infolist.opName,
+						opNo: this.opno,
+						opTime: this.infolist.opTime,
+						params: {
+							procExeCondiVal: '不同意',
+							terminalRes: JSON.stringify(this.infolist),
+							factoryList: JSON.stringify(this.infodatas),
+							assigneeNo: this.opno,
+							assigneeName: this.opname,
+						},
+						woNo: this.infolist.woNo,
+					}
+					this.submitInfo("/bpm/api/submitTask", params);
+				} else if (v === 2) {
+					let param = {
+						dealType: '0',
+						dealTypeDesc: '提交',
+						procId: this.infolist.procId,
+						procVersion: this.infolist.procVersion,
+						remark: this.remark,
+						stepId: this.infolist.stepId,
+						taskId: this.infolist.taskId,
+						taskName: this.infolist.taskName,
+						opName: this.infolist.opName,
+						opNo: this.opno,
+						opTime: this.infolist.opTime,
+						params: {
+							woType: this.infolist.woType,
+							terminalRes: JSON.stringify(this.infolist),
+							factoryList: JSON.stringify(this.infodatas)
+						},
+						woNo: this.infolist.woNo,
+
+					}
+					if(this.vision == '审批'&&this.visionsts == '2'){
+						param.params.assigneeNo=this.opno;
+						param.params.assigneeName=this.opname;
+					}
+					if (this.vision == '流程发起') {
+						let attList = [];
+						for (let i = 0; i < this.attList.length; i++) {
+							attList.push({
+								id: this.attList[i].id,
+								fileCode: this.attList[i].fileCode,
+								fileName: this.attList[i].fileName,
+								opName: this.attList[i].opName,
+								opNo: this.attList[i].opNo,
+								opTime: this.attList[i].opTime,
+								woNo: this.infolist.woNo,
+								attchFileId: this.attList[i].attchFileId,
+							});
+						}
+						param.params.attList = JSON.stringify(attList)
+					}
+					this.submitInfo("/bpm/api/submitTask", param);
+				}
+			},
+			//添加
+			dialogCliadd(v) {
+				let _this = this;
+				let info = {};
+				info.opTime = _this.$formatDate(new Date(), "YYYY-MM-DD HH:mm:ss");
+				info.opNo = this.userInfo.loginNo;
+				info.opName = this.userInfo.loginName;
+				info.woTitle = this.infolist.woName;
+				info.params = {};
+				info.params.terminalRes = this.infolist;
+				let infodatas = [];
+				for (let i = 0; i < this.infodatas.length; i++) {
+					if (this.infodatas[i].factoryName || this.infodatas[i].assessTime || this.infodatas[i].assessScore || this.infodatas[i].followAction) {
+						this.infodatas[i].assessTime = this.infodatas[i].assessTime?this.$formatDate(this.infodatas[i].assessTime, "YYYY-MM-DD HH:mm:ss"):'';
+						infodatas.push(this.infodatas[i])
+					}
+				}
+				info.params.factoryList = infodatas;
+				info.procId = this.terminal;
+				for (let i = 0; i < this.options.length; i++) {
+					if (this.terminal == this.options[i].procId) {
+						info.procName = this.options[i].procName;
+						info.procVersion = this.options[i].procVersion;
+					}
+				}
+				let attList = [];
+				for (let i = 0; i < this.attList.length; i++) {
+					attList.push({
+						id: this.attList[i].id,
+						fileCode: this.attList[i].fileCode,
+						fileName: this.attList[i].fileName,
+						opName: this.attList[i].opName,
+						opNo: this.attList[i].opNo,
+						opTime: this.attList[i].opTime,
+						woNo: this.infolist.woNo,
+						attchFileId: this.attList[i].attchFileId,
+					});
+				}
+				info.params.attList = JSON.stringify(attList)
+				info.params.terminalRes = JSON.stringify(info.params.terminalRes);
+				info.params.factoryList = JSON.stringify(info.params.factoryList);
+				this.submitInfo("/bpm/api/startProc", info);
+			},
+
+			submitInfo(u, v) {
+				let _this = this;
+				this.$refs.infolist.validate(valid => {
+					if (valid) {
+						this.$http({
+							url: u,
+							method: "post",
+							headers: {
+								"Content-Type": "application/json",
+							},
+							data: v,
+						}).then((res) => {
+							if (res.data.result === 1) {
+								_this.$message({
+									message: res.data.desc,
+									type: 'error'
+								});
+							} else {
+								_this.$message({
+									message: '成功',
+									type: 'success'
+								});
+								_this.closedia();
+								_this.infolist = {};
+								_this.attList = [];
+								_this.fileInfo.fileList = [];
+								_this.getList(this.params, this.pageSize);
+							}
+
+						});
+					}
+				})
+			},
+			getStanding() {
+				this.$router.push({
+					path: '/yStanding',
+				});
+				this.setabList('运营流程台账', '/yStanding');
+			},
+			setabList(n, p) {
+				let params = {
+					children: "",
+					name: n,
+					rountPath: p,
+					target: "_self",
+				};
+				for (let i = 0; i < this.$store.state.tabList.length; i++) {
+					if (this.$store.state.tabList[i].name === params.name) {
+						this.$store.state.tabList[i] = params;
+					}
+				}
+				let set = new Set([...this.$store.state.tabList, params]);
+				set.add(params);
+				this.$store.commit("setDefaultActive", params.rountPath);
+				this.$store.commit("setTabList", Array.from(set));
+			},
+			//流程
+			getTermianl() {
+				this.$http({
+					url: "/bpm/api/queryBpmProcList",
+					method: "post",
+					headers: {
+						"Content-Type": "application/json",
+						"page": '{"pageNo":"' + 1 + '","pageSize":"100"}'
+					},
+					data: {},
+				}).then((res) => {
+					this.options = res.data.data;
+				});
+			},
+			closeMessage(v) {
+				this.centerDialogVisible = false;
+				let _this = this;
+				if (v === 1) {
+					_this.$http({
+						url: "/bpm/api/deleteBpmPrePlugin",
+						method: "post",
+						headers: {
+							"Content-Type": "application/json",
+						},
+						data: {
+							id: this.delid
+						},
+					}).then((res) => {
+						if (res.data.result === 1) {
+							_this.$message({
+								message: res.data.desc,
+								type: 'error'
+							});
+						} else {
+							_this.$message({
+								message: '删除成功',
+								type: 'success'
+							});
+							_this.getList(this.params, this.pageSize);
+						}
+					});
+				}
+			},
+			//删除
+			delLine(v) {
+				this.centerDialogVisible = true;
+				this.messTit = '即将删除此条数据, 是否删除?';
+				this.delid = v.id;
+			},
+			//文件返回值
+			uploadBack(v) {
+				this.attList = v;
+			},
+			//功能栏
+			iconCli(v) {
+				if (v === 1) {
+					this.getList(this.params, this.pageSize);
+				}
+				if (v === 2) {
+					this.fullscreen = !this.fullscreen
+				}
+			},
+			getUser() {
+				this.userInfo = JSON.parse(window.sessionStorage.userInfo);
+
+			}
+		},
+		mounted() {
+			this.getList({}, 1);
+			this.getUser();
+			this.getTermianl();
+		},
+		created() {
+
+		}
+	}
+</script>
+<style scoped lang="scss">
+	.onetab {
+		margin-bottom: 20px;
+		padding: 0 20px;
+	}
+
+	.titbox {
+		div {
+			float: right;
+
+			i {
+				font-size: 22px;
+				margin-left: 20px;
+				cursor: pointer;
+			}
+		}
+	}
+
+	.tabbox {
+		margin-top: 15px;
+	}
+
+	.pageBox {
+		text-align: right;
+		margin-top: 10px;
+	}
+
+	.info-line {
+		width: 100%;
+		display: block;
+		padding-left: 20px;
+
+		div {
+			width: 50%;
+			display: inline-block;
+		}
+
+		span {
+			width: 100px;
+			display: inline-block;
+			text-align: left;
+
+			i {
+				color: red;
+				display: inline-block;
+				padding-right: 5px;
+			}
+		}
+
+		.el-select,
+		.el-input {
+			width: calc(100% - 120px);
+		}
+	}
+
+	.online {
+		width: 100%;
+
+		.el-select {
+			width: calc(100% - 120px);
+		}
+
+		span {
+			vertical-align: top;
+		}
+
+		.el-textarea {
+			width: calc(100% - 120px);
+		}
+	}
+
+	.adv-type {
+		margin-top: 20px;
+		display: flex;
+		justify-content: space-between;
+		flex-wrap: wrap;
+		// border: 1px solid #ddd;
+		border-radius: 5px;
+		padding: 20px;
+		box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1);
+
+		div {
+			width: 33%;
+			text-align: center;
+			height: 80px;
+			overflow: hidden;
+			min-width: 100px;
+			cursor: pointer;
+			padding-top: 10px;
+			margin: 10px 0;
+		}
+
+		div:hover {
+			background: #CFE8FC;
+			border-radius: 5px;
+		}
+
+		span {
+			width: 100%;
+			display: inline-block;
+			height: 40px;
+
+			// line-height: 40px;
+			i {
+				color: #0074D9;
+				font-size: 36px;
+			}
+		}
+	}
+</style>

+ 277 - 0
src/pages/main/cooOperation/yStanding.vue

@@ -0,0 +1,277 @@
+<template>
+    <fullscreen :fullscreen.sync="fullscreen" class="container">
+        <div class="container-box">
+            <toolList @iconCli='iconCli' :tooltit='tooltit'></toolList>
+            <div class="search">
+				<mySearch :searchList="searchList" @searchInfo="searchInfo"></mySearch>
+                <el-button class="btn-check" size="medium" type="primary" @click="outlist">导出
+                </el-button>
+            </div>
+            <div class="tabbox">
+                <el-table height="calc(100% - 40px)" class="com-table" ref="multipleTable" :data="tableData"
+                    tooltip-effect="dark" size="small" border style="width: 100%">
+                    <el-table-column prop="factoryName" label="合作伙伴名称">
+                    </el-table-column>
+                    <el-table-column prop="assessTime" label="评估时间">
+                    </el-table-column>
+                    <el-table-column prop="assessScore" label="评估分数">
+                    </el-table-column>
+                    <el-table-column prop="followAction" label="后续管理动作">
+                    </el-table-column>
+					<el-table-column prop="exeCon" label="管理动作落地情况">
+                    </el-table-column>
+                </el-table>
+                <el-pagination class="pageBox" @current-change="currchange" layout="prev, pager, next" background
+                    :total="total">
+                </el-pagination>
+            </div>
+        </div>
+    </fullscreen>
+</template>
+<script>
+    import mySearch from "../../../components/search.vue";
+    import toolList from "../../../components/toolList.vue";
+
+    export default {
+        components: {
+            mySearch,
+            toolList
+        },
+        data() {
+
+            return {
+				searchList: [{
+					type: 'input',
+					tit: '合同伙伴',
+					value: '',
+					width: '32%',
+				},{
+					type: 'date',
+					tit: '开始时间',
+					value: '',
+					width: '32%',
+				}, {
+					type: 'date',
+					tit: '结束时间',
+					value: '',
+					width: '32%',
+				}],
+                tooltit: '合作运营流程台账',
+                fullscreen: false,
+                total: 0,
+                pageSize: 1,
+                tableData: [],
+                dialogStatus: false,
+                disableStatus: false,
+                titname: '终端',
+                infolist: {},
+                typeOptions: [{
+                    dataCode: 1,
+                    dataName: 111,
+                }],
+                userInfo: {},
+                params: {},
+                infoApply: []
+            }
+        },
+        methods: {
+			//搜索数据
+			searchInfo(v) {
+				this.params = {};
+				v[0] ? this.params.factoryName = v[0] : '';
+				v[1] ? this.params.opTimeTo = v[1] : '';
+				v[2] ? this.params.opTimeFrom =  this.$formatDate(v[2] , "YYYY-MM-DD HH:mm:ss") : '';
+				this.getList(this.params, this.pageSize);
+			},
+            //获取列表
+            getList(v, n) {
+				v.sts = 1;
+                this.pageSize = n;
+                let _this = this;
+                this.$http({
+                    url: "/market/cChannelAssess/queryDetailPage",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                        "page": '{"pageNo":"' + n + '","pageSize":"10"}'
+                    },
+                    data: v,
+                }).then((res) => {
+                    this.tableData = res.data.data;
+                    this.total = res.data.totalRecord;
+                });
+            },
+            // 分页
+            currchange(v) {
+                this.pageSize = v;
+                this.getList(this.params, this.pageSize);
+            },
+            //功能栏
+            iconCli(v) {
+                if (v === 1) {
+                    this.getList(this.params, this.pageSize);
+                }
+                if (v === 2) {
+                    this.fullscreen = !this.fullscreen
+                }
+            },
+            // =======================
+            outlist() {
+                let data = {
+                    colStr: "factoryName,assessTime,assessScore,followAction,exeCon",
+                    tital: [
+                        [
+                            {
+                                "colNum": "0",
+                                "colSpan": "0",
+                                "rowSpan": "1",
+                                "val": "合作伙伴名称"
+                            },
+                            {
+                                "colNum": "1",
+                                "colSpan": "0",
+                                "rowSpan": "1",
+                                "val": "评估时间"
+                            },
+                            {
+                                "colNum": "2",
+                                "colSpan": "0",
+                                "rowSpan": "1",
+                                "val": "评估打分"
+                            },
+                            {
+                                "colNum": "3",
+                                "colSpan": "0",
+                                "rowSpan": "1",
+                                "val": "后续管理动作"
+                            },
+                            {
+                                "colNum": "4",
+                                "colSpan": "0",
+                                "rowSpan": "1",
+                                "val": "管理动作落地执行情况"
+                            },
+                        ]
+                    ]
+                }
+                // data.tital = JSON.stringify(data.tital)
+                this.$http({
+                    url: "/market/cChannelAssess/excelExport",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    responseType: "blob",
+                    data: data,
+                }).then((response) => {
+                    if (window.navigator && window.navigator.msSaveOrOpenBlob) {
+                        let blob = new Blob([response.data], {
+                            type: 'application/vnd.ms-excel'
+                        })
+                        window.navigator.msSaveOrOpenBlob(blob,
+                            new Date().getTime() + '.xlsx')
+                    } else {
+                        /* 火狐谷歌的文件下载方式 */
+                        var blob = new Blob([response.data])
+                        var downloadElement = document.createElement('a')
+                        var href = window.URL.createObjectURL(blob)
+                        downloadElement.href = href
+                        downloadElement.download = new Date().getTime() + '.xlsx'
+                        document.body.appendChild(downloadElement)
+                        downloadElement.click()
+                        document.body.removeChild(downloadElement)
+                        window.URL.revokeObjectURL(href)
+                    }
+                });
+            },
+            getUser() {
+                this.userInfo = JSON.parse(window.sessionStorage.userInfo);
+                this.infolist = {
+                    opNo: '',
+                    opName: '',
+                };
+                this.infolist.opNo = this.userInfo.loginNo;
+                this.infolist.opName = this.userInfo.loginName;
+
+            }
+        },
+        mounted() {
+            this.getList({}, 1);
+            this.getUser();
+        },
+        created() {
+
+        }
+    }
+</script>
+<style scoped lang="scss">
+    .onetab {
+        margin-bottom: 20px;
+        padding: 0 20px;
+    }
+
+    .titbox {
+        div {
+            float: right;
+
+            i {
+                font-size: 22px;
+                margin-left: 20px;
+                cursor: pointer;
+            }
+        }
+    }
+
+    .tabbox {
+        margin-top: 15px;
+    }
+
+    .pageBox {
+        text-align: right;
+        margin-top: 10px;
+    }
+
+    .info-line {
+        width: 100%;
+        display: block;
+        padding-left: 20px;
+
+        div {
+            width: 50%;
+            display: inline-block;
+        }
+
+        span {
+            width: 80px;
+            display: inline-block;
+            text-align: left;
+
+            i {
+                color: red;
+                display: inline-block;
+                padding-right: 5px;
+            }
+        }
+
+        .el-select,
+        .el-input {
+            width: calc(100% - 100px);
+        }
+    }
+
+    .online {
+        width: 100%;
+
+        .el-select {
+            width: calc(100% - 100px);
+        }
+
+        span {
+            vertical-align: top;
+        }
+
+        .el-textarea {
+            width: calc(100% - 100px);
+        }
+    }
+</style>

+ 937 - 0
src/pages/main/demandDevelop/index.vue

@@ -0,0 +1,937 @@
+<template>
+	<fullscreen :fullscreen.sync="fullscreen" class="container">
+		<div class="container-box">
+			<toolList @iconCli='iconCli' :tooltit='tooltit'></toolList>
+			<div style="overflow: hidden;">
+				<el-button style="float: right;margin-top: 10px;" type="primary" @click="dialogCheck(3)">添加</el-button>
+				<el-button style="float: right;margin-top: 10px;margin-right: 20px;" type="primary"
+					@click="getStanding">台账</el-button>
+			</div>
+			<div class="tabbox">
+				<el-table height="calc(100% - 40px)" class="com-table" ref="multipleTable" :data="tableData"
+					tooltip-effect="dark" size="small" border style="width: 100%" v-loading="loading">
+					<el-table-column prop="woTitle" label="业务名称">
+					</el-table-column>
+					<el-table-column prop="opName" label="申请姓名">
+					</el-table-column>
+					<el-table-column prop="createTime" label="申请时间">
+					</el-table-column>
+					<el-table-column prop="stsDesc" label="状态">
+					<template slot-scope="scope">
+						{{scope.row.taskName=="信息补填"&&scope.row.stsDesc == '待办'?'未办结':scope.row.stsDesc}}
+					</template>
+					</el-table-column>
+					<el-table-column label="操作" width="120px" align="center">
+						<template slot-scope="scope">
+							<el-button size="mini" type="primary" @click="dialogCheck(1,scope.row)">查看</el-button>
+							<el-button size="mini" type="danger" v-if="scope.row.sts != 1"
+								@click="dialogCheck(2,scope.row)">处理</el-button>
+							<!-- <el-button size="mini" type="danger" @click="delLine(scope.row)">删除</el-button> -->
+						</template>
+					</el-table-column>
+				</el-table>
+				<el-pagination class="pageBox" @current-change="currchange" layout="prev, pager, next" background
+					:total="total">
+				</el-pagination>
+			</div>
+		</div>
+
+		<el-dialog :title="titname" :visible.sync="dialogStatus" width="50%" :destroy-on-close="true"
+			:modal-append-to-body="false" :close-on-click-modal="false" :before-close="closedia" :fullscreen="true">
+			<div v-loading="loadinged">
+				<el-form :model="infolist" ref="infolist" :rules="rules"
+					style="height: calc(100vh - 180px);overflow-y: scroll;">
+					<div class="info-line">
+						<el-form-item prop="demandName">
+							<span>需求名称</span>
+							<el-input v-model="infolist.demandName" placeholder="需求名称" :disabled="disableStatus">
+							</el-input>
+						</el-form-item>
+						<el-form-item>
+							<span>需求编号</span>
+							<el-input v-model="infolist.demandNo" placeholder="需求编号" :disabled="disableStatus">
+							</el-input>
+						</el-form-item>
+						<el-form-item prop="terminal">
+							<span>申请流程</span>
+							<el-select clearable v-model="terminal" placeholder="申请流程" :disabled="disableStatus">
+								<el-option v-for="items in options" :key="items.procId" :label="items.procName"
+									:value="items.procId">
+								</el-option>
+							</el-select>
+						</el-form-item>
+						<el-form-item>
+							<span>紧急程度</span>
+							<el-select clearable v-model="infolist.urgDegree" placeholder="紧急程度" :disabled="disableStatus">
+								<el-option v-for="items in urgDegreeopt" :key="items.id" :label="items.name"
+									:value="items.name">
+								</el-option>
+							</el-select>
+						</el-form-item>
+						<el-form-item>
+							<span>业务主题</span>
+							<el-input v-model="infolist.busiSubject" placeholder="业务主题" :disabled="disableStatus">
+							</el-input>
+						</el-form-item>
+						<el-form-item>
+							<span>需求类别</span>
+							<el-select clearable v-model="infolist.demandTypeCode" placeholder="需求类别" :disabled="disableStatus">
+								<el-option v-for="items in demandTypeopt" :key="items.dataCode" :label="items.dataName"
+									:value="items.dataCode">
+								</el-option>
+							</el-select>
+						</el-form-item>
+						<el-form-item>
+							<span>承载渠道</span>
+							<el-select clearable v-model="infolist.carryChannelCode" placeholder="承载渠道" :disabled="disableStatus">
+								<el-option v-for="items in carryChannelopt" :key="items.dataCode" :label="items.dataName"
+									:value="items.dataCode">
+								</el-option>
+							</el-select>
+						</el-form-item>
+						<el-form-item>
+							<span>加载周期</span>
+							<el-date-picker :disabled="disableStatus" v-model="busiTime" type="daterange" placeholder="加载周期" style="display: inline-flex;width: calc(100% - 120px);">
+							</el-date-picker>
+						</el-form-item>
+					</div>
+					<el-form-item class="info-line online">
+						<span>需求背景</span>
+						<el-input v-model="infolist.demandBackground" placeholder="需求背景" type="textarea" :autosize="{ minRows: 3, maxRows: 10}"
+							:disabled="disableStatus">
+						</el-input>
+					</el-form-item>
+					<el-form-item class="info-line online">
+						<span>需求描述</span>
+						<el-input v-model="infolist.demandDesc" placeholder="需求描述" type="textarea" :autosize="{ minRows: 3, maxRows: 10}"
+							:disabled="disableStatus">
+						</el-input>
+					</el-form-item>
+
+					<div style="padding:0 20px 0 120px;margin-bottom: 20px;" v-if="disableStatus">
+						<uploadDown :datalist="datalist" :dialogStatus="uploadstatus"></uploadDown>
+					</div>
+					<div style="padding-left: 100px" v-if="!disableStatus">
+						<myUpload @uploadBack="uploadBack" :fileInfo="fileInfo" :fileList="fileInfo.fileList">
+						</myUpload>
+					</div>
+
+
+					<div style="margin: 20px 0;padding: 0 20px;" v-if="vision == '信息补填'">
+						<el-table class="com-table" ref="multipleTable" :data="infodatas" tooltip-effect="dark"
+							size="small" border style="width: 100%">
+							<el-table-column prop="infoName" label="需求承接支撑方">
+								<template slot-scope="scope">
+									<el-input v-model="scope.row.factoryName" :disabled="titname != '审批'"></el-input>
+								</template>
+							</el-table-column>
+							<el-table-column prop="infoName" label="涉及发生工作量">
+								<template slot-scope="scope">
+									<el-input v-model="scope.row.workLoad" :disabled="titname != '审批'"></el-input>
+								</template>
+							</el-table-column>
+							<el-table-column label="操作" width="120px" align="center" v-if="titname == '审批'">
+								<template slot-scope="scope">
+									<el-button size="mini" type="primary" @click="choline(1,scope)">添加</el-button>
+									<el-button size="mini" type="danger" @click="choline(2,scope)">删除</el-button>
+								</template>
+							</el-table-column>
+						</el-table>
+					</div>
+
+
+					<el-form-item class="info-line online" v-if="visionsts == '2'">
+						<span>审批说明</span>
+						<el-input v-model="remark" placeholder="审批说明" type="textarea" :rows="3"
+							:disabled="titname == '查看'">
+						</el-input>
+					</el-form-item>
+
+					<div style="margin-bottom: 20px;padding: 0 20px;" v-if="titname != '添加'">
+						<el-table class="com-table" :data="rovaList" tooltip-effect="dark"
+							size="small" border style="width: 100%">
+							<el-table-column prop="taskId" label="编号">
+							</el-table-column>
+							<el-table-column prop="taskName" label="环节">
+							</el-table-column>
+							<el-table-column prop="assigneeName" label="处理人">
+							</el-table-column>
+							<el-table-column prop="assigneeNo" label="处理人工号">
+							</el-table-column>
+							<el-table-column prop="opTime" label="处理时间">
+							</el-table-column>
+							<el-table-column prop="remark" label="备注">
+							</el-table-column>
+						</el-table>
+					</div>
+				</el-form>
+
+				<div slot="footer" class="dialog-footer myfooter">
+					<el-button v-if="titname != '查看' && vision == '流程发起'" type="primary" @click="dialogCli(2)">确 定
+					</el-button>
+					<el-button v-if="titname != '查看' && visionsts == '3'" type="primary" @click="dialogCli(2)">确 定
+					</el-button>
+					<el-button v-if="titname != '查看' && visionsts == '2'" type="primary" @click="dialogCli(2)">通 过
+					</el-button>
+					<el-button v-if="titname != '查看' && visionsts == '2'" type="primary" @click="dialogCli(1)">打 回
+					</el-button>
+					<el-button v-if="titname == '添加'" type="primary" @click="checkexa = true">确 定</el-button>
+					<el-button v-if="titname == '查看'" @click="dialogCli(3)">确 定</el-button>
+					<el-button @click="dialogCli(3)">取 消</el-button>
+				</div>
+			</div>
+		</el-dialog>
+		<el-dialog title="选择审批人" :visible.sync="checkexa" width="50%" :destroy-on-close="true"
+			:modal-append-to-body="false" :close-on-click-modal="false">
+			<div>
+		
+				<el-form :model="infolist" ref="infolist" :rules="rules">
+					<el-form-item prop="visiblec" class="info-line online">
+						<span>审批人员</span>
+						<deptTreeOnly class="tree" @treeCheck="treeCheckonly" :defaultList="defaultList"
+							:type="depttype" :closeList="closeList"></deptTreeOnly>
+						<div class="tree treeUser">
+							<p>{{treeListonly.leaderAuditName}}
+								<i v-if="treeListonly.leaderAuditName" @click="deletes()"
+									class="el-icon-error"></i>
+							</p>
+						</div>
+					</el-form-item>
+				</el-form>
+		
+				<div slot="footer" style="text-align: right;padding-bottom: 20px;">
+					<el-button type="primary" @click="dialogCliadd">确 定</el-button>
+					<el-button @click="checkexa = false">取 消</el-button>
+				</div>
+			</div>
+		</el-dialog>
+
+		<myMessage :messTit='messTit' @closeMessage="closeMessage" :centerDialogVisible="centerDialogVisible"
+			v-if="centerDialogVisible"></myMessage>
+	</fullscreen>
+
+</template>
+<script>
+	import mySearch from "../../../components/search.vue";
+	import myMessage from "../../../components/myMessage.vue"
+	import toolList from '../../../components/toolList'
+	import myUpload from '../../../components/upload'
+	import uploadDown from '../../../components/uploadDown.vue'
+	import deptTreeOnly from "../../../components/deptTreeOnly.vue"
+
+	export default {
+		components: {
+			mySearch,
+			myMessage,
+			toolList,
+			myUpload,
+			uploadDown,
+			deptTreeOnly
+		},
+		data() {
+			const demandName = (rule, value, callback) => {
+				if (!this.infolist.demandName) {
+					callback(new Error('不能为空'))
+				} else {
+					callback()
+				}
+			}
+			const terminal = (rule, value, callback) => {
+				if (!this.terminal) {
+					callback(new Error('不能为空'))
+				} else {
+					callback()
+				}
+			}
+			return {
+				rules: {
+					demandName: [{
+						required: true,
+						trigger: 'blur',
+						validator: demandName
+					}],
+					terminal: [{
+						required: true,
+						trigger: 'change',
+						validator: terminal
+					}],
+				},
+				tooltit: '线上渠道业务需求',
+				fullscreen: false,
+				total: 0,
+				pageSize: 1,
+				tableData: [{}],
+				dialogStatus: false,
+				disableStatus: false,
+				titname: '',
+				infolist: {
+			
+				},
+				userInfo: {},
+				params: {},
+				centerDialogVisible: false,
+				messTit: '',
+				delid: '',
+				loading: false,
+				loadinged: false,
+				fileInfo: {
+					limit: 5,
+					url: '/bpm/api/upload',
+					fileList: []
+				},
+				rovaList: [],
+				vision: '',
+				datalist: {
+					url: '/bpm/api/download',
+					type: 1
+				},
+				uploadstatus: false,
+				mydisable: 1,
+				opname: '',
+				opno: '',
+				attList: [],
+				options: [],
+				terminal: '',
+				remark: '',
+				visionsts: '1',
+				ifopt: [{
+					id: 1,
+					name: '是'
+				}, {
+					id: 0,
+					name: '否'
+				}],
+				infodatas: [{}, {}],
+				busiTime:[],
+				urgDegreeopt:[
+					{
+						id:1,
+						name:'正常'
+					},{
+						id:2,
+						name:'紧急'
+					},{
+						id:3,
+						name:'非常紧急'
+					},
+				],
+				demandTypeopt:[],
+				carryChannelopt:[],
+				checkexa: false,
+				treeListonly: {},
+				defaultList: [],
+				closeList: false,
+				depttype: 0
+			}
+		},
+		methods: {
+			deletes() {
+				this.treeListonly = {};
+				this.closeList = !this.closeList;
+			},
+			treeCheckonly(v) {
+				this.treeListonly = v;
+			},
+			choline(v, n) {
+				if (v == 1) {
+					this.infodatas.push({})
+				} else {
+					this.infodatas.splice(n.$index, 1)
+				}
+			},
+			closedia() {
+				this.infolist = {};
+				this.attList = [];
+				this.fileInfo.fileList = [];
+				this.dialogStatus = false;
+			},
+			//获取列表
+			getList(v, n) {
+				this.pageSize = n;
+				let _this = this;
+				this.loading = true;
+				v.procName = "业务需求申请(地市公司),业务需求申请(省公司)";
+				this.$http({
+					url: "/bpm/api/queryToDoAndFinishTaskList",
+					method: "post",
+					headers: {
+						"Content-Type": "application/json",
+						"page": '{"pageNo":"' + n + '","pageSize":"10"}'
+					},
+					data: v,
+				}).then((res) => {
+					this.tableData = res.data.data;
+					this.total = res.data.totalRecord;
+					this.loading = false;
+				});
+			},
+			// 分页
+			currchange(v) {
+				this.pageSize = v;
+				this.getList(this.params, this.pageSize);
+			},
+			//申请
+			dialogCheck(v, n) {
+				this.dialogStatus = true;
+				let infolist = Object.assign({}, n);
+				this.vision = '';
+				this.visionsts = '';
+				this.infodatas = [{}, {}];
+				if (v === 1) {
+					this.titname = '查看';
+					this.disableStatus = true;
+				} else if (v === 2) {
+					this.titname = '审批';
+					this.disableStatus = true;
+				} else if (v === 3) {
+					this.titname = '添加';
+					this.disableStatus = false;
+					return
+				}
+				this.$http({
+					url: '/bpm/api/taskInit',
+					method: "post",
+					headers: {
+						"Content-Type": "application/json",
+					},
+					data: {
+						woNo: n.woNo
+					},
+				}).then((res) => {
+					// this.infolist = Object.assign({}, res.data);
+					this.terminal = infolist.procId;
+					this.opname = res.data.opName;
+					this.opno = res.data.opNo;
+					this.infolist = JSON.parse(res.data.params.terminalRes);
+					res.data.params.fillList?this.infodatas = JSON.parse(res.data.params.fillList):'';
+					this.infolist.procId = infolist.procId;
+					this.infolist.procVersion = infolist.procVersion;
+					this.remark = infolist.remark;
+					this.infolist.stepId = infolist.stepId;
+					this.infolist.taskId = infolist.taskId;
+					this.infolist.taskName = infolist.taskName;
+					this.infolist.opName = infolist.opName;
+					this.infolist.opNo = infolist.opNo;
+					this.infolist.opTime = infolist.opTime;
+					this.infolist.woNo = infolist.woNo;
+					if (res.data.taskList[res.data.taskList.length - 1].taskName == '流程发起') {
+						this.vision = '流程发起';
+						if(this.titname == '审批'){
+							this.disableStatus = false;
+						}
+					} else if (res.data.taskList[res.data.taskList.length - 1].taskName == '科室主任初审') {
+						this.vision = '科室主任初审';
+						this.visionsts = '2';
+					} else if (res.data.taskList[res.data.taskList.length - 1].taskName == '部门副主任复审') {
+						this.vision = '部门副主任复审';
+						this.visionsts = '2';
+					} else if (res.data.taskList[res.data.taskList.length - 1].taskName == '主管副总终审') {
+						this.vision = '主管副总终审';
+						this.visionsts = '2';
+					} else if (res.data.taskList[res.data.taskList.length - 1].taskName == '需求预评估') {
+						this.vision = '需求预评估';
+						this.visionsts = '2';
+					}else if (res.data.taskList[res.data.taskList.length - 1].taskName == '需求预评估初审') {
+						this.vision = '需求预评估初审';
+						this.visionsts = '2';
+					}else if (res.data.taskList[res.data.taskList.length - 1].taskName == '需求预评估复审') {
+						this.vision = '需求预评估复审';
+						this.visionsts = '2';
+					}else if (res.data.taskList[res.data.taskList.length - 1].taskName == '渠道经理会签') {
+						this.vision = '渠道经理会签';
+						this.visionsts = '2';
+					}else if (res.data.taskList[res.data.taskList.length - 1].taskName == '需求确认') {
+						this.vision = '需求确认';
+						this.visionsts = '3';
+					}else if (res.data.taskList[res.data.taskList.length - 1].taskName == '上线管理') {
+						this.vision = '上线管理';
+						this.visionsts = '3';
+					}else if (res.data.taskList[res.data.taskList.length - 1].taskName == '上线验证') {
+						this.vision = '上线验证';
+						this.visionsts = '3';
+					}else if (res.data.taskList[res.data.taskList.length - 1].taskName == '信息补填') {
+						this.vision = '信息补填';
+						this.visionsts = '3';
+					}
+					this.datalist.attList = JSON.parse(res.data.params.attList);
+					this.attList = [];
+					this.fileInfo.fileList = [];
+					this.datalist.attList.forEach(item => {
+						item.id = item.attchFileId;
+						this.fileInfo.fileList.push({
+							name: item.fileName,
+							url: '',
+							id: item.id,
+							attchFileId: item.attchFileId,
+							fileName: item.fileName
+						});
+						this.attList.push({
+							name: item.fileName,
+							url: '',
+							id: item.id,
+							attchFileId: item.attchFileId,
+							fileName: item.fileName
+						});
+					})
+					this.rovaList = res.data.taskList;
+					console.log(this.rovaList)
+					this.uploadstatus = true;
+				});
+			},
+			//审批
+			dialogCli(v) {
+				this.dialogStatus = false;
+				if (v === 3) {
+					this.infolist = {};
+					this.attList = [];
+					this.fileInfo.fileList = [];
+					return
+				}
+				let _this = this;
+				this.infolist.opTime = _this.$formatDate(new Date(), "YYYY-MM-DD HH:mm:ss")
+				if (v === 1) {
+					let params = {
+						dealType: '1',
+						dealTypeDesc: '打回',
+						procId: this.infolist.procId,
+						procVersion: this.infolist.procVersion,
+						remark: this.remark,
+						stepId: this.infolist.stepId,
+						taskId: this.infolist.taskId,
+						taskName: this.infolist.taskName,
+						opName: this.infolist.opName,
+						opNo: this.opno,
+						opTime: this.infolist.opTime,
+						params: {
+							procExeCondiVal: '不同意',
+							terminalRes: JSON.stringify(this.infolist),
+							assigneeNo: this.opno,
+							assigneeName: this.opname,
+						},
+						woNo: this.infolist.woNo,
+					}
+					this.submitInfo("/bpm/api/submitTask", params);
+				} else if (v === 2) {
+					let param = {
+						dealType: '0',
+						dealTypeDesc: '提交',
+						procId: this.infolist.procId,
+						procVersion: this.infolist.procVersion,
+						remark: this.remark,
+						stepId: this.infolist.stepId,
+						taskId: this.infolist.taskId,
+						taskName: this.infolist.taskName,
+						opName: this.infolist.opName,
+						opNo: this.opno,
+						opTime: this.infolist.opTime,
+						params: {
+							woType: this.infolist.woType,
+							terminalRes: JSON.stringify(this.infolist),
+						},
+						woNo: this.infolist.woNo,
+
+					}
+					if(this.vision == '科室主任初审'||this.vision == '部门副主任复审'){
+						this.$http({
+							url: "/sysmgr/csysuserinfo/queryUserListByLoginNoAndDuty",
+							method: "post",
+							headers: {
+								"Content-Type": "application/json",
+								"page": '{"pageNo":"' + 1 + '","pageSize":"100"}'
+							},
+							data: {"duty":"7,12"},
+						}).then((res) => {
+							if(res.data.length == 0){
+								this.$message({
+									message: '暂无领导审批,发起失败!',
+									type: 'error'
+								});
+								return
+							}else{
+								param.params.assigneeNo=res.data[0].loginNoStr;
+								param.params.assigneeName=res.data[0].loginNameStr;
+								_this.submitInfo("/bpm/api/submitTask", param);
+								return
+							}
+						});
+					}else if(this.vision == '渠道经理会签'||this.vision == '上线管理'){
+						param.params.assigneeNo= this.opno;
+						param.params.assigneeName= this.opname;
+						this.submitInfo("/bpm/api/submitTask", param);
+					}else if(this.vision == '信息补填'){
+						param.params.fillList = JSON.stringify(this.infodatas);
+						this.submitInfo("/bpm/api/submitTask", param);
+					}else{
+						if (this.vision == '流程发起') {
+							let attList = [];
+							for (let i = 0; i < this.attList.length; i++) {
+								attList.push({
+									id: this.attList[i].id,
+									fileCode: this.attList[i].fileCode,
+									fileName: this.attList[i].fileName,
+									opName: this.attList[i].opName,
+									opNo: this.attList[i].opNo,
+									opTime: this.attList[i].opTime,
+									woNo: this.infolist.woNo,
+									attchFileId: this.attList[i].attchFileId,
+								});
+							}
+							param.params.attList = JSON.stringify(attList)
+						}
+						this.submitInfo("/bpm/api/submitTask", param);
+					}
+				}
+			},
+			//添加
+			dialogCliadd(v) {
+				let _this = this;
+				let info = {};
+				info.params = {};
+				info.opTime = _this.$formatDate(new Date(), "YYYY-MM-DD HH:mm:ss");
+				info.opNo = this.userInfo.loginNo;
+				info.opName = this.userInfo.loginName;
+				info.woTitle = this.infolist.demandName;
+				info.params.terminalRes = this.infolist;
+				info.params.terminalRes.busiStartTime = _this.$formatDate(this.busiTime[0], "YYYY-MM-DD HH:mm:ss");
+				info.params.terminalRes.busiEndTime = _this.$formatDate(this.busiTime[1], "YYYY-MM-DD HH:mm:ss");
+				info.procId = this.terminal;
+				info.params.assigneeNo = this.treeListonly.leaderAuditNo;
+				info.params.assigneeName = this.treeListonly.leaderAuditName;
+				for (let i = 0; i < this.options.length; i++) {
+					if (this.terminal == this.options[i].procId) {
+						info.procName = this.options[i].procName;
+						info.procVersion = this.options[i].procVersion;
+					}
+				}
+				let attList = [];
+				for (let i = 0; i < this.attList.length; i++) {
+					attList.push({
+						id: this.attList[i].id,
+						fileCode: this.attList[i].fileCode,
+						fileName: this.attList[i].fileName,
+						opName: this.attList[i].opName,
+						opNo: this.attList[i].opNo,
+						opTime: this.attList[i].opTime,
+						woNo: this.infolist.woNo,
+						attchFileId: this.attList[i].attchFileId,
+					});
+				}
+				info.params.attList = JSON.stringify(attList)
+				info.params.terminalRes = JSON.stringify(info.params.terminalRes);
+				this.checkexa = false;
+				this.submitInfo("/bpm/api/startProc", info);
+			},
+
+			submitInfo(u, v) {
+				let _this = this;
+				this.$refs.infolist.validate(valid => {
+					if (valid) {
+						this.$http({
+							url: u,
+							method: "post",
+							headers: {
+								"Content-Type": "application/json",
+							},
+							data: v,
+						}).then((res) => {
+							if (res.data.result === 1) {
+								_this.$message({
+									message: res.data.desc,
+									type: 'error'
+								});
+							} else {
+								_this.$message({
+									message: '成功',
+									type: 'success'
+								});
+								_this.closedia();
+								_this.infolist = {};
+								_this.attList = [];
+								_this.fileInfo.fileList = [];
+								_this.getList(this.params, this.pageSize);
+							}
+
+						});
+					}
+				})
+			},
+			getStanding() {
+				this.$router.push({
+					path: '/yStanding',
+				});
+				this.setabList('运营流程台账', '/yStanding');
+			},
+			setabList(n, p) {
+				let params = {
+					children: "",
+					name: n,
+					rountPath: p,
+					target: "_self",
+				};
+				for (let i = 0; i < this.$store.state.tabList.length; i++) {
+					if (this.$store.state.tabList[i].name === params.name) {
+						this.$store.state.tabList[i] = params;
+					}
+				}
+				let set = new Set([...this.$store.state.tabList, params]);
+				set.add(params);
+				this.$store.commit("setDefaultActive", params.rountPath);
+				this.$store.commit("setTabList", Array.from(set));
+			},
+			//流程
+			getTermianl() {
+				this.$http({
+					url: "/bpm/api/queryBpmProcList",
+					method: "post",
+					headers: {
+						"Content-Type": "application/json",
+						"page": '{"pageNo":"' + 1 + '","pageSize":"100"}'
+					},
+					data: {},
+				}).then((res) => {
+					this.options = res.data.data;
+				});
+			},
+			closeMessage(v) {
+				this.centerDialogVisible = false;
+				let _this = this;
+				if (v === 1) {
+					_this.$http({
+						url: "/bpm/api/deleteBpmPrePlugin",
+						method: "post",
+						headers: {
+							"Content-Type": "application/json",
+						},
+						data: {
+							id: this.delid
+						},
+					}).then((res) => {
+						if (res.data.result === 1) {
+							_this.$message({
+								message: res.data.desc,
+								type: 'error'
+							});
+						} else {
+							_this.$message({
+								message: '删除成功',
+								type: 'success'
+							});
+							_this.getList(this.params, this.pageSize);
+						}
+					});
+				}
+			},
+			//删除
+			delLine(v) {
+				this.centerDialogVisible = true;
+				this.messTit = '即将删除此条数据, 是否删除?';
+				this.delid = v.id;
+			},
+			//文件返回值
+			uploadBack(v) {
+				this.attList = v;
+			},
+			//功能栏
+			iconCli(v) {
+				if (v === 1) {
+					this.getList(this.params, this.pageSize);
+				}
+				if (v === 2) {
+					this.fullscreen = !this.fullscreen
+				}
+			},
+			getUser() {
+				this.userInfo = JSON.parse(window.sessionStorage.userInfo);
+			},
+			// 字典
+			// 需求类别 demandType
+			// 承载渠道 demandChnl
+			getsaleChnl() {
+			    this.$http({
+			        url: "/market/cfgDataDict/queryList",
+			        method: "post",
+			        headers: {
+			            "Content-Type": "application/json",
+			        },
+			        data: {
+			            dictCode: 'demandType'
+			        },
+			    }).then((res) => {
+			        this.demandTypeopt = res.data;
+			    });
+				this.$http({
+			        url: "/market/cfgDataDict/queryList",
+			        method: "post",
+			        headers: {
+			            "Content-Type": "application/json",
+			        },
+			        data: {
+			            dictCode: 'demandChnl'
+			        },
+			    }).then((res) => {
+			        this.carryChannelopt = res.data;
+			    });
+			},
+		},
+		mounted() {
+			this.getList({}, 1);
+			this.getUser();
+			this.getTermianl();
+			this.getsaleChnl();
+		},
+		created() {
+
+		}
+	}
+</script>
+<style scoped lang="scss">
+	.onetab {
+		margin-bottom: 20px;
+		padding: 0 20px;
+	}
+
+	.titbox {
+		div {
+			float: right;
+
+			i {
+				font-size: 22px;
+				margin-left: 20px;
+				cursor: pointer;
+			}
+		}
+	}
+
+	.tabbox {
+		margin-top: 15px;
+	}
+
+	.pageBox {
+		text-align: right;
+		margin-top: 10px;
+	}
+
+	.info-line {
+		width: 100%;
+		display: block;
+		padding-left: 20px;
+
+		div {
+			width: 50%;
+			display: inline-block;
+		}
+
+		span {
+			width: 100px;
+			display: inline-block;
+			text-align: left;
+
+			i {
+				color: red;
+				display: inline-block;
+				padding-right: 5px;
+			}
+		}
+
+		.el-select,
+		.el-input {
+			width: calc(100% - 120px);
+		}
+	}
+
+	.online {
+		width: 100%;
+	
+		.el-select {
+			width: calc(100% - 100px);
+		}
+	
+		span {
+			vertical-align: top;
+		}
+	
+		.el-textarea {
+			width: calc(100% - 100px);
+		}
+	
+		.tree {
+			width: calc(50% - 60px);
+			display: inline-block;
+			margin-right: 20px;
+			height: 300px;
+			overflow-y: scroll;
+	
+			.el-icon-error {
+				float: right;
+				font-size: 20px;
+				margin-top: 9px;
+				cursor: pointer;
+			}
+		}
+	
+		.treeUser {
+			margin: 0;
+			border: 1px solid #ddd;
+	
+			p {
+				background: #f4f4f4;
+				padding: 0 20px;
+				margin-bottom: 5px;
+			}
+		}
+		
+		.treeUserb {
+		    width: calc(100% - 100px);
+		    border: 1px solid #ddd;
+		    background: #f4f4f4;
+		    border-radius: 3px;
+		    height: auto;
+		    overflow: hidden;
+		
+		    p {
+		        display: inline-block;
+		        padding: 0 20px;
+		        margin-bottom: 5px;
+		    }
+		}
+	}
+
+	.adv-type {
+		margin-top: 20px;
+		display: flex;
+		justify-content: space-between;
+		flex-wrap: wrap;
+		// border: 1px solid #ddd;
+		border-radius: 5px;
+		padding: 20px;
+		box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1);
+
+		div {
+			width: 33%;
+			text-align: center;
+			height: 80px;
+			overflow: hidden;
+			min-width: 100px;
+			cursor: pointer;
+			padding-top: 10px;
+			margin: 10px 0;
+		}
+
+		div:hover {
+			background: #CFE8FC;
+			border-radius: 5px;
+		}
+
+		span {
+			width: 100%;
+			display: inline-block;
+			height: 40px;
+
+			// line-height: 40px;
+			i {
+				color: #0074D9;
+				font-size: 36px;
+			}
+		}
+	}
+</style>

+ 286 - 0
src/pages/main/development/dStanding.vue

@@ -0,0 +1,286 @@
+<template>
+    <fullscreen :fullscreen.sync="fullscreen" class="container">
+        <div class="container-box">
+            <toolList @iconCli='iconCli' :tooltit='tooltit'></toolList>
+            <div class="search">
+				<mySearch :searchList="searchList" @searchInfo="searchInfo"></mySearch>
+                <el-button class="btn-check" size="medium" type="primary" @click="outlist">导出
+                </el-button>
+            </div>
+            <div class="tabbox">
+                <el-table height="calc(100% - 40px)" class="com-table" ref="multipleTable" :data="tableData"
+                    tooltip-effect="dark" size="small" border style="width: 100%">
+                    <el-table-column prop="factoryName" label="合作伙伴名称">
+                    </el-table-column>
+                    <el-table-column prop="devFunc" label="合作开发功能概述">
+                    </el-table-column>
+                    <el-table-column prop="itSubTime" label="IT系统工单提交时间">
+                    </el-table-column>
+                    <el-table-column prop="itWoNo" label="IT系统工单编号">
+                    </el-table-column>
+                    <el-table-column prop="elecSubTime" label="电渠需求提交时间">
+                    </el-table-column>
+					<el-table-column prop="elecWoNo" label="电渠需求工单编号">
+                    </el-table-column>
+                </el-table>
+                <el-pagination class="pageBox" @current-change="currchange" layout="prev, pager, next" background
+                    :total="total">
+                </el-pagination>
+            </div>
+        </div>
+    </fullscreen>
+</template>
+<script>
+    import mySearch from "../../../components/search.vue";
+    import toolList from "../../../components/toolList.vue";
+
+    export default {
+        components: {
+            mySearch,
+            toolList
+        },
+        data() {
+
+            return {
+				searchList: [{
+					type: 'input',
+					tit: '合同伙伴',
+					value: '',
+					width: '32%',
+				},{
+					type: 'date',
+					tit: '开始时间',
+					value: '',
+					width: '32%',
+				}, {
+					type: 'date',
+					tit: '结束时间',
+					value: '',
+					width: '32%',
+				}],
+                tooltit: '合作开发流程台账',
+                fullscreen: false,
+                total: 0,
+                pageSize: 1,
+                tableData: [],
+                dialogStatus: false,
+                disableStatus: false,
+                titname: '终端',
+                infolist: {},
+                typeOptions: [{
+                    dataCode: 1,
+                    dataName: 111,
+                }],
+                userInfo: {},
+                params: {},
+                infoApply: []
+            }
+        },
+        methods: {
+			//搜索数据
+			searchInfo(v) {
+				this.params = {};
+				v[0] ? this.params.factoryName = v[0] : '';
+				v[1] ? this.params.opTimeTo = v[1] : '';
+				v[2] ? this.params.opTimeFrom =  this.$formatDate(v[2] , "YYYY-MM-DD HH:mm:ss") : '';
+				this.getList(this.params, this.pageSize);
+			},
+            //获取列表
+            getList(v, n) {
+				v.sts = 1;
+                this.pageSize = n;
+                let _this = this;
+                this.$http({
+                    url: "/market/cChannelDev/queryPage",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                        "page": '{"pageNo":"' + n + '","pageSize":"10"}'
+                    },
+                    data: v,
+                }).then((res) => {
+                    this.tableData = res.data.data;
+                    this.total = res.data.totalRecord;
+                });
+            },
+            // 分页
+            currchange(v) {
+                this.pageSize = v;
+                this.getList(this.params, this.pageSize);
+            },
+            //功能栏
+            iconCli(v) {
+                if (v === 1) {
+                    this.getList(this.params, this.pageSize);
+                }
+                if (v === 2) {
+                    this.fullscreen = !this.fullscreen
+                }
+            },
+            // =======================
+            outlist() {
+                let data = {
+                    colStr: "factoryName,devFunc,itSubTime,itWoNo,elecSubTime,elecWoNo",
+                    fileName: "台账.xlsx",
+                    tital: [
+                        [
+                            {
+                                "colNum": "0",
+                                "colSpan": "0",
+                                "rowSpan": "1",
+                                "val": "合作伙伴名称"
+                            },
+                            {
+                                "colNum": "1",
+                                "colSpan": "0",
+                                "rowSpan": "1",
+                                "val": "合作开发功能概述"
+                            },
+                            {
+                                "colNum": "2",
+                                "colSpan": "0",
+                                "rowSpan": "1",
+                                "val": "IT系统工单提交时间"
+                            },
+                            {
+                                "colNum": "3",
+                                "colSpan": "0",
+                                "rowSpan": "1",
+                                "val": "IT系统工单编号"
+                            },
+                            {
+                                "colNum": "4",
+                                "colSpan": "0",
+                                "rowSpan": "1",
+                                "val": "电渠需求提交时间"
+                            },
+                            {
+                                "colNum": "5",
+                                "colSpan": "0",
+                                "rowSpan": "1",
+                                "val": "电渠需求工单编号"
+                            },
+                        ]
+                    ]
+                }
+                // data.tital = JSON.stringify(data.tital)
+                this.$http({
+                    url: "/market/cChannelDev/excelExport",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    responseType: "blob",
+                    data: data,
+                }).then((response) => {
+                    if (window.navigator && window.navigator.msSaveOrOpenBlob) {
+                        let blob = new Blob([response.data], {
+                            type: 'application/vnd.ms-excel'
+                        })
+                        window.navigator.msSaveOrOpenBlob(blob,
+                            new Date().getTime() + '.xlsx')
+                    } else {
+                        /* 火狐谷歌的文件下载方式 */
+                        var blob = new Blob([response.data])
+                        var downloadElement = document.createElement('a')
+                        var href = window.URL.createObjectURL(blob)
+                        downloadElement.href = href
+                        downloadElement.download = new Date().getTime() + '.xlsx'
+                        document.body.appendChild(downloadElement)
+                        downloadElement.click()
+                        document.body.removeChild(downloadElement)
+                        window.URL.revokeObjectURL(href)
+                    }
+                });
+            },
+            getUser() {
+                this.userInfo = JSON.parse(window.sessionStorage.userInfo);
+                this.infolist = {
+                    opNo: '',
+                    opName: '',
+                };
+                this.infolist.opNo = this.userInfo.loginNo;
+                this.infolist.opName = this.userInfo.loginName;
+
+            }
+        },
+        mounted() {
+            this.getList({}, 1);
+            this.getUser();
+        },
+        created() {
+
+        }
+    }
+</script>
+<style scoped lang="scss">
+    .onetab {
+        margin-bottom: 20px;
+        padding: 0 20px;
+    }
+
+    .titbox {
+        div {
+            float: right;
+
+            i {
+                font-size: 22px;
+                margin-left: 20px;
+                cursor: pointer;
+            }
+        }
+    }
+
+    .tabbox {
+        margin-top: 15px;
+    }
+
+    .pageBox {
+        text-align: right;
+        margin-top: 10px;
+    }
+
+    .info-line {
+        width: 100%;
+        display: block;
+        padding-left: 20px;
+
+        div {
+            width: 50%;
+            display: inline-block;
+        }
+
+        span {
+            width: 80px;
+            display: inline-block;
+            text-align: left;
+
+            i {
+                color: red;
+                display: inline-block;
+                padding-right: 5px;
+            }
+        }
+
+        .el-select,
+        .el-input {
+            width: calc(100% - 100px);
+        }
+    }
+
+    .online {
+        width: 100%;
+
+        .el-select {
+            width: calc(100% - 100px);
+        }
+
+        span {
+            vertical-align: top;
+        }
+
+        .el-textarea {
+            width: calc(100% - 100px);
+        }
+    }
+</style>

+ 717 - 0
src/pages/main/development/index.vue

@@ -0,0 +1,717 @@
+<template>
+	<fullscreen :fullscreen.sync="fullscreen" class="container">
+		<div class="container-box">
+			<toolList @iconCli='iconCli' :tooltit='tooltit'></toolList>
+			<div style="overflow: hidden;">
+				<el-button style="float: right;margin-top: 10px;" type="primary" @click="dialogCheck(3)">添加</el-button>
+				<el-button style="float: right;margin-top: 10px;margin-right: 20px;" type="primary" @click="getStanding">台账</el-button>
+			</div>
+			<div class="tabbox">
+				<el-table height="calc(100% - 40px)" class="com-table" ref="multipleTable" :data="tableData"
+					tooltip-effect="dark" size="small" border style="width: 100%" v-loading="loading">
+					<el-table-column prop="woTitle" label="业务名称">
+					</el-table-column>
+					<el-table-column prop="opName" label="申请姓名">
+					</el-table-column>
+					<el-table-column prop="createTime" label="申请时间">
+					</el-table-column>
+					<el-table-column prop="stsDesc" label="状态">
+					</el-table-column>
+					<el-table-column label="操作" width="120px" align="center">
+						<template slot-scope="scope">
+							<el-button size="mini" type="primary" @click="dialogCheck(1,scope.row)">查看</el-button>
+							<el-button size="mini" type="danger" v-if="scope.row.sts != 1"
+								@click="dialogCheck(2,scope.row)">处理</el-button>
+							<!-- <el-button size="mini" type="danger" @click="delLine(scope.row)">删除</el-button> -->
+						</template>
+					</el-table-column>
+				</el-table>
+				<el-pagination class="pageBox" @current-change="currchange" layout="prev, pager, next" background
+					:total="total">
+				</el-pagination>
+			</div>
+		</div>
+
+		<el-dialog :title="titname" :visible.sync="dialogStatus" width="50%" :destroy-on-close="true"
+			:modal-append-to-body="false" :close-on-click-modal="false" :before-close="closedia" :fullscreen="true">
+			<div v-loading="loadinged">
+				<el-form :model="infolist" ref="infolist" :rules="rules" style="height: calc(100vh - 180px);overflow-y: scroll;">
+					<div class="info-line">
+						<el-form-item  prop="woName">
+							<span>工单名称</span>
+							<el-input v-model="infolist.woName" placeholder="工单名称" :disabled="disableStatus">
+							</el-input>
+						</el-form-item>
+						<el-form-item prop="terminal">
+							<span>申请流程</span>
+							<el-select clearable v-model="terminal" placeholder="申请流程" disabled>
+								<el-option v-for="items in options" :key="items.procId" :label="items.procName"
+									:value="items.procId">
+								</el-option>
+							</el-select>
+						</el-form-item>
+						<el-form-item>
+							<span>合作伙伴</span>
+							<el-input v-model="infolist.factoryName" placeholder="合作伙伴名称" :disabled="disableStatus">
+							</el-input>
+						</el-form-item>
+						<el-form-item>
+							<span>是否新接口</span>
+							<el-select clearable v-model="infolist.woType" placeholder="是否新接口" :disabled="disableStatus">
+								<el-option v-for="items in ifopt" :key="items.id" :label="items.name"
+									:value="items.id">
+								</el-option>
+							</el-select>
+						</el-form-item>
+					</div>
+					<el-form-item class="info-line online">
+						<span>正文内容</span>
+						<el-input v-model="infolist.textContent" placeholder="正文内容" type="textarea" :autosize="{ minRows: 3, maxRows: 10}"
+							:disabled="disableStatus">
+						</el-input>
+					</el-form-item>
+					<el-form-item class="info-line online">
+						<span>开发功能概要</span>
+						<el-input v-model="infolist.devFunc" placeholder="开发功能概要" type="textarea" :autosize="{ minRows: 3, maxRows: 10}"
+							:disabled="disableStatus">
+						</el-input>
+					</el-form-item>
+					<div class="info-line">
+						<el-form-item>
+							<span>开发工单名称</span>
+							<el-input v-model="infolist.itWoName" placeholder="IT开发工单名称" :disabled="!infolist.woType||vision == '记录开发信息'">
+							</el-input>
+						</el-form-item>
+						<el-form-item>
+							<span>开发工单编号</span>
+							<el-input v-model="infolist.itWoNo" placeholder="IT开发工单编号" :disabled="!infolist.woType||vision == '记录开发信息'">
+							</el-input>
+						</el-form-item>
+						<el-form-item>
+							<span>提交时间</span>
+							<el-date-picker :disabled="!infolist.woType||vision == '记录开发信息'" v-model="infolist.itSubTime" type="date"
+								placeholder="提交时间">
+							</el-date-picker>
+						</el-form-item>
+					</div>
+					<div class="info-line" v-if="vision == '记录开发信息'">
+						<el-form-item>
+							<span>需求工单名称</span>
+							<el-input v-model="infolist.elecWoName" placeholder="线上渠道业务需求工单名称" :disabled="titname != '审批'">
+							</el-input>
+						</el-form-item>
+						<el-form-item>
+							<span>需求工单编号</span>
+							<el-input v-model="infolist.elecWoNo" placeholder="线上渠道业务需求工单编号" :disabled="titname != '审批'">
+							</el-input>
+						</el-form-item>
+						<el-form-item>
+							<span>提交时间</span>
+							<el-date-picker :disabled="titname != '审批'" v-model="infolist.elecSubTime" type="date"
+								placeholder="提交时间">
+							</el-date-picker>
+						</el-form-item>
+					</div>
+
+					<div style="padding:0 20px 0 120px;margin-bottom: 20px;" v-if="disableStatus">
+						<uploadDown :datalist="datalist" :dialogStatus="uploadstatus"></uploadDown>
+					</div>
+					<div style="padding-left: 100px" v-if="!disableStatus">
+						<myUpload @uploadBack="uploadBack" :fileInfo="fileInfo" :fileList="fileInfo.fileList">
+						</myUpload>
+					</div>
+					<el-form-item class="info-line online" v-if="vision == '审批'">
+						<span>审批说明</span>
+						<el-input v-model="remark" placeholder="审批说明" type="textarea" :autosize="{ minRows: 3, maxRows: 10}"
+							:disabled="titname == '查看'">
+						</el-input>
+					</el-form-item>
+
+					<div style="margin-bottom: 20px;padding: 0 20px;" v-if="titname != '添加'">
+						<el-table class="com-table" ref="multipleTable" :data="rovaList" tooltip-effect="dark"
+							size="small" border style="width: 100%">
+							<el-table-column prop="taskId" label="编号">
+							</el-table-column>
+							<el-table-column prop="taskName" label="环节">
+							</el-table-column>
+							<el-table-column prop="assigneeName" label="处理人">
+							</el-table-column>
+							<el-table-column prop="assigneeNo" label="处理人工号">
+							</el-table-column>
+							<el-table-column prop="opTime" label="处理时间">
+							</el-table-column>
+					<!-- 		<el-table-column prop="remark" label="备注">
+							</el-table-column> -->
+						</el-table>
+					</div>
+				</el-form>
+
+				<div slot="footer" class="dialog-footer myfooter">
+					<el-button v-if="titname != '查看' && vision == '记录开发信息'" type="primary" @click="dialogCli(2)">确 定
+					</el-button>
+					<el-button v-if="titname == '添加'" type="primary" @click="dialogCliadd">确 定</el-button>
+					<el-button v-if="vision == '结束'||titname == '查看'" @click="dialogCli(3)">确 定</el-button>
+					<el-button @click="dialogCli(3)">取 消</el-button>
+				</div>
+			</div>
+		</el-dialog>
+
+		<myMessage :messTit='messTit' @closeMessage="closeMessage" :centerDialogVisible="centerDialogVisible"
+			v-if="centerDialogVisible"></myMessage>
+	</fullscreen>
+
+</template>
+<script>
+	import mySearch from "../../../components/search.vue";
+	import myMessage from "../../../components/myMessage.vue"
+	import toolList from '../../../components/toolList'
+	import myUpload from '../../../components/upload'
+	import uploadDown from '../../../components/uploadDown.vue'
+
+	export default {
+		components: {
+			mySearch,
+			myMessage,
+			toolList,
+			myUpload,
+			uploadDown
+		},
+		data() {
+			const woName = (rule, value, callback) => {
+				if (!this.infolist.woName) {
+					callback(new Error('不能为空'))
+				} else {
+					callback()
+				}
+			}
+			const terminal = (rule, value, callback) => {
+				if (!this.terminal) {
+					callback(new Error('不能为空'))
+				} else {
+					callback()
+				}
+			}
+			return {
+				rules: {
+					woName: [{
+						required: true,
+						trigger: 'blur',
+						validator: woName
+					}],
+					terminal: [{
+						required: true,
+						trigger: 'change',
+						validator: terminal
+					}],
+				},
+				tooltit: '线上合作渠道合作开发',
+				fullscreen: false,
+				total: 0,
+				pageSize: 1,
+				tableData: [{}],
+				dialogStatus: false,
+				disableStatus: false,
+				titname: '',
+				infolist: {
+					itSubTime:'',
+					elecSubTime:''
+				},
+				userInfo: {},
+				params: {},
+				centerDialogVisible: false,
+				messTit: '',
+				delid: '',
+				loading: false,
+				loadinged: false,
+				fileInfo: {
+					limit: 5,
+					url: '/bpm/api/upload',
+					fileList: []
+				},
+				rovaList: [],
+				vision: '',
+				datalist: {
+					url: '/bpm/api/download',
+					type: 1
+				},
+				uploadstatus: false,
+				rovaList: [],
+				mydisable: 1,
+				opname: '',
+				opno: '',
+				attList: [],
+				options: [],
+				// terminal:'720193003341541376',
+				terminal:'720549298208940032',
+				remark:'',
+				visionsts:'1',
+				ifopt:[
+					{
+						id:1,
+						name:'是'
+					},{
+						id:0,
+						name:'否'
+					}
+				]
+			}
+		},
+		methods: {
+			closedia() {
+				this.infolist = {};
+				this.attList = [];
+				this.fileInfo.fileList = [];
+				this.dialogStatus = false;
+			},
+			//获取列表
+			getList(v, n) {
+				this.pageSize = n;
+				let _this = this;
+				this.loading = true;
+				v.procName = "合作开发流程";
+				this.$http({
+					url: "/bpm/api/queryToDoAndFinishTaskList",
+					method: "post",
+					headers: {
+						"Content-Type": "application/json",
+						"page": '{"pageNo":"' + n + '","pageSize":"10"}'
+					},
+					data: v,
+				}).then((res) => {
+					this.tableData = res.data.data;
+					this.total = res.data.totalRecord;
+					this.loading = false;
+				});
+			},
+			// 分页
+			currchange(v) {
+				this.pageSize = v;
+				this.getList(this.params, this.pageSize);
+			},
+			//申请
+			dialogCheck(v, n) {
+				this.infolist.itSubTime = '';
+				this.infolist.elecSubTime = '';
+				this.dialogStatus = true;
+				let infolist = Object.assign({}, n);
+				this.vision = '';
+				this.visionsts = '';
+				if (v === 1) {
+					this.titname = '查看';
+					this.disableStatus = true;
+				} else if (v === 2) {
+					this.titname = '审批';
+					this.disableStatus = true;
+				} else if (v === 3) {
+					this.titname = '添加';
+					this.disableStatus = false;
+					return
+				}
+				this.$http({
+					url: '/bpm/api/taskInit',
+					method: "post",
+					headers: {
+						"Content-Type": "application/json",
+					},
+					data: {
+						woNo: n.woNo
+					},
+				}).then((res) => {
+					// this.infolist = Object.assign({}, res.data);
+					this.terminal = infolist.procId;
+					this.opname = res.data.opName;
+					this.opno = res.data.opNo;
+					this.infolist = JSON.parse(res.data.params.terminalRes);
+					this.infolist.procId=infolist.procId;
+					this.infolist.procVersion=infolist.procVersion;
+					this.remark=infolist.remark;
+					this.infolist.stepId=infolist.stepId;
+					this.infolist.taskId=infolist.taskId;
+					this.infolist.taskName=infolist.taskName;
+					this.infolist.opName=infolist.opName;
+					this.infolist.opNo=infolist.opNo;
+					this.infolist.opTime=infolist.opTime;
+					this.infolist.woNo=infolist.woNo;
+					if (res.data.taskList[res.data.taskList.length - 1].taskName == '流程发起') {
+						this.disableStatus = false;
+						this.vision = '流程发起';
+					}else if (res.data.taskList[res.data.taskList.length - 1].taskName == '记录开发信息') {
+						this.vision = '记录开发信息';
+					}
+					this.datalist.attList = JSON.parse(res.data.params.attList);
+					this.attList = [];
+					this.fileInfo.fileList = [];
+					this.datalist.attList.forEach(item => {
+						item.id = item.attchFileId;
+						this.fileInfo.fileList.push({
+							name: item.fileName,
+							url: '',
+							id: item.id,
+							attchFileId: item.attchFileId,
+							fileName: item.fileName
+						});
+						this.attList.push({
+							name: item.fileName,
+							url: '',
+							id: item.id,
+							attchFileId: item.attchFileId,
+							fileName: item.fileName
+						});
+					})
+					this.rovaList = res.data.taskList;
+					this.uploadstatus = true;
+				});
+			},
+			//审批
+			dialogCli(v) {
+				this.dialogStatus = false;
+				if (v === 3) {
+					this.infolist = {};
+					this.attList = [];
+					this.fileInfo.fileList = [];
+					return
+				}
+				let _this = this;
+				this.infolist.opTime = _this.$formatDate(new Date(), "YYYY-MM-DD HH:mm:ss")
+				this.infolist.itSubTime?this.infolist.itSubTime = _this.$formatDate(this.infolist.itSubTime, "YYYY-MM-DD HH:mm:ss"):'';
+				this.infolist.elecSubTime?this.infolist.elecSubTime = _this.$formatDate(this.infolist.elecSubTime, "YYYY-MM-DD HH:mm:ss"):'';
+				if (v === 1) {
+					// let params = {
+					// 	dealType: '1',
+					// 	dealTypeDesc: '打回',
+					// 	procId: this.infolist.procId,
+					// 	procVersion: this.infolist.procVersion,
+					// 	remark: this.remark,
+					// 	stepId: this.infolist.stepId,
+					// 	taskId: this.infolist.taskId,
+					// 	taskName: this.infolist.taskName,
+					// 	opName: this.infolist.opName,
+					// 	opNo: this.opno,
+					// 	opTime: this.infolist.opTime,
+					// 	params: {
+					// 		procExeCondiVal: '不同意',
+					// 		terminalRes: JSON.stringify(this.infolist),
+					// 		assigneeNo: this.opno,
+					// 		assigneeName: this.opname,
+					// 	},
+					// 	woNo: this.infolist.woNo,
+					// }
+					// this.submitInfo("/bpm/api/submitTask", params);
+				} else if (v === 2) {
+					let param = {
+						dealType: '0',
+						dealTypeDesc: '提交',
+						procId: this.infolist.procId,
+						procVersion: this.infolist.procVersion,
+						remark: this.remark,
+						stepId: this.infolist.stepId,
+						taskId: this.infolist.taskId,
+						taskName: this.infolist.taskName,
+						opName: this.infolist.opName,
+						opNo: this.infolist.opNo,
+						opTime: this.infolist.opTime,
+						params: {
+							woType: this.infolist.woType,
+							terminalRes: JSON.stringify(this.infolist)
+						},
+						woNo: this.infolist.woNo,
+						
+					}
+				
+					if(this.vision == '流程发起'){
+						let attList = [];
+						for (let i = 0; i < this.attList.length; i++) {
+							attList.push({
+								id: this.attList[i].id,
+								fileCode: this.attList[i].fileCode,
+								fileName: this.attList[i].fileName,
+								opName: this.attList[i].opName,
+								opNo: this.attList[i].opNo,
+								opTime: this.attList[i].opTime,
+								woNo: this.infolist.woNo,
+								attchFileId: this.attList[i].attchFileId,
+							});
+						}
+						param.params.attList = JSON.stringify(attList)
+					}
+					this.submitInfo("/bpm/api/submitTask", param);
+				}
+			},
+			//添加
+			dialogCliadd(v) {
+				let _this = this;
+				let info = {};
+				info.opTime = _this.$formatDate(new Date(), "YYYY-MM-DD HH:mm:ss");
+				info.opNo = this.userInfo.loginNo;
+				info.opName = this.userInfo.loginName;
+				info.woTitle = this.infolist.woName;
+				info.params = {};
+				info.params.terminalRes = this.infolist;
+				info.procId = this.terminal;
+				for (let i = 0; i < this.options.length; i++) {
+					if (this.terminal == this.options[i].procId) {
+						info.procName = this.options[i].procName;
+						info.procVersion = this.options[i].procVersion;
+					}
+				}
+				let attList = [];
+				for (let i = 0; i < this.attList.length; i++) {
+					attList.push({
+						id: this.attList[i].id,
+						fileCode: this.attList[i].fileCode,
+						fileName: this.attList[i].fileName,
+						opName: this.attList[i].opName,
+						opNo: this.attList[i].opNo,
+						opTime: this.attList[i].opTime,
+						woNo: this.infolist.woNo,
+						attchFileId: this.attList[i].attchFileId,
+					});
+				}
+				info.params.attList = JSON.stringify(attList)
+				info.params.terminalRes = JSON.stringify(info.params.terminalRes);
+				this.submitInfo("/bpm/api/startProc", info);
+			},
+
+			submitInfo(u, v) {
+				let _this = this;
+				this.$refs.infolist.validate(valid => {
+					if (valid) {
+						this.$http({
+							url: u,
+							method: "post",
+							headers: {
+								"Content-Type": "application/json",
+							},
+							data: v,
+						}).then((res) => {
+							if (res.data.result === 1) {
+								_this.$message({
+									message: res.data.desc,
+									type: 'error'
+								});
+							} else {
+								_this.$message({
+									message: '成功',
+									type: 'success'
+								});
+								_this.closedia();
+								_this.infolist = {};
+								_this.attList = [];
+								_this.fileInfo.fileList = [];
+								_this.getList(this.params, this.pageSize);
+							}
+
+						});
+					}
+				})
+			},
+			getStanding(){
+				this.$router.push({
+					path: '/dStanding',
+				});
+				this.setabList('开发流程台账', '/dStanding');
+			},
+			setabList(n, p) {
+				let params = {
+					children: "",
+					name: n,
+					rountPath: p,
+					target: "_self",
+				};
+				for (let i = 0; i < this.$store.state.tabList.length; i++) {
+					if (this.$store.state.tabList[i].name === params.name) {
+						this.$store.state.tabList[i] = params;
+					}
+				}
+				let set = new Set([...this.$store.state.tabList, params]);
+				set.add(params);
+				this.$store.commit("setDefaultActive", params.rountPath);
+				this.$store.commit("setTabList", Array.from(set));
+			},
+			//流程
+			getTermianl() {
+				this.$http({
+					url: "/bpm/api/queryBpmProcList",
+					method: "post",
+					headers: {
+						"Content-Type": "application/json",
+						"page": '{"pageNo":"' + 1 + '","pageSize":"100"}'
+					},
+					data: {},
+				}).then((res) => {
+					this.options = res.data.data;
+				});
+			},
+			closeMessage(v) {
+				this.centerDialogVisible = false;
+				let _this = this;
+				if (v === 1) {
+					_this.$http({
+						url: "/bpm/api/deleteBpmPrePlugin",
+						method: "post",
+						headers: {
+							"Content-Type": "application/json",
+						},
+						data: {
+							id: this.delid
+						},
+					}).then((res) => {
+						if (res.data.result === 1) {
+							_this.$message({
+								message: res.data.desc,
+								type: 'error'
+							});
+						} else {
+							_this.$message({
+								message: '删除成功',
+								type: 'success'
+							});
+							_this.getList(this.params, this.pageSize);
+						}
+					});
+				}
+			},
+			//删除
+			delLine(v) {
+				this.centerDialogVisible = true;
+				this.messTit = '即将删除此条数据, 是否删除?';
+				this.delid = v.id;
+			},
+			//文件返回值
+			uploadBack(v) {
+				this.attList = v;
+			},
+			//功能栏
+			iconCli(v) {
+				if (v === 1) {
+					this.getList(this.params, this.pageSize);
+				}
+				if (v === 2) {
+					this.fullscreen = !this.fullscreen
+				}
+			},
+			getUser() {
+				this.userInfo = JSON.parse(window.sessionStorage.userInfo);
+
+			}
+		},
+		mounted() {
+			this.getList({}, 1);
+			this.getUser();
+			this.getTermianl();
+		},
+		created() {
+
+		}
+	}
+</script>
+<style scoped lang="scss">
+	.onetab {
+		margin-bottom: 20px;
+		padding: 0 20px;
+	}
+
+	.titbox {
+		div {
+			float: right;
+
+			i {
+				font-size: 22px;
+				margin-left: 20px;
+				cursor: pointer;
+			}
+		}
+	}
+
+	.tabbox {
+		margin-top: 15px;
+	}
+
+	.pageBox {
+		text-align: right;
+		margin-top: 10px;
+	}
+
+	.info-line {
+		width: 100%;
+		display: block;
+		padding-left: 20px;
+
+		div {
+			width: 50%;
+			display: inline-block;
+		}
+
+		span {
+			width: 100px;
+			display: inline-block;
+			text-align: left;
+
+			i {
+				color: red;
+				display: inline-block;
+				padding-right: 5px;
+			}
+		}
+
+		.el-select,
+		.el-input {
+			width: calc(100% - 120px);
+		}
+	}
+
+	.online {
+		width: 100%;
+
+		.el-select {
+			width: calc(100% - 120px);
+		}
+
+		span {
+			vertical-align: top;
+		}
+
+		.el-textarea {
+			width: calc(100% - 120px);
+		}
+	}
+
+	.adv-type {
+		margin-top: 20px;
+		display: flex;
+		justify-content: space-between;
+		flex-wrap: wrap;
+		// border: 1px solid #ddd;
+		border-radius: 5px;
+		padding: 20px;
+		box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1);
+
+		div {
+			width: 33%;
+			text-align: center;
+			height: 80px;
+			overflow: hidden;
+			min-width: 100px;
+			cursor: pointer;
+			padding-top: 10px;
+			margin: 10px 0;
+		}
+
+		div:hover {
+			background: #CFE8FC;
+			border-radius: 5px;
+		}
+
+		span {
+			width: 100%;
+			display: inline-block;
+			height: 40px;
+
+			// line-height: 40px;
+			i {
+				color: #0074D9;
+				font-size: 36px;
+			}
+		}
+	}
+</style>

+ 99 - 38
src/pages/main/introduce/index.vue

@@ -4,6 +4,7 @@
 			<toolList @iconCli='iconCli' :tooltit='tooltit'></toolList>
 			<div style="overflow: hidden;">
 				<el-button style="float: right;margin-top: 10px;" type="primary" @click="dialogCheck(3)">添加</el-button>
+				<el-button style="float: right;margin-top: 10px;margin-right: 20px;" type="primary" @click="getStanding">台账</el-button>
 			</div>
 			<div class="tabbox">
 				<el-table height="calc(100% - 40px)" class="com-table" ref="multipleTable" :data="tableData"
@@ -43,7 +44,7 @@
 						</el-form-item>
 						<el-form-item prop="terminal">
 							<span>申请流程</span>
-							<el-select clearable v-model="terminal" placeholder="申请流程" :disabled="disableStatus">
+							<el-select clearable v-model="terminal" placeholder="申请流程" disabled>
 								<el-option v-for="items in options" :key="items.procId" :label="items.procName"
 									:value="items.procId">
 								</el-option>
@@ -62,51 +63,48 @@
 					</div>
 					<el-form-item class="info-line online">
 						<span>正文内容</span>
-						<el-input v-model="infolist.textContent" placeholder="正文内容" type="textarea" :rows="3"
+						<el-input v-model="infolist.textContent" placeholder="正文内容" type="textarea" :autosize="{ minRows: 4, maxRows: 10}"
 							:disabled="disableStatus">
 						</el-input>
 					</el-form-item>
-					<div class="info-line" v-if="titname == '审批'&&opno == userInfo.loginNo">
+					<div class="info-line" v-if="(opno == userInfo.loginNo&&vision == '发起人填报') || visionsts == '4'">
 						<el-form-item>
 							<span>请示汇报名称</span>
-							<el-input v-model="infolist.reportName" placeholder="请示汇报名称" :disabled="disableStatus">
+							<el-input v-model="infolist.reportName" placeholder="请示汇报名称" :disabled="titname == '查看' || visionsts == '4'">
 							</el-input>
 						</el-form-item>
 						<el-form-item>
 							<span>请示汇报编码</span>
-							<el-input v-model="infolist.reportNo" placeholder="请示汇报编码" :disabled="disableStatus">
+							<el-input v-model="infolist.reportNo" placeholder="请示汇报编码" :disabled="titname == '查看' || visionsts == '4'">
 							</el-input>
 						</el-form-item>
 						<el-form-item>
 							<span>请示汇报时间</span>
-							<el-date-picker style="display: inline-flex;width: calc(100% - 120px);"
-								:disabled="disableStatus" v-model="infolist.reportPassTime" type="daterange"
+							<el-date-picker :disabled="titname == '查看' || visionsts == '4'" v-model="infolist.reportPassTime" type="date"
 								placeholder="请示汇报时间">
 							</el-date-picker>
 						</el-form-item>
 					</div>
-					<div class="info-line" v-if="titname == '审批'&&opno == userInfo.loginNo">
+					<div class="info-line" v-if="(opno == userInfo.loginNo&&vision == '合同信息填报') || vision == '结束'">
 						<el-form-item>
 							<span>合同名称</span>
-							<el-input v-model="infolist.contractName" placeholder="合同名称" :disabled="disableStatus">
+							<el-input v-model="infolist.contractName" placeholder="合同名称" :disabled="titname == '查看' || vision == '结束'">
 							</el-input>
 						</el-form-item>
 						<el-form-item>
 							<span>合同编码</span>
-							<el-input v-model="infolist.contractNo" placeholder="合同编码" :disabled="disableStatus">
+							<el-input v-model="infolist.contractNo" placeholder="合同编码" :disabled="titname == '查看' || vision == '结束'">
 							</el-input>
 						</el-form-item>
 						<el-form-item>
 							<span>合同开始时间</span>
-							<el-date-picker style="display: inline-flex;width: calc(100% - 120px);"
-								:disabled="disableStatus" v-model="infolist.contractStartTime" type="daterange"
+							<el-date-picker :disabled="titname == '查看' || vision == '结束'" v-model="infolist.contractStartTime" type="date"
 								placeholder="合同开始时间">
 							</el-date-picker>
 						</el-form-item>
 						<el-form-item>
 							<span>合同截至时间</span>
-							<el-date-picker style="display: inline-flex;width: calc(100% - 120px);"
-								:disabled="disableStatus" v-model="infolist.contractEndTime" type="daterange"
+							<el-date-picker :disabled="titname == '查看'" v-model="infolist.contractEndTime" type="date"
 								placeholder="合同截至时间">
 							</el-date-picker>
 						</el-form-item>
@@ -119,7 +117,11 @@
 						<myUpload @uploadBack="uploadBack" :fileInfo="fileInfo" :fileList="fileInfo.fileList">
 						</myUpload>
 					</div>
-					<el-form-item class="info-line online" v-if="titname != '添加'&&titname != '修改'">
+					<div style="padding-left: 100px;margin-bottom: 20px;" v-if="titname != '查看' && (vision == '发起人填报'||vision == '合同信息填报')">
+						<myUpload @uploadBack="uploadBack" :fileInfo="fileInfo" :fileList="fileInfo.fileList">
+						</myUpload>
+					</div>
+					<el-form-item class="info-line online" v-if="vision == '审批'">
 						<span>审批说明</span>
 						<el-input v-model="remark" placeholder="审批说明" type="textarea" :rows="3"
 							:disabled="titname == '查看'">
@@ -146,11 +148,18 @@
 				</el-form>
 
 				<div slot="footer" class="dialog-footer myfooter">
-					<el-button v-if="titname != '添加' && vision != '流程发起'" type="primary" @click="dialogCli(2)">同 意
+					<el-button v-if="titname != '查看' && vision == '流程发起'" type="primary" @click="dialogCli(2)">确 定
+					</el-button>
+					<el-button v-if="titname != '查看' && vision == '发起人填报'" type="primary" @click="dialogCli(2)">确 定
+					</el-button>
+					<el-button v-if="titname != '查看' && vision == '合同信息填报'" type="primary" @click="dialogCli(2)">确 定
 					</el-button>
-					<el-button v-if="titname != '添加' && vision != '流程发起'" type="primary" @click="dialogCli(1)">驳 回
+					<el-button v-if="titname != '查看' && vision == '审批'" type="primary" @click="dialogCli(2)">同 意
+					</el-button>
+					<el-button v-if="titname != '查看' && vision == '审批'" type="primary" @click="dialogCli(1)">驳 回
 					</el-button>
 					<el-button v-if="titname == '添加'" type="primary" @click="dialogCliadd">确 定</el-button>
+					<el-button v-if="vision == '结束'||titname == '查看'" @click="dialogCli(3)">确 定</el-button>
 					<el-button @click="dialogCli(3)">取 消</el-button>
 				</div>
 			</div>
@@ -238,8 +247,10 @@
 				opno: '',
 				attList: [],
 				options: [],
-				terminal:'',
+				// terminal:'720549017098297344',
+				terminal:'719840012101021696',
 				remark:'',
+				visionsts:'1',
 				
 			}
 		},
@@ -277,8 +288,13 @@
 			},
 			//申请
 			dialogCheck(v, n) {
+				this.infolist.reportPassTime='';
+				this.infolist.contractStartTime='';
+				this.infolist.contractEndTime='';
 				this.dialogStatus = true;
 				let infolist = Object.assign({}, n);
+				this.vision = '';
+				this.visionsts = '';
 				if (v === 1) {
 					this.titname = '查看';
 					this.disableStatus = true;
@@ -314,8 +330,22 @@
 					this.infolist.opName=infolist.opName;
 					this.infolist.opNo=infolist.opNo;
 					this.infolist.opTime=infolist.opTime;
+					this.infolist.woNo=infolist.woNo;
 					if (res.data.taskList[res.data.taskList.length - 1].taskName == '流程发起') {
+						this.disableStatus = false;
 						this.vision = '流程发起';
+					}else if (res.data.taskList[res.data.taskList.length - 1].taskName == '部门主任审批') {
+						this.vision = '审批';
+						this.visionsts = '3';
+					}else if (res.data.taskList[res.data.taskList.length - 1].taskName == '发起人填报') {
+						this.vision = '发起人填报';
+					}else if (res.data.taskList[res.data.taskList.length - 1].taskName == '合同信息填报') {
+						this.vision = '合同信息填报';
+						this.visionsts = '4';
+						if(res.data.taskList[res.data.taskList.length - 1].sts == '1'){
+							this.vision = '结束';
+							this.visionsts = '4';
+						}
 					} else {
 						this.vision = '审批';
 					}
@@ -354,8 +384,13 @@
 				}
 				let _this = this;
 				this.infolist.opTime = _this.$formatDate(new Date(), "YYYY-MM-DD HH:mm:ss")
-				this.infolist.opNo = this.userInfo.loginNo;
-				this.infolist.opName = this.userInfo.loginName;
+				if(this.vision == '发起人填报'){
+					this.infolist.reportPassTime?this.infolist.reportPassTime = _this.$formatDate(this.infolist.reportPassTime, "YYYY-MM-DD HH:mm:ss"):'';
+				}
+				if(this.vision == '合同信息填报'){
+					this.infolist.contractStartTime?this.infolist.contractStartTime = _this.$formatDate(this.infolist.contractStartTime, "YYYY-MM-DD HH:mm:ss"):'';
+					this.infolist.contractEndTime?this.infolist.contractEndTime = _this.$formatDate(this.infolist.contractEndTime, "YYYY-MM-DD HH:mm:ss"):'';
+				}
 				if (v === 1) {
 					let params = {
 						dealType: '1',
@@ -367,7 +402,7 @@
 						taskId: this.infolist.taskId,
 						taskName: this.infolist.taskName,
 						opName: this.infolist.opName,
-						opNo: this.infolist.opNo,
+						opNo: this.opno,
 						opTime: this.infolist.opTime,
 						params: {
 							procExeCondiVal: '不同意',
@@ -397,21 +432,26 @@
 						woNo: this.infolist.woNo,
 						
 					}
-					console.log(this.infolist)
-					// let attList = [];
-					// for (let i = 0; i < this.attList.length; i++) {
-					// 	attList.push({
-					// 		id: this.attList[i].id,
-					// 		fileCode: this.attList[i].fileCode,
-					// 		fileName: this.attList[i].fileName,
-					// 		opName: this.attList[i].opName,
-					// 		opNo: this.attList[i].opNo,
-					// 		opTime: this.attList[i].opTime,
-					// 		woNo: this.infolist.woNo,
-					// 		attchFileId: this.attList[i].attchFileId,
-					// 	});
-					// }
-					// param.params.attList = JSON.stringify(attList)
+					if(this.visionsts == '3'){
+						param.params.assigneeNo =  this.opno;
+						param.params.assigneeName =  this.opname;
+					}
+					if(this.vision == '流程发起'){
+						let attList = [];
+						for (let i = 0; i < this.attList.length; i++) {
+							attList.push({
+								id: this.attList[i].id,
+								fileCode: this.attList[i].fileCode,
+								fileName: this.attList[i].fileName,
+								opName: this.attList[i].opName,
+								opNo: this.attList[i].opNo,
+								opTime: this.attList[i].opTime,
+								woNo: this.infolist.woNo,
+								attchFileId: this.attList[i].attchFileId,
+							});
+						}
+						param.params.attList = JSON.stringify(attList)
+					}
 					this.submitInfo("/bpm/api/submitTask", param);
 				}
 			},
@@ -453,9 +493,7 @@
 			submitInfo(u, v) {
 				let _this = this;
 				this.$refs.infolist.validate(valid => {
-					console.log(valid)
 					if (valid) {
-						console.log(2)
 						this.$http({
 							url: u,
 							method: "post",
@@ -482,6 +520,29 @@
 					}
 				})
 			},
+			getStanding(){
+				this.$router.push({
+					path: '/standing',
+				});
+				this.setabList('引入流程台账', '/standing');
+			},
+			setabList(n, p) {
+				let params = {
+					children: "",
+					name: n,
+					rountPath: p,
+					target: "_self",
+				};
+				for (let i = 0; i < this.$store.state.tabList.length; i++) {
+					if (this.$store.state.tabList[i].name === params.name) {
+						this.$store.state.tabList[i] = params;
+					}
+				}
+				let set = new Set([...this.$store.state.tabList, params]);
+				set.add(params);
+				this.$store.commit("setDefaultActive", params.rountPath);
+				this.$store.commit("setTabList", Array.from(set));
+			},
 			//流程
 			getTermianl() {
 				this.$http({

+ 306 - 0
src/pages/main/introduce/standing.vue

@@ -0,0 +1,306 @@
+<template>
+    <fullscreen :fullscreen.sync="fullscreen" class="container">
+        <div class="container-box">
+            <toolList @iconCli='iconCli' :tooltit='tooltit'></toolList>
+            <div class="search">
+				<mySearch :searchList="searchList" @searchInfo="searchInfo"></mySearch>
+                <el-button class="btn-check" size="medium" type="primary" @click="outlist">导出
+                </el-button>
+            </div>
+            <div class="tabbox">
+                <el-table height="calc(100% - 40px)" class="com-table" ref="multipleTable" :data="tableData"
+                    tooltip-effect="dark" size="small" border style="width: 100%">
+                    <el-table-column prop="factoryName" label="合作伙伴名称">
+                    </el-table-column>
+                    <el-table-column prop="factoryCode" label="合作伙伴统一信用编码">
+                    </el-table-column>
+                    <el-table-column prop="reportPassTime" label="请示汇报审批时间">
+                    </el-table-column>
+                    <el-table-column prop="reportNo" label="请示汇报文件编号">
+                    </el-table-column>
+                    <el-table-column prop="contractStartTime" label="合同签订时间">
+                    </el-table-column>
+                    <el-table-column prop="contractNo" label="合同编号">
+                    </el-table-column>
+					<el-table-column prop="contractEndTime" label="合同到期时间">
+                    </el-table-column>
+                </el-table>
+                <el-pagination class="pageBox" @current-change="currchange" layout="prev, pager, next" background
+                    :total="total">
+                </el-pagination>
+            </div>
+        </div>
+    </fullscreen>
+</template>
+<script>
+    import mySearch from "../../../components/search.vue";
+    import toolList from "../../../components/toolList.vue";
+
+    export default {
+        components: {
+            mySearch,
+            toolList
+        },
+        data() {
+
+            return {
+				searchList: [{
+					type: 'input',
+					tit: '合同伙伴',
+					value: '',
+					width: '19%',
+				},{
+					type: 'date',
+					tit: '发起开始时间',
+					value: '',
+					width: '19%',
+				}, {
+					type: 'date',
+					tit: '发起结束时间',
+					value: '',
+					width: '19%',
+				}, {
+					type: 'date',
+					tit: '合同开始时间',
+					value: '',
+					width: '19%',
+				}, {
+					type: 'date',
+					tit: '合同结束时间',
+					value: '',
+					width: '19%',
+				}],
+                tooltit: '合作引入流程台账',
+                fullscreen: false,
+                total: 0,
+                pageSize: 1,
+                tableData: [],
+                dialogStatus: false,
+                disableStatus: false,
+                titname: '终端',
+                infolist: {},
+                typeOptions: [{
+                    dataCode: 1,
+                    dataName: 111,
+                }],
+                userInfo: {},
+                params: {},
+                infoApply: []
+            }
+        },
+        methods: {
+			//搜索数据
+			searchInfo(v) {
+				this.params = {};
+				v[0] ? this.params.factoryName = v[0] : '';
+				v[1] ? this.params.opTimeTo = v[1] : '';
+				v[2] ? this.params.opTimeFrom =  this.$formatDate(v[2] , "YYYY-MM-DD HH:mm:ss") : '';
+				v[3] ? this.params.contractStartTimeFrom = this.$formatDate(v[3] , "YYYY-MM-DD HH:mm:ss") : '';
+				v[4] ? this.params.contractStartTimeTo = this.$formatDate(v[4] , "YYYY-MM-DD HH:mm:ss") : '';
+				this.getList(this.params, this.pageSize);
+			},
+            //获取列表
+            getList(v, n) {
+				v.sts = 1;
+                this.pageSize = n;
+                let _this = this;
+                this.$http({
+                    url: "/market/cChannelCooperate/queryPage",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                        "page": '{"pageNo":"' + n + '","pageSize":"10"}'
+                    },
+                    data: v,
+                }).then((res) => {
+                    this.tableData = res.data.data;
+                    this.total = res.data.totalRecord;
+                });
+            },
+            // 分页
+            currchange(v) {
+                this.pageSize = v;
+                this.getList(this.params, this.pageSize);
+            },
+            //功能栏
+            iconCli(v) {
+                if (v === 1) {
+                    this.getList(this.params, this.pageSize);
+                }
+                if (v === 2) {
+                    this.fullscreen = !this.fullscreen
+                }
+            },
+            // =======================
+            outlist() {
+                let data = {
+                    colStr: "factoryName,factoryCode,reportPassTime,reportNo,contractStartTime,contractNo,contractEndTime",
+                    fileName: "台账.xlsx",
+                    tital: [
+                        [
+                            {
+                                "colNum": "0",
+                                "colSpan": "0",
+                                "rowSpan": "1",
+                                "val": "合作伙伴名称"
+                            },
+                            {
+                                "colNum": "1",
+                                "colSpan": "0",
+                                "rowSpan": "1",
+                                "val": "合作伙伴统一信用编码"
+                            },
+                            {
+                                "colNum": "2",
+                                "colSpan": "0",
+                                "rowSpan": "1",
+                                "val": "请示汇报审批时间"
+                            },
+                            {
+                                "colNum": "3",
+                                "colSpan": "0",
+                                "rowSpan": "1",
+                                "val": "请示汇报文件编号"
+                            },
+                            {
+                                "colNum": "4",
+                                "colSpan": "0",
+                                "rowSpan": "1",
+                                "val": "合同签订时间"
+                            },
+                            {
+                                "colNum": "5",
+                                "colSpan": "0",
+                                "rowSpan": "1",
+                                "val": "合同编号"
+                            },
+							{
+                                "colNum": "6",
+                                "colSpan": "0",
+                                "rowSpan": "1",
+                                "val": "合同到期时间"
+                            },
+                        ]
+                    ]
+                }
+                // data.tital = JSON.stringify(data.tital)
+                this.$http({
+                    url: "/market/cChannelCooperate/excelExport",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    responseType: "blob",
+                    data: data,
+                }).then((response) => {
+                    if (window.navigator && window.navigator.msSaveOrOpenBlob) {
+                        let blob = new Blob([response.data], {
+                            type: 'application/vnd.ms-excel'
+                        })
+                        window.navigator.msSaveOrOpenBlob(blob,
+                            new Date().getTime() + '.xlsx')
+                    } else {
+                        /* 火狐谷歌的文件下载方式 */
+                        var blob = new Blob([response.data])
+                        var downloadElement = document.createElement('a')
+                        var href = window.URL.createObjectURL(blob)
+                        downloadElement.href = href
+                        downloadElement.download = new Date().getTime() + '.xlsx'
+                        document.body.appendChild(downloadElement)
+                        downloadElement.click()
+                        document.body.removeChild(downloadElement)
+                        window.URL.revokeObjectURL(href)
+                    }
+                });
+            },
+            getUser() {
+                this.userInfo = JSON.parse(window.sessionStorage.userInfo);
+                this.infolist = {
+                    opNo: '',
+                    opName: '',
+                };
+                this.infolist.opNo = this.userInfo.loginNo;
+                this.infolist.opName = this.userInfo.loginName;
+
+            }
+        },
+        mounted() {
+            this.getList({}, 1);
+            this.getUser();
+        },
+        created() {
+
+        }
+    }
+</script>
+<style scoped lang="scss">
+    .onetab {
+        margin-bottom: 20px;
+        padding: 0 20px;
+    }
+
+    .titbox {
+        div {
+            float: right;
+
+            i {
+                font-size: 22px;
+                margin-left: 20px;
+                cursor: pointer;
+            }
+        }
+    }
+
+    .tabbox {
+        margin-top: 15px;
+    }
+
+    .pageBox {
+        text-align: right;
+        margin-top: 10px;
+    }
+
+    .info-line {
+        width: 100%;
+        display: block;
+        padding-left: 20px;
+
+        div {
+            width: 50%;
+            display: inline-block;
+        }
+
+        span {
+            width: 80px;
+            display: inline-block;
+            text-align: left;
+
+            i {
+                color: red;
+                display: inline-block;
+                padding-right: 5px;
+            }
+        }
+
+        .el-select,
+        .el-input {
+            width: calc(100% - 100px);
+        }
+    }
+
+    .online {
+        width: 100%;
+
+        .el-select {
+            width: calc(100% - 100px);
+        }
+
+        span {
+            vertical-align: top;
+        }
+
+        .el-textarea {
+            width: calc(100% - 100px);
+        }
+    }
+</style>

+ 2 - 1
src/pages/main/leader/processInitiation.vue

@@ -82,7 +82,7 @@
 			        rountPath: p,
 			        target: "_self",
 			    };
-				console.log(this.$store.state.tabList)
+				// console.log(this.$store.state.tabList)
 			    // for (let i = 0; i < this.$store.state.tabList.length; i++) {
 			    //     if (this.$store.state.tabList[i].name === params.name) {
 			    //         this.$store.state.tabList[i] = params;
@@ -220,6 +220,7 @@
 				height: 100px;
 				width: 33%;
 				text-align: center;
+				min-width: 128px;
 
 				i {
 					width: 40px;

+ 4 - 4
src/pages/main/officialAccount/index.vue

@@ -82,7 +82,7 @@
 					</el-form-item>
 					<el-form-item class="info-line online" prop="quality">
 						<span>任务说明</span>
-						<el-input v-model="infolist.remark" disabled type="textarea" :rows="4"></el-input>
+						<el-input v-model="infolist.remark" disabled type="textarea" :autosize="{ minRows: 4, maxRows: 10}"></el-input>
 					</el-form-item>
 					<div style="padding: 0 20px 0 100px;margin-bottom: 20px;">
 					    <uploadDown :datalist="datalist" :dialogStatus="uploadstatus"></uploadDown>
@@ -93,13 +93,13 @@
 					<el-form-item class="info-line online" prop="quality">
 						<span>审批意见</span>
 						<el-input v-model="infolist.directorApprovalContent" placeholder="审批意见"
-							:disabled="infolist.sts != 1 || infolist.approvalSts != 1" type="textarea" :rows="4">
+							:disabled="infolist.sts != 1 || infolist.approvalSts != 1" type="textarea" :autosize="{ minRows: 4, maxRows: 10}">
 						</el-input>
 					</el-form-item>
 					<el-form-item class="info-line online" prop="quality">
-						<span>审批意见2</span>
+						<span>审批意见</span>
 						<el-input v-model="infolist.leaderApprovalContent" placeholder="审批意见"
-							:disabled="infolist.sts != 3 || infolist.approvalSts != 1" type="textarea" :rows="4">
+							:disabled="infolist.sts != 3 || infolist.approvalSts != 1" type="textarea" :autosize="{ minRows: 4, maxRows: 10}">
 						</el-input>
 					</el-form-item>
 

+ 746 - 0
src/pages/main/productOnSale/index.vue

@@ -0,0 +1,746 @@
+<template>
+	<fullscreen :fullscreen.sync="fullscreen" class="container">
+		<div class="container-box">
+			<toolList @iconCli='iconCli' :tooltit='tooltit'></toolList>
+			<div style="overflow: hidden;">
+				<el-button style="float: right;margin-top: 10px;" type="primary" @click="dialogCheck(3)">添加</el-button>
+				<!-- <el-button style="float: right;margin-top: 10px;margin-right: 20px;" type="primary"
+					@click="getStanding">台账</el-button> -->
+			</div>
+			<div class="tabbox">
+				<el-table height="calc(100% - 40px)" class="com-table" ref="multipleTable" :data="tableData"
+					tooltip-effect="dark" size="small" border style="width: 100%" v-loading="loading">
+					<el-table-column prop="woTitle" label="业务名称">
+					</el-table-column>
+					<el-table-column prop="opName" label="申请姓名">
+					</el-table-column>
+					<el-table-column prop="createTime" label="申请时间">
+					</el-table-column>
+					<el-table-column prop="stsDesc" label="状态">
+					</el-table-column>
+					<el-table-column label="操作" width="120px" align="center">
+						<template slot-scope="scope">
+							<el-button size="mini" type="primary" @click="dialogCheck(1,scope.row)">查看</el-button>
+							<el-button size="mini" type="danger" v-if="scope.row.sts != 1"
+								@click="dialogCheck(2,scope.row)">处理</el-button>
+							<!-- <el-button size="mini" type="danger" @click="delLine(scope.row)">删除</el-button> -->
+						</template>
+					</el-table-column>
+				</el-table>
+				<el-pagination class="pageBox" @current-change="currchange" layout="prev, pager, next" background
+					:total="total">
+				</el-pagination>
+			</div>
+		</div>
+
+		<el-dialog :title="titname" :visible.sync="dialogStatus" width="50%" :destroy-on-close="true"
+			:modal-append-to-body="false" :close-on-click-modal="false" :before-close="closedia" :fullscreen="true">
+			<div v-loading="loadinged">
+				<el-form :model="infolist" ref="infolist" :rules="rules"
+					style="height: calc(100vh - 180px);overflow-y: scroll;">
+					<div class="info-line">
+						<el-form-item prop="woName">
+							<span>工单名称</span>
+							<el-input v-model="infolist.woName" placeholder="工单名称" :disabled="disableStatus">
+							</el-input>
+						</el-form-item>
+						<el-form-item prop="terminal">
+							<span>申请流程</span>
+							<el-select clearable v-model="terminal" placeholder="申请流程" :disabled="disableStatus">
+								<el-option v-for="items in options" :key="items.procId" :label="items.procName"
+									:value="items.procId">
+								</el-option>
+							</el-select>
+						</el-form-item>
+					</div>
+					<el-form-item class="info-line online">
+						<span>正文内容</span>
+						<el-input v-model="infolist.textContent" placeholder="正文内容" type="textarea" :rows="3"
+							:disabled="disableStatus">
+						</el-input>
+					</el-form-item>
+
+					<div style="padding:0 20px 0 120px;margin-bottom: 20px;" v-if="disableStatus">
+						<uploadDown :datalist="datalist" :dialogStatus="uploadstatus"></uploadDown>
+					</div>
+					<div style="padding-left: 100px" v-if="!disableStatus">
+						<myUpload @uploadBack="uploadBack" :fileInfo="fileInfo" :fileList="fileInfo.fileList">
+						</myUpload>
+					</div>
+
+
+					<div style="margin: 20px 0;padding: 0 20px;">
+						<el-table class="com-table" ref="multipleTable" :data="infodatas" tooltip-effect="dark"
+							size="small" border style="width: 100%">
+							<el-table-column prop="infoName" label="上架产品名称">
+								<template slot-scope="scope">
+									<el-input v-model="scope.row.infoName" :disabled="titname != '添加'&&vision != '流程发起'"></el-input>
+								</template>
+							</el-table-column>
+							<el-table-column prop="infoCode" label="资费代码">
+								<template slot-scope="scope">
+									<el-input v-model="scope.row.infoCode" :disabled="titname != '添加'&&vision != '流程发起'"></el-input>
+								</template>
+							</el-table-column>
+							<el-table-column prop="infoResult" label="转译结果">
+								<template slot-scope="scope">
+									<el-input v-model="scope.row.infoResult" :disabled="vision != '转译结果'||titname == '查看'"></el-input>
+								</template>
+							</el-table-column>
+							<el-table-column prop="infoIf" label="是否上架">
+								<template slot-scope="scope">
+									<el-input v-model="scope.row.infoIf" :disabled="vision != '填报信息'||titname == '查看'"></el-input>
+								</template>
+							</el-table-column>
+							<el-table-column prop="infoTime" label="上架日期">
+								<template slot-scope="scope">
+									<!-- <el-input v-model="scope.row.infoTime" :disabled="vision != '填报信息'||titname == '查看'"></el-input> -->
+									<el-date-picker v-model="scope.row.infoTime" :disabled="vision != '填报信息'||titname == '查看'" type="date" style="width: 98%;">
+									</el-date-picker>
+								</template>
+							</el-table-column>
+							<el-table-column prop="infoRemark" label="备注">
+								<template slot-scope="scope">
+									<el-input v-model="scope.row.infoRemark" :disabled="vision != '填报信息'||titname == '查看'"></el-input>
+								</template>
+							</el-table-column>
+							<el-table-column label="操作" width="120px" align="center" v-if="titname == '添加'">
+								<template slot-scope="scope">
+									<el-button size="mini" type="primary" @click="choline(1,scope)">添加</el-button>
+									<el-button size="mini" type="danger" @click="choline(2,scope)">删除</el-button>
+								</template>
+							</el-table-column>
+						</el-table>
+					</div>
+
+
+					<el-form-item class="info-line online" v-if="vision == '审批'">
+						<span>审批说明</span>
+						<el-input v-model="remark" placeholder="审批说明" type="textarea" :rows="3"
+							:disabled="titname == '查看'">
+						</el-input>
+					</el-form-item>
+
+					<div style="margin-bottom: 20px;padding: 0 20px;" v-if="titname != '添加'">
+						<el-table class="com-table" ref="multipleTable" :data="rovaList" tooltip-effect="dark"
+							size="small" border style="width: 100%">
+							<el-table-column prop="taskId" label="编号">
+							</el-table-column>
+							<el-table-column prop="taskName" label="环节">
+							</el-table-column>
+							<el-table-column prop="assigneeName" label="处理人">
+							</el-table-column>
+							<el-table-column prop="assigneeNo" label="处理人工号">
+							</el-table-column>
+							<el-table-column prop="opTime" label="处理时间">
+							</el-table-column>
+							<el-table-column prop="remark" label="备注">
+							</el-table-column>
+						</el-table>
+					</div>
+				</el-form>
+
+				<div slot="footer" class="dialog-footer myfooter">
+					<el-button v-if="titname != '查看' && vision == '流程发起'" type="primary" @click="dialogCli(2)">确 定
+					</el-button>
+					<el-button v-if="titname != '查看' && vision == '填报信息'" type="primary" @click="dialogCli(2)">确 定
+					</el-button>
+					<el-button v-if="titname != '查看' && vision == '转译结果'" type="primary" @click="dialogCli(2)">确 定
+					</el-button>
+					<el-button v-if="titname != '查看' && vision == '审批'" type="primary" @click="dialogCli(2)">通 过
+					</el-button>
+					<el-button v-if="titname != '查看' && vision == '审批'" type="primary" @click="dialogCli(1)">打 回
+					</el-button>
+					<el-button v-if="titname == '添加'" type="primary" @click="dialogCliadd">确 定</el-button>
+					<el-button v-if="titname == '查看'" @click="dialogCli(3)">确 定</el-button>
+					<el-button @click="dialogCli(3)">取 消</el-button>
+				</div>
+			</div>
+		</el-dialog>
+
+		<myMessage :messTit='messTit' @closeMessage="closeMessage" :centerDialogVisible="centerDialogVisible"
+			v-if="centerDialogVisible"></myMessage>
+	</fullscreen>
+
+</template>
+<script>
+	import mySearch from "../../../components/search.vue";
+	import myMessage from "../../../components/myMessage.vue"
+	import toolList from '../../../components/toolList'
+	import myUpload from '../../../components/upload'
+	import uploadDown from '../../../components/uploadDown.vue'
+
+	export default {
+		components: {
+			mySearch,
+			myMessage,
+			toolList,
+			myUpload,
+			uploadDown
+		},
+		data() {
+			const woName = (rule, value, callback) => {
+				if (!this.infolist.woName) {
+					callback(new Error('不能为空'))
+				} else {
+					callback()
+				}
+			}
+			const terminal = (rule, value, callback) => {
+				if (!this.terminal) {
+					callback(new Error('不能为空'))
+				} else {
+					callback()
+				}
+			}
+			return {
+				rules: {
+					woName: [{
+						required: true,
+						trigger: 'blur',
+						validator: woName
+					}],
+					terminal: [{
+						required: true,
+						trigger: 'change',
+						validator: terminal
+					}],
+				},
+				tooltit: '移动商城产品上架',
+				fullscreen: false,
+				total: 0,
+				pageSize: 1,
+				tableData: [{}],
+				dialogStatus: false,
+				disableStatus: false,
+				titname: '',
+				infolist: {
+					itSubTime: '',
+					elecSubTime: ''
+				},
+				userInfo: {},
+				params: {},
+				centerDialogVisible: false,
+				messTit: '',
+				delid: '',
+				loading: false,
+				loadinged: false,
+				fileInfo: {
+					limit: 5,
+					url: '/bpm/api/upload',
+					fileList: []
+				},
+				rovaList: [],
+				vision: '',
+				datalist: {
+					url: '/bpm/api/download',
+					type: 1
+				},
+				uploadstatus: false,
+				rovaList: [],
+				mydisable: 1,
+				opname: '',
+				opno: '',
+				attList: [],
+				options: [],
+				terminal: '',
+				remark: '',
+				visionsts: '1',
+				ifopt: [{
+					id: 1,
+					name: '是'
+				}, {
+					id: 0,
+					name: '否'
+				}],
+				infodatas: [{}, {}, {}, {}, {}]
+			}
+		},
+		methods: {
+			choline(v, n) {
+				if (v == 1) {
+					this.infodatas.push({})
+				} else {
+					this.infodatas.splice(n.$index, 1)
+				}
+			},
+			closedia() {
+				this.infolist = {};
+				this.attList = [];
+				this.fileInfo.fileList = [];
+				this.dialogStatus = false;
+			},
+			//获取列表
+			getList(v, n) {
+				this.pageSize = n;
+				let _this = this;
+				this.loading = true;
+				v.procName = "移动商城产品上架";
+				this.$http({
+					url: "/bpm/api/queryToDoAndFinishTaskList",
+					method: "post",
+					headers: {
+						"Content-Type": "application/json",
+						"page": '{"pageNo":"' + n + '","pageSize":"10"}'
+					},
+					data: v,
+				}).then((res) => {
+					this.tableData = res.data.data;
+					this.total = res.data.totalRecord;
+					this.loading = false;
+				});
+			},
+			// 分页
+			currchange(v) {
+				this.pageSize = v;
+				this.getList(this.params, this.pageSize);
+			},
+			//申请
+			dialogCheck(v, n) {
+				this.infolist.itSubTime = '';
+				this.infolist.elecSubTime = '';
+				this.dialogStatus = true;
+				let infolist = Object.assign({}, n);
+				this.vision = '';
+				this.visionsts = '';
+				this.infodatas = [{}, {}, {}, {}, {}];
+				if (v === 1) {
+					this.titname = '查看';
+					this.disableStatus = true;
+				} else if (v === 2) {
+					this.titname = '审批';
+					this.disableStatus = true;
+				} else if (v === 3) {
+					this.titname = '添加';
+					this.disableStatus = false;
+					return
+				}
+				this.$http({
+					url: '/bpm/api/taskInit',
+					method: "post",
+					headers: {
+						"Content-Type": "application/json",
+					},
+					data: {
+						woNo: n.woNo
+					},
+				}).then((res) => {
+					// this.infolist = Object.assign({}, res.data);
+					this.terminal = infolist.procId;
+					this.opname = res.data.opName;
+					this.opno = res.data.opNo;
+					this.infolist = JSON.parse(res.data.params.terminalRes);
+					this.infodatas = this.infolist.infodatas;
+					this.infolist.procId = infolist.procId;
+					this.infolist.procVersion = infolist.procVersion;
+					this.remark = infolist.remark;
+					this.infolist.stepId = infolist.stepId;
+					this.infolist.taskId = infolist.taskId;
+					this.infolist.taskName = infolist.taskName;
+					this.infolist.opName = infolist.opName;
+					this.infolist.opNo = infolist.opNo;
+					this.infolist.opTime = infolist.opTime;
+					this.infolist.woNo = infolist.woNo;
+					if (res.data.taskList[res.data.taskList.length - 1].taskName == '流程发起') {
+						this.vision = '流程发起';
+						if(this.titname == '审批'){
+							this.disableStatus = false;
+						}
+					} else if (res.data.taskList[res.data.taskList.length - 1].taskName == '科室主任审批') {
+						this.vision = '审批';
+					} else if (res.data.taskList[res.data.taskList.length - 1].taskName == '主管副总审批') {
+						this.vision = '审批';
+					} else if (res.data.taskList[res.data.taskList.length - 1].taskName == '转译结果') {
+						this.vision = '转译结果';
+					} else if (res.data.taskList[res.data.taskList.length - 1].taskName == '填报信息') {
+						this.vision = '填报信息';
+					}
+					this.datalist.attList = JSON.parse(res.data.params.attList);
+					this.attList = [];
+					this.fileInfo.fileList = [];
+					this.datalist.attList.forEach(item => {
+						item.id = item.attchFileId;
+						this.fileInfo.fileList.push({
+							name: item.fileName,
+							url: '',
+							id: item.id,
+							attchFileId: item.attchFileId,
+							fileName: item.fileName
+						});
+						this.attList.push({
+							name: item.fileName,
+							url: '',
+							id: item.id,
+							attchFileId: item.attchFileId,
+							fileName: item.fileName
+						});
+					})
+					this.rovaList = res.data.taskList;
+					this.uploadstatus = true;
+				});
+			},
+			//审批
+			dialogCli(v) {
+				this.dialogStatus = false;
+				if (v === 3) {
+					this.infolist = {};
+					this.attList = [];
+					this.fileInfo.fileList = [];
+					return
+				}
+				let _this = this;
+				this.infolist.opTime = _this.$formatDate(new Date(), "YYYY-MM-DD HH:mm:ss")
+				this.infolist.itSubTime ? this.infolist.itSubTime = _this.$formatDate(this.infolist.itSubTime,
+					"YYYY-MM-DD HH:mm:ss") : '';
+				this.infolist.elecSubTime ? this.infolist.elecSubTime = _this.$formatDate(this.infolist.elecSubTime,
+					"YYYY-MM-DD HH:mm:ss") : '';
+				if (v === 1) {
+					let params = {
+						dealType: '1',
+						dealTypeDesc: '打回',
+						procId: this.infolist.procId,
+						procVersion: this.infolist.procVersion,
+						remark: this.remark,
+						stepId: this.infolist.stepId,
+						taskId: this.infolist.taskId,
+						taskName: this.infolist.taskName,
+						opName: this.infolist.opName,
+						opNo: this.opno,
+						opTime: this.infolist.opTime,
+						params: {
+							procExeCondiVal: '不同意',
+							terminalRes: JSON.stringify(this.infolist),
+							assigneeNo: this.opno,
+							assigneeName: this.opname,
+						},
+						woNo: this.infolist.woNo,
+					}
+					this.submitInfo("/bpm/api/submitTask", params);
+				} else if (v === 2) {
+					let param = {
+						dealType: '0',
+						dealTypeDesc: '提交',
+						procId: this.infolist.procId,
+						procVersion: this.infolist.procVersion,
+						remark: this.remark,
+						stepId: this.infolist.stepId,
+						taskId: this.infolist.taskId,
+						taskName: this.infolist.taskName,
+						opName: this.infolist.opName,
+						opNo: this.opno,
+						opTime: this.infolist.opTime,
+						params: {
+							woType: this.infolist.woType,
+							terminalRes: JSON.stringify(this.infolist)
+						},
+						woNo: this.infolist.woNo,
+
+					}
+					if(this.vision == '转译结果'){
+						param.params.assigneeNo=this.opno;
+						param.params.assigneeName=this.opname;
+					}
+					if (this.vision == '流程发起') {
+						let attList = [];
+						for (let i = 0; i < this.attList.length; i++) {
+							attList.push({
+								id: this.attList[i].id,
+								fileCode: this.attList[i].fileCode,
+								fileName: this.attList[i].fileName,
+								opName: this.attList[i].opName,
+								opNo: this.attList[i].opNo,
+								opTime: this.attList[i].opTime,
+								woNo: this.infolist.woNo,
+								attchFileId: this.attList[i].attchFileId,
+							});
+						}
+						param.params.attList = JSON.stringify(attList)
+					}
+					this.submitInfo("/bpm/api/submitTask", param);
+				}
+			},
+			//添加
+			dialogCliadd(v) {
+				let _this = this;
+				let info = {};
+				info.opTime = _this.$formatDate(new Date(), "YYYY-MM-DD HH:mm:ss");
+				info.opNo = this.userInfo.loginNo;
+				info.opName = this.userInfo.loginName;
+				info.woTitle = this.infolist.woName;
+				info.params = {};
+				info.params.terminalRes = this.infolist;
+				let infodatas = [];
+				for (let i = 0; i < this.infodatas.length; i++) {
+					if (this.infodatas[i].infoName || this.infodatas[i].infoCode) {
+						infodatas.push(this.infodatas[i])
+					}
+				}
+				info.params.terminalRes.infodatas = infodatas;
+				info.procId = this.terminal;
+				for (let i = 0; i < this.options.length; i++) {
+					if (this.terminal == this.options[i].procId) {
+						info.procName = this.options[i].procName;
+						info.procVersion = this.options[i].procVersion;
+					}
+				}
+				let attList = [];
+				for (let i = 0; i < this.attList.length; i++) {
+					attList.push({
+						id: this.attList[i].id,
+						fileCode: this.attList[i].fileCode,
+						fileName: this.attList[i].fileName,
+						opName: this.attList[i].opName,
+						opNo: this.attList[i].opNo,
+						opTime: this.attList[i].opTime,
+						woNo: this.infolist.woNo,
+						attchFileId: this.attList[i].attchFileId,
+					});
+				}
+				info.params.attList = JSON.stringify(attList)
+				info.params.terminalRes = JSON.stringify(info.params.terminalRes);
+				this.submitInfo("/bpm/api/startProc", info);
+			},
+
+			submitInfo(u, v) {
+				let _this = this;
+				this.$refs.infolist.validate(valid => {
+					if (valid) {
+						this.$http({
+							url: u,
+							method: "post",
+							headers: {
+								"Content-Type": "application/json",
+							},
+							data: v,
+						}).then((res) => {
+							if (res.data.result === 1) {
+								_this.$message({
+									message: res.data.desc,
+									type: 'error'
+								});
+							} else {
+								_this.$message({
+									message: '成功',
+									type: 'success'
+								});
+								_this.closedia();
+								_this.infolist = {};
+								_this.attList = [];
+								_this.fileInfo.fileList = [];
+								_this.getList(this.params, this.pageSize);
+							}
+
+						});
+					}
+				})
+			},
+			getStanding() {
+				this.$router.push({
+					path: '/dStanding',
+				});
+				this.setabList('开发流程台账', '/dStanding');
+			},
+			setabList(n, p) {
+				let params = {
+					children: "",
+					name: n,
+					rountPath: p,
+					target: "_self",
+				};
+				for (let i = 0; i < this.$store.state.tabList.length; i++) {
+					if (this.$store.state.tabList[i].name === params.name) {
+						this.$store.state.tabList[i] = params;
+					}
+				}
+				let set = new Set([...this.$store.state.tabList, params]);
+				set.add(params);
+				this.$store.commit("setDefaultActive", params.rountPath);
+				this.$store.commit("setTabList", Array.from(set));
+			},
+			//流程
+			getTermianl() {
+				this.$http({
+					url: "/bpm/api/queryBpmProcList",
+					method: "post",
+					headers: {
+						"Content-Type": "application/json",
+						"page": '{"pageNo":"' + 1 + '","pageSize":"100"}'
+					},
+					data: {},
+				}).then((res) => {
+					this.options = res.data.data;
+				});
+			},
+			closeMessage(v) {
+				this.centerDialogVisible = false;
+				let _this = this;
+				if (v === 1) {
+					_this.$http({
+						url: "/bpm/api/deleteBpmPrePlugin",
+						method: "post",
+						headers: {
+							"Content-Type": "application/json",
+						},
+						data: {
+							id: this.delid
+						},
+					}).then((res) => {
+						if (res.data.result === 1) {
+							_this.$message({
+								message: res.data.desc,
+								type: 'error'
+							});
+						} else {
+							_this.$message({
+								message: '删除成功',
+								type: 'success'
+							});
+							_this.getList(this.params, this.pageSize);
+						}
+					});
+				}
+			},
+			//删除
+			delLine(v) {
+				this.centerDialogVisible = true;
+				this.messTit = '即将删除此条数据, 是否删除?';
+				this.delid = v.id;
+			},
+			//文件返回值
+			uploadBack(v) {
+				this.attList = v;
+			},
+			//功能栏
+			iconCli(v) {
+				if (v === 1) {
+					this.getList(this.params, this.pageSize);
+				}
+				if (v === 2) {
+					this.fullscreen = !this.fullscreen
+				}
+			},
+			getUser() {
+				this.userInfo = JSON.parse(window.sessionStorage.userInfo);
+
+			}
+		},
+		mounted() {
+			this.getList({}, 1);
+			this.getUser();
+			this.getTermianl();
+		},
+		created() {
+
+		}
+	}
+</script>
+<style scoped lang="scss">
+	.onetab {
+		margin-bottom: 20px;
+		padding: 0 20px;
+	}
+
+	.titbox {
+		div {
+			float: right;
+
+			i {
+				font-size: 22px;
+				margin-left: 20px;
+				cursor: pointer;
+			}
+		}
+	}
+
+	.tabbox {
+		margin-top: 15px;
+	}
+
+	.pageBox {
+		text-align: right;
+		margin-top: 10px;
+	}
+
+	.info-line {
+		width: 100%;
+		display: block;
+		padding-left: 20px;
+
+		div {
+			width: 50%;
+			display: inline-block;
+		}
+
+		span {
+			width: 100px;
+			display: inline-block;
+			text-align: left;
+
+			i {
+				color: red;
+				display: inline-block;
+				padding-right: 5px;
+			}
+		}
+
+		.el-select,
+		.el-input {
+			width: calc(100% - 120px);
+		}
+	}
+
+	.online {
+		width: 100%;
+
+		.el-select {
+			width: calc(100% - 120px);
+		}
+
+		span {
+			vertical-align: top;
+		}
+
+		.el-textarea {
+			width: calc(100% - 120px);
+		}
+	}
+
+	.adv-type {
+		margin-top: 20px;
+		display: flex;
+		justify-content: space-between;
+		flex-wrap: wrap;
+		// border: 1px solid #ddd;
+		border-radius: 5px;
+		padding: 20px;
+		box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1);
+
+		div {
+			width: 33%;
+			text-align: center;
+			height: 80px;
+			overflow: hidden;
+			min-width: 100px;
+			cursor: pointer;
+			padding-top: 10px;
+			margin: 10px 0;
+		}
+
+		div:hover {
+			background: #CFE8FC;
+			border-radius: 5px;
+		}
+
+		span {
+			width: 100%;
+			display: inline-block;
+			height: 40px;
+
+			// line-height: 40px;
+			i {
+				color: #0074D9;
+				font-size: 36px;
+			}
+		}
+	}
+</style>

+ 11 - 6
src/pages/main/serviceQuality/contractInfo.vue

@@ -189,6 +189,7 @@
 				} else if (v === 3) {
 					this.titname = '添加';
 					this.disableStatus = false;
+					return
 				}
 				let t1 = this.infolist.treaTime.split('~')[0];
 				let t2 = this.infolist.treaTime.split('~')[1];
@@ -206,12 +207,16 @@
 					this.dialogStatus = false;
 					return
 				} else {
-					let t1 = this.$formatDate(this.infolist.purchasePeriod[0], "YYYY-MM-DD");
-					let t2 = this.$formatDate(this.infolist.purchasePeriod[1], "YYYY-MM-DD");
-					this.infolist.purchasePeriod = t1 + '~' + t2;
-					let t3 = this.$formatDate(this.infolist.treaTime[0], "YYYY-MM-DD");
-					let t4 = this.$formatDate(this.infolist.treaTime[1], "YYYY-MM-DD");
-					this.infolist.treaTime = t3+ '~' +t4;
+					if(this.infolist.purchasePeriod){
+						let t1 = this.$formatDate(this.infolist.purchasePeriod[0], "YYYY-MM-DD");
+						let t2 = this.$formatDate(this.infolist.purchasePeriod[1], "YYYY-MM-DD");
+						this.infolist.purchasePeriod = t1 + '~' + t2;
+					}
+					if(this.infolist.treaTime){
+						let t3 = this.$formatDate(this.infolist.treaTime[0], "YYYY-MM-DD");
+						let t4 = this.$formatDate(this.infolist.treaTime[1], "YYYY-MM-DD");
+						this.infolist.treaTime = t3+ '~' +t4;
+					}
 					if (this.titname === '添加') {
 						this.submitInfo("/market/cChannelContract/add");
 					} else if (this.titname === '修改') {

+ 245 - 76
src/pages/main/serviceQuality/index.vue

@@ -20,7 +20,7 @@
 					</el-table-column>
 					<el-table-column prop="stsDesc" label="状态">
 					</el-table-column>
-					<el-table-column label="操作" width="160px" align="center">
+					<el-table-column label="操作" width="180px" align="center">
 						<template slot-scope="scope">
 							<span style="margin:0 5px;">
 								<el-button size="mini" type="primary" @click="dialogCheck(1,scope.row)">查看</el-button>
@@ -70,8 +70,8 @@
 						</el-form-item>
 						<el-form-item>
 							<span>协议名称</span>
-							<el-select :popper-append-to-body="false" clearable v-model="infolist.contractName" placeholder="协议名称" @change="choContra">
-							    <el-option v-for="items in suppOpt" :key="items.id" :label="items.contractName"
+							<el-select :popper-append-to-body="false" clearable v-model="infolist.contractName" placeholder="协议名称" @change="choContra" :disabled="disableStatus">
+							    <el-option v-for="items in suppOpt" :key="items.id" :label="items.contractName" 
 							        :value="items.id">
 							    </el-option>
 							</el-select>
@@ -93,12 +93,12 @@
 							</el-input>
 						</el-form-item>
 					</div>
-					<div style="padding-left: 100px">
+					<div style="padding-left: 100px" v-if="titname == '添加'||titname == '修改'">
 						<myUpload @uploadBack="uploadBack1" :fileInfo="fileInfo1" :fileList="fileInfo1.fileList">
 						</myUpload>
 					</div>
-					<div style="padding: 0 20px 0 100px;margin-bottom: 20px;">
-						<uploadDown :datalist="datalist" :dialogStatus="uploadstatus"></uploadDown>
+					<div style="padding: 0 20px 0 100px;margin-bottom: 20px;"  v-if="titname == '查看'||titname == '审核'">
+						<uploadDown :datalist="datalist1" :dialogStatus="uploadstatus"></uploadDown>
 					</div>
 
 					<div class="tit" style="margin-top: 20px;">工作量核定信息</div>
@@ -141,13 +141,13 @@
 							</el-input>
 						</el-form-item>
 					</div>
-					<div style="padding-left: 100px">
+					<div style="padding-left: 100px" v-if="titname == '添加'||titname == '修改'">
 						<myUpload @uploadBack="uploadBack2" :fileInfo="fileInfo2" :fileList="fileInfo2.fileList">
 						</myUpload>
 					</div>
-					<!-- <div style="padding: 0 20px 0 100px;margin-bottom: 20px;">
-						<uploadDown :datalist="datalist" :dialogStatus="uploadstatus"></uploadDown>
-					</div> -->
+					<div style="padding: 0 20px 0 100px;margin-bottom: 20px;"  v-if="titname == '查看'||titname == '审核'">
+						<uploadDown :datalist="datalist2" :dialogStatus="uploadstatus"></uploadDown>
+					</div>
 
 					<div class="tit" style="margin-top: 20px;">服务考核信息</div>
 					<div class="info-line">
@@ -192,13 +192,13 @@
 							</el-input>
 						</el-form-item>
 					</div>
-					<div style="padding-left: 100px">
+					<div style="padding-left: 100px" v-if="titname == '添加'||titname == '修改'">
 						<myUpload @uploadBack="uploadBack3" :fileInfo="fileInfo3" :fileList="fileInfo3.fileList">
 						</myUpload>
 					</div>
-					<!-- <div style="padding: 0 20px 0 100px;margin-bottom: 20px;">
-						<uploadDown :datalist="datalist" :dialogStatus="uploadstatus"></uploadDown>
-					</div> -->
+					<div style="padding: 0 20px 0 100px;margin-bottom: 20px;"  v-if="titname == '查看'||titname == '审核'">
+						<uploadDown :datalist="datalist3" :dialogStatus="uploadstatus"></uploadDown>
+					</div>
 
 					<div class="tit" style="margin-top: 20px;">补充协议信息</div>
 					<div class="info-line">
@@ -229,13 +229,13 @@
 							</el-input>
 						</el-form-item>
 					</div>
-					<div style="padding-left: 100px">
+					<div style="padding-left: 100px" v-if="titname == '添加'||titname == '修改'">
 						<myUpload @uploadBack="uploadBack4" :fileInfo="fileInfo4" :fileList="fileInfo4.fileList">
 						</myUpload>
 					</div>
-					<!-- <div style="padding: 0 20px 0 100px;margin-bottom: 20px;">
-						<uploadDown :datalist="datalist" :dialogStatus="uploadstatus"></uploadDown>
-					</div> -->
+					<div style="padding: 0 20px 0 100px;margin-bottom: 20px;"  v-if="titname == '查看'||titname == '审核'">
+						<uploadDown :datalist="datalist4" :dialogStatus="uploadstatus"></uploadDown>
+					</div>
 
 				</el-form>
 
@@ -307,7 +307,14 @@
 				dialogStatus: false,
 				disableStatus: false,
 				titname: '',
-				infolist: {},
+				infolist: {
+					factoryName:'',
+					purchasePeriod:[],
+					treatyNo:'',
+					treaTime:[],
+					frameMoney:'',
+					unitPrice:'',
+				},
 				userInfo: {},
 				params: {},
 				centerDialogVisible: false,
@@ -335,7 +342,19 @@
 					url: '/market/cmkAttachInfo/upload?uploadType=area4',
 					fileList: []
 				},
-				datalist: {
+				datalist1: {
+					url: '/market/compatt/downfile',
+					type: 1
+				},
+				datalist2: {
+					url: '/market/compatt/downfile',
+					type: 1
+				},
+				datalist3: {
+					url: '/market/compatt/downfile',
+					type: 1
+				},
+				datalist4: {
 					url: '/market/compatt/downfile',
 					type: 1
 				},
@@ -360,16 +379,24 @@
 				}
 			},
 			closedia() {
-				this.infolist = {};
+				this.infolist = {
+					factoryName:'',
+					purchasePeriod:[],
+					treatyNo:'',
+					treaTime:[],
+					frameMoney:'',
+					unitPrice:'',
+				};
 				this.dialogStatus = false;
+				this.uploadstatus = false;
 			},
 			//搜索数据
 			searchInfo(v) {
 				this.params = {};
 				v[0] ? this.params.contractName = v[0] : '';
 				v[1] ? this.params.ledgerName = v[1] : '';
-				v[2] ? this.params.startTime = v[2] : '';
-				v[3] ? this.params.endTime = v[3] : '';
+				v[2] ? this.params.opTimeFrom =  this.$formatDate(v[2] , "YYYY-MM-DD HH:mm:ss") : '';
+				v[3] ? this.params.opTimeTo = this.$formatDate(v[3] , "YYYY-MM-DD HH:mm:ss") : '';
 				this.getList(this.params, this.pageSize);
 			},
 			//获取列表
@@ -403,6 +430,7 @@
 				this.dialogStatus = true;
 				this.infolist = Object.assign({}, n);
 				this.disableStatus = false;
+				this.infolist.opTime =  this.$formatDate(new Date(), 'YYYY-MM-DD HH:mm:ss')
 				if (v === 1) {
 					this.titname = '查看';
 					this.disableStatus = true;
@@ -414,21 +442,124 @@
 					this.titname = '修改';
 				} else if (v === 6) { //添加
 					this.titname = '添加';
+					this.infolist = {
+						factoryName:'',
+						purchasePeriod:[],
+						treatyNo:'',
+						treaTime:[],
+						frameMoney:'',
+						unitPrice:'',
+					}
+					return
 				} else if (v == 5) {
 					_this.$router.push({
 						path: '/contractInfo',
 					});
 					_this.setabList('合同信息管理', '/contractInfo');
+					return
+				}
+				this.$http({
+					url: "/market/cChannelBusi/queryInfo",
+					method: "post",
+					headers: {
+						"Content-Type": "application/json",
+					},
+					data: {id:n.id},
+				}).then((res) => {
+					this.uploadstatus = true;
+					this.attList1 = [];
+					this.fileInfo1.fileList = [];
+					this.attList2 = [];
+					this.fileInfo2.fileList = [];
+					this.attList3 = [];
+					this.fileInfo3.fileList = [];
+					this.attList4 = [];
+					this.fileInfo4.fileList = [];
+					this.datalist1.attList = res.data.attList1;
+					this.datalist2.attList = res.data.attList2;
+					this.datalist3.attList = res.data.attList3;
+					this.datalist4.attList = res.data.attList4;
+					this.datalist1.attList.forEach(item => {
+						item.id = item.attchFileId;
+						this.fileInfo1.fileList.push({
+							name: item.fileName,
+							url: '',
+							id: item.id,
+							attchFileId: item.attchFileId,
+							fileName: item.fileName
+						});
+						this.attList1.push({
+							name: item.fileName,
+							url: '',
+							id: item.id,
+							attchFileId: item.attchFileId,
+							fileName: item.fileName
+						});
+					})
+					this.datalist2.attList.forEach(item => {
+						item.id = item.attchFileId;
+						this.fileInfo2.fileList.push({
+							name: item.fileName,
+							url: '',
+							id: item.id,
+							attchFileId: item.attchFileId,
+							fileName: item.fileName
+						});
+						this.attList2.push({
+							name: item.fileName,
+							url: '',
+							id: item.id,
+							attchFileId: item.attchFileId,
+							fileName: item.fileName
+						});
+					})
+					this.datalist3.attList.forEach(item => {
+						item.id = item.attchFileId;
+						this.fileInfo3.fileList.push({
+							name: item.fileName,
+							url: '',
+							id: item.id,
+							attchFileId: item.attchFileId,
+							fileName: item.fileName
+						});
+						this.attList3.push({
+							name: item.fileName,
+							url: '',
+							id: item.id,
+							attchFileId: item.attchFileId,
+							fileName: item.fileName
+						});
+					})
+					this.datalist4.attList.forEach(item => {
+						item.id = item.attchFileId;
+						this.fileInfo4.fileList.push({
+							name: item.fileName,
+							url: '',
+							id: item.id,
+							attchFileId: item.attchFileId,
+							fileName: item.fileName
+						});
+						this.attList4.push({
+							name: item.fileName,
+							url: '',
+							id: item.id,
+							attchFileId: item.attchFileId,
+							fileName: item.fileName
+						});
+					})
+				});
+				if(this.infolist.treaTime){
+					this.infolist.treaTime = [this.infolist.treaTime.split('~')[0], this.infolist.treaTime.split('~')[1]];
+				}
+				if(this.infolist.purchasePeriod){
+					this.infolist.purchasePeriod = [this.infolist.purchasePeriod.split('~')[0], this.infolist.purchasePeriod.split('~')[1]];
+				}
+				if(this.infolist.serveScore){
+					let serveScore1 = this.infolist.serveScore.split(';')[0];
+					let serveScore2 = this.infolist.serveScore.split(';')[1];
+					let serveScore3 = this.infolist.serveScore.split(';')[2];
+					this.serveScore = [serveScore1.split(',')[0],serveScore1.split(',')[1],serveScore2.split(',')[0],serveScore2.split(',')[1],serveScore3.split(',')[0],serveScore3.split(',')[1]];
 				}
-				this.infolist.treaTime = [this.infolist.treaTime.split('~')[0], this.infolist.treaTime.split('~')[1]];
-				this.infolist.purchasePeriod = [this.infolist.purchasePeriod.split('~')[0], this.infolist.purchasePeriod.split('~')[1]];
-				let serveScore1 = this.infolist.serveScore.split(';')[0];
-				let serveScore2 = this.infolist.serveScore.split(';')[1];
-				let serveScore3 = this.infolist.serveScore.split(';')[2];
-				this.serveScore = [serveScore1.split(',')[0],serveScore1.split(',')[1],serveScore2.split(',')[0],serveScore2.split(',')[1],serveScore3.split(',')[0],serveScore3.split(',')[1]];
-				this.infolist.opNo = this.userInfo.loginNo;
-				this.infolist.opName = this.userInfo.loginName;
-				this.infolist.opTime =  this.$formatDate(new Date(), 'YYYY-MM-DD HH:mm:ss')
 			},
 			setabList(n, p) {
 				let params = {
@@ -449,9 +580,26 @@
 			},
 			//添加
 			dialogCli(v,n) {
+				this.uploadstatus = false;
 				if (v == 1) {
-					this.infolist = {};
+					this.infolist = {
+						factoryName:'',
+						purchasePeriod:[],
+						treatyNo:'',
+						treaTime:[],
+						frameMoney:'',
+						unitPrice:'',
+					};
 					this.dialogStatus = false;
+					this.serveScore = [];
+					this.attList1 = [];
+					this.fileInfo1.fileList = [];
+					this.attList2 = [];
+					this.fileInfo2.fileList = [];
+					this.attList3 = [];
+					this.fileInfo3.fileList = [];
+					this.attList4 = [];
+					this.fileInfo4.fileList = [];
 					return
 				}
 				// 0 草稿;1审核中;2未通过;3通过;4办结
@@ -463,22 +611,30 @@
 				info.workSubTime =  this.$formatDate(info.workSubTime, 'YYYY-MM-DD HH:mm:ss')
 				info.dealTime =  this.$formatDate(info.dealTime, 'YYYY-MM-DD HH:mm:ss')
 				info.workFeedTime =  this.$formatDate(info.workFeedTime, 'YYYY-MM-DD HH:mm:ss')
-				let t1 = this.$formatDate(info.purchasePeriod[0], "YYYY-MM-DD");
-				let t2 = this.$formatDate(info.purchasePeriod[1], "YYYY-MM-DD");
-				info.purchasePeriod = t1 + '~' + t2;
-				let t3 = this.$formatDate(info.treaTime[0], "YYYY-MM-DD");
-				let t4 = this.$formatDate(info.treaTime[1], "YYYY-MM-DD");
-				info.treaTime = t3+ '~' +t4;
+				if(info.purchasePeriod){
+					let t1 = this.$formatDate(info.purchasePeriod[0], "YYYY-MM-DD");
+					let t2 = this.$formatDate(info.purchasePeriod[1], "YYYY-MM-DD");
+					info.purchasePeriod = t1 + '~' + t2;
+				}
+				if(info.treaTime){
+					let t3 = this.$formatDate(info.treaTime[0], "YYYY-MM-DD");
+					let t4 = this.$formatDate(info.treaTime[1], "YYYY-MM-DD");
+					info.treaTime = t3+ '~' +t4;
+				}
 				info.serveScore = this.serveScore[0]+','+this.serveScore[1]+';'+this.serveScore[2]+','+this.serveScore[3]+';'+this.serveScore[4]+','+this.serveScore[5]+';';
 				if (v == 2) { //通过
-					info.sts = "3";
-					info.stsDesc = "通过";
-					this.submitInfo("/market/cChannelBusi/update", info);
+					let param = {};
+					param.sts = "3";
+					param.stsDesc = "通过";
+					param.id = info.id;
+					this.submitInfo("/market/cChannelBusi/update", param);
 				}
 				if (v == 3) { //打回
-					info.sts = "2";
-					info.stsDesc = "打回";
-					this.submitInfo("/market/cChannelBusi/update", info);
+				let param = {};
+					param.sts = "2";
+					param.stsDesc = "打回";
+					param.id = info.id;
+					this.submitInfo("/market/cChannelBusi/update", param);
 				}
 				if (v == 4) { //发布
 					info.sts = "1";
@@ -518,43 +674,56 @@
 					}
 				}
 				if (v == 6) { //归档
-					info.sts = "4";
-					info.stsDesc = "归档";
-					this.submitInfo("/market/cChannelBusi/update", n);
+					let param = {};
+					param.sts = "4";
+					param.id = n.id;
+					param.stsDesc = "归档";
+					this.submitInfo("/market/cChannelBusi/update", param);
 				}
 			},
 			submitInfo(u, v) {
 				let _this = this;
-				this.$refs.infolist.validate(valid => {
-					if (valid) {
-						this.loadinged = true;
-						this.$http({
-							url: u,
-							method: "post",
-							headers: {
-								"Content-Type": "application/json",
-							},
-							data: v,
-						}).then((res) => {
-							this.loadinged = false;
-							if (res.data.result === 1) {
-								_this.$message({
-									message: res.data.desc,
-									type: 'error'
-								});
-							} else {
-								_this.$message({
-									message: '成功',
-									type: 'success'
-								});
-								_this.infolist = {};
-								_this.dialogStatus = false;
-								_this.getList({}, _this.pageSize);
-							}
-
+				this.loadinged = true;
+				this.$http({
+					url: u,
+					method: "post",
+					headers: {
+						"Content-Type": "application/json",
+					},
+					data: v,
+				}).then((res) => {
+					this.loadinged = false;
+					if (res.data.result === 1) {
+						_this.$message({
+							message: res.data.desc,
+							type: 'error'
+						});
+					} else {
+						_this.$message({
+							message: '成功',
+							type: 'success'
 						});
+						_this.infolist = {
+							factoryName:'',
+							purchasePeriod:[],
+							treatyNo:'',
+							treaTime:[],
+							frameMoney:'',
+							unitPrice:'',
+						};
+						_this.dialogStatus = false;
+						_this.attList1 = [];
+						_this.fileInfo1.fileList = [];
+						_this.attList2 = [];
+						_this.fileInfo2.fileList = [];
+						_this.attList3 = [];
+						_this.fileInfo3.fileList = [];
+						_this.attList4 = [];
+						_this.fileInfo4.fileList = [];
+						_this.getList({}, _this.pageSize);
 					}
-				})
+				
+				});
 			},
 			closeMessage(v) {
 				this.centerDialogVisible = false;

+ 48 - 0
src/router/index.js

@@ -10,12 +10,54 @@ const routes = [{
     redirect: '/leader',
     children: [
         {
+            meta: { name:  '线上渠道业务需求', keepAlive: false },
+            path: '/demandDevelop',
+            name: 'demandDevelop',
+            component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/demandDevelop/index.vue'], resolve)
+        },
+		{
+            meta: { name:  '移动商城产品上架', keepAlive: false },
+            path: '/productOnSale',
+            name: 'productOnSale',
+            component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/productOnSale/index.vue'], resolve)
+        },
+		{
+            meta: { name:  '线上合作渠道合作运营', keepAlive: false },
+            path: '/cooOperation',
+            name: 'cooOperation',
+            component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/cooOperation/index.vue'], resolve)
+        },
+		{
+		    meta: { name:  '运营流程台账', keepAlive: false },
+		    path: '/yStanding',
+		    name: 'yStanding',
+		    component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/cooOperation/yStanding.vue'], resolve)
+		},
+		{
+            meta: { name:  '线上合作渠道合作开发', keepAlive: false },
+            path: '/development',
+            name: 'development',
+            component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/development/index.vue'], resolve)
+        },
+		{
+            meta: { name:  '开发流程台账', keepAlive: false },
+            path: '/dStanding',
+            name: 'dStanding',
+            component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/development/dStanding.vue'], resolve)
+        },
+		{
             meta: { name:  '线上合作渠道合作引入', keepAlive: false },
             path: '/introduce',
             name: 'introduce',
             component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/introduce/index.vue'], resolve)
         },
 		{
+            meta: { name:  '引入流程台账', keepAlive: false },
+            path: '/standing',
+            name: 'standing',
+            component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/introduce/standing.vue'], resolve)
+        },
+		{
             meta: { name:  '服务质量考核及结算审批', keepAlive: false },
             path: '/serviceQuality',
             name: 'serviceQuality',
@@ -76,6 +118,12 @@ const routes = [{
             component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/advertising/index.vue'], resolve)
         },
 		{
+            meta: { name:  '宣传费台账', keepAlive: false },
+            path: '/publicity',
+            name: 'publicity',
+            component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/advertising/indexs.vue'], resolve)
+        },
+		{
             meta: { name:  '物料类型管理', keepAlive: false },
             path: '/materiel',
             name: 'materiel',