Ver código fonte

家庭成员

liyuanpeng 3 anos atrás
pai
commit
b90b97af4d

Diferenças do arquivo suprimidas por serem muito extensas
+ 289 - 0
public/static/views/inperson.html


+ 64 - 0
src/components/deptTreeP.vue

@@ -0,0 +1,64 @@
+<template>
+    <div class="treebox">
+        <el-tree ref="tree" @node-click="handleCheckChange" :data="treeList" node-key="o"
+            :default-checked-keys="defaultListc" :default-expanded-keys="defaultList"></el-tree>
+    </div>
+</template>
+
+<script>
+    export default {
+        props: ["defaultList","type"],
+        data() {
+            return {
+                treeList: [],
+                opt: [],
+                defaultProps: {
+                    children: 'children',
+                    label: 'label'
+                },
+                defaultListc:[]
+            };
+        },
+        methods: {
+            getTree(v) {
+                this.$http({
+                    url: "/sysmgr/csysdept/queryAllList",
+                    method: "post",
+                    headers: {
+                        "Content-Type": "application/json",
+                    },
+                    data: {
+                        parentorgid: v
+                    },
+                }).then((res) => {
+                    this.treeList = res.data;
+                });
+            },
+            handleCheckChange(v) {
+                let opt = [{
+					id:v.id,
+					o:v.o,
+					ou:v.ou,
+					displayname:v.displayname
+				}];
+                this.$emit("treeCheck",opt)
+            },
+        },
+        mounted() {},
+        created() {
+            this.getTree();
+            this.defaultListc = this.defaultList;
+        },
+        watch:{
+            type(){
+                this.defaultListc = this.defaultList;
+            }
+        }
+    };
+</script>
+
+<style scoped lang="scss">
+    .treebox {
+        border: 1px solid #ddd;
+    }
+</style>

+ 1 - 2
src/pages/main/advReleaseAppro/index.vue

@@ -659,9 +659,8 @@
 							    window.URL.revokeObjectURL(href)
 							}
 						});
-					}else{
-						this.submitInfo("/bpm/api/submitTask", param);
 					}
+					this.submitInfo("/bpm/api/submitTask", param);
 				}
 			},
 			//添加

+ 10 - 2
src/pages/main/advReleaseAppro/outdoors.vue

@@ -146,11 +146,19 @@
 					this.advPriceSum += this.infodata[i].pubPrice * 1;
 					this.advDiscountSum += this.infodata[i].discountPrice;
 				}
+				if(!this.taxRate){
+					this.$message({
+						message: '请先选择供应商!',
+						type: 'error'
+					});
+					return
+				}
 				this.contractAdvCost = (this.advDiscountSum - this.otherDiscount) / (this.taxRate.split("%")[0]*1 + 100) * 100;
 				this.contractAdvTax = this.contractAdvCost*(this.taxRate.split("%")[0]*1)/100;
 				this.contractAdvCost = Math.round(this.contractAdvCost * 100) / 100;
 				this.contractAdvTax = Math.round(this.contractAdvTax * 100) / 100;
 				this.allSum = this.contractAdvCost + this.contractAdvTax;
+				this.allSum = Math.round(this.allSum * 100) / 100;
 			},
 			gettype(){
 				this.$http({
@@ -168,8 +176,8 @@
 			},
 			getname(v){
 				for (let i = 0; i < this.mediaType.length; i++) {
-					if(this.mediaType[i].mediaTypeCode == v.row.mediaTypeCode){
-						this.infodata[v.$index].mediaTypeName = this.mediaType[i].mediaTypeName
+					if(this.mediaType[i].dataCode == v.row.mediaTypeCode){
+						this.infodata[v.$index].mediaTypeName = this.mediaType[i].dataName
 					}
 				}
 			}

+ 2 - 2
src/pages/main/cooOperation/index.vue

@@ -55,7 +55,7 @@
 					</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>
@@ -110,7 +110,7 @@
 
 					<el-form-item class="info-line online" v-if="vision == '审批'">
 						<span>审批说明</span>
-						<el-input v-model="remark" placeholder="审批说明" type="textarea" :rows="3"
+						<el-input v-model="remark" placeholder="审批说明" type="textarea" :autosize="{ minRows: 4, maxRows: 10}"
 							:disabled="titname == '查看'">
 						</el-input>
 					</el-form-item>

+ 723 - 0
src/pages/main/integral/index.vue

@@ -0,0 +1,723 @@
+<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="groupName">
+							<span>拟稿部门</span>
+							<el-input v-model="infolist.groupName" placeholder="拟稿部门" disabled>
+							</el-input>
+						</el-form-item>
+						<el-form-item prop="loginName">
+							<span>拟稿人</span>
+							<el-input v-model="infolist.loginName" placeholder="拟稿人" disabled>
+							</el-input>
+						</el-form-item>
+						<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="contactWay">
+							<span>联系方式</span>
+							<el-input v-model="infolist.contactWay" placeholder="联系方式" :disabled="disableStatus" type="number">
+							</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.applyReason" placeholder="申请原因" type="textarea" :rows="3"
+							:disabled="disableStatus">
+						</el-input>
+					</el-form-item>
+
+					<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="complainNo" label="投诉流水号">
+								<template slot-scope="scope">
+									<el-input v-model="scope.row.complainNo" :disabled="titname != '添加'&&vision != '流程发起'"></el-input>
+								</template>
+							</el-table-column>
+							<el-table-column prop="scoreMobile" label="补发积分手机号">
+								<template slot-scope="scope">
+									<el-input v-model="scope.row.scoreMobile" :disabled="titname != '添加'&&vision != '流程发起'"></el-input>
+								</template>
+							</el-table-column>
+							<el-table-column prop="scoreNum" label="补发积分数量">
+								<template slot-scope="scope">
+									<el-input v-model="scope.row.scoreNum" :disabled="titname != '添加'&&vision != '流程发起'"></el-input>
+								</template>
+							</el-table-column>
+							<el-table-column prop="scoreIndate" label="积分有效期(天)">
+								<template slot-scope="scope">
+									<el-input v-model="scope.row.scoreIndate" :disabled="titname != '添加'&&vision != '流程发起'"></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>
+					
+					<div style="padding:0 20px 0 0;margin-bottom: 20px;" v-if="disableStatus">
+						<uploadDown :datalist="datalist" :dialogStatus="uploadstatus"></uploadDown>
+					</div>
+					<div 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" :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: {
+					groupName: "",
+					loginName: ""
+				},
+				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: '726617298074660864',//726618401046589440地市
+				remark: '',
+				visionsts: '1',
+				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;
+					this.$http({
+						url: "/sysmgr/csysuserinfo/queryUserInfoByLoginNo",
+						method: "post",
+						headers: {
+							"Content-Type": "application/json",
+						},
+						data: {},
+					}).then((res) => {
+						this.infolist.groupName = res.data.groupName;
+						this.infolist.loginName = res.data.loginName;
+					});
+					this.$http({
+						url: "/sysmgr/csysdept/queryGroupListByLoginNo",
+						method: "post",
+						headers: {
+							"Content-Type": "application/json",
+						},
+						data: {},
+					}).then((res) => {
+						console.log(res.data[0].l)
+					});
+					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 = '流程发起';
+					} else if (res.data.taskList[res.data.taskList.length - 1].taskName == '下发积分') {
+						this.vision = '下发积分';
+					} else {
+						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),
+							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].complainNo || this.infodatas[i].scoreMobile || this.infodatas[i].scoreNum || this.infodatas[i].scoreIndate) {
+						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);
+							}
+
+						});
+					}
+				})
+			},
+			//流程
+			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>

+ 5 - 0
src/pages/main/leader/processInitiation.vue

@@ -244,6 +244,11 @@
 					top: 0;
 					right: 40px;
 				}
+				
+				.icon{
+					width: 100%!important;
+					height: 100%!important;
+				}
 			}
 		}
 	}

+ 355 - 0
src/pages/main/memberFamily/Completed.vue

