liyuanpeng 3 éve
szülő
commit
872d904ece

BIN
dist.zip


+ 2 - 2
public/index.html

@@ -18,9 +18,9 @@
   <div id="app"></div>
   <!-- built files will be auto injected -->
   <script type="text/javascript">
-    window.staticHost = 'http://10.230.26.15:8000/spfm';
+    // window.staticHost = 'http://10.230.26.15:8000/spfm';
     // window.staticHost = 'http://114.215.71.182:29600';
-    // window.staticHost = 'http://192.168.2.143:9600/';
+    window.staticHost = 'http://192.168.2.146:9600/';
   </script>
 </body>
 

+ 3 - 1
public/static/js/exportExcel.js

@@ -24,6 +24,7 @@ function exportExcel(luckysheet, value) {
         setStyleAndValue(table.data, worksheet)
         setMerge(merge, worksheet)
         setBorder(borderInfo, worksheet)
+		console.log(table)
         return true
     })
 
@@ -117,7 +118,8 @@ var setStyleAndValue = function (cellArr, worksheet) {
                     value += arr.v
                 })
             } else {
-                value = cell.v
+                value = cell.m//1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
+				console.log(cell)
             }
             //  style 填入到_value中可以实现填充色
             let letter = createCellPos(columnid)

A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 286 - 0
public/static/views/ecClubWork.html


+ 7 - 2
public/static/views/monthExcel.html

@@ -213,6 +213,12 @@
                         mRevoke: false
                     },
                     hook: {
+						cellRenderBefore: function (r, c){
+							var numlength = data[0].data[0].length-1;
+							if(c.c == numlength){
+								return false
+							}
+						},
                         cellMousedown: function (a, b, c) {
                             if (lockFlag == '1') {
                                 // window.top.$vm.$message({
@@ -260,8 +266,7 @@
                             }
                         },
                     },
-                }),
-				luckysheet.hideColumn(data[0].data[0].length-1,data[0].data[0].length)
+                })
             } catch (err) {
                 console.log(err)
             }

+ 7 - 2
public/static/views/projectExcel.html

@@ -198,6 +198,12 @@
                         mRevoke: false
                     },
                     hook: {
+						cellRenderBefore: function (r, c){
+							var numlength = data[0].data[0].length-1;
+							if(c.c == numlength){
+								return false
+							}
+						},
                         cellMousedown: function (a, b, c) {
                             if (lockFlag == '1') {
                                 // window.top.$vm.$message({
@@ -245,8 +251,7 @@
                             }
                         },
                     },
-                }),
-				luckysheet.hideColumn(data[0].data[0].length-1,data[0].data[0].length)
+                })
             } catch (err) {
                 console.log(err)
             }

+ 7 - 2
public/static/views/quarterExcel.html

@@ -229,6 +229,12 @@
                         mRevoke: false
                     },
                     hook: {
+						cellRenderBefore: function (r, c){
+							var numlength = data[0].data[0].length-1;
+							if(c.c == numlength){
+								return false
+							}
+						},
                         cellMousedown: function (a, b, c) {
                             if (lockFlag == '1') {
                                 // window.top.$vm.$message({
@@ -276,8 +282,7 @@
                             }
                         },
                     },
-                }),
-				luckysheet.hideColumn(data[0].data[0].length-1,data[0].data[0].length)
+                })
             } catch (err) {
                 console.log(err)
             }

A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 346 - 0
public/static/views/weeklyReport.html


+ 7 - 2
public/static/views/yearExcel.html

@@ -198,6 +198,12 @@
                         mRevoke: false
                     },
                     hook: {
+						cellRenderBefore: function (r, c){
+							var numlength = data[0].data[0].length-1;
+							if(c.c == numlength){
+								return false
+							}
+						},
                         cellMousedown: function (a, b, c) {
                             if (lockFlag == '1') {
                                 // window.top.$vm.$message({
@@ -245,8 +251,7 @@
                             }
                         },
                     },
-                }),
-				luckysheet.hideColumn(data[0].data[0].length-1,data[0].data[0].length)
+                })
             } catch (err) {
                 console.log(err)
             }

+ 2 - 2
src/components/upload.vue