@@ -0,0 +1,355 @@
+<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>
+			</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="supplierName" label="名称">
+					</el-table-column>
+					<el-table-column prop="supplierCode" label="统计周期">
+					</el-table-column>
+					<el-table-column prop="contractName" label="填报范围">
+						<template slot-scope="scope">
+							<span @click="jumpfw">-</span>
+						</template>
+					</el-table-column>
+					<el-table-column prop="frameSum" label="分发范围">
+						<template slot-scope="scope">
+							<span @click="jumpjd">-</span>
+						</template>
+					</el-table-column>
+					<el-table-column prop="surplusSum" label="分发负责人">
+					</el-table-column>
+					<el-table-column prop="taxRate" label="发起人">
+					</el-table-column>
+				</el-table>
+				<el-pagination class="pageBox" @current-change="currchange" layout="prev, pager, next" background
+					:total="total">
+				</el-pagination>
+			</div>
+		</div>
+		<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'
+
+	export default {
+		components: {
+			mySearch,
+			myMessage,
+			toolList
+		},
+		data() {
+			const supplierName = (rule, value, callback) => {
+				if (!this.infolist.supplierName) {
+					callback(new Error('不能为空'))
+				} else {
+					callback()
+				}
+			}
+			return {
+				rules: {
+					supplierName: [{
+						required: true,
+						trigger: 'blur',
+						validator: supplierName
+					}],
+				},
+				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,
+			}
+		},
+		methods: {
+			jumpfw() {
+				this.$router.push({
+					path: "/reportProgress",
+				});
+				this.setabList("填报进度跟踪", "/reportProgress");
+			},
+			jumpjd() {
+				this.$router.push({
+					path: "/speedOfProgress",
+				});
+				this.setabList("进度跟踪", "/speedOfProgress");
+			},
+			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));
+			},
+			closedia() {
+				this.infolist = {};
+				this.dialogStatus = false;
+			},
+			//搜索数据
+			searchInfo(v) {
+				this.params = {};
+				v[0] ? this.params.supplierName = 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/cAdvPubSupplier/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;
+					// this.loading = false;
+				});
+			},
+			// 分页
+			currchange(v) {
+				this.pageSize = v;
+				this.getList(this.params, this.pageSize);
+			},
+			//申请
+			dialogCheck(v, n) {
+				this.dialogStatus = true;
+				this.infolist = Object.assign({}, n);
+				if (v === 1) {
+					this.titname = '查看';
+					this.disableStatus = true;
+					return
+				} else if (v === 2) {
+					this.titname = '修改';
+					this.disableStatus = false;
+				} else if (v === 3) {
+					this.titname = '添加';
+					this.disableStatus = false;
+				}
+				this.infolist.opNo = this.userInfo.loginNo;
+				this.infolist.opName = this.userInfo.loginName;
+			},
+			//添加
+			dialogCli(v) {
+				if (v === 1) {
+					this.infolist = {};
+					this.dialogStatus = false;
+					return
+				} else {
+					this.infolist.opTime = this.$formatDate(new Date(), "YYYY-MM-DD HH:mm:ss");
+					this.infolist.endTime = this.$formatDate(this.infolist.endTime, "YYYY-MM-DD HH:mm:ss");
+					if (this.titname === '添加') {
+						this.submitInfo("/market/cAdvPubSupplier/add");
+					} else if (this.titname === '修改') {
+						this.submitInfo("/market/cAdvPubSupplier/update", v);
+					}
+				}
+			},
+			submitInfo(u) {
+				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: this.infolist,
+						}).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);
+							}
+
+						});
+					}
+				})
+			},
+			closeMessage(v) {
+				this.centerDialogVisible = false;
+				let _this = this;
+				if (v === 1) {
+					_this.$http({
+						url: "/market/cAdvPubSupplier/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);
+
+			}
+		},
+		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>

+ 239 - 0
src/pages/main/memberFamily/dataStatistics.vue

@@ -0,0 +1,239 @@
+<template>
+	<fullscreen :fullscreen.sync="fullscreen" class="container">
+		<div class="container-box">
+			<div class="dc">
+				<el-button type="primary">导出</el-button>
+				<span>共{{num}}条数据</span>
+				<span>更新日期{{time}}</span>
+			</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"
+					@selection-change="handleSelectionChange">
+					<el-table-column type="selection" width="55">
+					</el-table-column>
+					<el-table-column prop="supplierName" label="省/地市名称">
+					</el-table-column>
+					<el-table-column prop="supplierCode" label="分发负责人">
+					</el-table-column>
+					<el-table-column prop="contractName" label="员工总数">
+					</el-table-column>
+					<el-table-column label="操作" width="160px" align="center">
+						<template slot-scope="scope">
+							<el-button size="mini" type="primary" @click="choseperson">查看</el-button>
+						</template>
+					</el-table-column>
+				</el-table>
+			</div>
+		</div>
+	</fullscreen>
+
+</template>
+<script>
+	import mySearch from "../../../components/search.vue";
+	import myMessage from "../../../components/myMessage.vue"
+	import toolList from '../../../components/toolList'
+
+	export default {
+		components: {
+			mySearch,
+			myMessage,
+			toolList
+		},
+		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,
+				time: '',
+				num: '',
+			}
+		},
+		methods: {
+			choseperson(){
+				this.$router.push({
+					path: "/employeeInfo",
+				});
+				this.setabList("员工信息", "/employeeInfo");
+			},
+			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));
+			},
+			handleSelectionChange(val) {
+				console.log(val)
+			},
+			//搜索数据
+			searchInfo(v) {
+				this.params = {};
+				v[0] ? this.params.supplierName = 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/cAdvPubSupplier/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;
+					// this.loading = false;
+				});
+			},
+			// 分页
+			currchange(v) {
+				this.pageSize = v;
+				this.getList(this.params, this.pageSize);
+			},
+			//申请
+			dialogCheck(v, n) {
+				this.dialogStatus = true;
+				this.infolist = Object.assign({}, n);
+				if (v === 1) {
+					this.titname = '查看';
+					this.disableStatus = true;
+					return
+				} else if (v === 2) {
+					this.titname = '修改';
+					this.disableStatus = false;
+				} else if (v === 3) {
+					this.titname = '添加';
+					this.disableStatus = false;
+				}
+				this.infolist.opNo = this.userInfo.loginNo;
+				this.infolist.opName = this.userInfo.loginName;
+			},
+			//功能栏
+			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();
+		},
+		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>

+ 510 - 0
src/pages/main/memberFamily/empInfoFilling.vue

@@ -0,0 +1,510 @@
+<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>
+			</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="supplierName" label="名称">
+					</el-table-column>
+					<el-table-column prop="supplierCode" label="统计周期">
+					</el-table-column>
+					<el-table-column prop="taxRate" label="发起人">
+					</el-table-column>
+					<el-table-column prop="supplierName" label="状态">
+					</el-table-column>
+					<el-table-column prop="supplierCode" label="最后一次提交时间">
+					</el-table-column>
+					<el-table-column label="操作" width="160px" align="center">
+						<template slot-scope="scope">
+							<el-button size="mini" type="primary" @click="dialogCheck(2,scope.row)">编辑</el-button>
+							<el-button size="mini" type="danger" @click="dialogCheck(1,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="员工信息" :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>
+
+				<el-table class="com-table" ref="multipleTable" :data="infodata" tooltip-effect="dark"
+					size="small" border style="width: 100%">
+
+					<el-table-column prop="memberRelation" label="成员关系" width="200">
+						<template slot-scope="scope">
+							<el-select clearable v-model="scope.row.memberRelation" :disabled="disableStatus">
+								<el-option v-for="items in relationopt" :key="items.dataCode" :label="items.dataName"
+									:value="items.dataCode">
+								</el-option>
+							</el-select>
+						</template>
+					</el-table-column>
+					<el-table-column prop="memberName" label="成员姓名" width="200">
+						<template slot-scope="scope">
+							<el-input v-model="scope.row.memberName" :disabled="disableStatus"></el-input>
+						</template>
+					</el-table-column>
+					<el-table-column prop="bornDate" label="成员出生日期" width="200">
+						<template slot-scope="scope">
+							<el-input v-model="scope.row.bornDate" :disabled="disableStatus"></el-input>
+						</template>
+					</el-table-column>
+					<el-table-column prop="memberSex" label="成员性别" width="200">
+						<template slot-scope="scope">
+							<el-select clearable v-model="scope.row.memberSex" :disabled="disableStatus">
+								<el-option v-for="items in sexopt" :key="items.dataCode" :label="items.dataName"
+									:value="items.dataCode">
+								</el-option>
+							</el-select>
+						</template>
+					</el-table-column>
+					<el-table-column prop="idCard" label="成员身份证号" width="200">
+						<template slot-scope="scope">
+							<el-input v-model="scope.row.idCard" :disabled="disableStatus"></el-input>
+						</template>
+					</el-table-column>
+					<el-table-column prop="memberEdu" label="成员学历" width="200">eduBack
+						<template slot-scope="scope">
+							<el-select clearable v-model="scope.row.memberEdu" :disabled="disableStatus">
+								<el-option v-for="items in eduBackopt" :key="items.dataCode" :label="items.dataName"
+									:value="items.dataCode">
+								</el-option>
+							</el-select>
+						</template>
+					</el-table-column>
+					<el-table-column prop="partyGroup" label="成员政治面貌" width="200">
+						<template slot-scope="scope">
+							<el-select clearable v-model="scope.row.partyGroup" :disabled="disableStatus">
+								<el-option v-for="items in partyGroupopt" :key="items.dataCode" :label="items.dataName"
+									:value="items.dataCode">
+								</el-option>
+							</el-select>
+						</template>
+					</el-table-column>
+					<el-table-column prop="memberNation" label="成员民族信息" width="200">
+						<template slot-scope="scope">
+							<el-select clearable v-model="scope.row.memberNation" :disabled="disableStatus">
+								<el-option v-for="items in nationopt" :key="items.dataCode" :label="items.dataName"
+									:value="items.dataCode">
+								</el-option>
+							</el-select>
+						</template>
+					</el-table-column>
+					<el-table-column prop="workUnit" label="成员工作单位" width="200">
+						<template slot-scope="scope">
+							<el-input v-model="scope.row.workUnit" :disabled="disableStatus"></el-input>
+						</template>
+					</el-table-column>
+					<el-table-column prop="workDuty" label="成员职位职务" width="200">
+						<template slot-scope="scope">
+							<el-input v-model="scope.row.workDuty" :disabled="disableStatus"></el-input>
+						</template>
+					</el-table-column>
+					<el-table-column prop="emerContact" label="是否为紧急联系人" width="200">
+						<template slot-scope="scope">
+							<el-input v-model="scope.row.emerContact" :disabled="disableStatus"></el-input>
+						</template>
+					</el-table-column>
+					<el-table-column prop="memberTel" label="成员联系电话" width="200">
+						<template slot-scope="scope">
+							<el-input v-model="scope.row.memberTel" :disabled="disableStatus"></el-input>
+						</template>
+					</el-table-column>
+					<el-table-column prop="interiorStaff" label="是否移动系统内工作" width="200">
+						<template slot-scope="scope">
+							<el-input v-model="scope.row.interiorStaff":disabled="disableStatus"></el-input>
+						</template>
+					</el-table-column>
+					<el-table-column prop="staffName" label="系统内员工" width="200">
+						<template slot-scope="scope">
+							<el-input v-model="scope.row.staffName" :disabled="disableStatus"></el-input>
+						</template>
+					</el-table-column>
+					<el-table-column prop="isMove" label="是否移居海外" width="200">
+						<template slot-scope="scope">
+							<el-input v-model="scope.row.isMove" :disabled="disableStatus"></el-input>
+						</template>
+					</el-table-column>
+					<el-table-column prop="immiType" label="移居类型" width="200">
+						<template slot-scope="scope">
+							<el-select clearable v-model="scope.row.immiType" :disabled="disableStatus">
+								<el-option v-for="items in immiTypeopt" :key="items.dataCode" :label="items.dataName"
+									:value="items.dataCode">
+								</el-option>
+							</el-select>
+						</template>
+					</el-table-column>
+					<el-table-column prop="memberAddress" label="成员联系地址" width="200">
+						<template slot-scope="scope">
+							<el-input v-model="scope.row.memberAddress" :disabled="disableStatus"></el-input>
+						</template>
+					</el-table-column>
+					<el-table-column label="操作" width="120px" align="center" v-if="!disableStatus" fixed="right">
+						<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 slot="footer" class="dialog-footer myfooter">
+		            <el-button type="primary" @click="dialogCli(2)">确 定</el-button>
+		            <el-button @click="dialogCli(1)">取 消</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'
+
+	export default {
+		components: {
+			mySearch,
+			myMessage,
+			toolList
+		},
+		data() {
+			const supplierName = (rule, value, callback) => {
+				if (!this.infolist.supplierName) {
+					callback(new Error('不能为空'))
+				} else {
+					callback()
+				}
+			}
+			return {
+				rules: {
+					supplierName: [{
+						required: true,
+						trigger: 'blur',
+						validator: supplierName
+					}],
+				},
+				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,
+				infodata:[{}],
+				nationopt:[],
+				relationopt:[],
+				sexopt:[],
+				eduBackopt:[],
+				partyGroupopt:[],
+				immiTypeopt:[],
+			}
+		},
+		methods: {
+			choline(v, n) {
+				if (v == 1) {
+					this.infodata.push({costAll:0})
+				} else {
+					this.infodata.splice(n.$index, 1)
+				}
+			},
+			jumpfw() {
+				this.$router.push({
+					path: "/reportProgress",
+				});
+				this.setabList("填报进度跟踪", "/reportProgress");
+			},
+			jumpjd() {
+				this.$router.push({
+					path: "/speedOfProgress",
+				});
+				this.setabList("进度跟踪", "/speedOfProgress");
+			},
+			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));
+			},
+			closedia() {
+				this.infolist = {};
+				this.dialogStatus = false;
+			},
+			//搜索数据
+			searchInfo(v) {
+				this.params = {};
+				v[0] ? this.params.supplierName = 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/cAdvPubSupplier/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;
+					// this.loading = false;
+				});
+			},
+			// 分页
+			currchange(v) {
+				this.pageSize = v;
+				this.getList(this.params, this.pageSize);
+			},
+			//申请
+			dialogCheck(v, n) {
+				this.dialogStatus = true;
+				if (v === 1) {
+					this.titname = '查看';
+					this.disableStatus = true;
+					return
+				} else if (v === 2) {
+					this.titname = '修改';
+					this.disableStatus = false;
+				}
+			},
+			//添加
+			dialogCli(v) {
+				if (v === 1) {
+					this.infolist = {};
+					this.dialogStatus = false;
+					return
+				} else {
+					this.infolist.opTime = this.$formatDate(new Date(), "YYYY-MM-DD HH:mm:ss");
+					this.infolist.endTime = this.$formatDate(this.infolist.endTime, "YYYY-MM-DD HH:mm:ss");
+					if (this.titname === '添加') {
+						this.submitInfo("/market/cAdvPubSupplier/add");
+					} else if (this.titname === '修改') {
+						this.submitInfo("/market/cAdvPubSupplier/update", v);
+					}
+				}
+			},
+			submitInfo(u) {
+				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: this.infolist,
+						}).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);
+							}
+
+						});
+					}
+				})
+			},
+			closeMessage(v) {
+				this.centerDialogVisible = false;
+				let _this = this;
+				if (v === 1) {
+					_this.$http({
+						url: "/market/cAdvPubSupplier/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: "/sysmgr/cfgDataDicts/queryMap",
+				    method: "post",
+				    headers: {
+				        "Content-Type": "application/json",
+				    },
+				    data: {
+				        dictCodePks: 'nation,relation,sex,eduBack,partyGroup,immiType'
+				    },
+				}).then((res) => {
+				    this.nationopt = res.data.body.nation;
+				    this.relationopt = res.data.body.relation;
+				    this.sexopt = res.data.body.sex;
+				    this.eduBackopt = res.data.body.eduBack;
+				    this.partyGroupopt = res.data.body.partyGroup;
+				    this.immiTypeopt = res.data.body.immiType;
+				});
+			}
+		},
+		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>