@@ -44,9 +44,9 @@
                 );
             },
             deforeUp(file) {
-                const isLt2M = file.size / 1024 / 1024 < 1;
+                const isLt2M = file.size / 1024 / 1024 < 100;
                 if (!isLt2M) {
-                    this.$message.error('上传文件大小不能超过 1MB!');
+                    this.$message.error('上传文件大小不能超过 100MB!');
                     return false
                 }
                 if(this.fileInfo.type == 'img'){

+ 89 - 74
src/pages/main/achievements/achievementsIndex.vue

@@ -1,80 +1,95 @@
 <template>
-  <div class="inner-container">
-    <el-col :span="3"
-      ><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-col>
-    <el-col :span="21">
-      <div style="height: 100%">
-        <router-view />
-      </div>
-    </el-col>
-  </div>
+	<div class="inner-container">
+		<el-col :span="3">
+			<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-col>
+		<el-col :span="21">
+			<div style="height: 100%">
+				<router-view />
+			</div>
+		</el-col>
+	</div>
 </template>
 <script>
-export default {
-  data() {
-    return {
-      activeName: "budget",
-      userNo: JSON.parse(window.sessionStorage.userInfo).loginNo,
-      showList: [],
-      routerList: [
-        { label: "集团绩效", path: "/recallJt", name: "recallJt" },
-        { label: "部门绩效", path: "/recallBm", name: "recallBm" },
-        { label: "科室绩效", path: "/recallkpi", name: "recallkpi" },
-        { label: "副总GS", path: "/recallGs", name: "recallGs" },
-        { label: "绩效回复列表", path: "/kpiRecall", name: "kpiRecall" },
-        { label: "绩效模板管理", path: "/kpiMuban", name: "kpiMuban" },
-      ],
-    };
-  },
-  computed: {
-    menuList: function () {
-      let arr = [];
-      this.routerList.map((item) => {
-        this.showList.map((row) => {
-          if (item.path == row) {
-            arr.push(item);
-          }
-        });
-      });
-      return arr;
-    },
-  },
-  methods: {
-    handleClick(val) {
-      if (this.$route.path != this.activeName) {
-        this.$router.push(this.activeName);
-      }
-    },
-  },
-  mounted() {
-    this.activeName = this.$route.path;
-  },
-  created() {
-    JSON.parse(sessionStorage.childrenMenus).map((item) => {
-      this.showList.push(item.jspUrl);
-    });
-  },
-  watch: {
-    $route(to, from) {
-      this.activeName = this.$route.path;
-    },
-  },
-};
+	export default {
+		data() {
+			return {
+				activeName: "budget",
+				userNo: JSON.parse(window.sessionStorage.userInfo).loginNo,
+				showList: [],
+				routerList: [{
+						label: "集团绩效",
+						path: "/recallJt",
+						name: "recallJt"
+					},
+					{
+						label: "部门绩效",
+						path: "/recallBm",
+						name: "recallBm"
+					},
+					{
+						label: "科室绩效",
+						path: "/recallkpi",
+						name: "recallkpi"
+					},
+					{
+						label: "副总GS",
+						path: "/recallGs",
+						name: "recallGs"
+					},
+					{
+						label: "绩效回复列表",
+						path: "/kpiRecall",
+						name: "kpiRecall"
+					},
+					{
+						label: "绩效模板管理",
+						path: "/kpiMuban",
+						name: "kpiMuban"
+					},
+				],
+			};
+		},
+		computed: {
+			menuList: function() {
+				let arr = [];
+				this.routerList.map((item) => {
+					this.showList.map((row) => {
+						if (item.path == row) {
+							arr.push(item);
+						}
+					});
+				});
+				return arr;
+			},
+		},
+		methods: {
+			handleClick(val) {
+				if (this.$route.path != this.activeName) {
+					this.$router.push(this.activeName);
+				}
+			},
+		},
+		mounted() {
+			this.activeName = this.$route.path;
+		},
+		created() {
+			JSON.parse(sessionStorage.childrenMenus).map((item) => {
+				this.showList.push(item.jspUrl);
+			});
+		},
+		watch: {
+			$route(to, from) {
+				this.activeName = this.$route.path;
+			},
+		},
+	};
 </script>
 <style>
-.el-tabs__content {
-  display: none;
-}
+	.el-tabs__content {
+		display: none;
+	}
 </style>

+ 96 - 26
src/pages/main/advertising/businessHall.vue

@@ -90,40 +90,73 @@
 							<el-input v-model="infolist.countyCode" placeholder="区县编码" disabled></el-input>
 						</el-form-item>
 						<el-form-item>
+							<span>财务科目</span>
+								<el-select @change="accountcho" :popper-append-to-body="false" v-model="infolist.account" placeholder="区县名称" :disabled="disableStatus">
+									<el-option v-for="item in moneyOpt" :key="item.dataCode" :label="item.dataName"
+										:value="item.dataName">
+									</el-option>
+								</el-select>
+							</el-input>
+						</el-form-item>
+						
+						<el-form-item v-if="account == '营业厅-VI改造' || account == '营业厅-常规物料'">
 							<span>渠道名称</span>
-							<el-input v-model="infolist.channelName" placeholder="渠道名称" :disabled="disableStatus">
+							<el-input v-model="infolist.channelName" placeholder="营业厅名称" :disabled="disableStatus">
 							</el-input>
 						</el-form-item>
-						<el-form-item>
+						<el-form-item v-if="account == '营业厅-VI改造' || account == '营业厅-常规物料'">
 							<span>渠道编码</span>
-							<el-input v-model="infolist.channelCode" placeholder="渠道编码" :disabled="disableStatus">
+							<el-input v-model="infolist.channelCode" placeholder="营业厅编码" :disabled="disableStatus">
 							</el-input>
 						</el-form-item>
-						<el-form-item>
-							<span>财务科目</span>
-							<el-input v-model="infolist.account" placeholder="财务科目" :disabled="disableStatus">
+						<el-form-item v-if="account == '校园'">
+							<span>校园名称</span>
+							<el-input v-model="infolist.channelName" placeholder="校园名称" :disabled="disableStatus">
 							</el-input>
 						</el-form-item>
-						<el-form-item>
-							<span>区域编码</span>
-							<el-select :popper-append-to-body="false" v-model="infolist.area" placeholder="区域编码"
+						<!-- <el-form-item v-if="account == '校园'">
+							<span>校园编码</span>
+							<el-input v-model="infolist.channelCode" placeholder="校园编码" disabled>
+							</el-input>
+						</el-form-item> -->
+						<el-form-item v-if="account == '小区'">
+							<span>小区名称</span>
+							<el-input v-model="infolist.channelName" placeholder="小区名称" :disabled="disableStatus">
+							</el-input>
+						</el-form-item>
+						<el-form-item v-if="account == '小区'">
+							<span>小区CUID</span>
+							<el-input v-model="infolist.channelCode" placeholder="小区CUID" :disabled="disableStatus">
+							</el-input>
+						</el-form-item>
+						
+						<el-form-item v-if="account == '营业厅-VI改造' || account == '营业厅-常规物料'">
+							<span>区域场景</span>
+							<el-select :popper-append-to-body="false" v-model="infolist.area" placeholder="区域场景"
 								:disabled="disableStatus">
 								<el-option v-for="item in areaOpt" :key="item.dataCode" :label="item.dataName"
 									:value="item.dataCode">
 								</el-option>
 							</el-select>
 						</el-form-item>
-						<el-form-item>
-							<span>营业状态</span>
-							<el-select :popper-append-to-body="false" v-model="infolist.sts" placeholder="营业状态"
+						<el-form-item v-if="account == '营业厅-VI改造' || account == '营业厅-常规物料'">
+							<span>场景状态</span>
+							<el-select :popper-append-to-body="false" v-model="infolist.sts" placeholder="场景状态"
 								:disabled="disableStatus">
 								<el-option v-for="item in stsOpt" :key="item.dataName" :label="item.dataName"
 									:value="item.dataName">
 								</el-option>
 							</el-select>
 						</el-form-item>
-					</div>
-					<div class="info-line">
+						<el-form-item v-if="account == '小区' || account == '校园'">
+							<span>场景状态</span>
+							<el-select :popper-append-to-body="false" v-model="infolist.sts" placeholder="场景状态"
+								:disabled="disableStatus">
+								<el-option v-for="item in ststOpt" :key="item.dataName" :label="item.dataName"
+									:value="item.dataName">
+								</el-option>
+							</el-select>
+						</el-form-item>
 						<el-form-item>
 							<span>物料编码</span>
 							<el-select @change="metiriacheck" :popper-append-to-body="false"
@@ -138,6 +171,10 @@
 							<el-input @change="advancecheck" type="number" v-model="infolist.conversion"
 								placeholder="规格换算" :disabled="disableStatus"></el-input>
 						</el-form-item>
+						<el-form-item>
+							<span>物料名称</span>
+							<el-input v-model="infolist.metirialName" placeholder="物料名称" disabled></el-input>
+						</el-form-item>
 					</div>
 					<el-form-item class="info-line online">
 						<span>物料描述</span>
@@ -221,7 +258,7 @@
 					value: '',
 					width: '98%',
 				}, ],
-				tooltit: '营业厅物料管理',
+				tooltit: '二采物料管理',
 				fullscreen: false,
 				total: 0,
 				pageSize: 1,
@@ -282,6 +319,27 @@
 					dataName: '暂停营业',
 					dataCode: '3'
 				}],
+				ststOpt: [{
+					dataName: '有效',
+					dataCode: '1'
+				}, {
+					dataName: '无效',
+					dataCode: '2'
+				}],
+				moneyOpt: [{
+					dataName: '营业厅-VI改造',
+					dataCode: '1'
+				}, {
+					dataName: '营业厅-常规物料',
+					dataCode: '2'
+				}, {
+					dataName: '小区',
+					dataCode: '3'
+				}, {
+					dataName: '校园',
+					dataCode: '4'
+				}],
+				account:'',
 				metirialOpt: [],
 				countyOpt: [],
 				num:0,
@@ -289,6 +347,28 @@
 			}
 		},
 		methods: {
+			accountcho(v){
+				this.account = v;
+				let x = v;
+				if(v == '营业厅-VI改造' || v == '营业厅-常规物料'){
+					x = '3'
+				}else if(v == '校园'){
+					x = '2'
+				}else if(v == '小区'){
+					x = '1'
+				}
+				this.$http({
+					url: "/market/cadvSecbuyMetirial/queryPage",
+					method: "post",
+					headers: {
+						"Content-Type": "application/json",
+						"page": '{"pageNo":"' + 1 + '","pageSize":"1000"}'
+					},
+					data: {scene:x},
+				}).then((res) => {
+					this.metirialOpt = res.data.data;
+				});
+			},
 			metiriacheck(v) {
 				for (let i = 0; i < this.metirialOpt.length; i++) {
 					if (this.metirialOpt[i].metirialCode == v) {
@@ -296,6 +376,7 @@
 						this.infolist.size = this.metirialOpt[i].size;
 						this.infolist.unit = this.metirialOpt[i].unit;
 						this.infolist.price = this.metirialOpt[i].price;
+						this.infolist.metirialName = this.metirialOpt[i].metirialName;
 						this.infolist.advance = this.infolist.price * this.infolist.conversion;
 					}
 				}
@@ -509,17 +590,6 @@
 				}).then((res) => {
 					this.regionOpt = res.data;
 				});
-				this.$http({
-					url: "/market/cadvMetirial/queryPage",
-					method: "post",
-					headers: {
-						"Content-Type": "application/json",
-						"page": '{"pageNo":"' + 1 + '","pageSize":"1000"}'
-					},
-					data: {},
-				}).then((res) => {
-					this.metirialOpt = res.data.data;
-				});
 			}
 		},
 		mounted() {

+ 89 - 78
src/pages/main/budget/budgetIndex.vue

@@ -1,83 +1,94 @@
 <template>
-  <div class="inner-container">
-    <el-col :span="3"
-      ><el-tabs
-        tab-position="left"
-        v-model="activeName"
-        @tab-click="handleClick"
-      >
-        <el-tab-pane
-          v-for="(item, index) in routerList"
-          :key="index"
-          :name="item.path"
-          :label="item.label"
-        ></el-tab-pane>
-      </el-tabs>
-    </el-col>
-    <el-col :span="21">
-      <div style="height: 100%">
-        <router-view />
-      </div>
-    </el-col>
-  </div>
+	<div class="inner-container">
+		<el-col :span="3">
+			<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-col>
+		<el-col :span="21">
+			<div style="height: 100%">
+				<router-view />
+			</div>
+		</el-col>
+	</div>
 </template>
 <script>
-export default {
-  data() {
-    return {
-      activeName: "",
-      showList: [],
-      routerList: [
-        { label: "月度部门预算", path: "/monthExcel", name: "monthExcel" },
-        { label: "季度部门预算", path: "/quarterExcel", name: "quarterExcel" },
-        { label: "年度部门预算", path: "/yearExcel", name: "yearExcel" },
-        {
-          label: "采购部门预算",
-          path: "/projectExcel",
-          name: "projectExcel",
-        },
-        { label: "预算回复", path: "/recallAdmin", name: "recallAdmin" },
-        { label: "预算模板管理", path: "/budgetList", name: "budgetList" },
-      ],
-    };
-  },
-  computed: {
-    menuList: function () {
-      let arr = [];
-      this.routerList.map((item) => {
-        this.showList.map((row) => {
-          if (item.path == row) {
-            arr.push(item);
-          }
-        });
-      });
-      return arr;
-    },
-  },
-  methods: {
-    handleClick(val) {
-      if (this.$route.path != this.activeName) {
-        this.$router.push(this.activeName);
-      }
-    },
-  },
-  mounted() {
-    this.activeName = this.$route.path;
-  },
-  created() {
-    JSON.parse(sessionStorage.childrenMenus).map((item) => {
-      this.showList.push(item.jspUrl);
-    });
-  },
-  watch: {
-    $route(to, from) {
-      this.activeName = this.$route.path;
-    },
-  },
-};
+	export default {
+		data() {
+			return {
+				activeName: "",
+				showList: [],
+				routerList: [{
+						label: "月度部门预算",
+						path: "/monthExcel",
+						name: "monthExcel"
+					},
+					{
+						label: "季度部门预算",
+						path: "/quarterExcel",
+						name: "quarterExcel"
+					},
+					{
+						label: "年度部门预算",
+						path: "/yearExcel",
+						name: "yearExcel"
+					},
+					{
+						label: "采购部门预算",
+						path: "/projectExcel",
+						name: "projectExcel",
+					},
+					{
+						label: "预算回复",
+						path: "/recallAdmin",
+						name: "recallAdmin"
+					},
+					{
+						label: "预算模板管理",
+						path: "/budgetList",
+						name: "budgetList"
+					},
+				],
+			};
+		},
+		computed: {
+			menuList: function() {
+				let arr = [];
+				this.routerList.map((item) => {
+					this.showList.map((row) => {
+						if (item.path == row.jspUrl && row.systemflag == '1') {
+							arr.push(item);
+						}
+					});
+				});
+				return arr;
+			},
+		},
+		methods: {
+			handleClick(val) {
+				if (this.$route.path != this.activeName) {
+					this.$router.push(this.activeName);
+				}
+			},
+		},
+		mounted() {
+			this.activeName = this.$route.path;
+		},
+		created() {
+			JSON.parse(sessionStorage.childrenMenus).map((item) => {
+				this.showList.push(item);
+			});
+		},
+		watch: {
+			$route(to, from) {
+				this.activeName = this.$route.path;
+			},
+		},
+	};
 </script>
 <style>
-.el-tabs__content {
-  display: none;
-}
-</style>
+	.el-tabs__content {
+		display: none;
+	}
+</style>

+ 6 - 5
src/pages/main/competitor/competExa.vue

@@ -264,12 +264,13 @@
                     this.fullscreen = !this.fullscreen
                 }
             },