+ 432 - 0
src/pages/main/memberFamily/employeeInfo.vue

@@ -0,0 +1,432 @@
+<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 type="primary">导出</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" @selection-change="handleSelectionChange">
+					<el-table-column type="selection" width="55">
+					</el-table-column>
+                    <el-table-column prop="supplierName" label="地市公司名称">
+                    </el-table-column>
+                    <el-table-column prop="supplierCode" label="区县名称">
+                    </el-table-column>
+					<el-table-column prop="contractName" label="员工姓名">
+                    </el-table-column>
+					<el-table-column prop="frameSum" label="成员姓名">
+                    </el-table-column>
+					<el-table-column prop="surplusSum" label="亲属关系">
+					</el-table-column>
+					<el-table-column prop="taxRate" label="成员关系">
+					</el-table-column>
+					<el-table-column prop="supplierName" label="成员出生日期">
+                    </el-table-column>
+                    <el-table-column prop="supplierCode" label="成员性别">
+                    </el-table-column>
+					<el-table-column prop="contractName" label="成员身份证号">
+                    </el-table-column>
+					<el-table-column prop="frameSum" label="成员学历">
+                    </el-table-column>
+					<el-table-column prop="surplusSum" label="成员政治面貌">
+					</el-table-column>
+					<el-table-column prop="taxRate" label="成员民族信息">
+					</el-table-column>
+					<el-table-column prop="surplusSum" label="成员工作单位">
+					</el-table-column>
+					<el-table-column prop="taxRate" label="成员职位职务">
+					</el-table-column>
+					<el-table-column prop="surplusSum" label="是否为紧急联系人">
+					</el-table-column>
+					<el-table-column prop="taxRate" label="成员联系电话">
+					</el-table-column>
+					<el-table-column prop="surplusSum" label="是否移动系统内工作">
+					</el-table-column>
+					<el-table-column prop="taxRate" label="系统内员工">
+					</el-table-column>
+					<el-table-column prop="surplusSum" label="是否为紧急联系人">
+					</el-table-column>
+					<el-table-column prop="taxRate" label="是否移居海外">
+					</el-table-column>
+					<el-table-column prop="surplusSum" label="移居类型">
+					</el-table-column>
+					<el-table-column prop="taxRate" label="成员联系地址">
+					</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">
+            <div v-loading="loadinged">
+                <el-form :model="infolist" ref="infolist" :rules="rules">
+                    <div class="info-line">
+                        <el-form-item prop="supplierName">
+                            <span>供应商</span>
+                            <el-input v-model="infolist.supplierName" placeholder="供应商名称" :disabled="disableStatus"></el-input>
+                        </el-form-item>
+						<el-form-item>
+                            <span>供应商编码</span>
+                            <el-input v-model="infolist.supplierCode" placeholder="供应商编码" :disabled="disableStatus"></el-input>
+                        </el-form-item>
+						<el-form-item>
+						    <span>框架总额</span>
+						    <el-input v-model="infolist.frameSum" placeholder="框架总额" :disabled="disableStatus"></el-input>
+						</el-form-item>
+						<el-form-item>
+						    <span>剩余总额</span>
+						    <el-input v-model="infolist.surplusSum" placeholder="剩余总额" :disabled="disableStatus"></el-input>
+						</el-form-item>
+						<el-form-item>
+						    <span>合同名称</span>
+						    <el-input v-model="infolist.contractName" placeholder="合同名称" :disabled="disableStatus"></el-input>
+						</el-form-item>
+						<el-form-item>
+						    <span>合同税率</span>
+						    <el-input v-model="infolist.taxRate" placeholder="合同税率" :disabled="disableStatus"></el-input>
+						</el-form-item>
+						<el-form-item>
+						    <span>截止时间</span>
+						    <el-date-picker v-model="infolist.endTime" type="date" placeholder="截止时间" :disabled="disableStatus">
+						    </el-date-picker>
+						</el-form-item>
+						<el-form-item>
+						    <span>归属地</span>
+						    <el-input v-model="infolist.homeLocation" placeholder="归属地" disabled></el-input>
+						</el-form-item>
+                    </div>
+                </el-form>
+
+                <div slot="footer" class="dialog-footer myfooter">
+                    <el-button type="primary" @click="dialogCli(2)" v-if="titname !== '查看'">确 定</el-button>
+                    <el-button @click="dialogCli(1)" v-if="titname === '查看'">确 定</el-button>
+                    <el-button @click="dialogCli(1)">取 消</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'
+
+    export default {
+        components: {
+            mySearch,
+            myMessage,
+            toolList
+        },
+        data() {
+            const supplierName = (rule, value, callback) => {
+                if (!this.infolist.supplierName) {
+                    callback(new Error('不能为空'))
+                } else {
+                    callback()
+                }
+            }
+            return {
+                rules: {
+                    supplierName: [{
+                        required: true,
+                        trigger: 'blur',
+                        validator: supplierName
+                    }],
+                },
+                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,
+            }
+        },
+        methods: {
+			handleSelectionChange(val) {
+				console.log(val)
+			},
+			jumpjd(){
+				this.$router.push({
+					path: "/speedOfProgress",
+				});
+				this.setabList("进度跟踪", "/speedOfProgress");
+			},
+			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));
+			},
+            closedia() {
+                this.infolist = {};
+                this.dialogStatus = false;
+            },
+            //搜索数据
+            searchInfo(v) {
+                this.params = {};
+                v[0] ? this.params.supplierName = 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/cAdvPubSupplier/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;
+                    // this.loading = false;
+                });
+            },
+            // 分页
+            currchange(v) {
+                this.pageSize = v;
+                this.getList(this.params, this.pageSize);
+            },
+            //申请
+            dialogCheck(v, n) {
+                this.dialogStatus = true;
+                this.infolist = Object.assign({}, n);
+                if (v === 1) {
+                    this.titname = '查看';
+                    this.disableStatus = true;
+                    return
+                } else if (v === 2) {
+                    this.titname = '修改';
+                    this.disableStatus = false;
+                } else if (v === 3) {
+                    this.titname = '添加';
+                    this.disableStatus = false;
+                }
+                this.infolist.opNo = this.userInfo.loginNo;
+                this.infolist.opName = this.userInfo.loginName;
+            },
+            //添加
+            dialogCli(v) {
+                if (v === 1) {
+                    this.infolist = {};
+                    this.dialogStatus = false;
+                    return
+                } else {
+                    this.infolist.opTime = this.$formatDate(new Date(), "YYYY-MM-DD HH:mm:ss");
+                    this.infolist.endTime = this.$formatDate(this.infolist.endTime, "YYYY-MM-DD HH:mm:ss");
+                    if (this.titname === '添加') {
+                        this.submitInfo("/market/cAdvPubSupplier/add");
+                    } else if (this.titname === '修改') {
+                        this.submitInfo("/market/cAdvPubSupplier/update", v);
+                    }
+                }
+            },
+            submitInfo(u) {
+                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: this.infolist,
+                        }).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);
+                            }
+
+                        });
+                    }
+                })
+            },
+            closeMessage(v) {
+                this.centerDialogVisible = false;
+                let _this = this;
+                if (v === 1) {
+                    _this.$http({
+                        url: "/market/cAdvPubSupplier/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);
+
+            }
+        },
+        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>

+ 421 - 0
src/pages/main/memberFamily/haveInHand.vue

@@ -0,0 +1,421 @@
+<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>
+			</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="woName" label="名称">
+					</el-table-column>
+					<el-table-column prop="supplierCode" label="统计周期">
+						<template slot-scope="scope">
+							<span>{{scope.row.startTime}} - {{scope.row.endTime}}</span>
+						</template>
+					</el-table-column>
+					<el-table-column prop="contractName" label="填报范围">
+						<template slot-scope="scope">
+							<span @click="jumpfw">{{scope.row.fillName}}</span>
+						</template>
+					</el-table-column>
+					<el-table-column prop="frameSum" label="分发范围">
+						<template slot-scope="scope">
+							<span @click="jumpjd">{{scope.row.groupName}}</span>
+						</template>
+					</el-table-column>
+					<el-table-column prop="dutyName" label="分发负责人">
+					</el-table-column>
+					<el-table-column prop="opName" label="发起人">
+					</el-table-column>
+					<el-table-column label="操作" width="160px" align="center">
+						<template slot-scope="scope">
+							<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">
+			<div v-loading="loadinged">
+				<el-form :model="infolist" ref="infolist" :rules="rules">
+					<div class="info-line">
+						<el-form-item prop="supplierName">
+							<span>供应商</span>
+							<el-input v-model="infolist.supplierName" placeholder="供应商名称" :disabled="disableStatus">
+							</el-input>
+						</el-form-item>
+						<el-form-item>
+							<span>供应商编码</span>
+							<el-input v-model="infolist.supplierCode" placeholder="供应商编码" :disabled="disableStatus">
+							</el-input>
+						</el-form-item>
+						<el-form-item>
+							<span>框架总额</span>
+							<el-input v-model="infolist.frameSum" placeholder="框架总额" :disabled="disableStatus">
+							</el-input>
+						</el-form-item>
+						<el-form-item>
+							<span>剩余总额</span>
+							<el-input v-model="infolist.surplusSum" placeholder="剩余总额" :disabled="disableStatus">
+							</el-input>
+						</el-form-item>
+						<el-form-item>
+							<span>合同名称</span>
+							<el-input v-model="infolist.contractName" placeholder="合同名称" :disabled="disableStatus">
+							</el-input>
+						</el-form-item>
+						<el-form-item>
+							<span>合同税率</span>
+							<el-input v-model="infolist.taxRate" placeholder="合同税率" :disabled="disableStatus">
+							</el-input>
+						</el-form-item>
+						<el-form-item>
+							<span>截止时间</span>
+							<el-date-picker v-model="infolist.endTime" type="date" placeholder="截止时间"
+								:disabled="disableStatus">
+							</el-date-picker>
+						</el-form-item>
+						<el-form-item>
+							<span>归属地</span>
+							<el-input v-model="infolist.homeLocation" placeholder="归属地" disabled></el-input>
+						</el-form-item>
+					</div>
+				</el-form>
+
+				<div slot="footer" class="dialog-footer myfooter">
+					<el-button type="primary" @click="dialogCli(2)" v-if="titname !== '查看'">确 定</el-button>
+					<el-button @click="dialogCli(1)" v-if="titname === '查看'">确 定</el-button>
+					<el-button @click="dialogCli(1)">取 消</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'
+
+	export default {
+		components: {
+			mySearch,
+			myMessage,
+			toolList
+		},
+		data() {
+			const supplierName = (rule, value, callback) => {
+				if (!this.infolist.supplierName) {
+					callback(new Error('不能为空'))
+				} else {
+					callback()
+				}
+			}
+			return {
+				rules: {
+					supplierName: [{
+						required: true,
+						trigger: 'blur',
+						validator: supplierName
+					}],
+				},
+				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,
+			}
+		},
+		methods: {
+			jumpfw() {
+				this.$router.push({
+					path: "/reportProgress",
+				});
+				this.setabList("填报进度跟踪", "/reportProgress");
+			},
+			jumpjd() {
+				this.$router.push({
+					path: "/speedOfProgress",
+				});
+				this.setabList("进度跟踪", "/speedOfProgress");
+			},
+			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));
+			},
+			closedia() {
+				this.infolist = {};
+				this.dialogStatus = false;
+			},
+			//搜索数据
+			searchInfo(v) {
+				this.params = {};
+				v[0] ? this.params.supplierName = 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/cMemberWo/queryProvTracePage",
+					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;
+				this.infolist = Object.assign({}, n);
+				if (v === 1) {
+					this.titname = '查看';
+					this.disableStatus = true;
+					return
+				} else if (v === 2) {
+					this.titname = '修改';
+					this.disableStatus = false;
+				} else if (v === 3) {
+					this.titname = '添加';
+					this.disableStatus = false;
+				}
+				this.infolist.opNo = this.userInfo.loginNo;
+				this.infolist.opName = this.userInfo.loginName;
+			},
+			//添加
+			dialogCli(v) {
+				if (v === 1) {
+					this.infolist = {};
+					this.dialogStatus = false;
+					return
+				} else {
+					this.infolist.opTime = this.$formatDate(new Date(), "YYYY-MM-DD HH:mm:ss");
+					this.infolist.endTime = this.$formatDate(this.infolist.endTime, "YYYY-MM-DD HH:mm:ss");
+					if (this.titname === '添加') {
+						this.submitInfo("/market/cAdvPubSupplier/add");
+					} else if (this.titname === '修改') {
+						this.submitInfo("/market/cAdvPubSupplier/update", v);
+					}
+				}
+			},
+			submitInfo(u) {
+				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: this.infolist,
+						}).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);
+							}
+
+						});
+					}
+				})
+			},
+			closeMessage(v) {
+				this.centerDialogVisible = false;
+				let _this = this;
+				if (v === 1) {
+					_this.$http({
+						url: "/market/cAdvPubSupplier/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);
+
+			}
+		},
+		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>

+ 531 - 0
src/pages/main/memberFamily/index.vue

@@ -0,0 +1,531 @@
+<template>
+	<div>
+		<div class="container">
+			<div class="container-box">
+				<div class="adv-type">
+					<div v-for="item in typeList" :key="item.dataCode" @click="advmaterial(item)">
+						<span><i class="el-icon-folder-opened"></i></span>
+						<span>{{item.dataName}}</span>
+					</div>
+				</div>
+				<div class="adv-box">
+					<div class="adv-tit" @click="jumpadv('1')">
+						<i class="el-icon-loading"></i>
+						<span>进行中 </span>
+					</div>
+					<div class="adv-tit" @click="jumpadv('2')">
+						<i class="el-icon-notebook-1"></i>
+						<span>已结束 </span>
+					</div>
+					<div class="adv-tit adv-add" @click="advadd">
+						<i class="el-icon-plus"></i>
+						<span>申请</span>
+					</div>
+				</div>
+			</div>
+		</div>
+
+		<el-dialog title="添加" :visible.sync="dialogStatus" width="50%" :destroy-on-close="true"
+			:modal-append-to-body="false" :close-on-click-modal="false" :fullscreen="true">
+			<el-form :model="infolist" ref="infolist" :rules="rules"
+				style="height: calc(100vh - 180px);overflow-y: scroll;">
+				<el-form-item prop="woName" class="info-line online">
+					<span>统计名称</span>
+					<el-input v-model="infolist.woName" placeholder="统计名称"></el-input>
+				</el-form-item>
+
+				<el-form-item prop="time" class="info-line online">
+					<span>统计周期</span>
+					<el-date-picker v-model="infolist.time" type="daterange"></el-date-picker>
+				</el-form-item>
+				
+				<el-form-item class="info-line online">
+				    <span>填报人</span>
+				    <deptTree v-if="!disableStatus" :closeList="closeList" class="tree" @treeCheck="treeCheck">
+				    </deptTree>
+				    <div :class="!disableStatus?'tree treeUser':'tree treeUserb'">
+				        <p v-for="(item,index) in treeList" :key="index">{{item.receiveName}}
+				            <i @click="deletes(item,index)" class="el-icon-error"></i>
+				        </p>
+				    </div>
+				</el-form-item>
+				<el-form-item class="info-line online">
+				    <span>负责人</span>
+					<div class="tree treeUser" style="width: 30%;margin-right: 1%;">
+					    <p v-for="(item,index) in deptList" :key="index" @click="choseDept(item)">{{item.ou}}</p>
+					</div>
+					<div :class="!disableStatus?'tree treeUser':'tree treeUserb'" style="width: 30%;margin-right: 1%;">
+					    <p v-for="(item,index) in treeListp" :key="index">
+							<span>{{item.ou}}</span>
+							<span class="p-btn" @click="fzperson(item)">负责人</span>
+					        <i @click="deletes(item,index)" class="el-icon-error"></i>
+					    </p>
+					</div>
+					<div :class="!disableStatus?'tree treeUser':'tree treeUserb'" style="width: 30%;">
+					    <p v-for="(item,index) in treeListp" :key="index">{{item.loginNameStr}}</p>
+					</div>
+				</el-form-item>
+			</el-form>
+			<div style="text-align: right;margin-top: 20px">
+				<el-button @click="dialogCli(1)" type="primary">确 定</el-button>
+				<el-button @click="dialogCli(2)">取 消</el-button>
+			</div>
+		</el-dialog>
+		
+		<el-dialog title="选择负责人" :visible.sync="dialogStatusp" width="50%" :destroy-on-close="true"
+			:modal-append-to-body="false" :close-on-click-modal="false">
+			<el-form :model="infolist" ref="infolist" style="height: 50vh;overflow-y: scroll;">
+				<div class="treeUserp">
+				    <p v-for="(item,index) in treeListponly" :key="index" @click="chofz(item)">{{item.loginNameStr}}</p>
+				</div>
+			</el-form>
+		</el-dialog>
+	</div>
+</template>
+<script>
+	import deptTree from "../../../components/deptTreeUser.vue"
+	import deptTreep from "../../../components/deptTreeP.vue"
+	export default {
+		components: {
+			deptTree,
+			deptTreep
+		},
+		data() {
+			const woName = (rule, value, callback) => {
+				if (!this.infolist.woName) {
+					callback(new Error('不能为空'))
+				} else {
+					callback()
+				}
+			}
+			return {
+				rules: {
+					woName: [{
+						required: true,
+						trigger: 'blur',
+						validator: woName
+					}]
+				},
+				typeList: [{
+						dataCode: '1',
+						dataName: '信息填报'
+					},
+					{
+						dataCode: '2',
+						dataName: '信息汇总'
+					},
+				],
+				dialogStatus: false,
+				disableStatus: false,
+				dialogStatusp: false,
+				infolist: {},
+				treeList:[],
+				treeListp:[],
+				treeListponly:[],
+				closeList:[],
+				defaultList:[],
+				depttype:0,
+				fadept:{},
+				deptList:[]
+			}
+		},
+		methods: {
+			dialogCli(v) {
+				let _this = this;
+				if (v === 1) {
+					let param = {};
+					param.woName = this.infolist.woName;
+					this.infolist.time?param.startTime = this.$formatDate(this.infolist.time[0], "YYYY-MM-DD"):'';
+					this.infolist.time?param.endTime = this.$formatDate(this.infolist.time[1], "YYYY-MM-DD"):'';
+					param.dutyList = [];
+					for (let i = 0; i < this.treeListp.length; i++) {
+						param.dutyList.push({
+							dutyNo:this.treeListp[i].loginNoStr,
+							dutyName:this.treeListp[i].loginNameStr,
+							groupId:this.treeListp[i].o,
+							groupName:this.treeListp[i].ou,
+						})
+					}
+					param.fillList = [];
+					for (let i = 0; i < this.treeList.length; i++) {
+						param.fillList.push({
+							fillNo:this.treeList[i].receiveNo,
+							fillName:this.treeList[i].label,
+						})
+					}
+					for (let i = 0; i < this.treeList.length; i++) {
+						for (let ii = 0; ii < this.treeListp.length; ii++) {
+							if(this.treeListp[i].loginNoStr == this.treeList[ii].receiveNo){
+								this.$message({
+									message: '负责人和填报人重复!',
+									type: 'error'
+								});
+								return
+							}
+						}
+					}
+					this.$http({
+						url: "/market/cMemberWo/add",
+						method: "post",
+						headers: {
+							"Content-Type": "application/json",
+						},
+						data: param,
+					}).then((res) => {
+						if (res.data.result === 1) {
+							_this.$message({
+								message: res.data.desc,
+								type: 'error'
+							});
+						} else {
+							_this.$message({
+								message: '成功',
+								type: 'success'
+							});
+							_this.infolist = {};
+							_this.treeList = [];
+							_this.treeListp = [];
+							_this.dialogStatus = false;
+						}
+					});
+				} else if (v === 2) {
+					this.infolist = {};
+					this.treeList = [];
+					this.treeListp = [];
+					this.dialogStatus = false;
+				}
+			},
+			chofz(v){
+				this.dialogStatusp = false;
+				for (let i = 0; i < this.treeListp.length; i++) {
+					if(this.treeListp[i].o == this.fadept.o){
+						this.treeListp[i].loginNameStr = v.loginNameStr;
+						this.treeListp[i].loginNoStr = v.loginNoStr;
+					}
+				}
+			},
+			fzperson(v){
+				this.fadept= v;
+				this.dialogStatusp = true;
+				this.$http({
+				    url: "/sysmgr/sysuserinfo/queryList",
+				    method: "post",
+				    headers: {
+				        "Content-Type": "application/json",
+				    },
+				    data: {
+				        groupId: v.o,
+				    },
+				}).then((res) => {
+				   this.treeListponly = res.data;
+				});
+			},
+			deletes(val, index) {
+			    this.treeListp.splice(index, 1);
+			    this.closeList = this.treeListp;
+			},
+			treeCheck(v){
+			    this.treeList = v;
+			},
+			choseDept(v){
+				let x = 'no';
+				for (let i = 0; i < this.treeListp.length; i++) {
+					if(this.treeListp[i].o == v.o){
+						x = i;
+					}
+				}
+				if(x != 'no'){
+					this.treeListp.splice(x, 1)
+				}else{
+					this.treeListp.push(v);
+				}
+			},
+			advadd() {
+				this.dialogStatus = true;
+				this.$http({
+				    url: "/sysmgr/csysdept/queryRegionDeptList",
+				    method: "post",
+				    headers: {
+				        "Content-Type": "application/json",
+				    },
+				    data: {},
+				}).then((res) => {
+				    this.deptList = res.data[0].children;
+				});
+			},
+			jumpadv(v) {
+				if(v == 1){
+					this.$router.push({
+						path: "/haveInHand",
+					});
+					this.setabList("进行中任务", "/haveInHand");
+				}else{
+					this.$router.push({
+						path: "/Completed",
+					});
+					this.setabList("已完成", "/Completed");
+				}
+			},
+			advmaterial(v) {
+				if(v.dataCode == 1){
+					this.$router.push({
+						path: "/empInfoFilling",
+					});
+					this.setabList("信息填报", "/empInfoFilling");
+				}else{
+					this.$router.push({
+						path: "/dataStatistics",
+					});
+					this.setabList("数据统计", "/dataStatistics");
+				}
+			},
+			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));
+			},
+			getlist() {
+				// this.$http({
+				//     url: "/market/cadv/queryMkAdvStsNum",
+				//     method: "post",
+				//     headers: {
+				//         "Content-Type": "application/json",
+				//     },
+				//     data: {},
+				// }).then((res) => {
+				//     this.info = res.data
+				// });
+			},
+
+			getUser() {
+				this.userInfo = JSON.parse(window.sessionStorage.userInfo);
+			},
+		},
+		mounted() {
+			this.getUser();
+			this.getlist();
+		},
+		created() {
+
+		}
+	}
+</script>
+<style scoped lang="scss">
+	.container-box {
+		padding: 0 30px;
+		height: calc(100% - 40px);
+		overflow-y: scroll;
+		padding-bottom: 20px;
+	}
+
+	.adv-box {
+		margin-top: 20px;
+		display: flex;
+		flex-wrap: nowrap;
+		// justify-content: space-between;
+
+		div {
+			display: inline-block;
+			cursor: pointer;
+
+			.el-card {
+				width: 100%;
+			}
+
+			i {
+				margin-right: 10px;
+			}
+		}
+
+		.adv-tit {
+			width: 28%;
+			border: 1px solid transparent;
+			border-radius: 5px;
+			height: 60px;
+			line-height: 60px;
+			padding-left: 20px;
+			box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1);
+			overflow: hidden;
+			margin-right: 2%;
+
+			em {
+				float: right;
+				margin-right: 20px;
+				font-style: normal;
+				color: #0074D9;
+			}
+		}
+
+		.adv-tit:hover {
+			border: 1px solid #CFE8FC;
+			background: #CFE8FC;
+		}
+
+		.adv-add {
+			width: 100px;
+		}
+
+	}
+
+	.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: 24%;
+			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;
+			}
+		}
+	}
+
+	.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);
+		}
+		.tree {
+		    width: calc(50% - 60px);
+		    display: inline-block;
+		    margin-right: 20px;
+		    height: 300px;
+		    overflow-y: scroll;
+			p{
+				overflow: hidden;
+				display: flex;
+				justify-content: space-between;
+			}
+			.p-btn{
+				width: 50px!important;
+				cursor: pointer;
+				color: #0074DA;
+			}
+			span{
+				display: inline-block;
+				width: calc(100% - 100px);
+			}
+		
+		    .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;
+		    }
+		}
+	}
+	
+	.treeUserp{
+		p{
+			padding: 5px;
+		}
+		p:hover{
+			background: #01BEF0;
+			color: #fff;
+			cursor: pointer;
+		}
+	}
+
+	.online {
+		width: 100%;
+
+		.el-select {
+			width: calc(100% - 120px);
+		}
+
+		span {
+			vertical-align: top;
+		}
+
+		.el-textarea,
+		.el-date-editor {
+			width: calc(100% - 100px);
+			display: inline-flex;
+		}
+	}
+</style>