-            ctrlbtn(v) {
-                for (let i = 0; i < v.length; i++) {
-                    if (v[i].children.length > 0) {
-                        this.ctrlbtn(v[i].children);
+            ctrlbtn() {
+				let menus = JSON.parse(window.sessionStorage.menus);
+                for (let i = 0; i < menus.length; i++) {
+                    if (menus[i].children.length > 0) {
+                        this.ctrlbtn(menus[i].children);
                     } else {
-                        if (v[i].rountPath === this.$route.path && v[i].systemflag === '1') {
+                        if (menus[i].rountPath === this.$route.path && menus[i].systemflag === '1') {
                             this.btnctrlStatus = false;
                             return
                         }

+ 10 - 0
src/pages/main/ecClubWork/index.vue

@@ -0,0 +1,10 @@
+<template>
+  <div class="container">
+    <iframe
+      height="100%"
+      width="100%"
+      src="/static/views/ecClubWork.html"
+      frameborder="0"
+    ></iframe>
+  </div>
+</template>

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

@@ -7,9 +7,9 @@
 					<div v-for="item in ite.unitList" :key="item.unitName" class="function-box">
 						<div class="f-box-tit">{{ item.unitName }}</div>
 						<div v-for="items in item.modList" :key="items.moduleName" class="f-box-info">
-							<el-badge :value="items.noTaskNum" :max="99" :hidden="items.noTaskNum == 0">
+							<el-badge :value="items.todoNum" :max="99" :hidden="items.noTaskNum == 0">
 								
-								<i @click="jumpTo(items)" class="el-icon-document" v-if="items.sts == '0' && items.moduleName == '竞争对手信息上报'" style="background: #0b82ff"></i>
+								<!-- <i @click="jumpTo(items)" class="el-icon-document" v-if="items.sts == '0' && items.moduleName == '竞争对手信息上报'" style="background: #0b82ff"></i>
 								<i @click="jumpTo(items)" class="el-icon-user" v-if="items.sts == '0' && items.moduleName == '广告宣传设计审批'" style="background: #0b82ff"></i>
 								<i @click="jumpTo(items)" class="el-icon-files" v-if="items.sts == '0' && items.moduleName == '广告发布审批及验收'" style="background: #0b82ff"></i>
 								<i @click="jumpTo(items)" class="el-icon-document" v-if="items.sts == '0' && items.moduleName == '绩效管理'" style="background: #0b82ff"></i>
@@ -17,7 +17,9 @@
 								<i @click="jumpTo(items)" class="el-icon-files" v-if="items.sts == '0' && items.moduleName == '科室绩效管理'" style="background: #0b82ff"></i>
 								<i @click="jumpTo(items)" class="el-icon-location-information" v-if="items.sts == '0' && items.moduleName == '重点工作清单'" style="background: #0b82ff"></i>
 								<i @click="jumpTo(items)" class="el-icon-user" v-if="items.sts == '0' && items.moduleName == '测试资源管理'" style="background: #0b82ff"></i>
+								<i @click="jumpTo(items)" class="el-icon-user" v-if="items.sts == '0' && items.moduleName == '公众号图文协推资料下发'" style="background: #0b82ff"></i> -->
 									
+								<i @click="jumpTo(items)" :class="'el-icon-user'" v-if="items.sts == '0'" style="background: #0b82ff"></i>
 								<i :class="'iconfont icon-tongji'" v-if="items.sts != '0'" style="background: #ddd"></i>
 								<el-tooltip class="item" effect="dark" :content="items.moduleName" placement="bottom">
 									<span>{{ items.moduleName }}</span>
@@ -70,8 +72,27 @@
 					this.$router.push({
 						path: v.moduleUrl,
 					});
+					this.setabList(v.moduleName, v.moduleUrl);
 				}
 			},
+			setabList(n, p) {
+			    let params = {
+			        children: "",
+			        name: n,
+			        rountPath: p,
+			        target: "_self",
+			    };
+				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;
+			    //     }
+			    // }
+			    // 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));
+			},
 		},
 		mounted() {},
 		created() {

+ 729 - 0
src/pages/main/officialAccount/index.vue

@@ -0,0 +1,729 @@
+<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="dialogCheck(3)">添加
+				</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="taskName" label="任务名称">
+					</el-table-column>
+					<el-table-column prop="channel" label="推送渠道">
+					</el-table-column>
+					<el-table-column prop="time" label="推送时间">
+					</el-table-column>
+					<el-table-column prop="tit" label="推送标题">
+					</el-table-column>
+					<el-table-column prop="pushAbstract" label="推送摘要" show-overflow-tooltip>
+					</el-table-column>
+					<el-table-column prop="remark" label=" 任务说明" show-overflow-tooltip>
+					</el-table-column>
+					<el-table-column prop="deptName" label="发起人部门">
+					</el-table-column>
+					<el-table-column label="操作" width="160px" 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" @click="dialogCheck(2,scope.row)"
+								v-if="scope.row.sts == 1&&scope.row.approvalSts == 1">审核</el-button>
+							<el-button size="mini" type="danger" @click="dialogCheck(4,scope.row)"
+								v-if="scope.row.sts == 3&&scope.row.approvalSts == 1">审核</el-button>
+							<el-button size="mini" type="danger" @click="dialogCheck(7,scope.row)"
+								v-if="scope.row.sts == 7&&scope.row.approvalSts == 1">下发</el-button>
+							<el-button size="mini" type="danger" @click="dialogCheck(8,scope.row)"
+								v-if="scope.row.sts == 4&&scope.row.approvalSts == 1">处理</el-button>
+							<!-- <el-button size="mini" type="primary" @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" style="height: calc(100vh - 180px);overflow-y: scroll;">
+					<div class="info-line">
+						<el-form-item>
+							<span>任务名称</span>
+							<el-input v-model="infolist.taskName" disabled></el-input>
+						</el-form-item>
+						<el-form-item>
+							<span>推送渠道</span>
+							<el-input v-model="infolist.channel" disabled></el-input>
+						</el-form-item>
+						<el-form-item>
+							<span>推送时间</span>
+							<el-input v-model="infolist.time" disabled></el-input>
+						</el-form-item>
+						<el-form-item>
+							<span>推送标题</span>
+							<el-input v-model="infolist.tit" disabled></el-input>
+						</el-form-item>
+						<el-form-item>
+							<span>推送摘要</span>
+							<el-input v-model="infolist.pushAbstract" disabled></el-input>
+						</el-form-item>
+						<el-form-item>
+							<span>原文链接</span>
+							<el-input v-model="infolist.original" disabled></el-input>
+						</el-form-item>
+					</div>
+					<el-form-item class="info-line online">
+						<span>落实单位</span>
+						<el-input v-model="infolist.original" disabled></el-input>
+					</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-form-item>
+					<div style="padding: 0 20px 0 100px;margin-bottom: 20px;">
+					    <uploadDown :datalist="datalist" :dialogStatus="uploadstatus"></uploadDown>
+					</div>
+					<!-- company 落实单位   (数组)
+					sts(1待审核(科室),2打回,3待审核(分管),3.5选人,4待审核(地市),5待填写,6,归档) -->
+
+					<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">
+						</el-input>
+					</el-form-item>
+					<el-form-item class="info-line online" prop="quality">
+						<span>审批意见2</span>
+						<el-input v-model="infolist.leaderApprovalContent" placeholder="审批意见"
+							:disabled="infolist.sts != 3 || infolist.approvalSts != 1" type="textarea" :rows="4">
+						</el-input>
+					</el-form-item>
+
+					<div v-if="infolist.fillSts == '5'">
+						<div class="info-line">
+							<el-form-item>
+								<span>落实渠道</span>
+								<el-input v-model="infolist.lsqd" placeholder="落实渠道" :disabled="disableStatus">
+								</el-input>
+							</el-form-item>
+							<el-form-item>
+								<span>落实情况</span>
+								<el-input v-model="infolist.lsqk" placeholder="落实情况" :disabled="disableStatus">
+								</el-input>
+							</el-form-item>
+						</div>
+						<el-form-item class="info-line online" prop="quality">
+							<span>落实原因</span>
+							<el-input v-model="infolist.lsyy" placeholder="落实原因" :disabled="disableStatus"
+								type="textarea" :rows="4"></el-input>
+						</el-form-item>
+						<!-- <div style="padding-left: 80px">
+									<myUpload @uploadBack="uploadBack" :fileInfo="fileInfo" :fileList="fileInfo.fileList">
+									</myUpload>
+								</div> -->
+					</div>
+					<div v-if="infolist.opNo == userInfo.loginNo || infolist.approvalSts != '1'" style="padding: 0 20px;">
+						<el-table class="com-table" ref="multipleTable" :data="infolist.fillList" tooltip-effect="dark"
+							size="mini" border style="width: 100%">
+							<el-table-column prop="compName" label="地市公司">
+							</el-table-column>
+							<el-table-column prop="approvalName" label="填报人">
+							</el-table-column>
+							<el-table-column prop="workable" label="落实渠道">
+							</el-table-column>
+							<el-table-column prop="situation" label="落实情况">
+							</el-table-column>
+							<el-table-column prop="resaon" label="落实原因">
+							</el-table-column>
+						</el-table>
+					</div>
+				</el-form>
+
+				<div slot="footer" class="dialog-footer myfooter">
+					<el-button type="primary" @click="dialogCli(2)" v-if="infolist.sts == '5'">确 定</el-button>
+					<el-button type="primary" @click="checkexa = true" v-if="infolist.sts == '1'&&titname === '修改'">通 过
+					</el-button>
+					<el-button type="primary" @click="dialogCli(5)" v-if="infolist.sts == '3'&&titname === '修改'">通 过
+					</el-button>
+					<el-button type="primary" @click="dialogCli(4)" v-if="infolist.sts == '1'&&titname === '修改'">打 回
+					</el-button>
+					<el-button type="primary" @click="checkexatwo = true" v-if="infolist.sts == '7'&&titname === '修改'">下
+						发
+					</el-button>
+					<el-button type="primary" @click="dialogCli(8)"
+						v-if="infolist.sts == '4'&&infolist.approvalSts == '1'">确 定
+					</el-button>
+					<el-button type="primary" @click="dialogCli(9)" v-if="infolist.fillSts == '5'">确 定
+					</el-button>
+					<el-button @click="dialogCli(1)" v-if="titname === '查看'">确 定</el-button>
+					<el-button @click="dialogCli(1)">取 消</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">
+					<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="dialogCli(3)">确 定</el-button>
+					<el-button @click="checkexa = false">取 消</el-button>
+				</div>
+			</div>
+		</el-dialog>
+		<el-dialog title="选择下发人" :visible.sync="checkexatwo" width="50%" :destroy-on-close="true"
+			:modal-append-to-body="false" :close-on-click-modal="false">
+			<div>
+
+				<el-form :model="infolist" ref="infolist">
+					<el-form-item prop="visiblec" class="info-line online">
+						<div class="compListree">
+							<span v-for="item in infolist.compList" :key="item.taskFillId">
+								<em>{{item.compName}}</em>
+								<el-select :popper-append-to-body="false" v-model="item.approvalNo" placeholder="下发人员"
+									@change="chologin(item)">
+									<el-option v-for="item in item.opt" :key="item.loginNoStr"
+										:label="item.loginNameStr" :value="item.loginNoStr">
+									</el-option>
+								</el-select>
+							</span>
+						</div>
+					</el-form-item>
+				</el-form>
+
+				<div slot="footer" style="text-align: right;padding-bottom: 20px;">
+					<el-button type="primary" @click="dialogCli(7)">确 定</el-button>
+					<el-button @click="checkexatwo = 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.vue";
+	import uploadDown from "../../../components/uploadDown.vue";
+	import deptTreeOnly from "../../../components/deptTreeOnly.vue"
+
+	export default {
+		components: {
+			mySearch,
+			myMessage,
+			toolList,
+			myUpload,
+			uploadDown,
+			deptTreeOnly
+		},
+		data() {
+			return {
+				searchList: [{
+					type: 'input',
+					tit: '物料名称',
+					value: '',
+					width: '98%',
+				}, ],
+				tooltit: '公众号图文协推下发',
+				fullscreen: false,
+				total: 0,
+				pageSize: 1,
+				tableData: [{}],
+				dialogStatus: false,
+				disableStatus: false,
+				titname: '',
+				infolist: {},
+				userInfo: {},
+				params: {},
+				centerDialogVisible: false,
+				messTit: '',
+				delid: '',
+				loading: false,
+				loadinged: false,
+				attList: [],
+				fileInfo: {
+					type: 'img',
+					limit: 5,
+					url: '/bpm/api/upload',
+					fileList: []
+				},
+				datalist: {
+					url: '/market/compatt/downfile',
+					type: 1
+				},
+				uploadstatus: false,
+				checkexa: false, //审批人弹窗
+				checkexatwo: false, //审批人弹窗
+				treeListonly: {}, //返回数据
+				defaultList: [],
+				closeList: false,
+				depttype: 0,
+				peopopt: []
+			}
+		},
+		methods: {
+			chologin(v) {
+				for (let i = 0; i < v.opt.length; i++) {
+					if (v.opt[i].loginNoStr == v.approvalNo) {
+						v.approvalName = v.opt[i].loginNameStr
+					}
+				}
+			},
+			deletes() {
+				this.treeListonly = {};
+				this.closeList = !this.closeList;
+			},
+			treeCheckonly(v) {
+				this.treeListonly = v;
+			},
+			//处理所需数据
+			verifall(v) {
+				for (let j = 0; j < this.suppOpt.length; j++) {
+					if (this.suppOpt[j].code == v) {
+						this.infolist.supplierName = this.suppOpt[j].name
+					}
+				}
+			},
+			closedia() {
+				this.infolist = {};
+				this.dialogStatus = false;
+			},
+			//搜索数据
+			searchInfo(v) {
+				this.params = {};
+				v[0] ? this.params.metirialType = v[0] : '';
+				this.getList(this.params, this.pageSize);
+			},
+			//获取列表
+			getList(v, n) {
+				this.pageSize = n;
+				let _this = this;
+				this.loading = true;
+				this.tableData = [];
+				this.$http({
+					url: "/market/cemscnpl/queryMkEmscnplPage",
+					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) {
+				let _this = this;
+				if (v === 1) {
+					this.dialogStatus = true;
+					this.infolist = Object.assign({}, n);
+					this.titname = '查看';
+					this.disableStatus = true;
+					// return
+				} else if (v === 2) { //一次审核
+					this.dialogStatus = true;
+					this.infolist = Object.assign({}, n);
+					this.titname = '修改';
+					this.disableStatus = false;
+				} else if (v === 4) { //二次审核
+					this.dialogStatus = true;
+					this.infolist = Object.assign({}, n);
+					this.titname = '修改';
+					this.disableStatus = false;
+				} else if (v === 7) { //下发
+					this.dialogStatus = true;
+					this.infolist = Object.assign({}, n);
+					this.titname = '修改';
+					this.disableStatus = false;
+				} else if (v === 8) { //下发
+					this.dialogStatus = true;
+					this.infolist = Object.assign({}, n);
+					this.titname = '修改';
+					this.disableStatus = false;
+				} else if (v == 3) {
+					_this.$router.push({
+						path: '/officialAccountadd',
+					});
+					_this.setabList('公众号图文协推资料发起', '/officialAccountadd');
+				}
+				this.$http({
+					url: "/market/cemscnpl/queryEmscnplInfo",
+					method: "post",
+					headers: {
+						"Content-Type": "application/json",
+					},
+					data: {
+						taskId: this.infolist.taskId
+					},
+				}).then((res) => {
+					let _this = this;
+					this.infolist.compList = res.data.compList;
+					this.infolist.fillList = res.data.fillList;
+					this.infolist.attList = res.data.fillList;
+					this.datalist.attList = res.data.attList;
+					this.uploadstatus = true;
+					console.log(this.datalist)
+					if (v == 7) {
+						for (let i = 0; i < _this.infolist.compList.length; i++) {
+							_this.infolist.compList[i].opt = [];
+							_this.$http({
+								url: "/sysmgr/sysuserinfo/queryList",
+								method: "post",
+								headers: {
+									"Content-Type": "application/json",
+								},
+								data: {
+									groupId: _this.infolist.compList[i].deptNo
+								},
+							}).then((res) => {
+								_this.infolist.compList[i].opt = res.data;
+							});
+						}
+					}
+				});
+				this.infolist.opNo = this.userInfo.loginNo;
+				this.infolist.opName = this.userInfo.loginName;
+			},
+			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));
+			},
+			//添加
+			dialogCli(v) {
+				if (v == 1) {
+					this.infolist = {};
+					this.dialogStatus = false;
+					return
+				}
+				if (v == 3) { //通过
+					let info = {};
+					info.sts = "3";
+					info.stsDesc = "待审核";
+					info.leaderNo = this.treeListonly.leaderAuditNo;
+					info.leaderName = this.treeListonly.leaderAuditName;
+					info.directorApprovalTime = this.$formatDate(new Date(), "YYYY-MM-DD HH:mm:ss");
+					info.taskId = this.infolist.taskId;
+					info.directorApprovalContent = this.infolist.directorApprovalContent;
+					this.submitInfo("/market/cemscnpl/mkEmscnplApproval", info);
+				}
+				if (v == 4) { //打回
+					let info = {};
+					info.sts = "2";
+					info.stsDesc = "打回";
+					info.taskId = this.infolist.taskId;
+					this.submitInfo("/market/cemscnpl/mkEmscnplApproval", info);
+				}
+				if (v == 5) { //二审通过
+					let info = {};
+					info.sts = "7";
+					info.stsDesc = "待下发";
+					info.leaderApprovalTime = this.$formatDate(new Date(), "YYYY-MM-DD HH:mm:ss");
+					info.taskId = this.infolist.taskId;
+					info.leaderApprovalContent = this.infolist.leaderApprovalContent;
+					this.submitInfo("/market/cemscnpl/mkEmscnplApproval", info);
+				}
+				if (v == 7) { //下发
+					let info = {};
+					info.sts = "4";
+					info.stsDesc = "待审核";
+					info.taskId = this.infolist.taskId;
+					info.compList = this.infolist.compList;
+					this.submitInfo("/market/cemscnpl/mkEmscnplApproval", info);
+				}
+				if (v == 8) { //下发到人
+					let info = {};
+					info.sts = "5";
+					info.stsDesc = "待填写";
+					for (let i = 0; i < this.infolist.compList.length; i++) {
+						if (this.infolist.compList[i].approvalNo == this.userInfo.loginNo) {
+							info.taskFillId = this.infolist.compList[i].taskFillId;
+							info.sendNo = this.infolist.compList[i].approvalNo;
+							info.sendName = this.infolist.compList[i].approvalName;
+						}
+					}
+					this.submitInfo("/market/cemscnpl/mkEmscnplApproval", info);
+				}
+				if (v == 9) { //tianxie
+					let info = {};
+					for (let i = 0; i < this.infolist.fillList.length; i++) {
+						if (this.infolist.fillList[i].approvalNo == this.userInfo.loginNo) {
+							info = this.infolist.fillList[i];
+							info.workable = this.infolist.lsqd;
+							info.situation = this.infolist.lsqk;
+							info.reason = this.infolist.lsyy;
+							info.sts = "8";
+							info.stsDesc = "填写完成";
+						}
+					}
+					this.submitInfo("/market/cemscnpl/mkEmscnplFill", info);
+				}
+			},
+			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.checkexa = false;
+								_this.checkexatwo = false;
+								_this.getList({}, _this.pageSize);
+							}
+
+						});
+					}
+				})
+			},
+			closeMessage(v) {
+				this.centerDialogVisible = false;
+				let _this = this;
+				if (v === 1) {
+					_this.$http({
+						url: "/market/cadvSecbuyMetirial/del",
+						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) {
+				console.log(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);
+
+				this.$http({
+					url: "/market/cadvSupplier/queryValidSupplierList",
+					method: "post",
+					headers: {
+						"Content-Type": "application/json",
+					},
+					data: {
+						"buyTypeCode": "2"
+					},
+				}).then((res) => {
+					this.suppOpt = res.data;
+				});
+
+			}
+		},
+		mounted() {
+			this.getList({}, 1);
+			this.getUser();
+		},
+		created() {
+
+		}
+	}
+</script>
+<style scoped lang="scss">
+	.compListree {
+		width: 100% !important;
+
+		span {
+			width: 100% !important;
+			display: inline-block;
+			padding: 10px 0;
+
+			em {
+				width: 120px;
+				display: inline-block;
+				font-style: normal;
+			}
+
+			.el-select {
+				width: calc(100% - 120px)
+			}
+		}
+	}
+
+	.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);
+		}
+
+		.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;
+			}
+		}
+	}
+</style>

+ 459 - 0
src/pages/main/officialAccount/officialAccountadd.vue

@@ -0,0 +1,459 @@
+<template>
+	<div>
+		<div class="container">
+			<el-form :model="infolist" ref="infolist" :rules="rules" class="container-box">
+				<h2 style="display: block;margin-bottom: 20px;">公众号图文协推资料发起</h2>
+				<div style="height: calc(100% - 160px);overflow-y: scroll;">
+					<div class="info-line">
+						<el-form-item prop="taskName">
+							<span>任务名称</span>
+							<el-input v-model="infolist.taskName" placeholder="任务名称" :disabled="disableStatus">
+							</el-input>
+						</el-form-item>
+
+						<el-form-item>
+							<span>推送渠道</span>
+							<el-input v-model="infolist.channel" placeholder="推送渠道" :disabled="disableStatus">
+							</el-input>
+						</el-form-item>
+						<el-form-item>
+							<span>推送时间</span>
+							<el-date-picker v-model="infolist.time" type="date" placeholder="推送时间">
+							</el-date-picker>
+						</el-form-item>
+						<el-form-item>
+							<span>推送标题</span>
+							<el-input v-model="infolist.tit" placeholder="推送标题" :disabled="disableStatus"></el-input>
+						</el-form-item>
+						<el-form-item>
+							<span>推送摘要</span>
+							<el-input v-model="infolist.pushAbstract" placeholder="推送摘要" :disabled="disableStatus">
+							</el-input>
+						</el-form-item>
+						<el-form-item>
+							<span>原文链接</span>
+							<el-input v-model="infolist.original" placeholder="原文链接" :disabled="disableStatus">
+							</el-input>
+						</el-form-item>
+					</div>
+
+					<el-form-item prop="regionCode" class="info-line online">
+						<span>落实单位</span>
+						<el-select :popper-append-to-body="false" v-model="infolist.compList" placeholder="落实单位"
+							multiple @change="chocomp">
+							<el-option v-for="(item,index) in regionOpt" :key="index" :label="item.l"
+								:value="item.o">
+							</el-option>
+						</el-select>
+					</el-form-item>
+					<el-form-item class="info-line online">
+						<span>任务说明</span>
+						<el-input v-model="infolist.remark" placeholder="任务说明" type="textarea" :rows="3"></el-input>
+					</el-form-item>
+					<div style="padding-left: 80px">
+						<myUpload @uploadBack="uploadBack" :fileInfo="fileInfo" :fileList="fileInfo.fileList">
+						</myUpload>
+					</div>
+				</div>
+				<div class="t-footer">
+					<el-button type="primary" @click="checkexa = true">确 定</el-button>
+					<el-button @click="dialogCli(1)">取 消</el-button>
+				</div>
+			</el-form>
+		</div>
+		<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;">
+					<el-button type="primary" @click="dialogCli(2)">确 定</el-button>
+					<el-button @click="checkexa = false">取 消</el-button>
+				</div>
+			</div>
+		</el-dialog>
+	</div>
+</template>
+<script>
+	import mySearch from "../../../components/search.vue";
+	import myUpload from "../../../components/upload.vue";
+	import deptTreeOnly from "../../../components/deptTreeOnly.vue"
+
+	export default {
+		components: {
+			mySearch,
+			myUpload,
+			deptTreeOnly
+		},
+		data() {
+			const taskName = (rule, value, callback) => {
+				if (!this.infolist.taskName) {
+					callback(new Error('不能为空'))
+				} else {
+					callback()
+				}
+			}
+			return {
+				rules: {
+					taskName: [{
+						required: true,
+						trigger: 'blur',
+						validator: taskName
+					}],
+				},
+				fullscreen: false,
+				tableData: [{}],
+				disableStatus: false,
+				infolist: {},
+				terminal: '',
+				userInfo: {},
+				params: {},
+				attList: [],
+				//
+				options: [],
+				regionOpt: [],
+				fileInfo: {
+					limit: 5,
+					url: '/market/cmkAttachInfo/mkEmscnpl/upload',
+					fileList: []
+				},
+				company: [],
+				checkexa: false,
+				treeListonly: {},
+				defaultList: [],
+				closeList: false,
+				depttype: 0
+			}
+		},
+		methods: {
+			deletes() {
+				this.treeListonly = {};
+				this.closeList = !this.closeList;
+			},
+			treeCheckonly(v) {
+				this.treeListonly = v;
+			},
+			chocomp(v) {
+				this.company = [];
+				for (let i = 0; i < this.regionOpt.length; i++) {
+					for (let j = 0; j < v.length; j++) {
+						if (this.regionOpt[i].o == v[j]) {
+							let x = {};
+							x.approvalNo = '';
+							x.approvalName = '';
+							x.deptNo = this.regionOpt[i].o;
+							x.compName = this.regionOpt[i].l;
+							this.company.push(x)
+						}
+					}
+				}
+				console.log(this.company)
+			},
+			//添加
+			dialogCli(v) {
+				if (v === 1) {
+					this.fileInfo.fileList = [];
+					this.infolist = {};
+					this.checkexa = false;
+					return
+				}
+				let _this = this;
+				let info = {};
+				this.infolist.time = _this.$formatDate(this.infolist.time, "YYYY-MM-DD HH:mm:ss");
+				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;
+				this.infolist.compList = this.company;
+				this.infolist.directorNo = this.treeListonly.leaderAuditNo;
+				this.infolist.directorName = this.treeListonly.leaderAuditName;
+				this.infolist.attList = this.attList;
+				this.infolist.sts = '1';
+				this.infolist.stsDesc = '待审核';
+				this.submitInfo("/market/cemscnpl/add");
+			},
+			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: this.infolist,
+						}).then((res) => {
+							if (res.data.result === 1) {
+								_this.$message({
+									message: res.data.desc,
+									type: 'error'
+								});
+							} else {
+								_this.$message({
+									message: '成功',
+									type: 'success'
+								});
+								_this.dialogCli(1);
+							}
+
+						});
+					}
+				})
+			},
+			getUser() {
+				this.userInfo = JSON.parse(window.sessionStorage.userInfo);
+			},
+			uploadBack(v) {
+				this.attList = v;
+			},
+			getRegion() {
+				this.$http({
+					url: "/sysmgr/sysdept/queryList",
+					method: "post",
+					headers: {
+						"Content-Type": "application/json",
+					},
+					data: {
+						 "initials":"市场经营部",
+						 "orglevel": "2"
+					},
+				}).then((res) => {
+					this.regionOpt = res.data;
+				});
+			}
+		},
+		mounted() {
+			this.getUser();
+			this.getRegion();
+		},
+		created() {
+
+		}
+	}
+</script>
+<style scoped lang="scss">
+	.img-box {
+		height: calc(100vh - 240px);
+		overflow-y: scroll;
+
+		.boximg {
+			display: flex;
+			flex-wrap: wrap;
+			margin-top: 20px;
+
+			div {
+				display: inline-block;
+				width: 18%;
+				margin-right: 2%;
+				margin-bottom: 20px;
+				overflow: hidden;
+				border: 1px solid #ddd;
+				border-radius: 3px;
+				background: #fff;
+				position: relative;
+				height: 100px;
+
+				img {
+					width: 100%;
+					position: absolute;
+					top: 0;
+					bottom: 0;
+					margin: auto;
+					// height: 100%;
+				}
+
+			}
+		}
+	}
+
+	.boximgc {
+		display: flex;
+		flex-wrap: wrap;
+		width: calc(100% - 80px) !important;
+		margin-left: 80px;
+
+		div {
+			display: inline-block;
+			width: 18% !important;
+			margin-right: 2%;
+			margin-bottom: 20px;
+			overflow: hidden;
+			border: 1px solid #ddd;
+			border-radius: 3px;
+			background: #fff;
+			position: relative;
+			height: 100px;
+
+			img {
+				width: 100%;
+				position: absolute;
+				top: 0;
+				bottom: 0;
+				margin: auto;
+				// height: 100%;
+			}
+
+		}
+	}
+
+	.typebox {
+		div {
+			border: 1px solid #ddd;
+			border-top: transparent;
+
+			span {
+				display: inline-block;
+				width: 20%;
+				line-height: 30px;
+				padding: 10px;
+				vertical-align: top;
+			}
+
+			.big {
+				width: 35%;
+				// background: #f4f4f4;
+			}
+
+			.small {
+				width: 5%;
+				text-align: center;
+				// border-right: 1px solid #ddd;
+			}
+
+			.gys {
+				width: 40%;
+			}
+		}
+	}
+
+	.t-footer {
+		text-align: right;
+		padding-right: 20px;
+		margin-top: 20px;
+	}
+
+	.onetab {
+		padding: 20px;
+		height: calc(100% - 180px);
+	}
+
+	.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);
+		}
+
+		.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;
+		    }
+		}
+	}
+</style>