+ 213 - 0
src/pages/main/memberFamily/reportProgress.vue

@@ -0,0 +1,213 @@
+<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>
+            </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="supplierName" label="填报人部门">
+                    </el-table-column>
+                    <el-table-column prop="supplierCode" label="填报人姓名">
+                    </el-table-column>
+					<el-table-column prop="contractName" label="状态">
+                    </el-table-column>
+                    <el-table-column label="操作" width="160px" align="center">
+                        <template slot-scope="scope">
+                            <el-button size="mini" type="danger">催办</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>
+        <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'
+
+    export default {
+        components: {
+            mySearch,
+            myMessage,
+            toolList
+        },
+        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,
+            }
+        },
+        methods: {
+            //搜索数据
+            searchInfo(v) {
+                this.params = {};
+                v[0] ? this.params.supplierName = 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/cAdvPubSupplier/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;
+                    // this.loading = false;
+                });
+            },
+            // 分页
+            currchange(v) {
+                this.pageSize = v;
+                this.getList(this.params, this.pageSize);
+            },
+            //申请
+            dialogCheck(v, n) {
+                this.dialogStatus = true;
+                this.infolist = Object.assign({}, n);
+                if (v === 1) {
+                    this.titname = '查看';
+                    this.disableStatus = true;
+                    return
+                } else if (v === 2) {
+                    this.titname = '修改';
+                    this.disableStatus = false;
+                } else if (v === 3) {
+                    this.titname = '添加';
+                    this.disableStatus = false;
+                }
+                this.infolist.opNo = this.userInfo.loginNo;
+                this.infolist.opName = this.userInfo.loginName;
+            },
+            //功能栏
+            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();
+        },
+        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>