+ 10 - 0
src/pages/main/weeklyReport/index.vue

@@ -0,0 +1,10 @@
+<template>
+  <div class="container">
+    <iframe
+      height="100%"
+      width="100%"
+      src="/static/views/weeklyReport.html"
+      frameborder="0"
+    ></iframe>
+  </div>
+</template>

+ 24 - 0
src/router/index.js

@@ -10,6 +10,30 @@ const routes = [{
     redirect: '/leader',
     children: [
         {
+            meta: { name:  '公众号图文协推', keepAlive: false },
+            path: '/officialAccount',
+            name: 'officialAccount',
+            component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/officialAccount/index.vue'], resolve)
+        },
+		{
+            meta: { name:  '员工周报', keepAlive: false },
+            path: '/weeklyReport',
+            name: 'weeklyReport',
+            component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/weeklyReport/index.vue'], resolve)
+        },
+		{
+            meta: { name:  '经分会部署工作', keepAlive: false },
+            path: '/ecClubWork',
+            name: 'ecClubWork',
+            component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/ecClubWork/index.vue'], resolve)
+        },
+		{
+            meta: { name:  '公众号图文协推资料下发', keepAlive: false },
+            path: '/officialAccountadd',
+            name: 'officialAccountadd',
+            component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/officialAccount/officialAccountadd.vue'], resolve)
+        },
+		{
             meta: { name:  '广告宣传管理', keepAlive: false },
             path: '/advertising',
             name: 'advertising',

+ 2 - 2
vue.config.js

@@ -94,8 +94,8 @@ module.exports = {
                 // target: 'http://192.168.2.149:9600',
                 // target: 'http://10.64.42.70:8088/',
                 // target: 'http://114.215.71.182:29600',
-                target: 'http://10.230.26.15:8000/spfm',
-                // target: 'http://192.168.2.143:9600/',
+                // target: 'http://10.230.26.15:8000/spfm',
+                target: 'http://192.168.2.146:9600/',
                 // target: 'http://192.168.2.170:9600/',
                 // target: 'http://192.168.2.169:9600/',
                 changeOrigin: true