+ 400 - 0
src/pages/main/memberFamily/speedOfProgress.vue

@@ -0,0 +1,400 @@
+<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>
+            </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="supplierName" label="省/地市名称">
+                    </el-table-column>
+                    <el-table-column prop="supplierCode" label="省/地市管理员">
+                    </el-table-column>
+					<el-table-column prop="contractName" label="员工总数">
+                    </el-table-column>
+					<el-table-column prop="frameSum" label="未填写数">
+                    </el-table-column>
+					<el-table-column prop="surplusSum" label="已填写数">
+					</el-table-column>
+					<el-table-column prop="taxRate" label="完成进度">
+					</el-table-column>
+                    <el-table-column label="操作" width="160px" align="center">
+                        <template slot-scope="scope">
+                            <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">
+            <div v-loading="loadinged">
+                <el-form :model="infolist" ref="infolist" :rules="rules">
+                    <div class="info-line">
+                        <el-form-item prop="supplierName">
+                            <span>供应商</span>
+                            <el-input v-model="infolist.supplierName" placeholder="供应商名称" :disabled="disableStatus"></el-input>
+                        </el-form-item>
+						<el-form-item>
+                            <span>供应商编码</span>
+                            <el-input v-model="infolist.supplierCode" placeholder="供应商编码" :disabled="disableStatus"></el-input>
+                        </el-form-item>
+						<el-form-item>
+						    <span>框架总额</span>
+						    <el-input v-model="infolist.frameSum" placeholder="框架总额" :disabled="disableStatus"></el-input>
+						</el-form-item>
+						<el-form-item>
+						    <span>剩余总额</span>
+						    <el-input v-model="infolist.surplusSum" placeholder="剩余总额" :disabled="disableStatus"></el-input>
+						</el-form-item>
+						<el-form-item>
+						    <span>合同名称</span>
+						    <el-input v-model="infolist.contractName" placeholder="合同名称" :disabled="disableStatus"></el-input>
+						</el-form-item>
+						<el-form-item>
+						    <span>合同税率</span>
+						    <el-input v-model="infolist.taxRate" placeholder="合同税率" :disabled="disableStatus"></el-input>
+						</el-form-item>
+						<el-form-item>
+						    <span>截止时间</span>
+						    <el-date-picker v-model="infolist.endTime" type="date" placeholder="截止时间" :disabled="disableStatus">
+						    </el-date-picker>
+						</el-form-item>
+						<el-form-item>
+						    <span>归属地</span>
+						    <el-input v-model="infolist.homeLocation" placeholder="归属地" disabled></el-input>
+						</el-form-item>
+                    </div>
+                </el-form>
+
+                <div slot="footer" class="dialog-footer myfooter">
+                    <el-button type="primary" @click="dialogCli(2)" v-if="titname !== '查看'">确 定</el-button>
+                    <el-button @click="dialogCli(1)" v-if="titname === '查看'">确 定</el-button>
+                    <el-button @click="dialogCli(1)">取 消</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'
+
+    export default {
+        components: {
+            mySearch,
+            myMessage,
+            toolList
+        },
+        data() {
+            const supplierName = (rule, value, callback) => {
+                if (!this.infolist.supplierName) {
+                    callback(new Error('不能为空'))
+                } else {
+                    callback()
+                }
+            }
+            return {
+                rules: {
+                    supplierName: [{
+                        required: true,
+                        trigger: 'blur',
+                        validator: supplierName
+                    }],
+                },
+                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,
+            }
+        },
+        methods: {
+			jumpjd(){
+				this.$router.push({
+					path: "/speedOfProgress",
+				});
+				this.setabList("进度跟踪", "/speedOfProgress");
+			},
+			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));
+			},
+            closedia() {
+                this.infolist = {};
+                this.dialogStatus = false;
+            },
+            //搜索数据
+            searchInfo(v) {
+                this.params = {};
+                v[0] ? this.params.supplierName = 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/cAdvPubSupplier/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;
+                    // this.loading = false;
+                });
+            },
+            // 分页
+            currchange(v) {
+                this.pageSize = v;
+                this.getList(this.params, this.pageSize);
+            },
+            //申请
+            dialogCheck(v, n) {
+                this.dialogStatus = true;
+                this.infolist = Object.assign({}, n);
+                if (v === 1) {
+                    this.titname = '查看';
+                    this.disableStatus = true;
+                    return
+                } else if (v === 2) {
+                    this.titname = '修改';
+                    this.disableStatus = false;
+                } else if (v === 3) {
+                    this.titname = '添加';
+                    this.disableStatus = false;
+                }
+                this.infolist.opNo = this.userInfo.loginNo;
+                this.infolist.opName = this.userInfo.loginName;
+            },
+            //添加
+            dialogCli(v) {
+                if (v === 1) {
+                    this.infolist = {};
+                    this.dialogStatus = false;
+                    return
+                } else {
+                    this.infolist.opTime = this.$formatDate(new Date(), "YYYY-MM-DD HH:mm:ss");
+                    this.infolist.endTime = this.$formatDate(this.infolist.endTime, "YYYY-MM-DD HH:mm:ss");
+                    if (this.titname === '添加') {
+                        this.submitInfo("/market/cAdvPubSupplier/add");
+                    } else if (this.titname === '修改') {
+                        this.submitInfo("/market/cAdvPubSupplier/update", v);
+                    }
+                }
+            },
+            submitInfo(u) {
+                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: this.infolist,
+                        }).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);
+                            }
+
+                        });
+                    }
+                })
+            },
+            closeMessage(v) {
+                this.centerDialogVisible = false;
+                let _this = this;
+                if (v === 1) {
+                    _this.$http({
+                        url: "/market/cAdvPubSupplier/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);
+
+            }
+        },
+        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 - 2
src/pages/main/personlManage/census.vue

@@ -87,7 +87,7 @@
 				this.loading = true;
 				this.tableData = [];
 				this.$http({
-					url: "/market/cwo/queryTotalPage",
+					url: "/market/cWorkStaff/queryWorkStaffStatistics",
 					method: "post",
 					headers: {
 						"Content-Type": "application/json",
@@ -95,7 +95,7 @@
 					},
 					data: v,
 				}).then((res) => {
-					this.tableData = res.data.data;
+					this.tableData = res.data;
 					this.total = res.data.totalRecord;
 					this.loading = false;
 				});

+ 1 - 1
src/pages/main/personlManage/inperson.vue

@@ -3,7 +3,7 @@
     <iframe
       height="100%"
       width="100%"
-      src="/static/views/ecClubWork.html"
+      src="/static/views/inperson.html"
       frameborder="0"
     ></iframe>
   </div>

+ 40 - 8
src/pages/main/personlManage/outperson.vue

@@ -59,7 +59,11 @@
                         </el-form-item>
                        <el-form-item>
                             <span>对接科室</span>
-                            <el-input v-model="infolist.frameSumName" placeholder="对接科室" :disabled="disableStatus"></el-input>
+							<el-select :popper-append-to-body="false" v-model="infolist.frameSumName" placeholder="对接科室">
+							    <el-option v-for="item in djks" :key="item.dataCode" :label="item.dataName"
+							        :value="item.dataCode">
+							    </el-option>
+							</el-select>
                         </el-form-item>
 						<el-form-item>
                             <span>对接人</span>
@@ -79,7 +83,11 @@
 						</el-form-item>
 						<el-form-item>
 						    <span>人员类别</span>
-						    <el-input v-model="infolist.personType" placeholder="人员类别" :disabled="disableStatus"></el-input>
+							<el-select :popper-append-to-body="false" v-model="infolist.personType" placeholder="对接科室">
+							    <el-option v-for="item in rylb" :key="item.dataCode" :label="item.dataName"
+							        :value="item.dataCode">
+							    </el-option>
+							</el-select>
 						</el-form-item>
 						<el-form-item>
                             <span>归属公司</span>
@@ -155,8 +163,8 @@
                 delid: '',
                 loading:false,
                 loadinged:false,
-				regionOpt:[],
-				countyOpt:[],
+				rylb:[],
+				djks:[],
 				areaCode:'',
 				areaName:'',
             }
@@ -192,7 +200,7 @@
                 this.loading = true;
                 this.tableData = [];
                 this.$http({
-                    url: "/market/cAdvPubBudget/queryPage",
+                    url: "/market/workStaff/queryPage",
                     method: "post",
                     headers: {
                         "Content-Type": "application/json",
@@ -237,9 +245,9 @@
                 } else {
                     this.infolist.opTime = this.$formatDate(new Date(), "YYYY-MM-DD HH:mm:ss");
                     if (this.titname === '添加') {
-                        this.submitInfo("/market/cAdvPubBudget/add");
+                        this.submitInfo("/market/cWorkStaff/add");
                     } else if (this.titname === '修改') {
-                        this.submitInfo("/market/cAdvPubBudget/update", v);
+                        this.submitInfo("/market/workStaff/update", v);
                     }
 
                 }
@@ -282,7 +290,7 @@
                 let _this = this;
                 if (v === 1) {
                     _this.$http({
-                        url: "/market/cAdvPubBudget/del",
+                        url: "/market/workStaff/del",
                         method: "post",
                         headers: {
                             "Content-Type": "application/json",
@@ -327,6 +335,30 @@
             },
             getUser() {
                 this.userInfo = JSON.parse(window.sessionStorage.userInfo);
+				this.$http({
+				    url: "/market/cfgDataDict/queryList",
+				    method: "post",
+				    headers: {
+				        "Content-Type": "application/json",
+				    },
+				    data: {
+				        dictCode: 'workStaffType'
+				    },
+				}).then((res) => {
+				    this.rylb = res.data;
+				});
+				this.$http({
+				    url: "/market/cfgDataDict/queryList",
+				    method: "post",
+				    headers: {
+				        "Content-Type": "application/json",
+				    },
+				    data: {
+				        dictCode: 'workDept'
+				    },
+				}).then((res) => {
+				    this.djks = res.data;
+				});
             },
 			setabList(n, p) {
 			    let params = {

+ 54 - 0
src/router/index.js

@@ -10,6 +10,60 @@ const routes = [{
     redirect: '/leader',
     children: [
 		{
+		    meta: { name:  '员工信息填报', keepAlive: false },
+		    path: '/empInfoFilling',
+		    name: 'empInfoFilling',
+		    component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/memberFamily/empInfoFilling.vue'], resolve)
+		},
+		{
+		    meta: { name:  '已结束', keepAlive: false },
+		    path: '/Completed',
+		    name: 'Completed',
+		    component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/memberFamily/Completed.vue'], resolve)
+		},
+		{
+		    meta: { name:  '员工信息', keepAlive: false },
+		    path: '/employeeInfo',
+		    name: 'employeeInfo',
+		    component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/memberFamily/employeeInfo.vue'], resolve)
+		},
+		{
+		    meta: { name:  '数据统计', keepAlive: false },
+		    path: '/dataStatistics',
+		    name: 'dataStatistics',
+		    component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/memberFamily/dataStatistics.vue'], resolve)
+		},
+		{
+		    meta: { name:  '人员进度跟踪', keepAlive: false },
+		    path: '/reportProgress',
+		    name: 'reportProgress',
+		    component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/memberFamily/reportProgress.vue'], resolve)
+		},
+		{
+		    meta: { name:  '进度跟踪', keepAlive: false },
+		    path: '/speedOfProgress',
+		    name: 'speedOfProgress',
+		    component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/memberFamily/speedOfProgress.vue'], resolve)
+		},
+		{
+		    meta: { name:  '进行中任务', keepAlive: false },
+		    path: '/haveInHand',
+		    name: 'haveInHand',
+		    component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/memberFamily/haveInHand.vue'], resolve)
+		},
+		{
+		    meta: { name:  '家庭成员信息管理', keepAlive: false },
+		    path: '/memberFamily',
+		    name: 'memberFamily',
+		    component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/memberFamily/index.vue'], resolve)
+		},
+		{
+		    meta: { name:  '积分发放申请', keepAlive: false },
+		    path: '/integral',
+		    name: 'integral',
+		    component: (resolve) => require( /* webpackChunkName: "system" */['../pages/main/integral/index.vue'], resolve)
+		},
+		{
 		    meta: { name:  '外部人员管理', keepAlive: false },
 		    path: '/outperson',
 		    name: 'outperson',