浏览代码

Merge branch 'dev'

guojy 1 年之前
父节点
当前提交
c912bc4bb0
共有 43 个文件被更改,包括 2870 次插入2390 次删除
  1. 77 0
      src/components/FormBox - 副本.vue
  2. 27 37
      src/components/FormBox.vue
  3. 1 1
      src/home.vue
  4. 8 6
      src/screen.vue
  5. 5 4
      src/screenSan.vue
  6. 19 17
      src/views/abPoint/apply_list.vue
  7. 30 25
      src/views/abPoint/award_punish.vue
  8. 1 1
      src/views/abPoint/lottery_ticket.vue
  9. 56 37
      src/views/award/grantAward.vue
  10. 31 31
      src/views/award/lotteryTicket_statistics.vue
  11. 14 17
      src/views/award/myAward.vue
  12. 21 16
      src/views/award/myGrantAward.vue
  13. 865 679
      src/views/award/print.vue
  14. 12 2
      src/views/common/rewardTask.vue
  15. 12 2
      src/views/common/rewardTaskAmend.vue
  16. 9 11
      src/views/common/rewardTaskDetailsPopup.vue
  17. 14 4
      src/views/common/temporaryTask.vue
  18. 11 2
      src/views/common/temporaryTaskAmend.vue
  19. 54 55
      src/views/ranking/attendance_rating.vue
  20. 12 10
      src/views/ranking/balanceA.vue
  21. 39 43
      src/views/ranking/custom_rank.vue
  22. 48 48
      src/views/ranking/department_statistics.vue
  23. 147 140
      src/views/ranking/dept_rank.vue
  24. 39 39
      src/views/ranking/individual_statistics.vue
  25. 99 90
      src/views/ranking/integral_event.vue
  26. 58 66
      src/views/ranking/log_rank.vue
  27. 28 29
      src/views/ranking/manager_statistics.vue
  28. 23 29
      src/views/ranking/task_rank.vue
  29. 53 58
      src/views/ranking/total_rank.vue
  30. 15 13
      src/views/set/framework.vue
  31. 1 1
      src/views/set/screenSet.vue
  32. 40 28
      src/views/task/allTask.vue
  33. 31 23
      src/views/task/myExamine.vue
  34. 90 62
      src/views/task/my_issue.vue
  35. 23 19
      src/views/task/my_task.vue
  36. 456 413
      src/views/welfare/conversion.vue
  37. 25 23
      src/views/welfare/flManagement.vue
  38. 28 22
      src/views/welfare/operatingRecord.vue
  39. 16 14
      src/views/welfare/prize.vue
  40. 31 23
      src/views/workbench/alreadySp.vue
  41. 17 15
      src/views/workbench/approval_batch.vue
  42. 175 144
      src/views/workbench/approval_list.vue
  43. 109 91
      src/views/workbench/review.vue

+ 77 - 0
src/components/FormBox - 副本.vue

@@ -0,0 +1,77 @@
+<template>
+	<div style="border: 1px solid #EBEEF5;border-radius: 5px;">
+		<div style="padding: 10px;" v-if="isShowHeader">
+			 <slot name="header"></slot>	
+		</div>
+		<div class="form-box" :class="!isShowMore? 'auto':''" :style="{height:isShowGd?'auto':'49px'}">
+			<slot name="footer"></slot>	
+			<el-tooltip  effect="dark" :content="isShowGd?'收起':'更多'" placement="top">
+				<div v-if="isShowMore" class="gd" :class="isShowGd? 'gd2':''" @click="isShowGd=!isShowGd"><i class="el-icon-d-arrow-left fontColorC"></i></div>
+			</el-tooltip>
+		</div>
+	</div>
+</template>
+
+<script>
+ import Tooltip from '@/components/Tooltip';
+  export default {
+    name:'FormBox',
+	components:{Tooltip},
+    props:{
+		isShowMore:{
+			type:Boolean,
+			default:false,
+		},
+		isShowHeader:{
+			type:Boolean,
+			default:true,
+		},
+    },
+    data(){
+      return{
+		str:'更多',
+		isShowGd:false,
+      }
+    },
+    methods:{
+
+    }
+  }
+</script>
+
+<style scoped="scoped">
+.form-box{
+	padding: 10px;
+	background-color: rgb(250, 251, 252);
+	border-radius: 5px;
+	padding-bottom: 0;
+	position: relative;
+	height: auto;
+	padding-right: 30px;
+	transition: all 1s; 
+	/* overflow: hidden; */
+}	
+.form-box ::v-deep .el-form-item{
+	margin-bottom: 10px;
+}
+.gd{
+	position: absolute;
+	width: 20px;
+	right: 10px;
+	top: 20px;
+	z-index: 999;
+	font-size: 20px;
+	cursor: pointer;
+	transform: rotate(-90deg);
+	transition: all 0.1s;  
+}
+.gd2{
+	transform: rotate(90deg);
+}
+.gd :hover{
+	background-color: #f1f1f1;
+}
+.auto{
+	height: auto !important;
+}
+</style>

+ 27 - 37
src/components/FormBox.vue

@@ -1,14 +1,6 @@
 <template>
-	<div style="border: 1px solid #EBEEF5;border-radius: 5px;">
-		<div style="padding: 10px;" v-if="isShowHeader">
-			 <slot name="header"></slot>	
-		</div>
-		<div class="form-box" :class="!isShowMore? 'auto':''" :style="{height:isShowGd?'auto':'49px'}">
-			<slot name="footer"></slot>	
-			<el-tooltip  effect="dark" :content="isShowGd?'收起':'更多'" placement="top">
-				<div v-if="isShowMore" class="gd" :class="isShowGd? 'gd2':''" @click="isShowGd=!isShowGd"><i class="el-icon-d-arrow-left fontColorC"></i></div>
-			</el-tooltip>
-		</div>
+	<div  class="flex-box-ce flex-d-wrap">
+		<slot></slot>
 	</div>
 </template>
 
@@ -40,38 +32,36 @@
 </script>
 
 <style scoped="scoped">
-.form-box{
-	padding: 10px;
-	background-color: rgb(250, 251, 252);
+.flex-d-wrap{
+	max-width: 1200px;
+	min-width: 400px;
+	border: 1px solid #EBEEF5;
 	border-radius: 5px;
-	padding-bottom: 0;
-	position: relative;
-	height: auto;
-	padding-right: 30px;
-	transition: all 1s; 
-	/* overflow: hidden; */
+	background-color: #fff;
+	padding-top: 10px;
+	margin-bottom: 10px;
 }	
-.form-box ::v-deep .el-form-item{
+.form-item{
+	display: flex;
+	align-items: center;
+	-webkit-align-items: center;
+	-webkit-box-align: center;
+	width: 400px;
 	margin-bottom: 10px;
 }
-.gd{
-	position: absolute;
-	width: 20px;
-	right: 10px;
-	top: 20px;
-	z-index: 999;
-	font-size: 20px;
-	cursor: pointer;
-	transform: rotate(-90deg);
-	transition: all 0.1s;  
-}
-.gd2{
-	transform: rotate(90deg);
+.form-label{
+	width: 100px;
+	text-align: right;
+	box-sizing: border-box;
+	padding-right: 12px;
+	font-weight: 600;
+	font-size: 14px;
+	color: #606266;
 }
-.gd :hover{
-	background-color: #f1f1f1;
+.form-search{
+	width: 290px;
 }
-.auto{
-	height: auto !important;
+ ::v-deep .el-select,::v-deep .el-cascader,::v-deep .el-date-editor{
+	width: 100%;
 }
 </style>

+ 1 - 1
src/home.vue

@@ -352,7 +352,7 @@
 													: item.source_type == 2
 													? '的积分申请'
 													: item.source_type == 3
-													? '的积分录入'
+													? '的积分奖扣'
 													: item.source_type == 4
 													? '的绩效工作'
 													: ''

+ 8 - 6
src/screen.vue

@@ -39,7 +39,7 @@
 							<template v-if="rankingList.length>0">
 								<template v-if="rankingList.length==4">
 									<div style="margin-bottom: 8px;border-radius: 8px;box-shadow: 0 8px 8px #191E48;margin-top: 16px;">
-										<div v-for="(item, index) in result.ranking.list" :key="index" class="flex-box-ce rankingItem">
+										<div v-for="(item, index) in rankingList" :key="index" class="flex-box-ce rankingItem">
 											<div class="flex-1 flex-box-ce">
 												<template v-if="item.rank < 4">
 													<div v-if="item.rank == 1" class="index"><img src="./assets/image/1.png" /></div>
@@ -291,7 +291,7 @@
 										<div class="main-right2 flex-1">
 											<div class="context">{{ $moment.unix(item.event_time).format('YYYY-MM-DD') }}-{{ item.remark.customize ? item.remark.customize : item.remark.rule }}</div>
 											<div class="flex-box flex-v-ce">
-												<div class="name flex-1">{{ item.employee.name }}</div>
+												<div class="name flex-1">{{ item.employee_name }}</div>
 												<div style="font-size: 16px;" v-if="item.point > 0">+{{ item.point }}  <span style="color: #01EEFE;">{{ item.pt_id == 3 ? 'B分' : 'A分' }}</span></div>
 												<div style="font-size: 16px;" class="red " v-else>{{ item.point }}  <span style="color: #01EEFE;">{{ item.pt_id == 3 ? 'B分' : 'A分' }}</span></div>
 											</div>
@@ -387,6 +387,7 @@ export default {
 			}
 		}
 		this.timeFormate();
+		this.nowTimes();
 		window.addEventListener('resize', this.selfAdaption);
 	},
 	methods: {
@@ -525,9 +526,9 @@ export default {
 		ManagerSAwardCharts() {
 			//管理着奖扣统计表
 			const chart = this.$refs.ManagerSAwardChart;
-			let ratio_date=this.result.list.ratio_date;
-			let ratio_get=this.result.list.ratio_get;
-			let ratio_set=this.result.list.ratio_set;
+			let ratio_date=this.result.active.list.ratio_date;
+			let ratio_get=this.result.active.list.ratio_get;
+			let ratio_set=this.result.active.list.ratio_set;
 			if (chart) {
 				const myChart = this.$echarts.init(chart);
 				let option = {
@@ -870,7 +871,7 @@ export default {
 			// this.nowTime = year + '年' + month + '月' + date + '日' + ' ' + hh + ':' + mm + ':' + ss + ' ' + getWeek;
 		}, // 实时刷新当前时间,格式化
 		nowTimes() {
-			this.isSetInterval=setInterval(this.timeFormate, 1000);
+			this.isSetInterval=setInterval(this.timeFormate, 3600000);
 		},
 		clear() {
 			clearInterval(this.isSetInterval);
@@ -1046,6 +1047,7 @@ export default {
 	font-size: 20px;
 	height: 50px;
 	margin-bottom: 6px;
+	word-break: break-all;
 }
 .main-right2 .date {
 	color: #909399;

+ 5 - 4
src/screenSan.vue

@@ -43,7 +43,7 @@
 							<template v-if="rankingList.length>0">
 								<template v-if="rankingList.length==4">
 									<div style="margin-bottom: 8px;border-radius: 8px;box-shadow: 0 8px 8px #191E48;margin-top: 16px;">
-										<div v-for="(item, index) in result.ranking.list" :key="index" class="flex-box-ce rankingItem">
+										<div v-for="(item, index) in rankingList" :key="index" class="flex-box-ce rankingItem">
 											<div class="flex-1 flex-box-ce">
 												<template v-if="item.rank < 4">
 													<div v-if="item.rank == 1" class="index"><img src="./assets/image/1.png" /></div>
@@ -147,7 +147,7 @@
 						</div>
 					</div>
 				</div>
-				<div  style="text-align: center;padding: 6px 0;font-size: 16px;color: #ccc;">@功道云积分制-提供技术支持</div>
+				<div style="text-align: center;padding: 6px 0;font-size: 16px;color: #ccc;">@功道云积分制-提供技术支持</div>
 			</div>
 			<div class="data-all" v-else style="height: 100%;">
 				<i class="el-icon-loading" style="margin-top: 15%;width: 150px;margin-bottom: 10px;color: #fff;font-size: 64px;"></i>
@@ -382,7 +382,7 @@ export default {
 			isSetInterval:'',
 			rankingList:[],
 			
-			innerVisible:false,
+			innerVisible:true,
 			generateId:'',//唯一标识
 			corpId:'',//企业ID
 			screenList:[],//
@@ -428,6 +428,7 @@ export default {
 			}
 		}
 		this.timeFormate();
+		this.nowTimes();
 		window.addEventListener('resize', this.selfAdaption);
 	},
 	methods: {
@@ -974,7 +975,7 @@ export default {
 			// this.nowTime = year + '年' + month + '月' + date + '日' + ' ' + hh + ':' + mm + ':' + ss + ' ' + getWeek;
 		}, // 实时刷新当前时间,格式化
 		nowTimes() {
-			this.isSetInterval=setInterval(this.timeFormate, 1000);
+			this.isSetInterval=setInterval(this.timeFormate, 3600000);
 		},
 		clear() {
 			clearInterval(this.isSetInterval);

+ 19 - 17
src/views/abPoint/apply_list.vue

@@ -6,23 +6,25 @@
 			<el-tab-pane :disabled="table_loading" label="被驳回" name="refuse"></el-tab-pane>
 			<el-tab-pane :disabled="table_loading" label="已复核" name="review"></el-tab-pane>
 		</el-tabs>
-		<FormBox>
-			<template slot="header">
-				<el-button type="primary" @click="dialogVisible = true">申请积分</el-button>
-				<span class="orange" style="padding-left: 10px;" v-if="config.event_review_status&&config.event_apply_review">复核开启后,积分需管理员复核后才计入排名和统计</span>
-			</template>
-			<template slot="footer">
-				<el-form ref="formData" :inline="true" :model="formData" label-width="70px">
-					<el-form-item v-if="tabs == 'review'" label="复核状态">
-						<el-select style="width: 100px;" size="medium" v-model="dc_status" placeholder="请选择复核状态">
-							<el-option v-for="item in dcArr" :key="item.name" :label="item.name" :value="item.id"></el-option>
-						</el-select>
-					</el-form-item>
-					<el-form-item  label="内容搜索">
-						<el-input style="width: 217px;" v-model="formData.keyword" clearable size="medium" placeholder="输入申请内容"></el-input>
-					</el-form-item>
-				</el-form>
-			</template>
+		<div>
+			<el-button type="primary" @click="dialogVisible = true">申请积分</el-button>
+			<span class="orange" style="padding-left: 10px;" v-if="config.event_review_status&&config.event_apply_review">复核开启后,积分需管理员复核后才计入排名和统计</span>
+		</div>
+		<FormBox style="margin: 10px 0;">
+			<div class="form-item" v-if="tabs == 'review'">
+				<div class="form-label">复核状态</div>
+				<div class="form-search">
+					<el-select  size="medium" v-model="dc_status" placeholder="请选择复核状态">
+						<el-option v-for="item in dcArr" :key="item.name" :label="item.name" :value="item.id"></el-option>
+					</el-select>
+				</div>
+			</div>
+			<div class="form-item">
+				<div class="form-label">内容搜索</div>
+				<div class="form-search">
+					<el-input  v-model="formData.keyword" clearable size="medium" placeholder="请输入"></el-input>
+				</div>
+			</div>	
 		</FormBox>
 		<el-table :data="dataList" stripe fit v-loading="table_loading" v-if="tabs == 'complete'" @row-click="openDetail">
 			<el-table-column label="申请内容" prop="remark">

+ 30 - 25
src/views/abPoint/award_punish.vue

@@ -6,32 +6,37 @@
 			<el-tab-pane :disabled="table_loading"  label="被驳回" name="refuse"></el-tab-pane>
 			<el-tab-pane :disabled="table_loading" label="已复核" name="review"></el-tab-pane>
 		</el-tabs>
-		<FormBox >
-			<template slot="header">
-					<el-button type="primary" @click="point_b">奖扣B分</el-button>
-					<el-button type="primary" @click="point_a" plain>奖扣A分</el-button>
-					<span class="orange" style="padding-left: 10px;" v-if="config.event_review_status&&config.event_entry_review">复核开启后,积分需管理员复核后才计入排名和统计</span>
-			</template>
-			<template slot="footer">
-				<el-form ref="formData" :inline="true" :model="formData" label-width="70px">
-					<el-form-item label="复核状态" v-if="tabs == 'review'">
-						<el-select style="width: 100px;" size="medium" v-model="dc_status"  placeholder="请选择复核状态">
-							<el-option v-for="item in dcArr" :key="item.name" :label="item.name" :value="item.id"></el-option>
-						</el-select>
-					</el-form-item>
-					<el-form-item label="人员" v-if="tabs=='success'">
-						<el-select  size="medium" v-model="select_employee_id" filterable clearable placeholder="请输入或选择人员" style="width: 200px;">
-							<el-option v-for="item in employee_map" :key="item.id" :label="item.name" :value="item.id"></el-option>
-						</el-select>
-					</el-form-item>
-					<el-form-item label="搜索">
-						<el-input v-model="keyword" style="width: 200px;" clearable size="medium" :placeholder="tabs=='success'||tabs == 'review'?'输入内容':'输入人员姓名/事件内容'" ></el-input>
-					</el-form-item>
-				</el-form>
-			</template>
+		<div>
+			<el-button type="primary" @click="point_b">奖扣B分</el-button>
+			<el-button type="primary" @click="point_a" plain>奖扣A分</el-button>
+			<span class="orange" style="padding-left: 10px;" v-if="config.event_review_status&&config.event_entry_review">复核开启后,积分需管理员复核后才计入排名和统计</span>
+		</div>
+		<FormBox style="margin: 10px 0;">
+			<div class="form-item" v-if="tabs=='review'">
+				<div class="form-label">复核状态</div>
+				<div class="form-search">
+					<el-select size="medium" v-model="dc_status"  placeholder="请选择复核状态">
+						<el-option v-for="item in dcArr" :key="item.name" :label="item.name" :value="item.id"></el-option>
+					</el-select>
+				</div>
+			</div>
+			<div class="form-item" v-if="tabs=='success'">
+				<div class="form-label">奖扣对象</div>
+				<div class="form-search">
+					<el-select  size="medium" v-model="select_employee_id" filterable clearable placeholder="请输入或选择奖扣对象">
+						<el-option v-for="item in employee_map" :key="item.id" :label="item.name" :value="item.id"></el-option>
+					</el-select>
+				</div>
+			</div>
+			<div class="form-item">
+				<div class="form-label">内容搜索</div>
+				<div class="form-search">
+					<el-input v-model="keyword" clearable size="medium" :placeholder="tabs=='success'||tabs == 'review'?'请输入内容':'请输入奖扣对象/事件内容'" ></el-input>
+				</div>
+			</div>
 		</FormBox>
 		<el-table v-if="tabs == 'success'||tabs == 'review'" res="table1" :data="dataList" stripe fit v-loading="table_loading" @row-click="open_detail">
-			<el-table-column label="人员" prop="employee_id" align="left" width="250">
+			<el-table-column label="奖扣对象" prop="employee_id" align="left" width="250">
 				<template slot-scope="scope">
 					<div class="flex-box flex-contet-conter" >
 						<userImage :img_url="scope.row.employee_img_url" :user_name="scope.row.employee_name" width="50px" height="50px"></userImage>
@@ -75,7 +80,7 @@
 		</el-table>
 
 		<el-table v-else :data="dataList2" res="table2" stripe fit v-loading="table_loading" @row-click="open_detail1">
-			<el-table-column label="人员" prop="employee_id" align="left">
+			<el-table-column label="奖扣对象" prop="employee_id" align="left">
 				<template slot-scope="scope">
 					<div class="flex-box flex-contet-conter">
 						<userImage :img_url="scope.row.employee_img_url" :user_name="scope.row.employee_name" width="50px" height="50px"></userImage>

+ 1 - 1
src/views/abPoint/lottery_ticket.vue

@@ -2,7 +2,7 @@
 	<div>
 		<div class="all padding-20">
 			<el-form ref="form" :inline="true" label-width="80px">
-				<el-form-item label="人员">
+				<el-form-item label="姓名">
 					<el-select size="medium" v-model="select_employee_id" filterable clearable placeholder="请输入或选择人员" style="width: 250px;margin-right: 10px;">
 						<el-option v-for="item in employee_map" :key="item.id" :label="item.name" :value="item.id"></el-option>
 					</el-select>

+ 56 - 37
src/views/award/grantAward.vue

@@ -1,40 +1,58 @@
 <template>
 	<div>
 		<div class="all padding-20">
-			<FormBox  :isShowHeader="false">
-				<template #footer>
-					<el-form ref="form" :inline="true" label-width="70PX">
-						<el-form-item label="发生时间">
-							<el-date-picker
-								v-model="time_slot"
-								type="daterange"
-								size="medium"
-								value-format="yyyy-MM-dd"
-								range-separator="至"
-								start-placeholder="开始日期"
-								end-placeholder="结束日期"
-							></el-date-picker>
-						</el-form-item>
-						<el-form-item label="发放状态">
-							<el-select class="date-picker-width" size="medium" v-model="formData.has_ticket">
-								<el-option v-for="item in dcArr" :key="item.name" :label="item.name" :value="item.id"></el-option>
-							</el-select>
-						</el-form-item>
-						<el-form-item label="相关性" v-if="employeeOrdept">
-							<el-select class="date-picker-width" size="medium" v-model="formData.iSrecorder">
-								<el-option v-for="item in source_type" :key="item.name" :label="item.name" :value="item.id"></el-option>
-							</el-select>
-						</el-form-item>
-						<el-form-item label="人员">
-							<el-select size="medium" multiple v-model="formData.employee_ids"  filterable clearable placeholder="请输入或选择人员" style="width: 200px;">
-								<el-option v-for="item in employee_map" :key="item.id" :label="item.name" :value="item.id"></el-option>
-							</el-select>
-						</el-form-item>
-						<el-form-item label="内容搜索">
-							<el-input size="medium" v-model="formData.keyword" placeholder="输入关键字查找" maxlength="20" clearable></el-input>
-						</el-form-item>
-					</el-form>
-				</template>
+			<FormBox>
+				<div class="form-item">
+					<div class="form-label">姓名搜索</div>
+					<div class="form-search">
+						<el-select size="medium" multiple v-model="formData.employee_ids"  filterable clearable placeholder="请输入或选择人员">
+							<el-option v-for="item in employee_map" :key="item.id" :label="item.name" :value="item.id"></el-option>
+						</el-select>
+					</div>
+				</div>
+				<div class="form-item">
+					<div class="form-label">发放状态</div>
+					<div class="form-search">
+						<el-select  size="medium" v-model="formData.has_ticket">
+							<el-option v-for="item in dcArr" :key="item.name" :label="item.name" :value="item.id"></el-option>
+						</el-select>
+					</div>
+				</div>
+				<div class="form-item">
+					<div class="form-label">
+						<el-tooltip effect="dark" placement="top">
+						  <template slot="content">
+							此处的“我奖扣的”包含所有与我有关的积分事件(1、我直接奖扣成功,2、申请、任务、奖扣<br/> 提交上来由我作为第一审批人审批的,3、积分导入填写的奖扣记录人是我)
+						  </template>
+						  <span>相关性	<i class="el-icon-warning"></i></span>
+						</el-tooltip>
+					</div>
+					<div class="form-search">
+						<el-select size="medium" v-model="formData.iSrecorder">
+							<el-option v-for="item in source_type" :key="item.name" :label="item.name" :value="item.id"></el-option>
+						</el-select>
+					</div>
+				</div>
+				<div class="form-item">
+					<div class="form-label">事件时间</div>
+					<div class="form-search">
+						<el-date-picker
+							v-model="time_slot"
+							type="daterange"
+							size="medium"
+							value-format="yyyy-MM-dd"
+							range-separator="至"
+							start-placeholder="开始日期"
+							end-placeholder="结束日期"
+						></el-date-picker>
+					</div>
+				</div>
+				<div class="form-item">
+					<div class="form-label">内容搜索</div>
+					<div class="form-search">
+						<el-input size="medium" v-model="formData.keyword" max="20" placeholder="请输入"	clearable></el-input>
+					</div>
+				</div>
 			</FormBox>
 			<div style="margin: 10px 0;">
 				<el-button size="medium" :disabled="selectionID.length==0? true:false" @click="deleteInBatches()" type="primary">批量发放奖票</el-button>
@@ -47,7 +65,7 @@
 			<div>
 				<el-table :data="list" style="width: 100%;" v-loading="loading"  @selection-change="deleteEvents">
 					<el-table-column  type="selection" width="55" :selectable="selectable"></el-table-column>
-					<el-table-column prop="employee_name" label="人员" align="left" min-width="150px">
+					<el-table-column prop="employee_name" label="姓名" align="left" min-width="150px">
 						<template slot-scope="scope">
 							<div class="flex-box">
 								<userImage :user_name="scope.row.employee_name" :img_url="scope.row.employee_img_url" width="50px" height="50px"></userImage>
@@ -71,7 +89,7 @@
 							<span :class="scope.row.point < 0 ? 'green' : 'red'">{{ scope.row.point }} {{ point_name(scope.row.pt_id) }}</span>
 						</template>
 					</el-table-column>
-					<el-table-column prop="create_time" label="发生时间" align="left" min-width="140px">
+					<el-table-column prop="create_time" label="事件时间" align="left" min-width="140px">
 						<template slot-scope="scope">
 							{{ scope.row.event_time }}
 						</template>
@@ -295,6 +313,7 @@ export default {
 				keyword:'',
 				has_ticket:0,
 				add_subtract:1,
+				employee_ids:[],
 			},
 			time_slot: null,
 			list: [],
@@ -448,7 +467,6 @@ export default {
 				});
 		},
 		get_integral_list() {
-			this.loading = true;
 			let data=JSON.parse(JSON.stringify(this.formData))
 			if(this.employeeOrdept){
 				if(this.formData.iSrecorder==1){
@@ -458,6 +476,7 @@ export default {
 				data.recorder_id=this.$getUserData().id
 			}
 			data.employee_ids=data.employee_ids.toString()
+			this.loading = true;
 			this.$axios('get', '/api/integral/statistics/integral',data).then(res => {
 				this.list = res.data.data.list;
 				if(data.page==1){

+ 31 - 31
src/views/award/lotteryTicket_statistics.vue

@@ -1,36 +1,39 @@
 <template>
   <div>
-	<FormBox  :isShowHeader="false">
-		<template #footer>
-			<el-form ref="form" :inline="true" label-width="70PX">
-				<el-form-item label="时间">
-					<el-date-picker size="medium" v-model="formData.month" :clearable="false" :disabled="checked" type="month" placeholder="请选择月份" value-format="yyyy-MM"></el-date-picker>
-				</el-form-item>
-				<el-form-item label="部门">
-					<el-cascader
-					size="medium"
-					  v-model="dept_name"
-					  :options="dept_tree"
-					  :props="{ multiple: true, value: 'id', label: 'name', children: '_child'}"
-					  ref="deptRef"
-					  filterable
-					  collapse-tags
-					  placeholder="全公司"
-					  clearable
-					></el-cascader>
-				</el-form-item>
-				<el-form-item label="人员搜索">
-					<el-input size="medium" v-model="formData.keyword" clearable placeholder="请输入人员姓名" maxlength="20"></el-input>
-				</el-form-item>
-				<el-form-item>
-					<el-checkbox v-model="checked" border size="medium">查看所有累计奖票</el-checkbox>
-				</el-form-item>
-			</el-form>
-		</template>
+	<FormBox  style="margin: 0px;background-color: #fff;">
+		<div class="form-item">
+			<div class="form-label">时间范围</div>
+			<div class="form-search">
+				<el-date-picker size="medium" v-model="formData.month" :clearable="false" :disabled="checked" type="month" placeholder="请选择月份" value-format="yyyy-MM"></el-date-picker>
+			</div>
+		</div>
+		<div class="form-item">
+			<div class="form-label">所在部门</div>
+			<div class="form-search">
+				<el-cascader
+				 size="medium"
+				  v-model="dept_name"
+				  :options="dept_tree"
+				  :props="{ multiple: true, value: 'id', label: 'name', children: '_child'}"
+				  ref="deptRef"
+				  filterable
+				  collapse-tags
+				  placeholder="全公司"
+				  clearable
+				></el-cascader>
+			</div>
+		</div>
+		<div class="form-item">
+			<div class="form-label">姓名搜索</div>
+			<div class="form-search">
+				<el-input size="medium" v-model="formData.keyword" clearable placeholder="请输入"  maxlength="20"></el-input>
+			</div>
+		</div>
 	</FormBox>  
-
+	
     <div class="all">
       <div>
+		  <el-checkbox v-model="checked" border size="medium">查看所有累计奖票</el-checkbox>
         <el-table :data="all_integral_list" style="width: 100%" v-loading="loading">
           <el-table-column prop="employee_name" label="姓名" align="left">
 			  <template slot-scope="scope">
@@ -498,9 +501,6 @@ export default {
   .message-box .fontColorC{
     width: 100px;
   }
-.el-date-editor.el-input {
-  width: auto;
-}
 .date-picker-width {
   width: 145px !important;
 }

+ 14 - 17
src/views/award/myAward.vue

@@ -1,19 +1,19 @@
 <template>
   <div>
-	  <FormBox  :isShowHeader="false">
-	  	<template #footer>
-	  		<el-form ref="form" :inline="true" label-width="70PX">
-	  			<el-form-item label="时间">
-					<el-date-picker size="medium" v-model="month" :disabled="checked" type="month" :clearable="false" placeholder="请选择月份" value-format="yyyy-MM"></el-date-picker>
-	  			</el-form-item>
-	  			<el-form-item label="内容搜索">
-	  				<el-input size="medium" v-model="keyword" clearable placeholder="内容搜索"  maxlength="20"></el-input>
-	  			</el-form-item>
-				<el-form-item>
-					<el-checkbox v-model="checked" border size="medium">查看所有累计奖票</el-checkbox>
-				</el-form-item>
-	  		</el-form>
-	  	</template>
+	  <FormBox  style="margin: 0px;background-color: #fff;">
+		  <div class="form-item">
+		  	<div class="form-label">事件时间</div>
+		  	<div class="form-search">
+				<el-date-picker size="medium" v-model="month" :disabled="checked" type="month" :clearable="false" placeholder="请选择月份" value-format="yyyy-MM"></el-date-picker>
+		  	</div>
+		  </div>
+		  <div class="form-item">
+		  	<div class="form-label">内容搜索</div>
+		  	<div class="form-search">
+				<el-input size="medium" v-model="keyword" clearable placeholder="请输入"  maxlength="20"></el-input>
+		  	</div>
+		  </div>
+		  <el-checkbox style="margin-bottom: 10px;" v-model="checked" border size="medium">查看所有累计奖票</el-checkbox>
 	  </FormBox>
 
     <div class="all">
@@ -360,9 +360,6 @@ export default {
   .message-box .fontColorC{
     width: 100px;
   }
-.el-date-editor.el-input {
-  width: auto;
-}
 .date-picker-width {
   width: 145px !important;
 }

+ 21 - 16
src/views/award/myGrantAward.vue

@@ -1,21 +1,26 @@
 <template>
   <div>
-	  <FormBox  :isShowHeader="false">
-	  	<template #footer>
-	  		<el-form ref="form" :inline="true" label-width="70PX">
-	  			<el-form-item label="时间">
-					<el-date-picker size="medium" value-format="yyyy-MM-dd" :picker-options="pickerOptions" v-model="date" type="daterange" range-separator="至" start-placeholder="开始日期"	end-placeholder="结束日期"> </el-date-picker>
-	  			</el-form-item>
-	  			<el-form-item label="人员">
-					  <el-select style="margin: 0 10px;" v-model="formData.employee_id" size="medium" filterable placeholder="请输入或选择人员" clearable>
-						<el-option v-for="item in employee_map" :key="item.id" :label="item.name" :value="item.id"></el-option>
-					  </el-select>
-	  			</el-form-item>
-	  			<el-form-item label="内容搜索">
-	  				<el-input size="medium" v-model="formData.keyword" clearable placeholder="内容搜索"  maxlength="20"></el-input>
-	  			</el-form-item>
-	  		</el-form>
-	  	</template>
+	  <FormBox   style="margin: 0px;background-color: #fff;">
+		<div class="form-item">
+			<div class="form-label">姓名搜索</div>
+			<div class="form-search">
+				  <el-select style="margin: 0 10px;" v-model="formData.employee_id" size="medium" filterable placeholder="请输入或选择人员" clearable>
+					<el-option v-for="item in employee_map" :key="item.id" :label="item.name" :value="item.id"></el-option>
+				  </el-select>
+			</div>
+		</div>
+		<div class="form-item">
+			<div class="form-label">事件时间</div>
+			<div class="form-search">
+				<el-date-picker size="medium" value-format="yyyy-MM-dd" :picker-options="pickerOptions" v-model="date" type="daterange" range-separator="至" start-placeholder="开始日期"	end-placeholder="结束日期"> </el-date-picker>
+			</div>
+		</div>
+		<div class="form-item">
+			<div class="form-label">内容搜索</div>
+			<div class="form-search">
+				<el-input size="medium" v-model="formData.keyword" clearable placeholder="请输入" maxlength="20"></el-input>
+			</div>
+		</div>
 	  </FormBox>
 
     <div class="all">

+ 865 - 679
src/views/award/print.vue

@@ -1,21 +1,23 @@
 <template>
 	<div>
 		<div class="diy_tip_bg">
-		  <el-alert class="diy-tip" type="success" description>
-		    <p><b>使用说明:</b></p>
-		    <div class="headLi">1、参考“奖票示例”制作好实体奖票模版(最大尺寸22*9cm)</div>
-		    <div class="headLi">2、前往【打印配置】调整对应文本的打印位置</div>
-		    <div class="headLi">3、连接打印机,勾选对应的奖票进行打印</div>
-			<div class="headLi">4、打印成功后,标识对应的奖票“已打印”</div>
-		  </el-alert>
+			<el-alert class="diy-tip" type="success" description>
+				<p><b>使用说明:</b></p>
+				<div class="headLi">1、参考“奖票示例”制作好实体奖票模版(最大尺寸22*9cm)</div>
+				<div class="headLi">2、前往【打印配置】调整对应文本的打印位置</div>
+				<div class="headLi">3、连接打印机,勾选对应的奖票进行打印</div>
+				<div class="headLi">4、打印成功后,标识对应的奖票“已打印”</div>
+			</el-alert>
 		</div>
 		<div>
 			<div ref="print" v-if="isPrint">
 				<div v-for="(item,index) in selectionItems2" :key="item.id" style="width: 100%;height: 100%;">
 					<div :style="{width:printW+'cm',height:printH+'cm'}" style="position: relative;">
 						<template v-for="(e,index2) in item">
-							<div class="input-item" :style="{left:e.x+'cm',top:e.y+'cm',width:e.w? e.w+'cm':'auto',height:e.id==2? '2.33rem':'auto'}" style="z-index: 2;">
-								 {{e.val}}
+							<div class="input-item"
+								:style="{left:e.x+'cm',top:e.y+'cm',width:e.w? e.w+'cm':'auto',height:e.id==2? '2.33rem':'auto'}"
+								style="z-index: 2;">
+								{{e.val}}
 							</div>
 						</template>
 					</div>
@@ -23,71 +25,67 @@
 			</div>
 		</div>
 		<div class="all padding-20">
-			  <FormBox  :isShowHeader="false">
-				<template #footer>
-					<el-form :inline="true" label-width="70px">
-						<el-form-item label="筛选">
-							<el-select size="medium" v-model="selectType" placeholder="请选择分类" style="width: 100px;">
-								<el-option label="部门" :value="1"></el-option>
-								<el-option label="人员" :value="2"></el-option>
-							</el-select>
-						</el-form-item>
-						<el-form-item>
-							<el-cascader
-								v-if="selectType==1"
-								size="medium"
-								v-model="dept_name"
-								:options="dept_tree"
-								:props="{ multiple: true,value: 'id', label: 'name', children: '_child' }"
-								ref="dept"
-								collapse-tags
-								clearable
-								filterable
-								placeholder="全公司"
-							></el-cascader>
-							<el-select v-else size="medium"  filterable multiple clearable  v-model="formData.employee_id" placeholder="请输入或选择人员">
-								<el-option v-for="item in employee_map" :key="item.id" :label="item.name" :value="item.id"></el-option>
-							</el-select>
-						</el-form-item>
-						<el-form-item label="事件时间">
-							<el-date-picker
-								size="medium"
-								v-model="time_range"
-								type="daterange"
-								value-format="yyyy-MM-dd"
-								range-separator="至"
-								start-placeholder="开始日期"
-								end-placeholder="结束日期"
-								:picker-options="instantPickerOptions"
-							></el-date-picker>
-						</el-form-item>
-						<el-form-item label="打印状态">
-							<el-select size="medium" v-model="formData.has_print">
-								<el-option v-for="item in source_type" :key="item.id" :label="item.name" :value="item.id"></el-option>
-							</el-select>
-						</el-form-item>
-						<el-form-item label="内容搜索">
-							<el-input v-model="formData.keyword" size="medium" clearable placeholder="内容搜索" maxlength="20"></el-input>
-						</el-form-item>
-					</el-form>
-				</template>
-			  </FormBox>
+			<FormBox>
+				<div class="form-item">
+					<div class="form-label">人员范围</div>
+					<div class="form-search">
+						<el-select size="medium" v-model="selectType" placeholder="请选择分类" style="width: 95px;margin-right: 5px;">
+							<el-option label="部门" :value="1"></el-option>
+							<el-option label="人员" :value="2"></el-option>
+						</el-select>
+						<el-cascader style="width: 190px;" v-if="selectType==1" size="medium" v-model="dept_name" :options="dept_tree"
+							:props="{ multiple: true,value: 'id', label: 'name', children: '_child' }" ref="dept"
+							collapse-tags clearable filterable placeholder="全公司"></el-cascader>
+						<el-select style="width: 190px;" v-else size="medium" filterable multiple clearable v-model="formData.employee_id"
+							placeholder="请输入或选择人员">
+							<el-option v-for="item in employee_map" :key="item.id" :label="item.name"
+								:value="item.id"></el-option>
+						</el-select>
+					</div>
+				</div>
+				<div class="form-item">
+					<div class="form-label">事件时间</div>
+					<div class="form-search">
+						<el-date-picker size="medium" v-model="time_range" type="daterange"
+							value-format="yyyy-MM-dd" range-separator="至" start-placeholder="开始日期"
+							end-placeholder="结束日期" :picker-options="instantPickerOptions"></el-date-picker>
+					</div>
+				</div>
+				<div class="form-item">
+					<div class="form-label">打印状态</div>
+					<div class="form-search">
+						<el-select size="medium" v-model="formData.has_print">
+							<el-option v-for="item in source_type" :key="item.id" :label="item.name"
+								:value="item.id"></el-option>
+						</el-select>
+					</div>
+				</div>
+				<div class="form-item">
+					<div class="form-label">内容搜索</div>
+					<div class="form-search">
+						<el-input size="medium" v-model="formData.keyword" clearable placeholder="请输入"
+							maxlength="20"></el-input>
+					</div>
+				</div>
+			</FormBox>
 			<div class="flex-box-ce" style="margin: 10px 0;">
 				<el-button size="small" @click="printFn" plain type="primary">打印当前已选中的奖票</el-button>
 				<div class="flex-1"></div>
 				<el-popover placement="top-end" width="640" trigger="click">
-				  <div><img src="@/assets/image/09.png" style="width: 100%;"/></div>
-				  <div class="blue cursor" slot="reference"  style="margin-right: 10px;cursor: pointer;">奖票示例</div>
+					<div><img src="@/assets/image/09.png" style="width: 100%;" /></div>
+					<div class="blue cursor" slot="reference" style="margin-right: 10px;cursor: pointer;">奖票示例</div>
 				</el-popover>
-				<el-button size="small"  type="primary"  @click="dialogVisible=true">打印配置</el-button>
-				<el-button size="small"  type="primary"  @click="openPrint">批量修改状态</el-button>
+				<el-button size="small" type="primary" @click="dialogVisible=true">打印配置</el-button>
+				<el-button size="small" type="primary" @click="openPrint">批量修改状态</el-button>
 			</div>
-			<el-table :data="list" style="width: 100%;cursor: pointer;" v-loading="loading" @selection-change="deleteEvents">
+			<el-table :data="list" style="width: 100%;cursor: pointer;" v-loading="loading"
+				@selection-change="deleteEvents">
 				<el-table-column width="50" type="selection"></el-table-column>
 				<el-table-column label="姓名" align="left" width="250px">
 					<template slot-scope="scope">
 						<div class="flex-box">
-							<userImage :user_name="scope.row.employee_name" :img_url="scope.row.employee_img_url" width="50px" height="50px"></userImage>
+							<userImage :user_name="scope.row.employee_name" :img_url="scope.row.employee_img_url"
+								width="50px" height="50px"></userImage>
 							<span style="line-height: 50px; padding-left: 10px;">{{ scope.row.employee_name }}</span>
 						</div>
 					</template>
@@ -95,16 +93,17 @@
 				<el-table-column label="部门" align="left" width="250px" prop="employee_dept"></el-table-column>
 				<el-table-column label="奖票事件" align="left" prop="point">
 					<template slot-scope="scope">
-						<span >{{scope.row.remark.customize||scope.row.remark.rule}}</span>
+						<span>{{scope.row.remark.customize||scope.row.remark.rule}}</span>
 					</template>
 				</el-table-column>
-				<el-table-column label="事件时间" align="left" prop="dateStr"  width="130"></el-table-column>
-				<el-table-column label="发放人" align="left" prop="publisher_name"  width="130"></el-table-column>
+				<el-table-column label="事件时间" align="left" prop="dateStr" width="130"></el-table-column>
+				<el-table-column label="发放人" align="left" prop="publisher_name" width="130"></el-table-column>
 				<el-table-column label="打印状态" width="160">
 					<template slot-scope="scope">
-						<span  class="green" v-if="scope.row.has_print">已打印</span>
-						<span  class="fontColorC"  v-else>未打印</span>
-						<el-switch style="padding-left: 10px;" @change="changePrint($event,scope.row)" v-model="scope.row.has_print" :active-value="1" :inactive-value="0"></el-switch>
+						<span class="green" v-if="scope.row.has_print">已打印</span>
+						<span class="fontColorC" v-else>未打印</span>
+						<el-switch style="padding-left: 10px;" @change="changePrint($event,scope.row)"
+							v-model="scope.row.has_print" :active-value="1" :inactive-value="0"></el-switch>
 					</template>
 				</el-table-column>
 				<template slot="empty">
@@ -115,68 +114,75 @@
 				</template>
 			</el-table>
 			<center style="padding: 20px 0;">
-				<el-pagination
-					background
-					@size-change="handleSizeChange"
-					@current-change="handleCurrentChange"
-					:current-page="page"
-					:page-sizes="[10, 20, 50, 100]"
-					layout="total, sizes, prev, pager, next"
-					:page-size="page_size"
-					:total="total"
-				></el-pagination>
+				<el-pagination background @size-change="handleSizeChange" @current-change="handleCurrentChange"
+					:current-page="page" :page-sizes="[10, 20, 50, 100]" layout="total, sizes, prev, pager, next"
+					:page-size="page_size" :total="total"></el-pagination>
 			</center>
 		</div>
 		<!-- 打印配置 -->
-		<el-dialog title="打印配置" :visible.sync="dialogVisible" width="900px" :close-on-press-escape="false" :close-on-click-modal	="false">
+		<el-dialog title="打印配置" :visible.sync="dialogVisible" width="900px" :close-on-press-escape="false"
+			:close-on-click-modal="false">
 			<div class="flex-box-ce">
 				<div class="flex-box-ce flex-1">
-					<div class="input-item" :class="selectInput.id==item.id? 'activeInput':''"  @click="selectInput=item" style="margin-right: 10px;position: relative;" v-for="item in inputs" :key="item.id">{{item.name}}</div>
+					<div class="input-item" :class="selectInput.id==item.id? 'activeInput':''" @click="selectInput=item"
+						style="margin-right: 10px;position: relative;" v-for="item in inputs" :key="item.id">
+						{{item.name}}</div>
 				</div>
 				<div class="flex-box-ce">
 					<div class="flex-box-ce">
 						<div class="label">奖票长</div>
-						<el-input style="width: 60px;" size="small" v-model="printW" @input="[checkCountry($event, 1),(printW = printW.match(/\d+(\.\d{0,1})?/) ? printW.match(/\d+(\.\d{0,1})?/)[0] : '')]"></el-input>
+						<el-input style="width: 60px;" size="small" v-model="printW"
+							@input="[checkCountry($event, 1),(printW = printW.match(/\d+(\.\d{0,1})?/) ? printW.match(/\d+(\.\d{0,1})?/)[0] : '')]"></el-input>
 						<span style="font-size: 12px;position: relative;top: 5px;left: 5px;">cm</span>
 					</div>
 					<div class="flex-box-ce" style="margin-left: 30px;">
 						<div class="label">奖票宽</div>
-						<el-input style="width: 60px;" size="small" v-model="printH" @input="[checkCountry($event, 2),(printH = printH.match(/\d+(\.\d{0,1})?/) ? printH.match(/\d+(\.\d{0,1})?/)[0] : '')]"></el-input>
+						<el-input style="width: 60px;" size="small" v-model="printH"
+							@input="[checkCountry($event, 2),(printH = printH.match(/\d+(\.\d{0,1})?/) ? printH.match(/\d+(\.\d{0,1})?/)[0] : '')]"></el-input>
 						<span style="font-size: 12px;position: relative;top: 5px;left: 5px;">cm</span>
 					</div>
 				</div>
-			</div>	
+			</div>
 			<div class="flex-box-ce" style="margin: 20px 0;">
 				<div class="flex-box-ce">
 					<div class="label">X</div>
-					<el-input style="width: 60px;" size="small" v-model="selectInput.x" @input="[checkCountry($event, 3),(selectInput.x = selectInput.x.match(/\d+(\.\d{0,1})?/) ? selectInput.x.match(/\d+(\.\d{0,1})?/)[0] : '')]"></el-input>
+					<el-input style="width: 60px;" size="small" v-model="selectInput.x"
+						@input="[checkCountry($event, 3),(selectInput.x = selectInput.x.match(/\d+(\.\d{0,1})?/) ? selectInput.x.match(/\d+(\.\d{0,1})?/)[0] : '')]"></el-input>
 					<span style="font-size: 12px;position: relative;top: 5px;left: 5px;">cm</span>
 				</div>
 				<div class="flex-box-ce" style="margin-left: 20px;">
 					<div class="label">Y</div>
-					<el-input style="width: 60px;" size="small" v-model="selectInput.y" @input="[checkCountry($event, 4),(selectInput.y = selectInput.y.match(/\d+(\.\d{0,1})?/) ? selectInput.y.match(/\d+(\.\d{0,1})?/)[0] : '')]"></el-input>
+					<el-input style="width: 60px;" size="small" v-model="selectInput.y"
+						@input="[checkCountry($event, 4),(selectInput.y = selectInput.y.match(/\d+(\.\d{0,1})?/) ? selectInput.y.match(/\d+(\.\d{0,1})?/)[0] : '')]"></el-input>
 					<span style="font-size: 12px;position: relative;top: 5px;left: 5px;">cm</span>
 				</div>
 				<div class="flex-box-ce" style="margin-left: 20px;" v-if="selectInput.id==2">
 					<div class="label">长</div>
-					<el-input style="width: 60px;" size="small" v-model="selectInput.w" @input="[checkCountry($event, 5),(selectInput.w = selectInput.w.match(/\d+(\.\d{0,1})?/) ? selectInput.w.match(/\d+(\.\d{0,1})?/)[0] : '')]"></el-input>
+					<el-input style="width: 60px;" size="small" v-model="selectInput.w"
+						@input="[checkCountry($event, 5),(selectInput.w = selectInput.w.match(/\d+(\.\d{0,1})?/) ? selectInput.w.match(/\d+(\.\d{0,1})?/)[0] : '')]"></el-input>
 					<span style="font-size: 12px;position: relative;top: 5px;left: 5px;">cm</span>
 				</div>
 				<div class="flex-1"></div>
 				<el-popover placement="top-end" width="640" trigger="click">
-				  <div><img src="@/assets/image/09.png" style="width: 100%;"/></div>
-				  <div class="blue" slot="reference" style="cursor: pointer;">奖票示例</div>
+					<div><img src="@/assets/image/09.png" style="width: 100%;" /></div>
+					<div class="blue" slot="reference" style="cursor: pointer;">奖票示例</div>
 				</el-popover>
-				<el-button type="primary" plain size="small" icon="el-icon-refresh-right" style="margin-left: 10px;" @click="reset">重置参数</el-button>
+				<el-button type="primary" plain size="small" icon="el-icon-refresh-right" style="margin-left: 10px;"
+					@click="reset">重置参数</el-button>
 			</div>
 			<div style="width: 100%;height: 10cm;background-color: #f1f1f1;position: relative;">
-				<div :style="{width:printW+'cm',height:printH+'cm'}" style="position:relative;background-color: #fff;margin: 0 auto;top: 50%;transform: translate(0, -50%);">
+				<div :style="{width:printW+'cm',height:printH+'cm'}"
+					style="position:relative;background-color: #fff;margin: 0 auto;top: 50%;transform: translate(0, -50%);">
 					<template v-for="item in inputs">
-						<div @click="selectInput=item" class="input-item" style="height: 2.33rem;" v-if="item.id==2" :class="{activeInput:item.id==selectInput.id}" :style="{left:item.x+'cm',top:item.y+'cm',width:item.w? item.w+'cm':'auto'}">
-							 {{item.name}}
+						<div @click="selectInput=item" class="input-item" style="height: 2.33rem;" v-if="item.id==2"
+							:class="{activeInput:item.id==selectInput.id}"
+							:style="{left:item.x+'cm',top:item.y+'cm',width:item.w? item.w+'cm':'auto'}">
+							{{item.name}}
 						</div>
-						<div v-else @click="selectInput=item" class="input-item" :class="{activeInput:item.id==selectInput.id}" :style="{left:item.x+'cm',top:item.y+'cm',width:item.w? item.w+'cm':'auto'}">
-							 {{item.name}}
+						<div v-else @click="selectInput=item" class="input-item"
+							:class="{activeInput:item.id==selectInput.id}"
+							:style="{left:item.x+'cm',top:item.y+'cm',width:item.w? item.w+'cm':'auto'}">
+							{{item.name}}
 						</div>
 					</template>
 				</div>
@@ -186,22 +192,23 @@
 				<el-button type="primary" @click="sumbitConfig" size="medium">保 存</el-button>
 			</span>
 		</el-dialog>
-		
-		<el-dialog @close="closeCode"  :visible.sync="innerVisible" width="444px">
-			<div style="border-radius: 15px;border: 1px solid #f1f1f1;padding: 10px; width: 346px;box-sizing: border-box;margin: 0 auto;">
+
+		<el-dialog @close="closeCode" :visible.sync="innerVisible" width="444px">
+			<div
+				style="border-radius: 15px;border: 1px solid #f1f1f1;padding: 10px; width: 346px;box-sizing: border-box;margin: 0 auto;">
 				<div id="qrcode" ref="qrcode"></div>
 			</div>
 			<div style="margin-top: 10px;text-align: center;color: #666;">请使用钉钉APP扫描二维码</div>
 		</el-dialog>
-		
+
 		<el-dialog :visible.sync="isShowPl" width="444px">
 			<div>
 				<div style="margin-bottom: 20px;">批量修改状态为:</div>
 				<template>
-				  <el-radio-group v-model="radio">
-					<el-radio :label="true">已打印</el-radio>
-					<el-radio :label="false">未打印</el-radio>
-				  </el-radio-group>
+					<el-radio-group v-model="radio">
+						<el-radio :label="true">已打印</el-radio>
+						<el-radio :label="false">未打印</el-radio>
+					</el-radio-group>
 				</template>
 			</div>
 			<span slot="footer" class="dialog-footer">
@@ -212,626 +219,805 @@
 	</div>
 </template>
 <script>
-import moment from 'moment';
-import QRCode from 'qrcodejs2';
-import {_debounce} from '@/api/auth';
-export default {
-	data() {
-		return {
-			instantPickerOptions: {
-				shortcuts: [
-					{
-						text: '今天',
-						onClick(picker) {
-							const now = new Date(new Date().toLocaleDateString());
-							const start = now.getTime();
-							picker.$emit('pick', [moment(start).format('YYYY-MM-DD'), moment(start).format('YYYY-MM-DD')]);
+	import moment from 'moment';
+	import QRCode from 'qrcodejs2';
+	import {
+		_debounce
+	} from '@/api/auth';
+	export default {
+		data() {
+			return {
+				instantPickerOptions: {
+					shortcuts: [{
+							text: '今天',
+							onClick(picker) {
+								const now = new Date(new Date().toLocaleDateString());
+								const start = now.getTime();
+								picker.$emit('pick', [moment(start).format('YYYY-MM-DD'), moment(start).format(
+									'YYYY-MM-DD')]);
+							}
+						},
+						{
+							text: '昨天',
+							onClick(picker) {
+								const now = new Date(new Date().toLocaleDateString());
+								const start = now.getTime() - 60 * 60 * 24 * 1000;
+								picker.$emit('pick', [moment(start).format('YYYY-MM-DD'), moment(start).format(
+									'YYYY-MM-DD')]);
+							}
+						},
+						{
+							text: '本周',
+							onClick(picker) {
+								const now = new Date(new Date().toLocaleDateString());
+								const start = now.getTime() - (now.getDay() - 1) * 24 * 60 * 60 * 1000;
+								const end = start + 7 * 24 * 60 * 60 * 1000 - 1000;
+								picker.$emit('pick', [moment(start).format('YYYY-MM-DD'), moment(end).format(
+									'YYYY-MM-DD')]);
+							}
+						},
+						{
+							text: '上周',
+							onClick(picker) {
+								const now = new Date(new Date().toLocaleDateString());
+								const start = now.getTime() - (now.getDay() + 6) * 24 * 60 * 60 * 1000;
+								const end = start + 7 * 24 * 60 * 60 * 1000 - 1000;
+								picker.$emit('pick', [moment(start).format('YYYY-MM-DD'), moment(end).format(
+									'YYYY-MM-DD')]);
+							}
+						},
+						{
+							text: '本月',
+							onClick(picker) {
+								const now = new Date();
+								const startDate = new Date(now.getFullYear(), now.getMonth(), 1);
+								const endDate = new Date(now.getFullYear(), now.getMonth() + 1, 0);
+								picker.$emit('pick', [moment(startDate.getTime()).format('YYYY-MM-DD'), moment(endDate
+									.getTime()).format('YYYY-MM-DD')]);
+							}
+						},
+						{
+							text: '上月',
+							onClick(picker) {
+								const now = new Date();
+								const startDate = new Date(now.getFullYear() - (now.getMonth() > 0 ? 0 : 1), (now
+									.getMonth() + 11) % 12, 1);
+								const endDate = new Date(now.getFullYear(), now.getMonth(), 0);
+								picker.$emit('pick', [moment(startDate.getTime()).format('YYYY-MM-DD'), moment(endDate
+									.getTime()).format('YYYY-MM-DD')]);
+							}
+						},
+						{
+							text: '本季',
+							onClick(picker) {
+								const quarter = Math.ceil((new Date().getMonth() + 1) / 3)
+								let str = moment().format(`YYYY-${(quarter-1)*3+1}-01`);
+								let ent = moment(moment().format(`YYYY-${(quarter-1)*3+1}-01`)).add(2, `month`).endOf(
+									'month').format("YYYY-MM-DD");
+								console.log(str, ent)
+								picker.$emit('pick', [str, ent]);
+							}
+						},
+						{
+							text: '本年',
+							onClick(picker) {
+								let year = moment().format('YYYY');
+								picker.$emit('pick', [year + '-01-01', year + '-12-31']);
+							}
+						},
+					],
+					onPick: (obj) => {
+						if (!this.dialogVisible) {
+							this.pickerMinDate = new Date(obj.minDate).getTime();
 						}
 					},
-					{
-						text: '昨天',
-						onClick(picker) {
-							const now = new Date(new Date().toLocaleDateString());
-							const start = now.getTime() - 60 * 60 * 24 * 1000;
-							picker.$emit('pick', [moment(start).format('YYYY-MM-DD'),moment(start).format('YYYY-MM-DD')]);
+					disabledDate: time => {
+						if (this.pickerMinDate && !this.dialogVisible) {
+							const day1 = 30 * 24 * 3600 * 1000 //限制只能选一个月的范围区间
+							let maxTime = this.pickerMinDate + day1
+							let minTime = this.pickerMinDate - day1
+							return time.getTime() > maxTime || time.getTime() < minTime
 						}
+					}
+				},
+				selectType: 1,
+				total: 0,
+				page: 1,
+				page_size: 10,
+				time_range: null,
+				formData: {
+					dept_ids: '0',
+					has_print: -1,
+					keyword: '',
+					start_date: '',
+					end_date: '',
+					employee_id: 0,
+				},
+				dept_name: [],
+				dept_tree: [],
+				loading: false,
+				list: [],
+				source_type: [{
+						id: -1,
+						name: '全部'
 					},
 					{
-						text: '本周',
-						onClick(picker) {
-							const now = new Date(new Date().toLocaleDateString());
-							const start = now.getTime() - (now.getDay() - 1) * 24 * 60 * 60 * 1000;
-							const end = start + 7 * 24 * 60 * 60 * 1000 - 1000;
-							picker.$emit('pick', [moment(start).format('YYYY-MM-DD'), moment(end).format('YYYY-MM-DD')]);
-						}
+						id: 1,
+						name: '已打印'
 					},
 					{
-						text: '上周',
-						onClick(picker) {
-							const now = new Date(new Date().toLocaleDateString());
-							const start = now.getTime() - (now.getDay() + 6) * 24 * 60 * 60 * 1000;
-							const end = start + 7 * 24 * 60 * 60 * 1000 - 1000;
-							picker.$emit('pick', [moment(start).format('YYYY-MM-DD'), moment(end).format('YYYY-MM-DD')]);
-						}
+						id: 0,
+						name: '未打印'
 					},
-					{
-						text: '本月',
-						onClick(picker) {
-						const now = new Date();
-							const startDate = new Date(now.getFullYear(), now.getMonth(), 1);
-							const endDate = new Date(now.getFullYear(), now.getMonth() + 1, 0);
-							picker.$emit('pick', [moment(startDate.getTime()).format('YYYY-MM-DD'), moment(endDate.getTime()).format('YYYY-MM-DD')]);
-						}
+				],
+				employee_map: this.$getCache('SET_EMPLOYEE_MAP'),
+				employeeId: [],
+				selectionID: [],
+				dialogVisible: false,
+
+				// 打印配置
+
+				printW: 18,
+				printH: 7.5,
+				inputs: {
+					employee_name: {
+						name: '姓名(部门)',
+						x: 1.8,
+						y: 2,
+						w: 0,
+						id: 1
 					},
-					{
-						text: '上月',
-						onClick(picker) {
-							const now = new Date();
-							const startDate = new Date(now.getFullYear() - (now.getMonth() > 0 ? 0 : 1), (now.getMonth() + 11) % 12, 1);
-							const endDate = new Date(now.getFullYear(), now.getMonth(), 0);
-							picker.$emit('pick', [moment(startDate.getTime()).format('YYYY-MM-DD'), moment(endDate.getTime()).format('YYYY-MM-DD')]);
-						}
+					remark: {
+						name: '奖票事件',
+						x: 1.8,
+						y: 3.2,
+						w: 14,
+						id: 2
 					},
-					{
-						text: '本季',
-						onClick(picker) {
-							const quarter=Math.ceil((new Date().getMonth()+1)/3)
-							let str=moment().format(`YYYY-${(quarter-1)*3+1}-01`);
-							let ent=moment(moment().format(`YYYY-${(quarter-1)*3+1}-01`)).add(2,`month`).endOf('month').format("YYYY-MM-DD");
-							console.log(str,ent)
-							picker.$emit('pick',[str,ent]);
-						}
+					publisher_name: {
+						name: '发放人',
+						x: 14.7,
+						y: 5,
+						w: 0,
+						id: 3
 					},
-					{
-						text: '本年',
-						onClick(picker) {
-							let year=moment().format('YYYY');
-							picker.$emit('pick', [year+'-01-01',year+'-12-31']);
-						}
+					year: {
+						name: '年',
+						x: 11.8,
+						y: 6.2,
+						w: 0,
+						id: 4
 					},
-				],
-			    onPick: (obj) => {
-					if(!this.dialogVisible){
-			       	  	this.pickerMinDate = new Date(obj.minDate).getTime();
-					}
-			    },
-				disabledDate : time => {
-			        if (this.pickerMinDate && !this.dialogVisible) {
-			            const day1 =  30 * 24 * 3600 * 1000//限制只能选一个月的范围区间
-			            let maxTime = this.pickerMinDate + day1
-			            let minTime = this.pickerMinDate - day1
-			            return time.getTime() > maxTime || time.getTime()<minTime
-			        }
-				}
+					month: {
+						name: '月',
+						x: 13.6,
+						y: 6.2,
+						w: 0,
+						id: 5
+					},
+					day: {
+						name: '日',
+						x: 15,
+						y: 6.2,
+						w: 0,
+						id: 6
+					},
+				},
+
+				selectInput: {
+					name: '姓名(部门)',
+					x: 1.8,
+					y: 2,
+					w: 0,
+					id: 1
+				},
+				innerVisible: false,
+				selectionItems: [],
+				selectionItems2: [],
+				isPrint: false,
+
+				isShowPl: false,
+				radio: true,
+			};
+		},
+		watch: {
+			'formData.keyword': {
+				deep: true,
+				handler: _debounce(function(val) {
+					this.get_list();
+				}, 1000)
 			},
-			selectType:1,
-			total:0,
-			page: 1,
-			page_size: 10,
-			time_range: null,
-			formData: {
-				dept_ids: '0',
-				has_print:-1,
-				keyword:'',
-				start_date:'',
-				end_date:'',
-				employee_id:0,
+			selectType() {
+				this.get_list();
 			},
-			dept_name: [],
-			dept_tree: [],
-			loading: false,
-			list:[],
-			source_type: [
-			  { id: -1, name: '全部' },
-			  { id: 1, name: '已打印' },
-			  { id: 0, name: '未打印' },
-			],
-			employee_map: this.$getCache('SET_EMPLOYEE_MAP'),
-			employeeId:[],
-			selectionID:[],
-			dialogVisible:false,
-			
-			// 打印配置
-			
-			printW:18,
-			printH:7.5,
-			inputs:{
-				employee_name:{name:'姓名(部门)',x:1.8,y:2,w:0,id:1},
-				remark:{name:'奖票事件',x:1.8,y:3.2,w:14,id:2},
-				publisher_name:{name:'发放人',x:14.7,y:5,w:0,id:3},
-				year:{name:'年',x:11.8,y:6.2,w:0,id:4},
-				month:{name:'月',x:13.6,y:6.2,w:0,id:5},
-				day:{name:'日',x:15,y:6.2,w:0,id:6},
+			'formData.employee_id'() {
+				this.get_list();
 			},
-			
-			selectInput:{name:'姓名(部门)',x:1.8,y:2,w:0,id:1},
-			innerVisible:false,
-			selectionItems:[],
-			selectionItems2:[],
-			isPrint:false,
-			
-			isShowPl:false,
-			radio:true,
-		};
-	},
-	watch: {
-		'formData.keyword': {
-		  deep: true,
-		  handler: _debounce(function(val) {
-			  this.get_list();
-		  },1000)
-		},
-		selectType(){
-			this.get_list();
-		},
-		'formData.employee_id'(){
-			this.get_list();
-		},
-		'formData.has_print'(){
-			this.get_list();
-		},
-		time_range(val){
-			this.get_list();
-		},
-		dept_name(val) {
-			if (val.length !== 0) {
-				let dept_ids=[];
-				val.forEach((item)=>{
-					dept_ids.push(...item);
-				})
-				let set =new Set(dept_ids);
-				this.formData.dept_ids = [...set];
-			} else {
-				this.formData.dept_ids = 0;
-			}
-			this.employeeId=[];
-			this.$nextTick(() => {
+			'formData.has_print'() {
 				this.get_list();
-			});
-		},
-		dialogVisible(val){
-			if(val){
-				let siteConfig=this.$getCache('siteConfig');
-				if(siteConfig.ticket_template){
-					let ticket_template=JSON.parse(siteConfig.ticket_template);
-					this.selectInput=ticket_template.inputs.employee_name
-					this.printW=ticket_template.printW;
-					this.printH=ticket_template.printH;
-					this.inputs=ticket_template.inputs;
+			},
+			time_range(val) {
+				this.get_list();
+			},
+			dept_name(val) {
+				if (val.length !== 0) {
+					let dept_ids = [];
+					val.forEach((item) => {
+						dept_ids.push(...item);
+					})
+					let set = new Set(dept_ids);
+					this.formData.dept_ids = [...set];
+				} else {
+					this.formData.dept_ids = 0;
+				}
+				this.employeeId = [];
+				this.$nextTick(() => {
+					this.get_list();
+				});
+			},
+			dialogVisible(val) {
+				if (val) {
+					let siteConfig = this.$getCache('siteConfig');
+					if (siteConfig.ticket_template) {
+						let ticket_template = JSON.parse(siteConfig.ticket_template);
+						this.selectInput = ticket_template.inputs.employee_name
+						this.printW = ticket_template.printW;
+						this.printH = ticket_template.printH;
+						this.inputs = ticket_template.inputs;
+					}
 				}
 			}
-		}
-	},
-	methods: {
-		reset(){
-			this.selectInput={name:'姓名(部门)',x:1.8,y:2,w:0,id:1};
-			this.printW=18;
-			this.printH=7.5;
-			this.inputs={
-				employee_name:{name:'姓名(部门)',x:1.8,y:2,w:0,id:1},
-				remark:{name:'奖票事件',x:1.8,y:3.2,w:14,id:2},
-				publisher_name:{name:'发放人',x:14.7,y:5,w:0,id:3},
-				year:{name:'年',x:11.8,y:6.2,w:0,id:4},
-				month:{name:'月',x:13.6,y:6.2,w:0,id:5},
-				day:{name:'日',x:15,y:6.2,w:0,id:6},
-			};
 		},
-		sumbitConfig(is){
-			let template={};
-			if(is){
-				template={
-					printW:this.printW,
-					printH:this.printH,
-					inputs:JSON.parse(JSON.stringify(this.inputs))
-				}
-			}else{
-				template={
-					printW:18,
-					printH:7.5,
-					inputs:{
-						employee_name:{name:'姓名(部门)',x:1.8,y:2,w:0,id:1},
-						remark:{name:'奖票事件',x:1.8,y:3.2,w:14,id:2},
-						publisher_name:{name:'发放人',x:14.7,y:5,w:0,id:3},
-						year:{name:'年',x:11.8,y:6.2,w:0,id:4},
-						month:{name:'月',x:13.6,y:6.2,w:0,id:5},
-						day:{name:'日',x:15,y:6.2,w:0,id:6},
+		methods: {
+			reset() {
+				this.selectInput = {
+					name: '姓名(部门)',
+					x: 1.8,
+					y: 2,
+					w: 0,
+					id: 1
+				};
+				this.printW = 18;
+				this.printH = 7.5;
+				this.inputs = {
+					employee_name: {
+						name: '姓名(部门)',
+						x: 1.8,
+						y: 2,
+						w: 0,
+						id: 1
+					},
+					remark: {
+						name: '奖票事件',
+						x: 1.8,
+						y: 3.2,
+						w: 14,
+						id: 2
+					},
+					publisher_name: {
+						name: '发放人',
+						x: 14.7,
+						y: 5,
+						w: 0,
+						id: 3
+					},
+					year: {
+						name: '年',
+						x: 11.8,
+						y: 6.2,
+						w: 0,
+						id: 4
+					},
+					month: {
+						name: '月',
+						x: 13.6,
+						y: 6.2,
+						w: 0,
+						id: 5
 					},
+					day: {
+						name: '日',
+						x: 15,
+						y: 6.2,
+						w: 0,
+						id: 6
+					},
+				};
+			},
+			sumbitConfig(is) {
+				let template = {};
+				if (is) {
+					template = {
+						printW: this.printW,
+						printH: this.printH,
+						inputs: JSON.parse(JSON.stringify(this.inputs))
+					}
+				} else {
+					template = {
+						printW: 18,
+						printH: 7.5,
+						inputs: {
+							employee_name: {
+								name: '姓名(部门)',
+								x: 1.8,
+								y: 2,
+								w: 0,
+								id: 1
+							},
+							remark: {
+								name: '奖票事件',
+								x: 1.8,
+								y: 3.2,
+								w: 14,
+								id: 2
+							},
+							publisher_name: {
+								name: '发放人',
+								x: 14.7,
+								y: 5,
+								w: 0,
+								id: 3
+							},
+							year: {
+								name: '年',
+								x: 11.8,
+								y: 6.2,
+								w: 0,
+								id: 4
+							},
+							month: {
+								name: '月',
+								x: 13.6,
+								y: 6.2,
+								w: 0,
+								id: 5
+							},
+							day: {
+								name: '日',
+								x: 15,
+								y: 6.2,
+								w: 0,
+								id: 6
+							},
+						},
+					}
 				}
-			}
-			this.$axios('post', 'api/integral/ticket/template',{template:JSON.stringify(template)}).then(res => {
-					if(is){
+				this.$axios('post', 'api/integral/ticket/template', {
+					template: JSON.stringify(template)
+				}).then(res => {
+					if (is) {
 						this.$message.success("已设置")
-						this.dialogVisible=false;
+						this.dialogVisible = false;
 					}
 					this.cheakAx();
-			});
-		},
-		openPrint(){
-			if(this.selectionID.length==0){
-				this.$message.error("请选择奖票")
-				return false
-			}
-			this.isShowPl = true;
-		},
-		sumbitPrint(){
-			this.$axios('post', 'api/integral/ticket/mark',{ids:this.selectionID.toString(),status:this.radio? 1:0}).then(res => {
-				this.$message.success("已修改")
-				this.isShowPl = false;
-				this.radio=true;
-				this.get_list();
-			});
-		},
-		changePrint(is,item){
-			this.$axios('post', 'api/integral/ticket/mark',{ids:item.id,status:is}).then(res => {
-				this.$message.success("已修改")
-				this.get_list();
-			});
-		},
-		printFn() {
-			if(this.selectionID.length==0){
-				this.$message.error("请选择奖票")
-				return false
-			}
-			//传入dom结构即可
-			let selectionItems=[];
-			this.selectionItems.map((item)=>{
-				let obj={}
-				for(let key in item){
-					if(key=='employee_name'){
-						obj.employee_name=JSON.parse(JSON.stringify(this.inputs.employee_name)) 
-						if(item.employee_dept){
-							obj.employee_name.val=item[key]+'('+item.employee_dept+')'
-						}else{
-							obj.employee_name.val=item[key]
+				});
+			},
+			openPrint() {
+				if (this.selectionID.length == 0) {
+					this.$message.error("请选择奖票")
+					return false
+				}
+				this.isShowPl = true;
+			},
+			sumbitPrint() {
+				this.$axios('post', 'api/integral/ticket/mark', {
+					ids: this.selectionID.toString(),
+					status: this.radio ? 1 : 0
+				}).then(res => {
+					this.$message.success("已修改")
+					this.isShowPl = false;
+					this.radio = true;
+					this.get_list();
+				});
+			},
+			changePrint(is, item) {
+				this.$axios('post', 'api/integral/ticket/mark', {
+					ids: item.id,
+					status: is
+				}).then(res => {
+					this.$message.success("已修改")
+					this.get_list();
+				});
+			},
+			printFn() {
+				if (this.selectionID.length == 0) {
+					this.$message.error("请选择奖票")
+					return false
+				}
+				//传入dom结构即可
+				let selectionItems = [];
+				this.selectionItems.map((item) => {
+					let obj = {}
+					for (let key in item) {
+						if (key == 'employee_name') {
+							obj.employee_name = JSON.parse(JSON.stringify(this.inputs.employee_name))
+							if (item.employee_dept) {
+								obj.employee_name.val = item[key] + '(' + item.employee_dept + ')'
+							} else {
+								obj.employee_name.val = item[key]
+							}
+						}
+						if (key == 'remark') {
+							obj.remark = JSON.parse(JSON.stringify(this.inputs.remark))
+							obj.remark.val = item[key].customize || item[key].rule
+						}
+						if (key == 'publisher_name') {
+							obj.publisher_name = JSON.parse(JSON.stringify(this.inputs.publisher_name))
+							obj.publisher_name.val = item[key] || '--'
+						}
+						if (key == 'dateStr') {
+							obj.year = JSON.parse(JSON.stringify(this.inputs.year))
+							obj.year.val = this.$moment(item[key]).format('YYYY')
+							obj.month = JSON.parse(JSON.stringify(this.inputs.month))
+							obj.month.val = this.$moment(item[key]).format('MM')
+							obj.day = JSON.parse(JSON.stringify(this.inputs.day))
+							obj.day.val = this.$moment(item[key]).format('DD')
 						}
 					}
-					if(key=='remark'){
-						obj.remark=JSON.parse(JSON.stringify(this.inputs.remark)) 
-						obj.remark.val=item[key].customize||item[key].rule
+					selectionItems.push(obj)
+				})
+				this.selectionItems2 = selectionItems;
+				this.isPrint = true;
+				this.$nextTick(() => {
+					this.$print(this.$refs.print);
+					this.isPrint = false;
+				})
+			},
+			ruleQRcode() {
+				this.innerVisible = true;
+				// 使用$nextTick确保数据渲染
+				this.$nextTick(() => {
+					this.payOrder();
+				});
+			},
+			payOrder() { // 展示二维码
+				let url = 'dingtalk://dingtalkclient/action/open_micro_app'
+				let appid = '?appId=' + this.$appId
+				let corpId = '&corpId=' + this.$getCache('corpId')
+				let page = '&page=' + encodeURIComponent(
+						`pages/reportBox/report/report?employee_id=${encodeURIComponent(this.$getUserData().id)}`
+						) //encodeURIComponent('小米')
+				let urls = url + appid + corpId + page
+				var qrcode = new QRCode('qrcode', {
+					text: urls, // 二维码内容
+					width: 325,
+					height: 325,
+					render: 'table', // 设置渲染方式(有两种方式 table和canvas,默认是canvas)
+					colorDark: '#34373e', // 二维码色
+					colorLight: '#ffffff', // 背景色
+					correctLevel: QRCode.CorrectLevel.H // 容错等级,H是heigh,最高,所以二维码看起来很密
+				})
+			},
+			// 关闭弹框,清除已经生成的二维码
+			closeCode() {
+				setTimeout(() => {
+					this.$refs.qrcode.innerHTML = '';
+				}, 150);
+			},
+			checkCountry(e, index) {
+				if (index == 1) {
+					if (this.printW > 22) {
+						this.printW = '22';
 					}
-					if(key=='publisher_name'){
-						obj.publisher_name=JSON.parse(JSON.stringify(this.inputs.publisher_name)) 
-						obj.publisher_name.val=item[key]||'--'
+				}
+				if (index == 2) {
+					if (this.printH > 9) {
+						this.printH = '9';
 					}
-					if(key=='dateStr'){
-						obj.year=JSON.parse(JSON.stringify(this.inputs.year)) 
-						obj.year.val=this.$moment(item[key]).format('YYYY')
-						obj.month=JSON.parse(JSON.stringify(this.inputs.month))
-						obj.month.val=this.$moment(item[key]).format('MM')
-						obj.day=JSON.parse(JSON.stringify(this.inputs.day))
-						obj.day.val=this.$moment(item[key]).format('DD')
+				}
+			},
+			deleteEvents(selection) {
+				this.selectionItems = selection;
+				this.selectionID = selection.map(item => {
+					return item.id;
+				});
+			},
+			getEmployeeList() {
+				this.$axios('get', '/api/employee/list').then(res => {
+					this.employee_map = res.data.data.list;
+				});
+			},
+			//请求数据
+			get_list(is) {
+				!is ? this.page = 1 : '';
+				let data = {
+					page: this.page,
+					page_size: this.page_size,
+					keyword: this.formData.keyword,
+					has_print: this.formData.has_print,
+					has_print: this.formData.has_print
+				};
+				if (this.selectType == 1) {
+					data.dept_ids = this.formData.dept_ids.toString();
+				} else {
+					data.employee_id = this.formData.employee_id.toString();
+				}
+				if (this.time_range) {
+					data.start_date = this.$moment(this.time_range[0]).format('YYYY-MM-DD')
+					data.end_date = this.time_range[1]
+				}
+				this.loading = true;
+				this.$axios('get', '/api/integral/ticket', data, 'v2').then(res => {
+					let list = res.data.data.list;
+					list.forEach(item => {
+						item.dateStr = this.$moment(item.date + '').format('YYYY-MM-DD');
+
+					})
+					this.list = list
+					this.total = res.data.data.total;
+				}).finally(() => {
+					this.loading = false;
+				});
+			},
+			//获取部门
+			getDepartment() {
+				this.$axios('get', '/api/department/tree').then(res => {
+					this.dept_tree = this.getTreeData(res.data.data.list);
+				});
+			},
+			// 递归判断列表,把最后的children设为undefined
+			getTreeData(data) {
+				for (var i = 0; i < data.length; i++) {
+					data[i].obj = {
+						id: data[i].id,
+						name: data[i].name
+					};
+					if (data[i]._child.length < 1) {
+						// children若为空数组,则将children设为undefined
+						data[i]._child = undefined;
+					} else {
+						// children若不为空数组,则继续 递归调用 本方法
+						this.getTreeData(data[i]._child);
 					}
 				}
-				selectionItems.push(obj)
-			})
-			this.selectionItems2 = selectionItems;
-			this.isPrint=true;
-			this.$nextTick(()=>{
-				this.$print(this.$refs.print);
-				this.isPrint=false;
-			})
-		},
-		ruleQRcode() {
-			this.innerVisible = true;
-			// 使用$nextTick确保数据渲染
-			this.$nextTick(() => {
-				this.payOrder();
-			});
-		},
-		payOrder () {// 展示二维码
-			let url = 'dingtalk://dingtalkclient/action/open_micro_app'
-			let appid = '?appId='+this.$appId
-			let corpId = '&corpId='+this.$getCache('corpId')
-			let page = '&page='+encodeURIComponent(`pages/reportBox/report/report?employee_id=${encodeURIComponent(this.$getUserData().id)}`)//encodeURIComponent('小米')
-			let urls = url+appid+corpId+page
-			var qrcode = new QRCode('qrcode', {
-				text: urls, // 二维码内容
-				width: 325,
-				height: 325,
-				render: 'table', // 设置渲染方式(有两种方式 table和canvas,默认是canvas)
-				colorDark: '#34373e', // 二维码色
-				colorLight: '#ffffff', // 背景色
-				correctLevel: QRCode.CorrectLevel.H // 容错等级,H是heigh,最高,所以二维码看起来很密
-			})
-		},
-		// 关闭弹框,清除已经生成的二维码
-		closeCode() {
-			setTimeout(() => {
-				this.$refs.qrcode.innerHTML = '';
-			}, 150);
-		},
-		checkCountry(e,index) {
-		  if(index==1){
-			  if(this.printW > 22){
-			  	this.printW='22';
-			  }
-		  }
-		  if(index==2){
-			  if(this.printH > 9){
-				this.printH='9';
-			  }
-		  }
-		},
-		deleteEvents(selection) {
-			this.selectionItems = selection;
-			this.selectionID = selection.map(item => {
-				return item.id;
-			});
-		},
-		getEmployeeList() {
-			this.$axios('get', '/api/employee/list').then(res => {
-				this.employee_map = res.data.data.list;
-			});
-		},
-		//请求数据
-		get_list(is) {
-			!is? this.page=1:'';
-			let data={
-				page:this.page,
-				page_size:this.page_size,
-				keyword:this.formData.keyword,
-				has_print:this.formData.has_print,
-				has_print:this.formData.has_print
-			};
-			if(this.selectType==1){
-				data.dept_ids=this.formData.dept_ids.toString();
-			}else{
-				data.employee_id=this.formData.employee_id.toString();
-			}
-			if(this.time_range){
-				data.start_date=this.$moment(this.time_range[0]).format('YYYY-MM-DD')
-				data.end_date=this.time_range[1]
-			}
-			this.loading = true;
-			this.$axios('get', '/api/integral/ticket', data, 'v2').then(res => {
-				let list=res.data.data.list;
-				list.forEach(item=>{
-					item.dateStr=this.$moment(item.date+'').format('YYYY-MM-DD');
-					
+				return data;
+			},
+			// 页面变更
+			handleCurrentChange(val) {
+				this.page = val;
+				this.get_list(true);
+			},
+			// 页面跳转
+			handleSizeChange(val) {
+				this.page_size = val;
+				this.get_list();
+			},
+			cheakAx() {
+				this.$axios('get', '/api/integral/site/config').then(res => {
+					this.$store.dispatch('setConfig', res.data.data);
 				})
-				this.list = list
-				this.total = res.data.data.total;
-			}).finally(() => {
-				this.loading = false;
-			});
-		},
-		//获取部门
-		getDepartment() {
-			this.$axios('get', '/api/department/tree').then(res => {
-				this.dept_tree = this.getTreeData(res.data.data.list);
-			});
+			},
 		},
-		// 递归判断列表,把最后的children设为undefined
-		getTreeData(data) {
-			for (var i = 0; i < data.length; i++) {
-				data[i].obj = { id: data[i].id, name: data[i].name };
-				if (data[i]._child.length < 1) {
-					// children若为空数组,则将children设为undefined
-					data[i]._child = undefined;
-				} else {
-					// children若不为空数组,则继续 递归调用 本方法
-					this.getTreeData(data[i]._child);
-				}
+		created() {
+			let siteConfig = this.$getCache('siteConfig');
+			if (siteConfig.ticket_template) {
+				let ticket_template = JSON.parse(siteConfig.ticket_template);
+				this.selectInput = ticket_template.inputs.employee_name
+				this.printW = ticket_template.printW;
+				this.printH = ticket_template.printH;
+				this.inputs = ticket_template.inputs;
+			} else {
+				this.sumbitConfig(false);
+			}
+
+			if (this.$getToken()) {
+				this.getEmployeeList();
+				this.getDepartment();
+			} else {
+				this.innerVisible = true;
 			}
-			return data;
-		},
-		// 页面变更
-		handleCurrentChange(val) {
-		  this.page = val;
-		  this.get_list(true);
-		},
-		// 页面跳转
-		handleSizeChange(val) {
-		  this.page_size = val;
-		  this.get_list();
-		},
-		cheakAx() {
-			this.$axios('get', '/api/integral/site/config').then(res => {
-				this.$store.dispatch('setConfig', res.data.data);
-			})
 		},
-	},
-	created() {
-		let siteConfig=this.$getCache('siteConfig');
-		if(siteConfig.ticket_template){
-			let ticket_template=JSON.parse(siteConfig.ticket_template);
-			this.selectInput=ticket_template.inputs.employee_name
-			this.printW=ticket_template.printW;
-			this.printH=ticket_template.printH;
-			this.inputs=ticket_template.inputs;
-		}else{
-			this.sumbitConfig(false);
-		}
-			
-		if(this.$getToken()){
-			this.getEmployeeList();
-			this.getDepartment();
-		}else{
-			this.innerVisible=true;
+		mounted() {
+			this.get_list();
 		}
-	},
-	mounted() {
-		this.get_list();
-	}
-};
+	};
 </script>
 <style scoped lang="scss">
-.diy_tip_bg {
-  background: #f5f6f9;
-  overflow: hidden;
-  .diy-tip {
-    margin-bottom: 10px;
-    border: 1px solid #67c23a;
-    padding: 20px 16px;
-    p {
-      color: #67c23a !important;
-      font-size: 15px;
-      margin: 0 !important;
-      padding-bottom: 4px;
-    }
-  }
-}
-.headLi {
-  padding: 4px;
-  list-style: disc;
-  font-size: 14px;
-}
-.print_img{
-  width: 20cm;
-  height: 10cm;
-  text-align: center;
-  border: 1px solid #000;
-  z-index: 9;
-}	
-.print-box{
-	margin: auto;
-	background-color: #fff;
-	position: absolute;
-	top: 50%;
-	left: 50%;
-	transform: translate(-50%, -50%);
-}	
-.input-item{
-	background: #f4f4f5;
-	border-radius: 4px;
-	padding:6px 10px;
-	cursor: pointer;
-	color: #909399;
-	position: absolute;
-}
-.activeInput{
-	background-color: #ECF5FF;
-	color: #26a2ff;
-}
-.label{
-	text-align: right;
-	vertical-align: middle;
-	float: left;
-	font-size: 14px;
-	color: #606266;
-	line-height: 40px;
-	padding: 0 12px 0 0;
-	box-sizing: border-box;
-	font-weight: 600;
-}
-.search_box {
-	::v-deep button:active {
-		background: #26a2ff;
+	.diy_tip_bg {
+		background: #f5f6f9;
+		overflow: hidden;
+
+		.diy-tip {
+			margin-bottom: 10px;
+			border: 1px solid #67c23a;
+			padding: 20px 16px;
+
+			p {
+				color: #67c23a !important;
+				font-size: 15px;
+				margin: 0 !important;
+				padding-bottom: 4px;
+			}
+		}
+	}
+
+	.headLi {
+		padding: 4px;
+		list-style: disc;
+		font-size: 14px;
+	}
+
+	.print_img {
+		width: 20cm;
+		height: 10cm;
+		text-align: center;
+		border: 1px solid #000;
+		z-index: 9;
+	}
+
+	.print-box {
+		margin: auto;
+		background-color: #fff;
+		position: absolute;
+		top: 50%;
+		left: 50%;
+		transform: translate(-50%, -50%);
+	}
+
+	.input-item {
+		background: #f4f4f5;
+		border-radius: 4px;
+		padding: 6px 10px;
+		cursor: pointer;
+		color: #909399;
+		position: absolute;
 	}
-	::v-deep button:active .el-icon-search {
-		color: #fff;
+
+	.activeInput {
+		background-color: #ECF5FF;
+		color: #26a2ff;
 	}
-}
-.date-picker-width {
-	width: 100% !important;
-}
-.nopoint_box {
-	display: inline-block;
-	text-align: center;
-	width: 100%;
-	margin-bottom: 10px;
-}
-.noimg {
-	display: inline-block;
-	width: 110px;
-	height: 110px;
-	margin: 22px auto 16px;
-	/* background:url("/static/images/nodata_default.png") no-repeat center; */
-	background-size: 99%;
-}
-.noperson {
-	display: inline-block;
-	width: 110px;
-	height: 110px;
-	line-height: none;
-	margin: 22px auto 16px;
-	background: url('/static/images/noperson_default.png') no-repeat center;
-	background-size: 99%;
-}
-.title {
-	display: block;
-	text-align: center;
-	font-size: 12px !important;
-	line-height: 30px;
-	color: #909399 !important;
-	padding: 0;
-}
-.nopoint_box a {
-	color: #26a2ff;
-}
-.chart_content {
-	.chart-legend__wrap {
+
+	.label {
 		text-align: right;
-		padding: 20px;
-		padding-right: 50px;
-		& .chart-legend__pink {
-			position: relative;
-			padding-left: 12px;
-			padding-right: 5px;
-			&:after {
-				content: '';
-				position: absolute;
-				margin-top: -2px;
-				top: 35%;
-				left: 0;
-				width: 8px;
-				height: 8px;
-				background: #f56c6c;
-				border-radius: 100%;
-			}
+		vertical-align: middle;
+		float: left;
+		font-size: 14px;
+		color: #606266;
+		line-height: 40px;
+		padding: 0 12px 0 0;
+		box-sizing: border-box;
+		font-weight: 600;
+	}
+
+	.search_box {
+		::v-deep button:active {
+			background: #26a2ff;
 		}
 
-		& .chart-legend__green {
-			position: relative;
-			padding-left: 12px;
-			&:after {
-				content: '';
-				position: absolute;
-				margin-top: -2px;
-				top: 35%;
-				left: 0;
-				width: 8px;
-				height: 8px;
-				background: #53b87f;
-				border-radius: 100%;
+		::v-deep button:active .el-icon-search {
+			color: #fff;
+		}
+	}
+
+	.date-picker-width {
+		width: 100% !important;
+	}
+
+	.nopoint_box {
+		display: inline-block;
+		text-align: center;
+		width: 100%;
+		margin-bottom: 10px;
+	}
+
+	.noimg {
+		display: inline-block;
+		width: 110px;
+		height: 110px;
+		margin: 22px auto 16px;
+		/* background:url("/static/images/nodata_default.png") no-repeat center; */
+		background-size: 99%;
+	}
+
+	.noperson {
+		display: inline-block;
+		width: 110px;
+		height: 110px;
+		line-height: none;
+		margin: 22px auto 16px;
+		background: url('/static/images/noperson_default.png') no-repeat center;
+		background-size: 99%;
+	}
+
+	.title {
+		display: block;
+		text-align: center;
+		font-size: 12px !important;
+		line-height: 30px;
+		color: #909399 !important;
+		padding: 0;
+	}
+
+	.nopoint_box a {
+		color: #26a2ff;
+	}
+
+	.chart_content {
+		.chart-legend__wrap {
+			text-align: right;
+			padding: 20px;
+			padding-right: 50px;
+
+			& .chart-legend__pink {
+				position: relative;
+				padding-left: 12px;
+				padding-right: 5px;
+
+				&:after {
+					content: '';
+					position: absolute;
+					margin-top: -2px;
+					top: 35%;
+					left: 0;
+					width: 8px;
+					height: 8px;
+					background: #f56c6c;
+					border-radius: 100%;
+				}
+			}
+
+			& .chart-legend__green {
+				position: relative;
+				padding-left: 12px;
+
+				&:after {
+					content: '';
+					position: absolute;
+					margin-top: -2px;
+					top: 35%;
+					left: 0;
+					width: 8px;
+					height: 8px;
+					background: #53b87f;
+					border-radius: 100%;
+				}
 			}
 		}
 	}
-}
-.drawer_title {
-	font-size: 18px;
-	padding: 20px;
-}
-.manager_statistics_box {
-	background-color: #ffffff;
-	padding: 20px;
-	min-height: calc(100vh - 160px);
-	::v-deep .el-row .el-checkbox .el-checkbox__label {
-		line-height: 20px;
+
+	.drawer_title {
+		font-size: 18px;
+		padding: 20px;
+	}
+
+	.manager_statistics_box {
+		background-color: #ffffff;
+		padding: 20px;
+		min-height: calc(100vh - 160px);
+
+		::v-deep .el-row .el-checkbox .el-checkbox__label {
+			line-height: 20px;
+		}
 	}
-}
-.diy_tip_bg {
-	background: #f5f6f9;
-	overflow: hidden;
-	.diy-tip {
-		margin-bottom: 15px;
-		border: 1px solid #67c23a;
-		padding: 20px 16px;
-		p {
-			color: #67c23a !important;
-			font-size: 14px;
-			margin: 0 !important;
-			padding: 4px 0;
+
+	.diy_tip_bg {
+		background: #f5f6f9;
+		overflow: hidden;
+
+		.diy-tip {
+			margin-bottom: 15px;
+			border: 1px solid #67c23a;
+			padding: 20px 16px;
+
+			p {
+				color: #67c23a !important;
+				font-size: 14px;
+				margin: 0 !important;
+				padding: 4px 0;
+			}
 		}
 	}
-}
-.picker_er {
-	margin-top: 20px;
-}
-.el-range-editor--medium.el-input__inner {
-	width: 280px;
-}
-.el-checkbox.is-bordered.el-checkbox--medium {
-	padding: 9px 20px 7px 10px;
-}
-</style>
+
+	.picker_er {
+		margin-top: 20px;
+	}
+
+	.el-range-editor--medium.el-input__inner {
+		width: 280px;
+	}
+
+	.el-checkbox.is-bordered.el-checkbox--medium {
+		padding: 9px 20px 7px 10px;
+	}
+</style>

+ 12 - 2
src/views/common/rewardTask.vue

@@ -571,7 +571,17 @@ export default {
 		ruleItemChange(val,is){
 			let item = this.formData
 			if(val.length>0){
-				let data = this.$refs.ruleItem.getCheckedNodes()[0].data;//当前选中的节点数据
+				// let data = this.$refs.ruleItem.getCheckedNodes()[0].data;//当前选中的节点数据
+				let id=val[val.length-2]
+				let key='rule_'+id
+				let list =this.trees_ab.item_list[key]; //当前选中的节点数据
+				let data={};
+				list.forEach(e=>{
+					if(e.id==val[val.length-1]){
+						data=e;
+					}
+				})
+				
 				item.task_remark = data.name;
 				this.max = data.max_point * 1;
 				this.min = data.min_point * 1;
@@ -580,7 +590,7 @@ export default {
 					item.base_point = data.min_point;
 				}
 				item.range_type = data.range_type;
-				item.rule_id = data.pid;
+				item.rule_id = data.rule_id;
 				item.item_id = data.id;
 			}else{
 				item.task_remark = '';

+ 12 - 2
src/views/common/rewardTaskAmend.vue

@@ -522,14 +522,24 @@ export default {
 		ruleItemChange(val){
 			let item = this.formData
 			if(val.length>0){
-				let data = this.$refs.ruleItem.getCheckedNodes()[0].data;//当前选中的节点数据
+				// let data = this.$refs.ruleItem.getCheckedNodes()[0].data;//当前选中的节点数据
+				let id=val[val.length-2]
+				let key='rule_'+id
+				let list =this.trees_ab.item_list[key]; //当前选中的节点数据
+				let data={};
+				list.forEach(e=>{
+					if(e.id==val[val.length-1]){
+						data=e;
+					}
+				})
+				
 				item.task_remark = data.name;
 				this.treeName = data.name;
 				this.max = data.max_point * 1;
 				this.min = data.min_point * 1;
 				item.base_point = data.min_point;
 				item.range_type = data.range_type;
-				item.rule_id = data.pid;
+				item.rule_id = data.rule_id;
 				item.item_id = data.id;
 			}else{
 				item.task_remark = '';

+ 9 - 11
src/views/common/rewardTaskDetailsPopup.vue

@@ -182,18 +182,16 @@ export default {
 		},
 		// 获取数据
 		getData() {
-			let self = this;
-			self.loading = true;
+			this.loading = true;
 			let data = { task_id: this.id };
-			self.$axios('get', '/api/integral/task', data)
-				.then(res => {
-					if (res.data.code == 1) {
-						self.workDetailData = res.data.data;
-					}
-				})
-				.finally(() => {
-					self.loading = false;
-				});
+			this.$axios('get', '/api/integral/task', data).then(res => {
+				this.workDetailData = res.data.data;
+				if('2023-07-25 18:00' > '2023-07-25 17:00'){
+					console.log("123")
+				}
+			}).finally(() => {
+				this.loading = false;
+			});
 		}
 	}
 };

+ 14 - 4
src/views/common/temporaryTask.vue

@@ -521,14 +521,24 @@ export default {
 		ruleItemChange(val) {
 			let item = this.formData;
 			if (val.length > 0) {
-				let data = this.$refs.ruleItem.getCheckedNodes()[0].data; //当前选中的节点数据
-				item.task_remark = data.name;
-				this.treeName = data.name;
+				let id=val[val.length-2]
+				let key='rule_'+id
+				let list =this.trees_ab.item_list[key]; //当前选中的节点数据
+				let data={};
+				list.forEach(e=>{
+					if(e.id==val[val.length-1]){
+						data=e;
+					}
+				})
+				// let data = this.$refs.ruleItem.getCheckedNodes()[0].data;//当前选中的节点数据
+				// console.log(data)
+				item.task_remark = data.remark;
+				this.treeName = data.remark;
 				this.max = data.max_point * 1;
 				this.min = data.min_point * 1;
 				item.base_point = data.min_point;
 				item.range_type = data.range_type;
-				item.rule_id = data.pid;
+				item.rule_id = data.rule_id;
 				item.item_id = data.id;
 			} else {
 				item.task_remark = '';

+ 11 - 2
src/views/common/temporaryTaskAmend.vue

@@ -400,14 +400,23 @@ export default {
 		ruleItemChange(val){
 			let item = this.formData;
 			if(val.length>0){
-				let data = this.$refs.ruleItem.getCheckedNodes()[0].data;//当前选中的节点数据
+				// let data = this.$refs.ruleItem.getCheckedNodes()[0].data;//当前选中的节点数据
+				let id=val[val.length-2]
+				let key='rule_'+id
+				let list =this.trees_ab.item_list[key]; //当前选中的节点数据
+				let data={};
+				list.forEach(e=>{
+					if(e.id==val[val.length-1]){
+						data=e;
+					}
+				})
 				item.task_remark = data.name;
 				this.treeName = data.name;
 				this.max = data.max_point * 1;
 				this.min = data.min_point * 1;
 				item.base_point = data.min_point;
 				item.range_type = data.range_type;
-				item.rule_id = data.pid;
+				item.rule_id = data.rule_id;
 				item.item_id = data.id;
 			}else{
 				item.task_remark = '';

+ 54 - 55
src/views/ranking/attendance_rating.vue

@@ -1,37 +1,41 @@
 <template>
 	<div>
 		<div class="all" v-loading="attendload">
-			<FormBox :isShowHeader="false">
-				<template #footer>
-					<el-form :inline="true" label-width="70px">
-						<el-form-item label="考勤组">
+			<FormBox>
+				<div class="form-item">
+					<div class="form-label">时间范围</div>
+					<div class="form-search">
+						<el-date-picker
+							style="width:290px"
+							:clearable="false"
+							v-model="time_range"
+							type="daterange"
+							 size="medium"
+							value-format="yyyy-MM-dd"
+							range-separator="至"
+							start-placeholder="开始日期"
+							end-placeholder="结束日期"
+							:picker-options="instantPickerOptions"
+							@change="onFilterChanged"
+						></el-date-picker>
+					</div>
+				</div>
+					<div class="form-item">
+						<div class="form-label">考勤组</div>
+						<div class="form-search">
 							<el-select  size="medium" v-model="formData.group_id" @change="selectgroupId" filterable :clearable="false" placeholder="请选择考勤组">
 								<el-option v-for="item in checkingInGroup" :key="item.id" :label="item.name" :value="item.id"></el-option>
 							</el-select>
-						</el-form-item>
-						<el-form-item label="排名类型">
-							<el-select  size="medium" v-model="formData.event_type" @change="selectgroupId" style="width:110px" placeholder="请选择">
+						</div>
+					</div>
+					<div class="form-item">
+						<div class="form-label">排名类型</div>
+						<div class="form-search">
+							<el-select  size="medium" v-model="formData.event_type" @change="selectgroupId" placeholder="请选择">
 								<el-option v-for="(item, index) in event_type" :key="index" :label="item.name" :value="item.id"></el-option>
 							</el-select>
-						</el-form-item>
-						<el-form-item label="时间">
-							<el-date-picker
-								style="width:290px"
-								class="first-element-btn"
-								:clearable="false"
-								v-model="time_range"
-								type="daterange"
-								 size="medium"
-								value-format="yyyy-MM-dd"
-								range-separator="至"
-								start-placeholder="开始日期"
-								end-placeholder="结束日期"
-								:picker-options="instantPickerOptions"
-								@change="onFilterChanged"
-							></el-date-picker>
-						</el-form-item>
-					</el-form>
-				</template>
+						</div>
+					</div>
 			</FormBox>
 			<div style="margin: 10px 0;">
 				<el-button type="primary"  size="medium" plain @click="exportRanking">导出排名</el-button>
@@ -113,37 +117,32 @@
 		<!-- 导出弹窗 -->
 		<el-dialog title="导出排名" :visible.sync="dialogVisible" width="730px">
 			<div style="font-size:15px;margin-bottom:10px;font-weight: 600;">系统将按以下已选条件导出对应的排名报表</div>
-			<FormBox :isShowHeader="false">
-				<template slot="footer">
-					<el-form :inline="true" label-width="70px">
-						<el-form-item label="考勤组">
-							<el-select v-model="exportData.group_id" @change="selectgroupId" filterable :clearable="false" placeholder="请选择考勤组">
-								<el-option v-for="item in checkingInGroup" :key="item.id" :label="item.name" :value="item.id"></el-option>
-							</el-select>
-						</el-form-item>
+			<el-form :inline="true" label-width="70px">
+				<el-form-item label="考勤组">
+					<el-select v-model="exportData.group_id" @change="selectgroupId" filterable :clearable="false" placeholder="请选择考勤组">
+						<el-option v-for="item in checkingInGroup" :key="item.id" :label="item.name" :value="item.id"></el-option>
+					</el-select>
+				</el-form-item>
 
-						<el-form-item label="排名类型">
-							<el-select v-model="exportData.event_type" style="width:150px" placeholder="请选择">
-								<el-option v-for="(item, index) in event_type" :key="index" :label="item.name" :value="item.id"></el-option>
-							</el-select>
-						</el-form-item>
+				<el-form-item label="排名类型">
+					<el-select v-model="exportData.event_type" style="width:150px" placeholder="请选择">
+						<el-option v-for="(item, index) in event_type" :key="index" :label="item.name" :value="item.id"></el-option>
+					</el-select>
+				</el-form-item>
 
-						<el-form-item label="时间">
-							<el-date-picker
-								class="first-element-btn"
-								:clearable="false"
-								v-model="exportTime_range"
-								type="daterange"
-								value-format="yyyy-MM-dd"
-								range-separator="至"
-								start-placeholder="开始日期"
-								end-placeholder="结束日期"
-								:picker-options="instantPickerOptions"
-							></el-date-picker>
-						</el-form-item>
-					</el-form>
-				</template>
-			</FormBox>
+				<el-form-item label="时间">
+					<el-date-picker
+						:clearable="false"
+						v-model="exportTime_range"
+						type="daterange"
+						value-format="yyyy-MM-dd"
+						range-separator="至"
+						start-placeholder="开始日期"
+						end-placeholder="结束日期"
+						:picker-options="instantPickerOptions"
+					></el-date-picker>
+				</el-form-item>
+			</el-form>
 			<span slot="footer" class="dialog-footer">
 				<el-button @click="dialogVisible = false" size="medium">取 消</el-button>
 				<el-button type="primary" @click="exportExcel" size="medium">导 出</el-button>

+ 12 - 10
src/views/ranking/balanceA.vue

@@ -12,9 +12,9 @@
 				<el-tab-pane :disabled="loading" label="清空记录" name="clearLog"></el-tab-pane>
 			</el-tabs>
 			<FormBox  :isShowHeader="false" v-if="active == 'balanceA'">
-				<template #footer>
-					<el-form :inline="true" label-width="70px">
-						<el-form-item label="部门">
+				<div class="form-item">
+					<div class="form-label">所在部门</div>
+					<div class="form-search">
 							<el-cascader
 								size="medium"
 								class="date-picker-width"
@@ -26,18 +26,20 @@
 								filterable
 								placeholder="全公司"
 							></el-cascader>
-						</el-form-item>
-						<el-form-item label="人员搜索">
-							<el-input size="medium" clearable v-model="formData.keyword" placeholder="输入人员姓名" max="200" />
-						</el-form-item>
-					</el-form>
-				</template>
+					</div>
+				</div>
+				<div class="form-item">
+					<div class="form-label">姓名搜索</div>
+					<div class="form-search">
+						<el-input size="medium" clearable v-model="formData.keyword" placeholder="请输入" max="200" />
+					</div>
+				</div>
 			</FormBox>
 			<div style="margin: 10px 0;" v-if="active == 'balanceA'">
 				<el-button size="medium" plain type="primary" @click="clearAPointShow = true">清空A分余额</el-button>
 			</div>
 			<el-table :data="list" style="width: 100%" v-if="active == 'balanceA'" v-loading="loading">
-				<el-table-column label="人员" prop="name" width="250">
+				<el-table-column label="姓名" prop="name" width="250">
 					<template slot-scope="scope">
 						<div class="flex-box-ce">
 							<userImage class="fl" :id="scope.row.id" :user_name="scope.row.name" :img_url="scope.row.img_url" width="50px" height="50px"></userImage>

+ 39 - 43
src/views/ranking/custom_rank.vue

@@ -1,22 +1,17 @@
 <template>
 	<div class="all-box">
-		<div class="all">
-			<div class="flex-box">
-				<div class="flex-box" v-loading="item_loading">
-					<div class="terr-left">
-						<div style="text-align: center; padding: 10px 0;">
-							<el-button type="primary" @click="addGroup" :disabled="table_loading" v-if="employeeOrdept">新建分组</el-button>
-						</div>
-						<el-menu v-if="groups_list.length > 0" default-active="0" class="el-menu-vertical-demo elMenuCustomRule_Z">
-							<el-menu-item v-for="(item, index) in groups_list" :key="index" :index="index.toString()" @click="getGroupsInfo(item)">
-								<i class="el-icon-document-copy"></i>
-								<span slot="title">{{ item.name }}</span>
-							</el-menu-item>
-						</el-menu>
-						<div v-else style="text-align: center;margin-top: 10%;" class="fontColorC">
-							<img src="@/assets/image/nodata.png" style="width: 180px;height: 120px;margin: 30px auto;" />
-							<div>还没有自定义分组</div>
-						</div>
+		<div class="all flex-box">
+				<div class="terr-left" v-loading="item_loading">
+					<div style="text-align: center; padding: 10px 0;"><el-button type="primary" @click="addGroup" :disabled="table_loading" v-if="employeeOrdept">新建分组</el-button></div>
+					<el-menu v-if="groups_list.length > 0" default-active="0" class="el-menu-vertical-demo elMenuCustomRule_Z">
+						<el-menu-item v-for="(item, index) in groups_list" :key="index" :index="index.toString()" @click="getGroupsInfo(item)">
+							<i class="el-icon-document-copy"></i>
+							<span slot="title">{{ item.name }}</span>
+						</el-menu-item>
+					</el-menu>
+					<div v-else style="text-align: center;margin-top: 10%;" class="fontColorC">
+						<img src="@/assets/image/nodata.png" style="width: 180px;height: 120px;margin: 30px auto;" />
+						<div>还没有自定义分组</div>
 					</div>
 				</div>
 				<div class="listData flex-1" v-loading="table_loading">
@@ -31,28 +26,30 @@
 							</div>
 						</div>
 					</div>
-					<FormBox :isShowHeader="false">
-						<template #footer>
-							<el-form :model="params" :inline="true" ref="params">
-								<el-form-item label="月份" label-width="40px" v-if="newGroupForm.date_interval == 1">
-									<el-date-picker size="medium" v-model="time.month" type="month" :clearable="false" placeholder="请选择月份" value-format="yyyy-MM"></el-date-picker>
-								</el-form-item>
-								<el-form-item label="年份" label-width="40px" v-if="newGroupForm.date_interval == 3">
-									<el-date-picker size="medium" v-model="time.year" type="year" :clearable="false" placeholder="请选择年份" value-format="yyyy"></el-date-picker>
-								</el-form-item>
-								<el-form-item label="季度" label-width="40px" v-if="newGroupForm.date_interval == 2">
-									<Season ref="Seasons" :defaultHint="true" :isActive="true" class="date-picker-width" @confirm="export_quarter_confirm"></Season>
-								</el-form-item>
-								<el-form-item>
-									<el-checkbox v-model="sort" size="medium" label="由低到高" border></el-checkbox>
-								</el-form-item>
-								<el-form-item>
-									<el-button type="primary" @click="exportExcel" v-if="table_list.length > 0"  size="medium">导 出</el-button>
-								</el-form-item>
-								
-							</el-form>
-						</template>
-					</FormBox>	
+					<FormBox style="min-width: 800px !important;width:800px !important;">
+						<div class="form-item" v-if="newGroupForm.date_interval == 1">
+							<div class="form-label">月份</div>
+							<div class="form-search">
+								<el-date-picker size="medium" v-model="time.month" type="month" :clearable="false" placeholder="请选择月份" value-format="yyyy-MM"></el-date-picker>
+							</div>
+						</div>
+						<div class="form-item" v-if="newGroupForm.date_interval == 2">
+							<div class="form-label">季度</div>
+							<div class="form-search">
+								<Season ref="Seasons" :defaultHint="true" :isActive="true" class="date-picker-width" @confirm="export_quarter_confirm"></Season>
+							</div>
+						</div>
+						<div class="form-item" v-if="newGroupForm.date_interval == 3">
+							<div class="form-label">年份</div>
+							<div class="form-search">
+								<el-date-picker size="medium" v-model="time.year" type="year" :clearable="false" placeholder="请选择年份" value-format="yyyy"></el-date-picker>
+							</div>
+						</div>
+						<div class="form-item">
+							<el-checkbox style="margin-right: 10px;" v-model="sort" size="medium" label="由低到高" border></el-checkbox>
+							<el-button type="primary" @click="exportExcel" v-if="table_list.length > 0"  size="medium">导 出</el-button>
+						</div>
+					</FormBox>
 					<div style="height: 10px;"></div>	
 					<el-alert
 						v-if="lastUpdateTime != undefined || lastUpdateTime"
@@ -65,7 +62,7 @@
 						show-icon
 					></el-alert>
 
-					<el-table :data="table_list" style="cursor: pointer;" @row-click="open_detail">
+					<el-table :data="table_list" @row-click="open_detail">
 						<el-table-column label="名次" width="80" align="center" >
 							<template slot-scope="scope">
 								<img v-if="scope.row.rank === 1" src="@/assets/image/statistics_NO1.png" alt="" />
@@ -82,7 +79,7 @@
 								</div>
 							</template>
 						</el-table-column>
-						<el-table-column show-overflow-tooltip label="部门" align="left" min-width="120px" prop="deptName"></el-table-column>
+						<el-table-column show-overflow-tooltip label="部门" align="left" prop="deptName"></el-table-column>
 						<el-table-column label="B分" align="left" prop="point"></el-table-column>
 						<el-table-column>
 							<template slot-scope="scope">
@@ -109,7 +106,6 @@
 						></el-pagination>
 					</center>
 				</div>
-			</div>
 		</div>
 
 		
@@ -981,7 +977,7 @@ export default {
 	display: table-cell;
 	margin: 0 !important;
 	padding: 20px;
-	min-height: 600px;
+	min-width: 600px;
 	&::after {
 		content: ' ';
 		position: absolute;

+ 48 - 48
src/views/ranking/department_statistics.vue

@@ -1,54 +1,54 @@
 <template>
 	<div>
 		<el-row style="min-width:1160px;">
-			<FormBox  :isShowHeader="false">
-				<template #footer>
-					<el-form ref="form" :inline="true" label-width="60px">
-						<el-form-item label="人员">
-								<el-cascader
-									v-model="dept_name"
-									:options="dept_tree"
-									@change="dept1_null"
-									:props="{checkStrictly: true,value: 'id',label: 'name',children: '_child'}"
-									ref="dept1"
-									filterable
-									size="medium"
-									change-on-select
-									placeholder="全公司"
-									clearable
-								></el-cascader>
-						</el-form-item>
-						<el-form-item label="时间">
-							<div class="flex-box-ce">
-								<div style="margin-right: 10px;">
-									<el-select size="medium" v-model="time_type" placeholder="请选择分类" style="width: 100px;">
-										<el-option v-for="item in time_types" :key="item.label" :label="item.label" :value="item.value"></el-option>
-									</el-select>
-								</div>
-								<el-date-picker
-									v-show="time_type == '2'"
-									v-model="export_from.year"
-									type="year"
-									size="medium"
-									value-format="yyyy"
-									:clearable="false"
-									:editable="false"
-									placeholder="选择年份排名"
-								></el-date-picker>
-								<el-date-picker
-									v-show="time_type == '1' || time_type == '月份'"
-									v-model="export_from.month"
-									type="month"
-									size="medium"
-									value-format="yyyy-MM"
-									:clearable="false"
-									:editable="false"
-									placeholder="选择月份排名"
-								></el-date-picker>
-							</div>
-						</el-form-item>
-					</el-form>
-				</template>
+			<FormBox style="margin: 0px;background-color: #fff;">
+				<div class="form-item">
+					<div class="form-label">所在部门</div>
+					<div class="form-search">
+						<el-cascader
+							v-model="dept_name"
+							:options="dept_tree"
+							@change="dept1_null"
+							:props="{checkStrictly: true,value: 'id',label: 'name',children: '_child'}"
+							ref="dept1"
+							filterable
+							size="medium"
+							change-on-select
+							placeholder="全公司"
+							clearable
+						></el-cascader>
+					</div>
+				</div>
+				<div class="form-item">
+					<div class="form-label">时间范围</div>
+					<div class="form-search">
+						<el-select size="medium" v-model="time_type" placeholder="请选择分类" style="width: 95px;margin-right: 5px;">
+							<el-option v-for="item in time_types" :key="item.label" :label="item.label" :value="item.value"></el-option>
+						</el-select>
+						<el-date-picker
+							v-show="time_type == '2'"
+							v-model="export_from.year"
+							style="width: 190px;"
+							size="medium"
+							type="year"
+							value-format="yyyy"
+							:clearable="false"
+							:editable="false"
+							placeholder="选择年份排名"
+						></el-date-picker>
+						<el-date-picker
+							style="width: 190px;"
+							v-show="time_type == '1' || time_type == '月份'"
+							v-model="export_from.month"
+							size="medium"
+							type="month"
+							value-format="yyyy-MM"
+							:clearable="false"
+							:editable="false"
+							placeholder="选择月份排名"
+						></el-date-picker>
+					</div>
+				</div>
 			</FormBox>	
 			
 

+ 147 - 140
src/views/ranking/dept_rank.vue

@@ -1,57 +1,62 @@
 <template>
 	<div>
 		<div class="diy_tip_bg" v-show="tips_show">
-			<el-alert class="diy-tip" @close="tips_close" type="success" description><p>排名不包含初始分和工龄分</p></el-alert>
+			<el-alert class="diy-tip" @close="tips_close" type="success" description>
+				<p>排名不包含初始分和工龄分</p>
+				<p>
+					人员角色以系统角色为准:管理者即为系统现有的公司管理员、积分管理员、部门管理员三大角色(系统管理员不参与排名),员工即除以上管理角色以外的人员
+				</p>
+			</el-alert>
 		</div>
 		<div class="all padding-20">
-			<FormBox :isShowHeader="false" :isShowMore="true">
-				<template slot="footer">
-					<el-form :inline="true" label-width="70px">
-						<el-form-item label="时间">
-							<el-select size="medium" v-model="time_type" placeholder="请选择分类" style="width: 100px;">
-								<el-option v-for="item in time_types" :key="item.label" :label="item.label" :value="item.value"></el-option>
-							</el-select>
-						</el-form-item>
-						<el-form-item>
-							<el-date-picker
-								size="medium"
-								v-show="time_type == '1'"
-								v-model="formData.month"
-								class="date-picker-width"
-								type="month"
-								:clearable="false"
-								value-format="yyyy-MM"
-								placeholder="选择月份排名"
-							></el-date-picker>
-							<el-date-picker
-								size="medium"
-								v-show="time_type == '2'"
-								v-model="formData.year"
-								class="date-picker-width"
-								type="year"
-								:clearable="false"
-								value-format="yyyy"
-								placeholder="选择年份排名"
-							></el-date-picker>
-							<season v-if="time_type == '3'" class="date-picker-width" @confirm="export_quarter_confirm"></season>
-							<el-date-picker
-								size="medium"
-								v-show="time_type == '4'"
-								class="date-picker-width"
-								v-model="formData.time_range"
-								type="daterange"
-								value-format="yyyy-MM-dd"
-								range-separator="至"
-								:clearable="false"
-								start-placeholder="开始日期"
-								end-placeholder="结束日期"
-								:picker-options="instantPickerOptions"
-							></el-date-picker>
-						</el-form-item>
-						<el-form-item label="部门">
+			<FormBox>
+				<div class="form-item">
+					<div class="form-label">时间范围</div>
+					<div class="form-search">
+						<el-select size="medium" v-model="time_type" placeholder="请选择分类" style="width: 95px;margin-right: 5px;">
+							<el-option v-for="item in time_types" :key="item.label" :label="item.label" :value="item.value"></el-option>
+						</el-select>
+						<el-date-picker
+							size="medium"
+							v-show="time_type == '1'"
+							v-model="formData.month"
+							class="date-picker-width"
+							type="month"
+							:clearable="false"
+							value-format="yyyy-MM"
+							placeholder="选择月份排名"
+						></el-date-picker>
+						<el-date-picker
+							size="medium"
+							v-show="time_type == '2'"
+							v-model="formData.year"
+							class="date-picker-width"
+							type="year"
+							:clearable="false"
+							value-format="yyyy"
+							placeholder="选择年份排名"
+						></el-date-picker>
+						<season v-if="time_type == '3'" style="display: inline-block" class="date-picker-width" @confirm="export_quarter_confirm"></season>
+						<el-date-picker
+							size="medium"
+							v-show="time_type == '4'"
+							class="date-picker-width"
+							v-model="formData.time_range"
+							type="daterange"
+							value-format="yyyy-MM-dd"
+							range-separator="至"
+							:clearable="false"
+							start-placeholder="开始日期"
+							end-placeholder="结束日期"
+							:picker-options="instantPickerOptions"
+						></el-date-picker>
+					</div>
+				</div>
+				<div class="form-item">
+					<div class="form-label">所在部门</div>
+					<div class="form-search">
 							<el-cascader
 								size="medium"
-								class="date-picker-width"
 								v-model="dept_name"
 								:options="dept_tree"
 								:props="{ checkStrictly: true, value: 'id', label: 'name', children: '_child' }"
@@ -60,36 +65,48 @@
 								filterable
 								placeholder="全公司"
 							></el-cascader>
-						</el-form-item>
-						<el-form-item label="谁不参与排名" label-width="100px">
-							<el-select v-model="formData.exclusion" size="medium" clearable multiple filterable collapse-tags placeholder="请选择员工">
-								<el-option v-for="item in employee_map" :key="item.id" :label="item.name" :value="item.id"></el-option>
-							</el-select>
-						</el-form-item>
-						<el-form-item label="规则分类">
-							<el-cascader
-							   size="medium"
-								class="date-picker-width"
-								v-model="rule_id"
-								:options="rule_trees"
-								:props="props2"
-								ref="rule_id"
-								clearable
-								placeholder="请选择规则分类"
-							></el-cascader>
-						</el-form-item>
-						<el-form-item label="积分分类">
-							<el-select class="date-picker-width" size="medium" v-model="formData.pt_id" placeholder="请选择积分分类">
-								<el-option v-for="item in point_types" :key="item.name" :label="item.name" :value="item.id"></el-option>
-							</el-select>
-						</el-form-item>
-						<el-form-item label="人员">
-							<el-select size="medium" v-model="formData.position"  placeholder="请选择">
-								<el-option v-for="item in positions" :key="item.id" :label="item.name" :value="item.id"></el-option>
-							</el-select>
-						</el-form-item>
-					</el-form>
-				</template>
+					</div>
+				</div>
+				<div class="form-item">
+					<div class="form-label">规则分类</div>
+					<div class="form-search">
+						<el-cascader
+						   size="medium"
+							v-model="rule_id"
+							:options="rule_trees"
+							:props="props2"
+							ref="rule_id"
+							clearable
+							placeholder="请选择规则分类"
+						></el-cascader>
+					</div>
+				</div>
+				
+				<div class="form-item">
+					<div class="form-label">积分类型</div>
+					<div class="form-search">
+						<el-select size="medium" v-model="formData.pt_id" placeholder="请选择积分类型">
+							<el-option v-for="item in point_types" :key="item.name" :label="item.name" :value="item.id"></el-option>
+						</el-select>
+					</div>
+				</div>
+				
+				<div class="form-item">
+					<div class="form-label">人员角色</div>
+					<div class="form-search">
+						<el-select size="medium" v-model="formData.position"  placeholder="请选择">
+							<el-option v-for="item in positions" :key="item.id" :label="item.name" :value="item.id"></el-option>
+						</el-select>
+					</div>
+				</div>
+				<div class="form-item">
+					<div class="form-label">谁不参与排名</div>
+					<div class="form-search">
+						<el-select v-model="formData.exclusion" size="medium" clearable multiple filterable collapse-tags placeholder="请选择员工">
+							<el-option v-for="item in employee_map" :key="item.id" :label="item.name" :value="item.id"></el-option>
+						</el-select>
+					</div>
+				</div>
 			</FormBox>
 			<div style="padding: 10px 0;position: relative;z-index: 1;background-color: #fff;">
 				<el-button type="primary" style="margin-right: 10px;" size="medium" plain @click="dialogVisible = true">导出排名</el-button>
@@ -142,61 +159,56 @@
 		<!-- 导出弹窗 -->
 		<el-dialog title="导出排名" :visible.sync="dialogVisible" width="730px" top="3%">
 			<div style="font-size:15px;margin-bottom:10px;font-weight: 600;">系统将按以下已选条件导出对应的排名报表</div>
-			<FormBox :isShowHeader="false">
-				<template slot="footer">
-					<el-form :inline="true" label-width="70px">
-						<el-form-item label="时间">
-							<el-date-picker
-								v-model="Dc_Data.value1"
-								type="daterange"
-								size="medium"
-								value-format="yyyy-MM-dd"
-								range-separator="至"
-								start-placeholder="开始日期"
-								end-placeholder="结束日期"
-								:picker-options="instantPickerOptions"
-							></el-date-picker>
-						</el-form-item>
-						<el-form-item label="人员">
-							<el-select size="medium" v-model="Dc_Data.DC_position" style="width:150px" placeholder="请选择">
-								<el-option v-for="item in positions" :key="item.id" :label="item.name" :value="item.id"></el-option>
-							</el-select>
-						</el-form-item>
-						<el-form-item label="部门">
-							<el-cascader
-								class="date-picker-width cascader_bm"
-								v-model="Dc_Data.dept_name"
-								:options="dept_tree"
-								:props="{ checkStrictly: true, value: 'id', label: 'name', children: '_child' }"
-								ref="dept2"
-								size="medium"
-								clearable
-								filterable
-								placeholder="全公司"
-							></el-cascader>
-						</el-form-item>
-						<el-form-item label="规则分类">
-							<el-cascader
-								class="date-picker-width"
-								@change="ruleInquiredialog"
-								v-model="rule_ids"
-								:options="rule_trees"
-								:props="props"
-								size="medium"
-								ref="derive"
-								clearable
-								collapse-tags
-								placeholder="请选择规则分类"
-							></el-cascader>
-						</el-form-item>
-						<el-form-item label="积分分类">
-							<el-select style="width: 80px;" size="medium" v-model="Dc_Data.pt_id" placeholder="请选择积分分类">
-								<el-option v-for="item in point_types" :key="item.name" :label="item.name" :value="item.id"></el-option>
-							</el-select>
-						</el-form-item>
-					</el-form>
-				</template>
-			</FormBox>
+			<el-form :inline="true" label-width="70px">
+				<el-form-item label="时间范围">
+					<el-date-picker
+						v-model="Dc_Data.value1"
+						type="daterange"
+						size="medium"
+						value-format="yyyy-MM-dd"
+						range-separator="至"
+						start-placeholder="开始日期"
+						end-placeholder="结束日期"
+						:picker-options="instantPickerOptions"
+					></el-date-picker>
+				</el-form-item>
+				<el-form-item label="人员角色">
+					<el-select size="medium" v-model="Dc_Data.DC_position" style="width:150px" placeholder="请选择">
+						<el-option v-for="item in positions" :key="item.id" :label="item.name" :value="item.id"></el-option>
+					</el-select>
+				</el-form-item>
+				<el-form-item label="所在部门">
+					<el-cascader
+						class="cascader_bm"
+						v-model="Dc_Data.dept_name"
+						:options="dept_tree"
+						:props="{ checkStrictly: true, value: 'id', label: 'name', children: '_child' }"
+						ref="dept2"
+						size="medium"
+						clearable
+						filterable
+						placeholder="全公司"
+					></el-cascader>
+				</el-form-item>
+				<el-form-item label="规则分类">
+					<el-cascader
+						@change="ruleInquiredialog"
+						v-model="rule_ids"
+						:options="rule_trees"
+						:props="props"
+						size="medium"
+						ref="derive"
+						clearable
+						collapse-tags
+						placeholder="请选择规则分类"
+					></el-cascader>
+				</el-form-item>
+				<el-form-item label="积分类型">
+					<el-select style="width: 80px;" size="medium" v-model="Dc_Data.pt_id" placeholder="请选择积分分类">
+						<el-option v-for="item in point_types" :key="item.name" :label="item.name" :value="item.id"></el-option>
+					</el-select>
+				</el-form-item>
+			</el-form>
 			<span slot="footer" class="dialog-footer">
 				<el-button @click="dialogVisible = false" size="medium">取 消</el-button>
 				<el-button type="primary" @click="exportExcel" size="medium">导 出</el-button>
@@ -211,7 +223,6 @@
 						<el-date-picker
 							v-model="byRankingData.month"
 							size="medium"
-							class="date-picker-width"
 							type="month"
 							value-format="yyyy-MM"
 							placeholder="选择月份排名"
@@ -220,7 +231,6 @@
 					<el-form-item label="选择部门" prop="dept_id">
 						<el-cascader
 							size="medium"
-							class="date-picker-width"
 							v-model="byRankingData.dept_id"
 							:options="dept_tree"
 							:props="{ checkStrictly: true, value: 'obj', label: 'name', children: '_child' }"
@@ -726,6 +736,9 @@ export default {
 };
 </script>
 <style scoped lang="scss">
+.date-picker-width{
+	width: 188px;
+}	
 .search_box {
 	::v-deep button:active {
 		background: #26a2ff;
@@ -734,9 +747,6 @@ export default {
 		color: #fff;
 	}
 }
-.date-picker-width {
-	// width: 100% !important;
-}
 .nopoint_box {
 	display: inline-block;
 	text-align: center;
@@ -843,9 +853,6 @@ export default {
 .picker_er {
 	margin-top: 20px;
 }
-.el-range-editor--medium.el-input__inner {
-	width: 280px;
-}
 .el-checkbox.is-bordered.el-checkbox--medium {
 	padding: 9px 20px 7px 10px;
 }

+ 39 - 39
src/views/ranking/individual_statistics.vue

@@ -1,45 +1,45 @@
 <template>
 	<div>
 		<el-row style="min-width:1160px;">
-			<FormBox  :isShowHeader="false">
-				<template #footer>
-					<el-form ref="form" :inline="true" label-width="60px">
-						<el-form-item label="人员">
-							<el-select size="medium" v-model="select_employee_id" @change="selectEmployeeChange" filterable placeholder="请输入或选择人员">
-								<el-option v-for="item in employee_map" :key="item.id" :label="item.name" :value="item.id"></el-option>
-							</el-select>
-						</el-form-item>
-						<el-form-item label="时间">
-							<div class="flex-box-ce">
-								<div style="margin-right: 10px;">
-									<el-select size="medium" v-model="time_type" placeholder="请选择分类" style="width: 100px;">
-										<el-option v-for="item in time_types" :key="item.label" :label="item.label" :value="item.value"></el-option>
-									</el-select>
-								</div>
-								<el-date-picker
-									v-show="time_type == '2'"
-									v-model="export_from.year"
-									size="medium"
-									type="year"
-									value-format="yyyy"
-									:clearable="false"
-									:editable="false"
-									placeholder="选择年份排名"
-								></el-date-picker>
-								<el-date-picker
-									v-show="time_type == '1' || time_type == '月份'"
-									v-model="export_from.month"
-									size="medium"
-									type="month"
-									value-format="yyyy-MM"
-									:clearable="false"
-									:editable="false"
-									placeholder="选择月份排名"
-								></el-date-picker>
-							</div>
-						</el-form-item>
-					</el-form>
-				</template>
+			<FormBox style="margin: 0px;background-color: #fff;">
+				<div class="form-item">
+					<div class="form-label">姓名搜索</div>
+					<div class="form-search">
+						<el-select size="medium" v-model="select_employee_id" @change="selectEmployeeChange" filterable placeholder="请输入或选择人员">
+							<el-option v-for="item in employee_map" :key="item.id" :label="item.name" :value="item.id"></el-option>
+						</el-select>
+					</div>
+				</div>
+				<div class="form-item">
+					<div class="form-label">时间范围</div>
+					<div class="form-search">
+						<el-select size="medium" v-model="time_type" placeholder="请选择分类" style="width: 95px;margin-right: 5px;">
+							<el-option v-for="item in time_types" :key="item.label" :label="item.label" :value="item.value"></el-option>
+						</el-select>
+						<el-date-picker
+							v-show="time_type == '2'"
+							v-model="export_from.year"
+							style="width: 190px;"
+							size="medium"
+							type="year"
+							value-format="yyyy"
+							:clearable="false"
+							:editable="false"
+							placeholder="选择年份排名"
+						></el-date-picker>
+						<el-date-picker
+							style="width: 190px;"
+							v-show="time_type == '1' || time_type == '月份'"
+							v-model="export_from.month"
+							size="medium"
+							type="month"
+							value-format="yyyy-MM"
+							:clearable="false"
+							:editable="false"
+							placeholder="选择月份排名"
+						></el-date-picker>
+					</div>
+				</div>
 			</FormBox>			
 
 			<el-col :span="24" style="min-width:1160px;margin-top:10px;">

+ 99 - 90
src/views/ranking/integral_event.vue

@@ -2,96 +2,105 @@
 	<div>
 		<div class="all padding-20">
 			<FormBox :isShowMore="true" :isShowHeader="false">
-				<template #footer>
-					<el-form ref="form" :inline="true" label-width="90px" label-position="right">
-						<el-form-item label="规则分类">
-							<el-cascader
-								class="date-picker-width"
-								v-model="rule"
-								:options="rule_trees"
-								:props="props"
-								@change="rule_null"
-								size="medium"
-								ref="rule"
-								clearable
-								placeholder="全部规则分类"
-							></el-cascader>
-						</el-form-item>
-						<el-form-item label="积分类型">
-							<el-select class="date-picker-width" size="medium" v-model="formData.pt_id" clearable placeholder="请选择积分类型">
-								<el-option v-for="item in getTypes()" :key="item.name" :label="item.name" :value="item.id"></el-option>
-							</el-select>
-						</el-form-item>
-						<el-form-item label="部门">
-							<el-cascader
-								size="medium"
-								class="date-picker-width"
-								v-model="dept_name"
-								:options="dept_tree"
-								:props="{checkStrictly: true, multiple: true, value: 'id', label: 'name', children: '_child'}"
-								ref="dept"
-								clearable
-								collapse-tags
-								filterable
-								placeholder="全公司"
-							></el-cascader>
-						</el-form-item>
-						<el-form-item label="事件来源">
-							<el-select class="date-picker-width" size="medium" v-model="formData.source_type" clearable placeholder="全部">
+				<div class="form-item">
+					<div class="form-label">姓名搜索</div>
+					<div class="form-search">
+						<el-select size="medium" v-model="select_employee_id" filterable clearable placeholder="请输入或选择人员">
+							<el-option v-for="item in employee_map" :key="item.id" :label="item.name" :value="item.id"></el-option>
+						</el-select>
+					</div>
+				</div>
+				<div class="form-item">
+					<div class="form-label">所在部门</div>
+					<div class="form-search">
+						<el-cascader
+							size="medium"
+							v-model="dept_name"
+							:options="dept_tree"
+							:props="{ checkStrictly: true, multiple: true, value: 'id', label: 'name', children: '_child' }"
+							ref="dept"
+							filterable
+							collapse-tags
+							clearable
+							placeholder="全公司"
+						></el-cascader>
+					</div>
+				</div>
+				<div class="form-item">
+					<div class="form-label">积分类型</div>
+					<div class="form-search">
+						<el-select  size="medium" v-model="formData.pt_id" clearable placeholder="请选择积分类型">
+							<el-option v-for="item in getTypes()" :key="item.name" :label="item.name" :value="item.id"></el-option>
+						</el-select>
+					</div>
+				</div>
+				<div class="form-item">
+					<div class="form-label">事件来源</div>
+					<div class="form-search">
+							<el-select size="medium" v-model="formData.source_type" clearable placeholder="全部">
 								<el-option v-for="item in source_type" :key="item.id" :label="item.name" :value="item.id"></el-option>
 							</el-select>
-						</el-form-item>
-						<el-form-item label="复核状态">
-							<el-select class="date-picker-width" size="medium" v-model="formData.status"  placeholder="请选择复核状态">
-								<el-option v-for="item in dcArr" :key="item.name" :label="item.name" :value="item.id"></el-option>
-							</el-select>
-						</el-form-item>
-						<el-form-item label="人员状态">
-							<template slot="label">
-								<el-tooltip effect="dark" placement="top">
-								  <template slot="content">
-									默认仅显示组织架构中“已启用”人员的积分事件,未启用、已离职等人员的积分事件可以通过“未启用&未授权”筛选查看
-								  </template>
-								  <span>人员状态	<i class="el-icon-warning"></i></span>
-								</el-tooltip>
-							</template>
-							<el-select class="date-picker-width" size="medium" v-model="formData.is_enable">
-								<el-option  label="已启用" :value="1"></el-option>
-								<el-option  label="未授权&未启用" :value="0"></el-option>
-							</el-select>
-						</el-form-item>
-						<el-form-item label="发生时间">
-							<el-date-picker
-								v-model="time_slot"
-								type="daterange"
-								size="medium"
-								value-format="yyyy-MM-dd"
-								range-separator="至"
-								start-placeholder="开始日期"
-								end-placeholder="结束日期"
-							></el-date-picker>
-						</el-form-item>
-						<el-form-item label="更新时间" v-if="isDevelopment">
-							<el-date-picker
-								v-model="u_start"
-								type="daterange"
-								size="medium"
-								value-format="yyyy-MM-dd"
-								range-separator="至"
-								start-placeholder="开始日期"
-								end-placeholder="结束日期"
-							></el-date-picker>
-						</el-form-item>
-						<el-form-item label="人员搜索">
-							<el-select size="medium" v-model="select_employee_id" filterable clearable placeholder="请输入或选择人员" style="width: 250px;margin-right: 10px;">
-								<el-option v-for="item in employee_map" :key="item.id" :label="item.name" :value="item.id"></el-option>
-							</el-select>
-						</el-form-item>	
-						<el-form-item label="内容搜索">	
-							<el-input size="medium" v-model="formData.keyword" placeholder="输入关键字查找" max="200"/>
-						</el-form-item>
-					</el-form>
-				</template>
+					</div>
+				</div>
+				<div class="form-item">
+					<div class="form-label">规则分类</div>
+					<div class="form-search">
+						<el-cascader
+							v-model="rule"
+							:options="rule_trees"
+							:props="props"
+							@change="rule_null"
+							size="medium"
+							ref="rule"
+							clearable
+							placeholder="全部规则分类"
+						></el-cascader>
+					</div>
+				</div>
+				<div class="form-item">
+					<div class="form-label">
+						<el-tooltip effect="dark" placement="top">
+						  <template slot="content">
+							默认仅显示组织架构中“已启用”人员的积分事件,未启用、已离职等人员的积分事件可以通过“未启用&未授权”筛选查看
+						  </template>
+						  <span>人员状态	<i class="el-icon-warning"></i></span>
+						</el-tooltip>
+					</div>
+					<div class="form-search">
+						<el-select size="medium" v-model="formData.is_enable">
+							<el-option  label="已启用" :value="1"></el-option>
+							<el-option  label="未授权&未启用" :value="0"></el-option>
+						</el-select>
+					</div>
+				</div>
+				<div class="form-item">
+					<div class="form-label">发生时间</div>
+					<div class="form-search">
+						<el-date-picker
+							v-model="time_slot"
+							type="daterange"
+							size="medium"
+							value-format="yyyy-MM-dd"
+							range-separator="至"
+							start-placeholder="开始日期"
+							end-placeholder="结束日期"
+						></el-date-picker>
+					</div>
+				</div>
+				<div class="form-item">
+					<div class="form-label">复核状态</div>
+					<div class="form-search">
+						<el-select class="date-picker-width" size="medium" v-model="formData.status"  placeholder="请选择复核状态">
+							<el-option v-for="item in dcArr" :key="item.name" :label="item.name" :value="item.id"></el-option>
+						</el-select>
+					</div>
+				</div>
+				<div class="form-item">
+					<div class="form-label">内容搜索</div>
+					<div class="form-search">
+						<el-input size="medium" clearable max="20" v-model="formData.keyword" placeholder="请输入"></el-input>
+					</div>
+				</div>
 			</FormBox>
 			
 			<div style="padding: 10px 0;position: relative;z-index: 1;background-color: #fff;">
@@ -105,7 +114,7 @@
 			<div>
 				<el-table :data="list" style="width: 100%;cursor: pointer;" v-loading="loading" @row-click="open_detail" @selection-change="deleteEvents">
 					<el-table-column v-if="employeeOrdept" type="selection" width="55"></el-table-column>
-					<el-table-column prop="employee_name" label="人员" align="left" min-width="125px">
+					<el-table-column prop="employee_name" label="姓名" align="left" min-width="125px">
 						<template slot-scope="scope">
 							<div class="flex-box">
 								<userImage :user_name="scope.row.employee_name" :img_url="scope.row.employee_img_url" width="50px" height="50px"></userImage>
@@ -452,7 +461,7 @@ export default {
 				// {id: 6,name: '绩效任务包'},
 				{ id: 8, name: '积分导入' },
 				{ id: 9, name: 'A分转B分' },
-				{ id: 10, name: '钉钉汇报(日志)奖扣分' }
+				{ id: 10, name: '钉钉汇报(日志)分' }
 			],
 			dcArr: [
 				{ id: 1, name: '复核通过' },

+ 58 - 66
src/views/ranking/log_rank.vue

@@ -1,62 +1,61 @@
 <template>
 	<div>
 		<div class="all">
-			<FormBox  :isShowHeader="false">
-				<template #footer>
-					<el-form :inline="true" label-width="70px">
-						<el-form-item label="时间">
-							<el-select size="medium" v-model="time_type" placeholder="请选择分类" style="width: 100px;">
-								<el-option v-for="item in time_types" :key="item.label" :label="item.label" :value="item.value"></el-option>
-							</el-select>
-						</el-form-item>
-						<el-form-item>
-							<el-date-picker
-								size="medium"
-								v-show="time_type == '1' || time_type == '月份'"
-								v-model="formData.month"
-								class="date-picker-width"
-								type="month"
-								value-format="yyyy-MM"
-								placeholder="选择月份排名"
-							></el-date-picker>
-							<el-date-picker
-								size="medium"
-								v-show="time_type == '2'"
-								v-model="formData.year"
-								class="date-picker-width"
-								type="year"
-								value-format="yyyy"
-								placeholder="选择年份排名"
-							></el-date-picker>
-							<season v-if="time_type == '3'" :isActive="true" class="date-picker-width" @confirm="export_quarter_confirm"></season>
-							<el-date-picker
-								size="medium"
-								v-show="time_type == '4'"
-								class="date-picker-width"
-								v-model="formData.time_range"
-								type="daterange"
-								format="yyyy 年 MM 月 dd 日"
-								value-format="yyyy-MM-dd"
-								range-separator="至"
-								start-placeholder="开始日期"
-								end-placeholder="结束日期"
-							></el-date-picker>
-						</el-form-item>
-						<el-form-item label="部门">
-							<el-cascader
-								size="medium"
-								class="date-picker-width"
-								v-model="dept_name"
-								:options="dept_tree"
-								:props="{ checkStrictly: true, value: 'id', label: 'name', children: '_child' }"
-								ref="dept"
-								clearable
-								filterable
-								placeholder="全公司"
-							></el-cascader>
-						</el-form-item>
-					</el-form>
-				</template>
+			<FormBox >
+				<div class="form-item">
+					<div class="form-label">时间范围</div>
+					<div class="form-search">
+						<el-select size="medium" v-model="time_type" placeholder="请选择分类" style="width: 95px;margin-right: 5px;">
+							<el-option v-for="item in time_types" :key="item.label" :label="item.label" :value="item.value"></el-option>
+						</el-select>
+						<el-date-picker
+							size="medium"
+							v-show="time_type == '1' || time_type == '月份'"
+							v-model="formData.month"
+							class="date-picker-width"
+							type="month"
+							value-format="yyyy-MM"
+							placeholder="选择月份排名"
+						></el-date-picker>
+						<el-date-picker
+							size="medium"
+							v-show="time_type == '2'"
+							v-model="formData.year"
+							class="date-picker-width"
+							type="year"
+							value-format="yyyy"
+							placeholder="选择年份排名"
+						></el-date-picker>
+						<season v-if="time_type == '3'" style="display: inline-block" :isActive="true" class="date-picker-width" @confirm="export_quarter_confirm"></season>
+						<el-date-picker
+							size="medium"
+							v-show="time_type == '4'"
+							class="date-picker-width"
+							v-model="formData.time_range"
+							type="daterange"
+							format="yyyy 年 MM 月 dd 日"
+							value-format="yyyy-MM-dd"
+							range-separator="至"
+							start-placeholder="开始日期"
+							end-placeholder="结束日期"
+						></el-date-picker>
+					</div>
+				</div>
+				<div class="form-item">
+					<div class="form-label">所在部门</div>
+					<div class="form-search">
+						<el-cascader
+							size="medium"
+							v-model="dept_name"
+							:options="dept_tree"
+							:props="{ checkStrictly: true, value: 'id', label: 'name', children: '_child' }"
+							ref="dept"
+							clearable
+							filterable
+							placeholder="全公司"
+						></el-cascader>
+					</div>
+				</div>
 			</FormBox>
 			<div style="margin: 10px 0;">
 				<el-button style="margin-right: 10px;" type="primary" size="medium" plain @click="dialogVisible = true">导出排名</el-button>
@@ -80,7 +79,7 @@
 					</template>
 				</el-table-column>
 				<el-table-column show-overflow-tooltip label="部门" align="left" min-width="120px" prop="deptName"></el-table-column>
-				<el-table-column prop="point" label="日志分" align="left">
+				<el-table-column prop="point" label="B分" align="left">
 					<template slot-scope="scope">
 						<b style="font-size:15px;color:#909399">{{ scope.row.point }}</b>
 					</template>
@@ -105,8 +104,6 @@
 		<!-- 导出弹窗 -->
 		<el-dialog title="导出排名" :visible.sync="dialogVisible" width="730px" top="10%">
 			<div style="font-size:15px;margin-bottom:10px;font-weight: 600;">系统将按以下已选条件导出对应的排名报表</div>
-			<FormBox :isShowHeader="false">
-				<template slot="footer">
 					<el-form :inline="true" label-width="70px">
 						<el-form-item label="时间">
 							<el-date-picker
@@ -119,7 +116,7 @@
 								end-placeholder="结束日期"
 							></el-date-picker>
 						</el-form-item>
-						<el-form-item label="部门">
+						<el-form-item label="所在部门">
 							<el-cascader
 								class="date-picker-width"
 								v-model="Dc_Data.dept_name"
@@ -133,8 +130,6 @@
 							></el-cascader>
 						</el-form-item>
 					</el-form>
-				</template>
-			</FormBox>
 			<span slot="footer" class="dialog-footer">
 				<el-button @click="dialogVisible = false" size="medium">取 消</el-button>
 				<el-button type="primary" @click="exportExcel" size="medium">导 出</el-button>
@@ -413,11 +408,8 @@ export default {
 </script>
 
 <style scoped>
-.el-date-editor.el-input {
-	width: auto;
-}
 .date-picker-width {
-	width: 100% !important;
+	width: 188px;
 }
 .search ::v-deep .el-input-group__append:active {
 	background: #26a2ff;

+ 28 - 29
src/views/ranking/manager_statistics.vue

@@ -4,12 +4,25 @@
 			<el-tabs v-model="activeName">
 				<!-- 奖扣完成情况 -->
 				<el-tab-pane label="奖扣完成情况" name="second">
-					<FormBox  :isShowHeader="false">
-						<template #footer>
-
-							<el-form :model="condition" :inline="true" ref="formData" label-width="70px">
-								<!-- 部门 -->
-								<el-form-item label="部门">
+					<FormBox>
+						<div class="form-item">
+							<div class="form-label">时间范围</div>
+							<div class="form-search">
+									<el-date-picker
+										class="date-picker-width"
+										v-model="condition.month"
+										:clearable="false"
+										size="medium"
+										width="100%"
+										type="month"
+										placeholder="请选择月份"
+										value-format="yyyy-MM"
+									></el-date-picker>
+							</div>
+						</div>
+						<div class="form-item">
+							<div class="form-label">所在部门</div>
+							<div class="form-search">
 									<el-cascader
 										size="medium"
 										class="date-picker-width"
@@ -23,28 +36,14 @@
 										change-on-select
 										placeholder="全公司"
 									></el-cascader>
-								</el-form-item>
-
-								<!-- 时间 -->
-								<el-form-item label="时间">
-									<el-date-picker
-										class="date-picker-width"
-										v-model="condition.month"
-										:clearable="false"
-										size="medium"
-										width="100%"
-										type="month"
-										placeholder="请选择月份"
-										value-format="yyyy-MM"
-									></el-date-picker>
-								</el-form-item>
-
-								<!-- 搜索框 -->
-								<el-form-item label="人员搜索">
-									<el-input v-model="condition.keyword" placeholder="输入同事姓名" max="200" size="medium" clearable></el-input>
-								</el-form-item>
-							</el-form>
-					</template>
+							</div>
+						</div>
+						<div class="form-item">
+							<div class="form-label">姓名搜索</div>
+							<div class="form-search">
+								<el-input v-model="condition.keyword" placeholder="请输入" max="200" size="medium" clearable></el-input>
+							</div>
+						</div>
 					</FormBox>
 					<div style="margin: 10px 0;" class="flex-box-ce">
 						<downloadexcel
@@ -61,7 +60,7 @@
 						<span class="orange">*管理者奖扣任务均为B分,对A分不做要求*</span>
 					</div>
 					<el-table :data="last" style="width: 100%;cursor: pointer;" v-loading="loading2"  @row-click="openDetail">
-						<el-table-column label="管理者">
+						<el-table-column label="姓名">
 							<template slot-scope="scope">
 								<div class="flex-box flex-v-ce">
 									<userImage :user_name="scope.row.name" :img_url="scope.row.img_url" width="50px" height="50px"></userImage>

+ 23 - 29
src/views/ranking/task_rank.vue

@@ -1,15 +1,13 @@
 <template>
 	<div>
 		<div class="all">
-			<FormBox  :isShowHeader="false">
-				<template #footer>
-					<el-form :inline="true" label-width="70px">
-					<el-form-item label="时间">
-						<el-select size="medium" v-model="time_type" placeholder="请选择分类" style="width: 100px;">
+			<FormBox >
+				<div class="form-item">
+					<div class="form-label">时间范围</div>
+					<div class="form-search">
+						<el-select size="medium" v-model="time_type" placeholder="请选择分类" style="width: 95px;margin-right: 5px;">
 							<el-option v-for="item in time_types" :key="item.label" :label="item.label" :value="item.value"></el-option>
 						</el-select>
-					</el-form-item>
-					<el-form-item>
 						<el-date-picker
 							size="medium"
 							v-show="time_type == '1' || time_type == '月份'"
@@ -28,7 +26,7 @@
 							value-format="yyyy"
 							placeholder="选择年份排名"
 						></el-date-picker>
-						<season v-if="time_type == '3'" :isActive="true" class="date-picker-width" @confirm="export_quarter_confirm"></season>
+						<season v-if="time_type == '3'" style="display: inline-block" :isActive="true" class="date-picker-width" @confirm="export_quarter_confirm"></season>
 						<el-date-picker
 							size="medium"
 							v-show="time_type == '4'"
@@ -41,11 +39,13 @@
 							start-placeholder="开始日期"
 							end-placeholder="结束日期"
 						></el-date-picker>
-					</el-form-item>
-					<el-form-item label="部门">
+					</div>
+				</div>
+				<div class="form-item">
+					<div class="form-label">所在部门</div>
+					<div class="form-search">
 						<el-cascader
 							size="medium"
-							class="date-picker-width"
 							v-model="dept_name"
 							:options="dept_tree"
 							:props="{ checkStrictly: true, value: 'id', label: 'name', children: '_child' }"
@@ -54,15 +54,16 @@
 							filterable
 							placeholder="全公司"
 						></el-cascader>
-					</el-form-item>
-
-					<el-form-item label="积分类型">
-						<el-select class="date-picker-width" size="medium" v-model="formData.pt_id" placeholder="请选择积分类型">
+					</div>
+				</div>
+				<div class="form-item">
+					<div class="form-label">积分类型</div>
+					<div class="form-search">
+						<el-select size="medium" v-model="formData.pt_id" placeholder="请选择积分类型">
 							<el-option v-for="item in point_types" :key="item.name" :label="item.name" :value="item.id"></el-option>
 						</el-select>
-					</el-form-item>
-				</el-form>
-				</template>
+					</div>
+				</div>
 			</FormBox>
 			<div style="margin: 10px 0;">
 				<el-button style="margin-right: 10px;" type="primary"  size="medium" plain @click="dialogVisible = true">导出排名</el-button>
@@ -86,7 +87,7 @@
 					</template>
 				</el-table-column>
 				<el-table-column show-overflow-tooltip label="部门" align="left" min-width="120px" prop="deptName"></el-table-column>
-				<el-table-column prop="point" label="任务分" align="left">
+				<el-table-column prop="point" :label="formData.pt_id==3? 'B分':'A分'" align="left">
 					<template slot-scope="scope">
 						<b style="font-size:15px;color:#909399">{{ scope.row.point }}</b>
 					</template>
@@ -111,8 +112,6 @@
 		<!-- 导出弹窗 -->
 		<el-dialog title="导出排名" :visible.sync="dialogVisible" width="730px" top="10%">
 			<div style="font-size:15px;margin-bottom:10px;font-weight: 600;">系统将按以下已选条件导出对应的排名报表</div>
-			<FormBox :isShowHeader="false">
-				<template slot="footer">
 				<el-form :inline="true" label-width="70px">
 					<el-form-item label="时间">
 						<el-date-picker
@@ -125,9 +124,9 @@
 							end-placeholder="结束日期"
 						></el-date-picker>
 					</el-form-item>
-					<el-form-item label="部门">
+					<el-form-item label="所在部门">
 						<el-cascader
-							class="date-picker-width cascader_bm"
+							class="cascader_bm"
 							v-model="Dc_Data.dept_name"
 							:options="dept_tree"
 							:props="{ checkStrictly: true, value: 'id', label: 'name', children: '_child' }"
@@ -144,8 +143,6 @@
 						</el-select>
 					</el-form-item>
 					</el-form>
-				</template>
-			</FormBox>
 			<span slot="footer" class="dialog-footer">
 				<el-button @click="dialogVisible = false" size="medium">取 消</el-button>
 				<el-button type="primary" @click="exportExcel" size="medium">导 出</el-button>
@@ -429,11 +426,8 @@ export default {
 </script>
 
 <style scoped>
-.el-date-editor.el-input {
-	width: auto;
-}
 .date-picker-width {
-	width: 100% !important;
+	width: 188px;
 }
 .search ::v-deep .el-input-group__append:active {
 	background: #26a2ff;

+ 53 - 58
src/views/ranking/total_rank.vue

@@ -5,29 +5,28 @@
 		</div>
 
 		<div class="all padding-20">
-			<FormBox :isShowHeader="false">
-				<template slot="footer">
-					<el-form :inline="true" label-width="70px">
-						<el-form-item label="部门">
-							<el-cascader
-							  size="medium"
-								class="date-picker-width"
-								v-model="dept_name"
-								:options="dept_tree"
-								:props="{ checkStrictly: true,value:'id',label:'name',children:'_child'}"
-								ref="dept"
-								clearable
-								filterable
-								placeholder="全公司"
-							></el-cascader>
-						</el-form-item>
-					</el-form>
-				</template>
+			<FormBox>
+				<div class="form-item">
+					<div class="form-label">所在部门</div>
+					<div class="form-search">
+						<el-cascader
+						  size="medium"
+							class="date-picker-width"
+							v-model="dept_name"
+							:options="dept_tree"
+							:props="{ checkStrictly: true,value:'id',label:'name',children:'_child'}"
+							ref="dept"
+							clearable
+							filterable
+							placeholder="全公司"
+						></el-cascader>
+					</div>
+				</div>
+				<div style="margin-bottom: 10px;">
+					<el-button type="primary" style="margin-right: 10px;" size="medium" plain @click="dialogVisible = true">导出排名</el-button>
+					<el-checkbox v-model="sort" size="medium" label="排名由低到高" border></el-checkbox>
+				</div>
 			</FormBox>
-			<div style="margin: 10px 0;">
-				<el-button type="primary" style="margin-right: 10px;" size="medium" plain @click="dialogVisible = true">导出排名</el-button>
-				<el-checkbox v-model="sort" size="medium" label="排名由低到高" border></el-checkbox>
-			</div>
 			<el-table :data="list" style="width: 100%;cursor: pointer;" v-loading="loading" @row-click="open_detail">
 				<el-table-column label="名次" width="80" align="center">
 					<template slot-scope="scope">
@@ -77,42 +76,38 @@
 		<!-- 导出弹窗 -->
 		<el-dialog title="导出排名" :visible.sync="dialogVisible" width="730px" top="10%">
 			<div style="font-size:15px;margin-bottom:10px;font-weight: 600;">系统将按以下已选条件导出对应的排名报表</div>
-			<FormBox :isShowHeader="false">
-				<template slot="footer">
-					<el-form :inline="true"  label-width="70px">
-						<el-form-item label="人员">
-							<el-select  size="medium" v-model="Dc_Data.DC_position" placeholder="请选择">
-								<el-option v-for="item in positions" :key="item.id" :label="item.name" :value="item.age"></el-option>
-							</el-select>
-						</el-form-item>
-						<el-form-item label="部门">
-							<el-cascader
-								class="date-picker-width cascader_bm"
-								v-model="Dc_Data.dept_name"
-								:options="dept_tree"
-								:props="{ checkStrictly: true,value:'id',label:'name',children:'_child'}"
-								ref="dept2"
-								size="medium"
-								clearable
-								filterable
-								placeholder="全公司"
-							></el-cascader>
-						</el-form-item>
-						<el-form-item label="时间">
-							<el-date-picker
-								v-model="Dc_Data.value1"
-								type="daterange"
-								 size="medium"
-								value-format="yyyy-MM-dd"
-								format="yyyy-MM-dd"
-								range-separator="至"
-								start-placeholder="开始日期"
-								end-placeholder="结束日期"
-							></el-date-picker>
-						</el-form-item>
-					</el-form>
-				</template>
-			</FormBox>
+				<el-form :inline="true"  label-width="70px">
+					<el-form-item label="人员范围">
+						<el-select  size="medium" v-model="Dc_Data.DC_position" placeholder="请选择">
+							<el-option v-for="item in positions" :key="item.id" :label="item.name" :value="item.age"></el-option>
+						</el-select>
+					</el-form-item>
+					<el-form-item label="所在部门">
+						<el-cascader
+							class="date-picker-width cascader_bm"
+							v-model="Dc_Data.dept_name"
+							:options="dept_tree"
+							:props="{ checkStrictly: true,value:'id',label:'name',children:'_child'}"
+							ref="dept2"
+							size="medium"
+							clearable
+							filterable
+							placeholder="全公司"
+						></el-cascader>
+					</el-form-item>
+					<el-form-item label="时间范围">
+						<el-date-picker
+							v-model="Dc_Data.value1"
+							type="daterange"
+							 size="medium"
+							value-format="yyyy-MM-dd"
+							format="yyyy-MM-dd"
+							range-separator="至"
+							start-placeholder="开始日期"
+							end-placeholder="结束日期"
+						></el-date-picker>
+					</el-form-item>
+				</el-form>
 
 			<span slot="footer" class="dialog-footer">
 				<el-button @click="dialogVisible = false"  size="medium">取 消</el-button>

+ 15 - 13
src/views/set/framework.vue

@@ -41,19 +41,21 @@
 					</div>
 				</div>
 				<div class="terr-right border-right flex-1">
-					<FormBox  :isShowHeader="false">
-						<template #footer>
-							<el-form ref="form" :inline="true" label-width="70PX">
-								<el-form-item label="启用状态">
-									<el-select v-model="status"  size="medium" style="margin-right: 10px;width: 150px;">
-									  <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"></el-option>
-									</el-select>
-								</el-form-item>
-								<el-form-item label="姓名搜索">
-									<el-input placeholder="输入同事姓名" size="medium" style="width: 230px;" v-model="keywords" clearable></el-input>
-								</el-form-item>
-							</el-form>
-						</template>
+					<FormBox >
+						<div class="form-item">
+							<div class="form-label">启用状态</div>
+							<div class="form-search">
+								<el-select v-model="status"  size="medium">
+								  <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"></el-option>
+								</el-select>
+							</div>
+						</div>
+						<div class="form-item">
+							<div class="form-label">姓名搜索</div>
+							<div class="form-search">
+								<el-input placeholder="请输入" size="medium" v-model="keywords" clearable></el-input>
+							</div>
+						</div>
 					</FormBox>
 					<div style="margin: 10px 0;" class="flex-box-ce">
 						<el-button @click="participation()" :loading="enable_loading" size="medium" type="primary">批量启用</el-button>

+ 1 - 1
src/views/set/screenSet.vue

@@ -228,7 +228,7 @@
 												clearable
 											></el-cascader>
 										</el-form-item>
-										<el-form-item label="人员">
+										<el-form-item label="姓名">
 											<el-select class="width250" v-model="config.ranking.condition.position" placeholder="请选择人员范围">
 												<el-option v-for="item in roleOptions" :key="item.value" :label="item.label" :value="item.value"></el-option>
 											</el-select>

+ 40 - 28
src/views/task/allTask.vue

@@ -4,34 +4,45 @@
 			<el-tabs v-model="formData.status">
 				<el-tab-pane :disabled="loading" v-for="(item, index) in tabsOption" :key="index" :label="item.label" :name="item.name"></el-tab-pane>
 			</el-tabs>
-			<FormBox :isShowHeader="false">
-				<template #footer>
-					<el-form ref="formData" :inline="true" :model="formData" label-width="70px">
-						<el-form-item label="积分类型">
-							<el-select size="medium" v-model="formData.pt_id" clearable placeholder="请选择积分类型">
-								<el-option v-for="item in point_type" :key="item.id" :label="item.name" :value="item.id"></el-option>
-							</el-select>
-						</el-form-item>
-						<el-form-item label="排序">
-							<el-select size="medium" v-model="formData.sort_by" placeholder="请选择排序">
-								<el-option v-for="item in sort_by" :key="item.id" :label="item.name" :value="item.code"></el-option>
-							</el-select>
-						</el-form-item>
-						<el-form-item label="执行人">
-							<el-select size="medium" v-model="formData.employee_id" filterable clearable placeholder="请输入执行人">
-							  <el-option v-for="item in employee_map" :key="item.id" :label="item.name" :value="item.id"></el-option>
-							</el-select>
-						</el-form-item>
-						<el-form-item label="审批人">
-							<el-select size="medium" v-model="formData.reviewer_id" filterable clearable placeholder="请输入审批人">
-							  <el-option v-for="item in employee_map" :key="item.id" :label="item.name" :value="item.id"></el-option>
-							</el-select>
-						</el-form-item>
-						<el-form-item label="任务内容">
-							<el-input size="medium" clearable max="20" placeholder="搜索任务内容" v-model="formData.content"></el-input>
-						</el-form-item>
-					</el-form>
-				</template>
+			<FormBox style="margin-bottom: 10px;">
+				<div class="form-item">
+					<div class="form-label">执行人</div>
+					<div class="form-search">
+						<el-select size="medium" v-model="formData.employee_id" filterable clearable placeholder="请输入执行人">
+						  <el-option v-for="item in employee_map" :key="item.id" :label="item.name" :value="item.id"></el-option>
+						</el-select>
+					</div>
+				</div>
+				<div class="form-item">
+					<div class="form-label">审批人</div>
+					<div class="form-search">
+						<el-select size="medium" v-model="formData.reviewer_id" filterable clearable placeholder="请输入审批人">
+						  <el-option v-for="item in employee_map" :key="item.id" :label="item.name" :value="item.id"></el-option>
+						</el-select>
+					</div>
+				</div>
+				<div class="form-item">
+					<div class="form-label">积分类型</div>
+					<div class="form-search">
+						<el-select size="medium" v-model="formData.pt_id" placeholder="请选择积分类型">
+							<el-option v-for="item in point_type" :key="item.id" :label="item.name" :value="item.id"></el-option>
+						</el-select>
+					</div>
+				</div>
+				<div class="form-item">
+					<div class="form-label">排序</div>
+					<div class="form-search">
+						<el-select size="medium" v-model="formData.sort_by" placeholder="请选择排序">
+							<el-option v-for="item in sort_by" :key="item.id" :label="item.name" :value="item.code"></el-option>
+						</el-select>
+					</div>
+				</div>
+				<div class="form-item">
+					<div class="form-label">内容搜索</div>
+					<div class="form-search">
+						<el-input size="medium" v-model="formData.content" clearable placeholder="请输入" max="20"></el-input>
+					</div>
+				</div>
 			</FormBox>	
 
 			<div>
@@ -190,6 +201,7 @@ export default {
 			this.formData.reviewer_id=''
 			this.formData.sort_by = 'create_time';
 			this.formData.order = 'desc';
+			this.formData.content = '';
 			this.list = [];
 			this.$refs.elTable.clearSort();
 			this.get_list();

+ 31 - 23
src/views/task/myExamine.vue

@@ -4,29 +4,37 @@
 			<el-tabs v-model="formData.status">
 				<el-tab-pane  :disabled="loading" v-for="(item, index) in tabsOption" :key="index" :label="item.label" :name="item.name"></el-tab-pane>
 			</el-tabs>
-			<FormBox :isShowHeader="false">
-				<template slot="footer">
-					<el-form ref="formData" :inline="true" :model="formData" label-width="70px">
-						<el-form-item label="积分类型">
-							<el-select size="medium" v-model="formData.pt_id" placeholder="请选择积分类型">
-								<el-option v-for="item in point_type" :key="item.id" :label="item.name" :value="item.id"></el-option>
-							</el-select>
-						</el-form-item>
-						<el-form-item label="执行人" label-width="60px">
-							<el-select size="medium" v-model="formData.employee_id" filterable clearable placeholder="请输入执行人">
-							  <el-option v-for="item in employee_map" :key="item.id" :label="item.name" :value="item.id"></el-option>
-							</el-select>
-						</el-form-item>
-						<el-form-item label="排序" label-width="60px">
-							<el-select size="medium" v-model="formData.sort" placeholder="请选择排序">
-								<el-option v-for="item in sort" :key="item.id" :label="item.name" :value="item.code"></el-option>
-							</el-select>
-						</el-form-item>
-						<el-form-item label="内容搜索">
-							<el-input size="medium" v-model="formData.content" clearable placeholder="请输入任务内容" max="200"></el-input>
-						</el-form-item>
-					</el-form>
-				</template>
+			<FormBox style="margin-bottom: 10px;">
+				<div class="form-item">
+					<div class="form-label">执行人</div>
+					<div class="form-search">
+						<el-select size="medium" v-model="formData.employee_id" filterable clearable placeholder="请输入执行人">
+						  <el-option v-for="item in employee_map" :key="item.id" :label="item.name" :value="item.id"></el-option>
+						</el-select>
+					</div>
+				</div>
+				<div class="form-item">
+					<div class="form-label">积分类型</div>
+					<div class="form-search">
+						<el-select size="medium" v-model="formData.pt_id" placeholder="请选择积分类型">
+							<el-option v-for="item in point_type" :key="item.id" :label="item.name" :value="item.id"></el-option>
+						</el-select>
+					</div>
+				</div>
+				<div class="form-item">
+					<div class="form-label">排序</div>
+					<div class="form-search">
+						<el-select size="medium" v-model="formData.sort" placeholder="请选择排序">
+							<el-option v-for="item in sort" :key="item.id" :label="item.name" :value="item.code"></el-option>
+						</el-select>
+					</div>
+				</div>
+				<div class="form-item">
+					<div class="form-label">内容搜索</div>
+					<div class="form-search">
+						<el-input size="medium" v-model="formData.content" clearable placeholder="请输入" max="200"></el-input>
+					</div>
+				</div>
 			</FormBox>
 
 			<div>

+ 90 - 62
src/views/task/my_issue.vue

@@ -4,63 +4,75 @@
 			<el-tabs v-model="status">
 				<el-tab-pane :disabled="loading" v-for="(item, index) in tabsOption" :key="index" :label="item.label" :name="item.name"></el-tab-pane>
 			</el-tabs>
-			<FormBox>
-				<template slot="header">
-					<el-dropdown @command="downClick">
-						<el-button type="primary">
-							发布任务
-							<i class="el-icon-arrow-down el-icon--right"></i>
-						</el-button>
-						<el-dropdown-menu slot="dropdown">
-							<el-dropdown-item command="1">+ 临时任务</el-dropdown-item>
-							<el-dropdown-item command="2">+ 悬赏任务</el-dropdown-item>
-						</el-dropdown-menu>
-					</el-dropdown>
-				</template>
-				<template slot="footer">
-					<el-form ref="formData" :inline="true" :model="formData" label-width="70px">
-						
-						<el-form-item v-if="status == 'assign' || status == 'reward'" label="积分类型">
-							<el-select  size="medium" v-model="formData.pt_id" placeholder="请选择">
-								<el-option v-for="item in point_types" :key="item.id" :label="item.name" :value="item.id"></el-option>
-							</el-select>
-						</el-form-item>
-						
-						<el-form-item v-if="status == 'assign'" label="状态">
-							<el-select  size="medium" v-model="formData.status" placeholder="请选择">
-								<el-option v-for="item in task_status" :key="item.id" :label="item.name" :value="item.code"></el-option>
-							</el-select>
-						</el-form-item>
-					
-						<el-form-item v-if="status == 'assign'" label="排序">
-							<el-select  size="medium" v-model="formData.sort" placeholder="请选择排序">
-								<el-option v-for="item in sort" :key="item.id" :label="item.name" :value="item.code"></el-option>
-							</el-select>
-						</el-form-item>
-					
-						<el-form-item v-if="status == 'assign' || status == 'repetitive'" label="执行人">
-							<el-select  size="medium" v-model="formData.executor_id" clearable filterable placeholder="请输入或选择执行人">
-								<el-option v-for="item in employee_map" :key="item.id" :label="item.name" :value="item.id"></el-option>
-							</el-select>
-						</el-form-item>
-					
-						<el-form-item label="审批人">
-							<el-select size="medium" v-model="formData.reviewer_id" clearable filterable placeholder="请输入或选择审批人">
-								<el-option v-for="item in employee_map" :key="item.id" :label="item.name" :value="item.id"></el-option>
-							</el-select>
-						</el-form-item>
-
-						<el-form-item v-if="status == 'reward'" label="排序">
-							<el-select size="medium" v-model="formData.order_by" placeholder="请选择排序">
-								<el-option v-for="item in order_by" :key="item.id" :label="item.name" :value="item.code"></el-option>
-							</el-select>
-						</el-form-item>
-						
-						<el-form-item label="内容搜索">
-							<el-input  size="medium" clearable style="width: 217px;" v-model="formData.content" placeholder="请输入任务内容" max="200"></el-input>
-						</el-form-item>
-					</el-form>
-				</template>
+			<div>
+				<el-dropdown @command="downClick">
+					<el-button type="primary">
+						发布任务
+						<i class="el-icon-arrow-down el-icon--right"></i>
+					</el-button>
+					<el-dropdown-menu slot="dropdown">
+						<el-dropdown-item command="1">+ 临时任务</el-dropdown-item>
+						<el-dropdown-item command="2">+ 悬赏任务</el-dropdown-item>
+					</el-dropdown-menu>
+				</el-dropdown>
+			</div>
+			<FormBox style="margin: 10px 0;">
+				<div class="form-item" v-if="status == 'assign'">
+					<div class="form-label">状态</div>
+					<div class="form-search">
+						<el-select  size="medium" v-model="formData.status" placeholder="请选择">
+							<el-option v-for="item in task_status" :key="item.id" :label="item.name" :value="item.code"></el-option>
+						</el-select>
+					</div>
+				</div>
+				<div class="form-item" v-if="status == 'assign' || status == 'repetitive'">
+					<div class="form-label">执行人</div>
+					<div class="form-search">
+						<el-select  size="medium" v-model="formData.executor_id" clearable filterable placeholder="请输入或选择执行人">
+							<el-option v-for="item in employee_map" :key="item.id" :label="item.name" :value="item.id"></el-option>
+						</el-select>
+					</div>
+				</div>
+				<div class="form-item">
+					<div class="form-label">审批人</div>
+					<div class="form-search">
+						<el-select size="medium" v-model="formData.reviewer_id" clearable filterable placeholder="请输入或选择审批人">
+							<el-option v-for="item in employee_map" :key="item.id" :label="item.name" :value="item.id"></el-option>
+						</el-select>
+					</div>
+				</div>
+				<div class="form-item" v-if="status == 'assign' || status == 'reward'">
+					<div class="form-label">积分类型</div>
+					<div class="form-search">
+						<el-select  size="medium" v-model="formData.pt_id" placeholder="请选择">
+							<el-option v-for="item in point_types" :key="item.id" :label="item.name" :value="item.id"></el-option>
+						</el-select>
+					</div>
+				</div>
+				<div class="form-item" v-if="status == 'assign'">
+					<div class="form-label">排序</div>
+					<div class="form-search">
+						<el-select size="medium" v-model="formData.sort" placeholder="请选择排序">
+							<el-option v-for="item in sort" :key="item.id" :label="item.name" :value="item.code"></el-option>
+						</el-select>
+					</div>
+				</div>
+				<div class="form-item" v-if="status == 'reward'">
+					<div class="form-label">排序</div>
+					<div class="form-search">
+						<el-select size="medium" v-model="formData.order_by" placeholder="请选择排序">
+							<el-option v-for="item in order_by" :key="item.id" :label="item.name" :value="item.code"></el-option>
+						</el-select>
+					</div>
+				</div>
+				<div class="form-item">
+					<div class="form-label">内容搜索</div>
+					<div class="form-search">
+						<el-input  size="medium" clearable  v-model="formData.content" placeholder="请输入" max="200"></el-input>
+					</div>
+				</div>
+				
+				
 			</FormBox>
 
 			<div v-show="status == 'assign'">
@@ -349,7 +361,7 @@ export default {
 				{ id: 3, name: '已完成', code: 'complete' },
 				{ id: 4, name: '已审批', code: 'reviewed' },
 				// {id: 5, name: '已撤销', code: 'revocation'},
-				{ id: 6, name: '已退回', code: 'refuse' }
+				// { id: 6, name: '已退回', code: 'refuse' }
 			],
 			sort: [{ id: 2, name: '按发布时间', code: 'publish' }, { id: 1, name: '按截止时间', code: 'expire' }],
 			order_by: [{ id: 2, name: '按发布时间', code: 'create_time' }, { id: 1, name: '按截止时间', code: 'expire_time' }],
@@ -632,12 +644,28 @@ export default {
 			let b = this.$axios('get', '/api/integral/rule/trees', { cycle_type: '1', pt_id: '3' }, 'v2');
 			let c = this.$axios('get', '/api/integral/rule/trees', { cycle_type: '1' });
 			Promise.all([a, b, c]).then(res => {
-				this.trees_v2_ab_module.A = res[0].data.data.tree;
-				this.trees_v2_ab_module.B = res[1].data.data.tree;
-				this.trees_v2_ab_module.rule_tree = this.flatten(res[2].data.data.rule_tree);
-				this.trees_v2_ab_module.rule_tree_all = this.getTreeData(res[2].data.data.rule_tree);
+				this.trees_v2_ab_module={
+					A:res[0].data.data.tree,
+					B:res[1].data.data.tree,
+					rule_tree:this.flatten(res[2].data.data.rule_tree),
+					rule_tree_all:this.getTreeData(res[2].data.data.rule_tree),
+					item_list:res[2].data.data.item_list,
+				}
 			});
 		},
+		getItemDetail(arr) {
+			let result = [];
+			for (const item of arr) {
+				var res = JSON.parse(JSON.stringify(item)); // 先克隆一份数据作为第一层级的填充
+				delete res['child'];
+				result.push(res);
+				if (item.child instanceof Array && item.child.length > 0) {
+					// 如果当前child为数组并且长度大于0,才可进入getItemDetail()方法
+					result = result.concat(this.getItemDetail(item.child));
+				}
+			}
+			return result;
+		},
 		getTreeData(data) {
 			for (var i = 0; i < data.length; i++) {
 				if (data[i].child.length < 1) {

+ 23 - 19
src/views/task/my_task.vue

@@ -4,25 +4,29 @@
 			<el-tabs v-model="formData.status">
 				<el-tab-pane :disabled="loading" v-for="(item, index) in tabsOption" :key="index" :label="item.label" :name="item.name"></el-tab-pane>
 			</el-tabs>
-			<FormBox :isShowHeader="false">
-				<template slot="footer">
-					<el-form ref="formData" :inline="true" :model="formData" label-width="70px">
-						<el-form-item label="积分类型">
-							<el-select  size="medium" v-model="formData.pt_id" placeholder="请选择积分类型">
-								<el-option v-for="item in point_type" :key="item.id" :label="item.name" :value="item.id"></el-option>
-							</el-select>
-						</el-form-item>
-						<el-form-item label="排序">
-							<el-select  size="medium" v-model="formData.sort" placeholder="请选择排序">
-								<el-option v-for="item in sort" :key="item.id" :label="item.name" :value="item.code"></el-option>
-							</el-select>
-						</el-form-item>
-						
-						<el-form-item label="内容搜索">
-							<el-input  size="medium" clearable v-model="formData.content" placeholder="请输入任务内容" max="200"></el-input>
-						</el-form-item>
-					</el-form>
-				</template>	
+			<FormBox style="margin-bottom: 10px;">
+				<div class="form-item">
+					<div class="form-label">积分类型</div>
+					<div class="form-search">
+						<el-select  size="medium" v-model="formData.pt_id" placeholder="请选择积分类型">
+							<el-option v-for="item in point_type" :key="item.id" :label="item.name" :value="item.id"></el-option>
+						</el-select>
+					</div>
+				</div>			
+				<div class="form-item">
+					<div class="form-label">排序</div>
+					<div class="form-search">
+						<el-select  size="medium" v-model="formData.sort" placeholder="请选择排序">
+							<el-option v-for="item in sort" :key="item.id" :label="item.name" :value="item.code"></el-option>
+						</el-select>
+					</div>
+				</div>			
+				<div class="form-item">
+					<div class="form-label">内容搜索</div>
+					<div class="form-search">
+						<el-input  size="medium" clearable v-model="formData.content" placeholder="请输入" max="200"></el-input>
+					</div>
+				</div>	
 			</FormBox>	
 
 			<div v-if="formData.status == 'running'">

+ 456 - 413
src/views/welfare/conversion.vue

@@ -1,51 +1,53 @@
 <template>
 	<div>
 		<div class="all" style="padding: 20px;">
-			  <FormBox  :isShowHeader="false">
-				<template #footer>
-					<el-form :inline="true" label-width="70px">
-						<el-form-item label="发放时间">
-							<el-date-picker
-								size="medium"
-								style="width:290px"
-								class="first-element-btn"
-								:clearable="false"
-								v-model="time_range"
-								type="daterange"
-								value-format="yyyy-MM-dd"
-								range-separator="至"
-								start-placeholder="开始日期"
-								end-placeholder="结束日期"
-								:picker-options="instantPickerOptions"
-							></el-date-picker>
-						</el-form-item>
-						<el-form-item label="人员">
-							<el-select v-model="formData.employee_id" size="medium" filterable placeholder="请输入或选择人员" clearable>
-								<el-option v-for="item in employee_map" :key="item.id" :label="item.name" :value="item.id"></el-option>
-							</el-select>
-						</el-form-item>
-						<el-form-item label="状态">
-							<el-select v-model="formData.status" size="medium" style="width:110px" placeholder="请选择" clearable>
-								<el-option v-for="(item, index) in event_type" :key="index" :label="item.name" :value="item.id"></el-option>
-							</el-select>
-						</el-form-item>
-						<el-form-item label="兑换码">
-							<el-input placeholder="奖品搜索" size="medium" v-model="formData.sn" clearable></el-input>
-						</el-form-item>
-					</el-form>
-				</template>
-			  </FormBox>	
-							
+			<FormBox>
+				<div class="form-item">
+					<div class="form-label">发放时间</div>
+					<div class="form-search">
+						<el-date-picker size="medium" style="width:290px" class="first-element-btn" :clearable="false"
+							v-model="time_range" type="daterange" value-format="yyyy-MM-dd" range-separator="至"
+							start-placeholder="开始日期" end-placeholder="结束日期"
+							:picker-options="instantPickerOptions"></el-date-picker>
+					</div>
+				</div>
+				<div class="form-item">
+					<div class="form-label">姓名搜索</div>
+					<div class="form-search">
+						<el-select v-model="formData.employee_id" size="medium" filterable placeholder="请输入或选择人员" clearable>
+							<el-option v-for="item in employee_map" :key="item.id" :label="item.name" :value="item.id"></el-option>
+						</el-select>
+					</div>
+				</div>
+				<div class="form-item">
+					<div class="form-label">发放状态</div>
+					<div class="form-search">
+						<el-select v-model="formData.status" size="medium"  placeholder="请选择" clearable>
+							<el-option v-for="(item, index) in event_type" :key="index" :label="item.name" :value="item.id"></el-option>
+						</el-select>
+					</div>
+				</div>
+				<div class="form-item">
+					<div class="form-label">兑换码</div>
+					<div class="form-search">
+						<el-input placeholder="请输入兑换码" size="medium" v-model="formData.sn" clearable></el-input>
+					</div>
+				</div>
+			</FormBox>
+
 			<div style="margin: 10px 0;">
-				<el-button type="primary" size="medium" plain	 @click="grants" style="margin-right: 10px;">批量发放</el-button>
+				<el-button type="primary" size="medium" plain @click="grants"
+					style="margin-right: 10px;">批量发放</el-button>
 				<el-button type="primary" size="medium" plain @click="exportExcel">导出</el-button>
 			</div>
-			<el-table :data="list" style="width: 100%;cursor: pointer;" v-loading="loading" @row-click="openDetail" @selection-change="handleSelectionChange">
+			<el-table :data="list" style="width: 100%;cursor: pointer;" v-loading="loading" @row-click="openDetail"
+				@selection-change="handleSelectionChange">
 				<el-table-column type="selection" :selectable="selectable"></el-table-column>
-				<el-table-column label="人员" align="left">
+				<el-table-column label="姓名" align="left">
 					<template slot-scope="scope">
 						<div style="display:flex;">
-							<userImage :user_name="scope.row.employee.name" :id="scope.row.employee.id" width="50px" height="50px"></userImage>
+							<userImage :user_name="scope.row.employee.name" :id="scope.row.employee.id" width="50px"
+								height="50px"></userImage>
 							<span style="line-height: 50px; padding-left: 10px;">{{ scope.row.employee.name }}</span>
 						</div>
 					</template>
@@ -61,7 +63,8 @@
 				<el-table-column prop="sn" label="兑换码" align="center" min-width="140"></el-table-column>
 				<el-table-column prop="complete_time" label="发放时间" align="center">
 					<template slot-scope="scope">
-						<span v-if="scope.row.complete_time">{{ $moment.unix(scope.row.complete_time).format('YYYY-MM-DD HH:mm:ss') }}</span>
+						<span
+							v-if="scope.row.complete_time">{{ $moment.unix(scope.row.complete_time).format('YYYY-MM-DD HH:mm:ss') }}</span>
 						<span v-else>--</span>
 					</template>
 				</el-table-column>
@@ -75,7 +78,9 @@
 				<el-table-column prop="point" label="操作" align="left">
 					<template slot="header" slot-scope="scope">
 						<el-tooltip effect="dark" placement="top-start">
-							<div slot="content"><div style="margin-bottom: 10px;">7日内可执行撤销操作</div></div>
+							<div slot="content">
+								<div style="margin-bottom: 10px;">7日内可执行撤销操作</div>
+							</div>
 							<span>
 								<span>操作</span>
 								<i class="el-icon-warning"></i>
@@ -83,9 +88,12 @@
 						</el-tooltip>
 					</template>
 					<template slot-scope="scope">
-						<el-link type="primary" :underline="false" @click.stop="grant(scope.row.id)" v-if="scope.row.status == 0" style="padding-right: 10px;">发放</el-link>
-						<el-link type="primary" :underline="false" @click.stop="revoke(scope.row.id)" v-if="scope.row.status == 1" style="padding-right: 10px;">撤销</el-link>
-						<el-link type="primary" :underline="false" @click.stop="cancel(scope.row.id)" v-if="scope.row.status == 0" style="padding-right: 10px;">取消</el-link>
+						<el-link type="primary" :underline="false" @click.stop="grant(scope.row.id)"
+							v-if="scope.row.status == 0" style="padding-right: 10px;">发放</el-link>
+						<el-link type="primary" :underline="false" @click.stop="revoke(scope.row.id)"
+							v-if="scope.row.status == 1" style="padding-right: 10px;">撤销</el-link>
+						<el-link type="primary" :underline="false" @click.stop="cancel(scope.row.id)"
+							v-if="scope.row.status == 0" style="padding-right: 10px;">取消</el-link>
 						<el-link type="primary" :underline="false">查看明细</el-link>
 					</template>
 				</el-table-column>
@@ -95,24 +103,20 @@
 				</template>
 			</el-table>
 			<center style="padding: 20px 0;">
-				<el-pagination
-					background
-					@size-change="handleSizeChange"
-					@current-change="handleCurrentChange"
-					:current-page="formData.page"
-					:page-sizes="[10, 20, 50, 100]"
-					layout="total, sizes, prev, pager, next"
-					:page-size="pageLimit"
-					:total="total"
-				></el-pagination>
+				<el-pagination background @size-change="handleSizeChange" @current-change="handleCurrentChange"
+					:current-page="formData.page" :page-sizes="[10, 20, 50, 100]"
+					layout="total, sizes, prev, pager, next" :page-size="pageLimit" :total="total"></el-pagination>
 			</center>
 		</div>
 
-		<el-dialog title="发放结果" :visible.sync="isResult" width="600" :close-on-click-modal="false" :close-on-press-escape="false" :show-close="false">
+		<el-dialog title="发放结果" :visible.sync="isResult" width="600" :close-on-click-modal="false"
+			:close-on-press-escape="false" :show-close="false">
 			<div v-if="!isShowError">
-				<div style="text-align: center;margin-bottom: 10px;" class="red" v-if="isShowError2">{{ errorMsg }}</div>
+				<div style="text-align: center;margin-bottom: 10px;" class="red" v-if="isShowError2">{{ errorMsg }}
+				</div>
 				<el-progress :text-inside="true" :stroke-width="24" :percentage="percentage"></el-progress>
-				<div style="margin-top: 20px;border: 1px solid #f1f1f1;max-height: 500px;overflow-y: auto;" class="scroll-bar">
+				<div style="margin-top: 20px;border: 1px solid #f1f1f1;max-height: 500px;overflow-y: auto;"
+					class="scroll-bar">
 					<div class="flex-box-ce results" style="font-weight: 600;">
 						<div style="border-right: 1px solid #f1f1f1;width: 50px;">序号</div>
 						<div class="flex-1" style="border-right: 1px solid #f1f1f1;">姓名</div>
@@ -126,7 +130,8 @@
 					</div>
 				</div>
 				<span slot="footer">
-					<div class="flex-box-end" style="margin-top: 20px;" v-show="isShowError2 && results.length != resultList.length">
+					<div class="flex-box-end" style="margin-top: 20px;"
+						v-show="isShowError2 && results.length != resultList.length">
 						<el-button type="primary" @click="isResult = false" size="small">确 定</el-button>
 					</div>
 					<div class="flex-box-end" style="margin-top: 20px;" v-show="results.length == resultList.length">
@@ -137,15 +142,18 @@
 			<div v-else>
 				<div style="text-align: center;" class="red">{{ errorMsg }}</div>
 				<span slot="footer">
-					<div class="flex-box-end" style="margin-top: 20px;"><el-button type="primary" @click="isResult = false" size="small">确 定</el-button></div>
+					<div class="flex-box-end" style="margin-top: 20px;"><el-button type="primary"
+							@click="isResult = false" size="small">确 定</el-button></div>
 				</span>
 			</div>
 		</el-dialog>
 
 		<!-- 缓存的奖扣 -->
-		<el-dialog title="网络中断发放对象列表" :visible.sync="isShowBreak" width="800" :close-on-click-modal="false" :close-on-press-escape="false" :show-close="false">
+		<el-dialog title="网络中断发放对象列表" :visible.sync="isShowBreak" width="800" :close-on-click-modal="false"
+			:close-on-press-escape="false" :show-close="false">
 			<div>
-				<div style="margin-top: 20px;border: 1px solid #f1f1f1;max-height: 500px;overflow-y: auto;" class="scroll-bar">
+				<div style="margin-top: 20px;border: 1px solid #f1f1f1;max-height: 500px;overflow-y: auto;"
+					class="scroll-bar">
 					<div class="flex-box-ce results" style="font-weight: 600;">
 						<div style="border-right: 1px solid #f1f1f1;width: 50px;">序号</div>
 						<div class="flex-1" style="border-right: 1px solid #f1f1f1;">姓名</div>
@@ -168,12 +176,11 @@
 		<el-dialog title="取消兑换" :visible.sync="isCancel" width="500px">
 			<div style="margin: 10px 0;">
 				<el-form ref="addTypeName" :model="addTypeName" label-width="85px" @submit.native.prevent>
-					<el-form-item
-						label="取消原因"
+					<el-form-item label="取消原因"
 						:rules="[{ required: true, message: '取消原因不能为空' }, { min: 2, max: 200, message: '长度在 2 到 200 个字符', trigger: 'blur' }]"
-						prop="remark"
-					>
-						<el-input v-model="addTypeName.remark" type="textarea" placeholder="请输入取消原因" :rows="5" maxlength="200" show-word-limit></el-input>
+						prop="remark">
+						<el-input v-model="addTypeName.remark" type="textarea" placeholder="请输入取消原因" :rows="5"
+							maxlength="200" show-word-limit></el-input>
 					</el-form-item>
 				</el-form>
 				<span class="dialog-footer" style="display:flex;justify-content: flex-end;">
@@ -187,14 +194,17 @@
 			<div style="margin: 10px 0;" v-loading="attendload">
 				<div class="flex-box-ce">
 					<div class="flex-box-ce flex-1">
-						<userImage :user_name="detailData.employee.name" :id="detailData.employee.id" width="50px" height="50px" fontSize="1"></userImage>
+						<userImage :user_name="detailData.employee.name" :id="detailData.employee.id" width="50px"
+							height="50px" fontSize="1"></userImage>
 						<div style="margin-left:10px;margin-right:4px;">
 							<div style="font-size: 16px;font-weight: 700;">{{ detailData.employee.name }}</div>
 							<div v-if="detailData.employee.employee_detail">
-							  <span v-for="(item, index) in detailData.employee.employee_detail.dept_list" :key="index">
-								{{ item.dept_name }}
-								<span v-if="detailData.employee.employee_detail.dept_list.length - index > 1">,</span>
-							  </span>
+								<span v-for="(item, index) in detailData.employee.employee_detail.dept_list"
+									:key="index">
+									{{ item.dept_name }}
+									<span
+										v-if="detailData.employee.employee_detail.dept_list.length - index > 1">,</span>
+								</span>
 							</div>
 						</div>
 					</div>
@@ -203,7 +213,8 @@
 					<div v-if="detailData.status == 2" class="red" style="font-size: 16px;">已取消</div>
 				</div>
 				<div class="imgBox flex-box" style="height: 100px">
-					<el-image style="width: 100px; height: 100px" :src="detailData.goods_image" :preview-src-list="[detailData.goods_image]"></el-image>
+					<el-image style="width: 100px; height: 100px" :src="detailData.goods_image"
+						:preview-src-list="[detailData.goods_image]"></el-image>
 					<div class="flex-box-v" style="padding: 10px;">
 						<div class="flex-1" style="width: 230px;">{{ detailData.goods_name }}</div>
 						<div>单价 :<span class="blue">{{ detailData.price }}</span> 功勋点</div>
@@ -220,24 +231,31 @@
 					</div>
 					<div class="flex-box-ce">
 						<span class="tabel">兑换时间</span>
-						<span class="flex-1">{{ $moment.unix(detailData.create_time).format('YYYY-MM-DD HH:mm:ss') }}</span>
+						<span
+							class="flex-1">{{ $moment.unix(detailData.create_time).format('YYYY-MM-DD HH:mm:ss') }}</span>
 					</div>
 					<div class="flex-box" style="margin-bottom: 10px;">
 						<span class="tabel">备注</span>
-						<div class="flex-1" style="min-height: 80px;border-radius: 5px;background-color: #f1f1f1;padding: 10px;">{{ detailData.remark }}</div>
+						<div class="flex-1"
+							style="min-height: 80px;border-radius: 5px;background-color: #f1f1f1;padding: 10px;">
+							{{ detailData.remark }}</div>
 					</div>
 					<div class="flex-box-ce" v-if="detailData.status == 1">
 						<span class="tabel">发放时间</span>
-						<span class="flex-1">{{ $moment.unix(detailData.complete_time).format('YYYY-MM-DD HH:mm:ss') }}</span>
+						<span
+							class="flex-1">{{ $moment.unix(detailData.complete_time).format('YYYY-MM-DD HH:mm:ss') }}</span>
 					</div>
 					<div class="flex-box-ce" v-if="detailData.status == 2">
 						<span class="tabel">取消时间</span>
-						<span class="flex-1">{{ $moment.unix(detailData.complete_time).format('YYYY-MM-DD HH:mm:ss') }}</span>
+						<span
+							class="flex-1">{{ $moment.unix(detailData.complete_time).format('YYYY-MM-DD HH:mm:ss') }}</span>
 					</div>
 
 					<div class="flex-box" v-if="detailData.status == 2">
 						<span class="tabel">取消原因</span>
-						<div class="flex-1" style="min-height: 80px;border-radius: 5px;background-color: #f1f1f1;padding: 10px;">{{ detailData.cancel_remark }}</div>
+						<div class="flex-1"
+							style="min-height: 80px;border-radius: 5px;background-color: #f1f1f1;padding: 10px;">
+							{{ detailData.cancel_remark }}</div>
 					</div>
 				</div>
 
@@ -249,366 +267,391 @@
 	</div>
 </template>
 <script>
-export default {
-	data() {
-		return {
-			instantPickerOptions: {
-				shortcuts: [
-					{
-						text: '本周',
-						onClick(picker) {
-							const now = new Date();
-							const start = new Date();
-							start.setTime(now.getTime() - (now.getDay() - 1) * 24 * 60 * 60 * 1000);
-							now.setTime(start.getTime() + 6 * 24 * 60 * 60 * 1000 - 1000);
-							picker.$emit('pick', [start, now]);
+	export default {
+		data() {
+			return {
+				instantPickerOptions: {
+					shortcuts: [{
+							text: '本周',
+							onClick(picker) {
+								const now = new Date();
+								const start = new Date();
+								start.setTime(now.getTime() - (now.getDay() - 1) * 24 * 60 * 60 * 1000);
+								now.setTime(start.getTime() + 6 * 24 * 60 * 60 * 1000 - 1000);
+								picker.$emit('pick', [start, now]);
+							}
+						},
+						{
+							text: '上周',
+							onClick(picker) {
+								const end = new Date();
+								const start = new Date();
+								start.setTime(start.getTime() - (start.getDay() + 6) * 3600 * 1000 * 24);
+								end.setTime(start.getTime() + 6 * 24 * 60 * 60 * 1000 - 1000);
+								picker.$emit('pick', [start, end]);
+							}
+						},
+						{
+							text: '本月',
+							onClick(picker) {
+								const now = new Date();
+								const startDate = new Date(now.getFullYear(), now.getMonth(), 1);
+								const endDate = new Date(now.getFullYear(), now.getMonth() + 1, 0);
+								picker.$emit('pick', [startDate, endDate]);
+							}
+						},
+						{
+							text: '上月',
+							onClick(picker) {
+								const now = new Date();
+								const startDate = new Date(now.getFullYear() - (now.getMonth() > 0 ? 0 : 1), (now
+									.getMonth() + 11) % 12, 1);
+								const endDate = new Date(now.getFullYear(), now.getMonth(), 0);
+								picker.$emit('pick', [startDate, endDate]);
+							}
 						}
-					},
-					{
-						text: '上周',
-						onClick(picker) {
-							const end = new Date();
-							const start = new Date();
-							start.setTime(start.getTime() - (start.getDay() + 6) * 3600 * 1000 * 24);
-							end.setTime(start.getTime() + 6 * 24 * 60 * 60 * 1000 - 1000);
-							picker.$emit('pick', [start, end]);
-						}
-					},
-					{
-						text: '本月',
-						onClick(picker) {
-							const now = new Date();
-							const startDate = new Date(now.getFullYear(), now.getMonth(), 1);
-							const endDate = new Date(now.getFullYear(), now.getMonth() + 1, 0);
-							picker.$emit('pick', [startDate, endDate]);
-						}
-					},
-					{
-						text: '上月',
-						onClick(picker) {
-							const now = new Date();
-							const startDate = new Date(now.getFullYear() - (now.getMonth() > 0 ? 0 : 1), (now.getMonth() + 11) % 12, 1);
-							const endDate = new Date(now.getFullYear(), now.getMonth(), 0);
-							picker.$emit('pick', [startDate, endDate]);
-						}
-					}
-				]
-			},
+					]
+				},
 
-			employee_map: [],
-			event_type: [{ id: 0, name: '未发放' }, { id: 1, name: '已发放' }, { id: 2, name: '已取消' }],
-			attendload: false,
-			loading: false,
-			list: null,
-			time_range: [
-				this.$moment()
+				employee_map: [],
+				event_type: [{
+					id: 0,
+					name: '未发放'
+				}, {
+					id: 1,
+					name: '已发放'
+				}, {
+					id: 2,
+					name: '已取消'
+				}],
+				attendload: false,
+				loading: false,
+				list: null,
+				time_range: [
+					this.$moment()
 					.startOf('month')
 					.format('YYYY-MM-DD'),
-				this.$moment()
+					this.$moment()
 					.endOf('month')
 					.format('YYYY-MM-DD')
-			],
-			formData: {
-				this_only: '',
-				status: '',
-				page: 1,
-				page_size: 10,
-				export: 0,
-				sn: '',
-				employee_id: '',
-				start_time: '',
-				end_time: ''
-			},
-
-			total: 0,
-			pageLimit: 10,
-			selectIds: [],
-			// 长连接结果
-			results: [], //提交的返回结果集合
-			isResult: false,
-			percentage: 0,
-			resultList: [], //要发送数据的集合
-			resultIndex: 0,
-			isShowError: false,
-			isShowError2: false,
-			errorMsg: '服务器繁忙,请稍后再试',
-			breakList: [],
-			isShowBreak: false,
-			isCancel: false,
-			isDetail: false,
-			addTypeName: {
-				id: '',
-				remark: ''
-			},
-			detailData: {
-				employee: {}
-			}
-		};
-	},
+				],
+				formData: {
+					this_only: '',
+					status: '',
+					page: 1,
+					page_size: 10,
+					export: 0,
+					sn: '',
+					employee_id: '',
+					start_time: '',
+					end_time: ''
+				},
 
-	watch: {
-		'formData.employee_id'() {
-			this.formData.page = 1;
-			this.getList();
-		},
-		'formData.sn'() {
-			this.formData.page = 1;
-			this.getList();
-		},
-		'formData.status'() {
-			this.formData.page = 1;
-			this.getList();
-		},
-		time_range() {
-			this.formData.page = 1;
-			this.getList();
+				total: 0,
+				pageLimit: 10,
+				selectIds: [],
+				// 长连接结果
+				results: [], //提交的返回结果集合
+				isResult: false,
+				percentage: 0,
+				resultList: [], //要发送数据的集合
+				resultIndex: 0,
+				isShowError: false,
+				isShowError2: false,
+				errorMsg: '服务器繁忙,请稍后再试',
+				breakList: [],
+				isShowBreak: false,
+				isCancel: false,
+				isDetail: false,
+				addTypeName: {
+					id: '',
+					remark: ''
+				},
+				detailData: {
+					employee: {}
+				}
+			};
 		},
-		isResult(val) {
-			if (!val) {
-				this.isShowError = false;
-				this.isShowBreak = false;
-				this.errorMsg = '服务器繁忙,请稍后再试';
-				this.$socketApiTow.closewebsocket();
+
+		watch: {
+			'formData.employee_id'() {
+				this.formData.page = 1;
 				this.getList();
-			}
-		}
-	},
-	created() {
-		this.employee_map = this.$getCache('userList');
-	},
-	mounted() {
-		this.getList(); //考勤组
-		let data = this.$getCache('conversion');
-		if (data) {
-			this.breakList = data.obj;
-			this.isShowBreak = true;
-		}
-	},
-	methods: {
-		operation(url, str, data) {
-			this.$confirm(`您确认${str}该奖品?`, '提示', {
-				confirmButtonText: '确定',
-				cancelButtonText: '取消',
-				type: 'warning'
-			}).then(() => {
-				this.$axios('post', url, data).then(res => {
-					this.$message.success(`已${str}`);
-					this.isCancel = false;
+			},
+			'formData.sn'() {
+				this.formData.page = 1;
+				this.getList();
+			},
+			'formData.status'() {
+				this.formData.page = 1;
+				this.getList();
+			},
+			time_range() {
+				this.formData.page = 1;
+				this.getList();
+			},
+			isResult(val) {
+				if (!val) {
+					this.isShowError = false;
+					this.isShowBreak = false;
+					this.errorMsg = '服务器繁忙,请稍后再试';
+					this.$socketApiTow.closewebsocket();
 					this.getList();
-				});
-			});
-		},
-		// 提交表单
-		subGroupForm(formName) {
-			this.$refs[formName].validate(valid => {
-				if (valid) {
-					this.operation('api/shop/exchange/cancel', '取消', this.addTypeName);
 				}
-			});
-		},
-		//取消
-		cancel(id) {
-			this.isCancel = true;
-			if (this.$refs['addTypeName']) {
-				this.$refs['addTypeName'].resetFields();
 			}
-			this.addTypeName.remark = '';
-			this.addTypeName.id = id;
-		},
-		//撤销
-		revoke(id) {
-			this.operation('api/shop/exchange/revoke', '撤销', { id: id });
-		},
-		//发放
-		grant(id) {
-			this.operation('api/shop/exchange/deal', '发放', { id: id });
 		},
-		selectable(e) {
-			return e.status == 0;
+		created() {
+			this.employee_map = this.$getCache('userList');
 		},
-		// 关闭缓存弹窗
-		colseBreak() {
-			this.isShowBreak = false;
-			this.breakList = [];
-			this.$removeCache('conversion');
-		},
-		// 提交缓存奖扣
-		submitBreak() {
-			this.$removeCache('conversion');
-			this.resultList = JSON.parse(JSON.stringify(this.breakList));
-			this.resultIndex = 0;
-			this.percentage = 0;
-			this.results = [];
-			this.isResult = true;
-			this.opneWebSocket();
-		},
-		returnName(id) {
-			return this.employee_map[id].name;
-		},
-		grants() {
-			if (this.selectIds.length == 0) {
-				this.$message.error('请选择兑换记录');
-				return false;
+		mounted() {
+			this.getList(); //考勤组
+			let data = this.$getCache('conversion');
+			if (data) {
+				this.breakList = data.obj;
+				this.isShowBreak = true;
 			}
-			this.webSocket();
 		},
-		webSocket() {
-			let arr = [];
-			this.selectIds.forEach(item => {
-				let data = {
-					type: 'consume_deal',
-					id: item.id,
-					name: item.name
-				};
-				arr.push(data);
-			});
-			this.resultList = arr;
-			this.resultIndex = 0;
-			this.percentage = 0;
-			this.results = [];
-			this.isResult = true;
-			this.opneWebSocket();
-		},
-		opneWebSocket() {
-			let wsData = this.resultList;
-			if (wsData[this.resultIndex] && !this.isShowError) {
-				this.$socketApiTow.sendData(wsData[this.resultIndex], this.onmessageWS);
-			}
-		},
-		onmessageWS(e) {
-			if (e.type == 'consume_deal') {
-				let result=e.result;
-				result.status=e.code
-				result.msg=e.msg
-				this.results.unshift(result);
-				this.resultIndex++;
+		methods: {
+			operation(url, str, data) {
+				this.$confirm(`您确认${str}该奖品?`, '提示', {
+					confirmButtonText: '确定',
+					cancelButtonText: '取消',
+					type: 'warning'
+				}).then(() => {
+					this.$axios('post', url, data).then(res => {
+						this.$message.success(`已${str}`);
+						this.isCancel = false;
+						this.getList();
+					});
+				});
+			},
+			// 提交表单
+			subGroupForm(formName) {
+				this.$refs[formName].validate(valid => {
+					if (valid) {
+						this.operation('api/shop/exchange/cancel', '取消', this.addTypeName);
+					}
+				});
+			},
+			//取消
+			cancel(id) {
+				this.isCancel = true;
+				if (this.$refs['addTypeName']) {
+					this.$refs['addTypeName'].resetFields();
+				}
+				this.addTypeName.remark = '';
+				this.addTypeName.id = id;
+			},
+			//撤销
+			revoke(id) {
+				this.operation('api/shop/exchange/revoke', '撤销', {
+					id: id
+				});
+			},
+			//发放
+			grant(id) {
+				this.operation('api/shop/exchange/deal', '发放', {
+					id: id
+				});
+			},
+			selectable(e) {
+				return e.status == 0;
+			},
+			// 关闭缓存弹窗
+			colseBreak() {
+				this.isShowBreak = false;
+				this.breakList = [];
+				this.$removeCache('conversion');
+			},
+			// 提交缓存奖扣
+			submitBreak() {
+				this.$removeCache('conversion');
+				this.resultList = JSON.parse(JSON.stringify(this.breakList));
+				this.resultIndex = 0;
+				this.percentage = 0;
+				this.results = [];
+				this.isResult = true;
 				this.opneWebSocket();
-				// 进度条
-				let lng = this.resultList.length;
-				this.percentage = Math.floor(this.resultIndex / (lng / 100))
-				if (lng == this.results.length) {
-					this.percentage = 100;
+			},
+			returnName(id) {
+				return this.employee_map[id].name;
+			},
+			grants() {
+				if (this.selectIds.length == 0) {
+					this.$message.error('请选择兑换记录');
+					return false;
 				}
-			}
-			// 中途断开
-			if (e.type == 'break') {
+				this.webSocket();
+			},
+			webSocket() {
+				let arr = [];
+				this.selectIds.forEach(item => {
+					let data = {
+						type: 'consume_deal',
+						id: item.id,
+						name: item.name
+					};
+					arr.push(data);
+				});
+				this.resultList = arr;
+				this.resultIndex = 0;
+				this.percentage = 0;
+				this.results = [];
+				this.isResult = true;
+				this.opneWebSocket();
+			},
+			opneWebSocket() {
 				let wsData = this.resultList;
-				this.errorMsg = e.msg;
-				let data = {
-					obj: wsData.slice(this.resultIndex, wsData.length)
-				};
-				this.$setCache('conversion', data);
-				this.isShowError2 = true;
-			}
-			// 连接不上
-			if (e.type == 'error') {
-				this.errorMsg = e.msg;
-				this.isShowError = true;
-			}
-		},
-		handleSelectionChange(e) {
-			this.selectIds = e.map(item => {
+				if (wsData[this.resultIndex] && !this.isShowError) {
+					this.$socketApiTow.sendData(wsData[this.resultIndex], this.onmessageWS);
+				}
+			},
+			onmessageWS(e) {
+				if (e.type == 'consume_deal') {
+					let result = e.result;
+					result.status = e.code
+					result.msg = e.msg
+					this.results.unshift(result);
+					this.resultIndex++;
+					this.opneWebSocket();
+					// 进度条
+					let lng = this.resultList.length;
+					this.percentage = Math.floor(this.resultIndex / (lng / 100))
+					if (lng == this.results.length) {
+						this.percentage = 100;
+					}
+				}
+				// 中途断开
+				if (e.type == 'break') {
+					let wsData = this.resultList;
+					this.errorMsg = e.msg;
+					let data = {
+						obj: wsData.slice(this.resultIndex, wsData.length)
+					};
+					this.$setCache('conversion', data);
+					this.isShowError2 = true;
+				}
+				// 连接不上
+				if (e.type == 'error') {
+					this.errorMsg = e.msg;
+					this.isShowError = true;
+				}
+			},
+			handleSelectionChange(e) {
+				this.selectIds = e.map(item => {
+					let data = {
+						id: item.id,
+						name: item.employee.name
+					};
+					return data;
+				});
+			},
+			openDetail(e) {
+				this.isDetail = true;
+				this.attendload = true;
+				this.$axios('get', '/api/shop/exchange/detail', {
+						id: e.id
+					})
+					.then(res => {
+						this.detailData = res.data.data;
+					})
+					.finally(() => {
+						this.attendload = false;
+					});
+			},
+			exportExcel() {
+				let url =
+					`${process.env.VUE_APP_BASE_API}/api/download/shop/achievement/exchange/list?page=1&download_employee_id=${this.$getUserData().id}&page_size=8000&self_only=2&start_time=${this.time_range[0]}&end_time=${this.time_range[1]}`;
+				window.open(url, '_blank');
+			},
+			//分页
+			handleSizeChange(val) {
+				this.pageLimit = val;
+				this.formData.page_size = this.pageLimit;
+				this.getList();
+			},
+			handleCurrentChange(val) {
+				this.formData.page = val;
+				this.getList();
+			},
+			//请求数据
+			getList() {
+				this.loading = true;
 				let data = {
-					id: item.id,
-					name: item.employee.name
+					self_only: '2',
+					page: this.formData.page,
+					page_size: this.formData.page_size,
+					// status: this.formData.status,
+					export: this.formData.export,
+					sn: this.formData.sn
+					// employee_id: this.formData.employee_id,
 				};
-				return data;
-			});
-		},
-		openDetail(e) {
-			this.isDetail = true;
-			this.attendload = true;
-			this.$axios('get', '/api/shop/exchange/detail', { id: e.id })
-				.then(res => {
-					this.detailData = res.data.data;
-				})
-				.finally(() => {
-					this.attendload = false;
-				});
-		},
-		exportExcel() {
-			let url=`${process.env.VUE_APP_BASE_API}/api/download/shop/achievement/exchange/list?page=1&download_employee_id=${this.$getUserData().id}&page_size=8000&self_only=2&start_time=${this.time_range[0]}&end_time=${this.time_range[1]}`;
-			window.open(url,'_blank');
-		},
-		//分页
-		handleSizeChange(val) {
-			this.pageLimit = val;
-			this.formData.page_size = this.pageLimit;
-			this.getList();
-		},
-		handleCurrentChange(val) {
-			this.formData.page = val;
-			this.getList();
-		},
-		//请求数据
-		getList() {
-			this.loading = true;
-			let data = {
-				self_only: '2',
-				page: this.formData.page,
-				page_size: this.formData.page_size,
-				// status: this.formData.status,
-				export: this.formData.export,
-				sn: this.formData.sn
-				// employee_id: this.formData.employee_id,
-			};
-			if (this.formData.employee_id) {
-				data.employee_id = this.formData.employee_id;
-			}
+				if (this.formData.employee_id) {
+					data.employee_id = this.formData.employee_id;
+				}
 
-			if (this.formData.status === 0 || this.formData.status === 1 || this.formData.status === 2) {
-				data.status = this.formData.status;
+				if (this.formData.status === 0 || this.formData.status === 1 || this.formData.status === 2) {
+					data.status = this.formData.status;
+				}
+				data.start_time = this.time_range[0];
+				data.end_time = this.time_range[1];
+				this.$axios('get', '/api/shop/exchange/list', data)
+					.then(res => {
+						this.list = res.data.data.list;
+						this.total = res.data.data.count;
+					})
+					.finally(() => {
+						this.loading = false;
+					});
 			}
-			data.start_time = this.time_range[0];
-			data.end_time = this.time_range[1];
-			this.$axios('get', '/api/shop/exchange/list', data)
-				.then(res => {
-					this.list = res.data.data.list;
-					this.total = res.data.data.count;
-				})
-				.finally(() => {
-					this.loading = false;
-				});
 		}
-	}
-};
+	};
 </script>
 
 <style scoped lang="scss">
-.message .flex-box-ce {
-	margin-bottom: 10px;
-}
-.tabel {
-	width: 80px;
-	color: #606266;
-}
-.imgBox {
-	width: 350px;
-	border-radius: 5px;
-	border: 1px solid #f1f1f1;
-	margin: 10px 0;
-	box-shadow: 0 0 5px #f1f1f1;
-}
-.results {
-	border-bottom: 1px solid #f1f1f1;
-	text-align: center;
-}
-.results div {
-	padding: 10px;
-}
-.el-date-editor.el-input {
-	width: auto;
-}
-.date-picker-width {
-	width: 145px !important;
-}
-.search ::v-deep .el-input-group__append:active {
-	background: #26a2ff;
-}
-.search ::v-deep .el-input-group__append:active .el-icon-search {
-	color: #fff;
-}
-::v-deep .el-dialog__body {
-	padding: 0px 20px 30px;
-}
-</style>
+	.message .flex-box-ce {
+		margin-bottom: 10px;
+	}
+
+	.tabel {
+		width: 80px;
+		color: #606266;
+	}
+
+	.imgBox {
+		width: 350px;
+		border-radius: 5px;
+		border: 1px solid #f1f1f1;
+		margin: 10px 0;
+		box-shadow: 0 0 5px #f1f1f1;
+	}
+
+	.results {
+		border-bottom: 1px solid #f1f1f1;
+		text-align: center;
+	}
+
+	.results div {
+		padding: 10px;
+	}
+
+	.el-date-editor.el-input {
+		width: auto;
+	}
+
+	.date-picker-width {
+		width: 145px !important;
+	}
+
+	.search ::v-deep .el-input-group__append:active {
+		background: #26a2ff;
+	}
+
+	.search ::v-deep .el-input-group__append:active .el-icon-search {
+		color: #fff;
+	}
+
+	::v-deep .el-dialog__body {
+		padding: 0px 20px 30px;
+	}
+</style>

+ 25 - 23
src/views/welfare/flManagement.vue

@@ -2,28 +2,30 @@
 	<div>
 		<div class="all">
 			<FormBox :isShowHeader="false">
-				<template #footer>
-					<el-form ref="form" :inline="true" label-width="70PX">
-						<el-form-item label="部门">
-							<el-cascader
-								size="medium"
-								class="date-picker-width"
-								v-model="dept_name"
-								:options="dept_tree"
-								:props="{ checkStrictly: true, value: 'id', label: 'name', children: '_child' }"
-								ref="dept"
-								clearable
-								filterable
-								placeholder="全公司"
-							></el-cascader>
-						</el-form-item>
-						<el-form-item label="人员">
-							<el-select v-model="formData.employee_id" size="medium" filterable placeholder="请输入或选择人员" clearable>
-								<el-option v-for="item in employee_map" :key="item.id" :label="item.name" :value="item.id"></el-option>
-							</el-select>
-						</el-form-item>
-					</el-form>
-				</template>
+				<div class="form-item">
+					<div class="form-label">姓名搜索</div>
+					<div class="form-search">
+						<el-select v-model="formData.employee_id" size="medium" filterable placeholder="请输入或选择人员" clearable>
+							<el-option v-for="item in employee_map" :key="item.id" :label="item.name" :value="item.id"></el-option>
+						</el-select>
+					</div>
+				</div>
+				<div class="form-item">
+					<div class="form-label">所在部门</div>
+					<div class="form-search">
+						<el-cascader
+							size="medium"
+							class="date-picker-width"
+							v-model="dept_name"
+							:options="dept_tree"
+							:props="{ checkStrictly: true, value: 'id', label: 'name', children: '_child' }"
+							ref="dept"
+							clearable
+							filterable
+							placeholder="全公司"
+						></el-cascader>		
+					</div>
+				</div>
 			</FormBox>
 			<div class="flex-box-ce flex-d-wrap" style="margin: 10px 0;">
 				<div class="flex-box">
@@ -39,7 +41,7 @@
 			</div>
 
 			<el-table :data="list" style="width: 100%" v-loading="loading" @selection-change="deleteEvents">
-				<el-table-column label="人员" align="left" prop="point">
+				<el-table-column label="姓名" align="left" prop="point">
 					<template slot-scope="scope">
 						<div class="flex-box">
 							<userImage :user_name="scope.row.name" :img_url="scope.row.img_url" width="50px" height="50px"></userImage>

+ 28 - 22
src/views/welfare/operatingRecord.vue

@@ -1,24 +1,29 @@
 <template>
 	<div>
 		<div class="all">
-			<FormBox  :isShowHeader="false">
-			  <template #footer>
-				<el-form :inline="true" label-width="70px">
-					<el-form-item label="操作人">
-						<el-select v-model="formData.operator_id" size="medium" filterable placeholder="请输入或选择操作人" clearable>
+			<FormBox >
+				<div class="form-item">
+					<div class="form-label">操作人</div>
+					<div class="form-search">
+						<el-select v-model="formData.operator_id" size="medium" filterable placeholder="请输入或选择人" clearable>
 							<el-option v-for="item in employee_map" :key="item.id" :label="item.name" :value="item.id"></el-option>
-						</el-select>
-					</el-form-item>
-					<el-form-item label="操作类型">
-						<el-select v-model="formData.type" size="medium" style="width:110px" placeholder="请选择" clearable>
+						</el-select>		
+					</div>
+				</div>
+				<div class="form-item">
+					<div class="form-label">操作类型</div>
+					<div class="form-search">
+						<el-select v-model="formData.type" size="medium" filterable placeholder="请输入" clearable>
 							<el-option v-for="(item, index) in event_type" :key="index" :label="item.name" :value="item.id"></el-option>
-						</el-select>
-					</el-form-item>
-					<el-form-item label="操作时间">
+						</el-select>		
+					</div>
+				</div>
+				<div class="form-item">
+					<div class="form-label">操作时间</div>
+					<div class="form-search">
 						<el-date-picker
 							size="medium"
 							style="width:290px"
-							class="first-element-btn"
 							:clearable="false"
 							v-model="time_range"
 							type="daterange"
@@ -27,15 +32,17 @@
 							start-placeholder="开始日期"
 							end-placeholder="结束日期"
 							:picker-options="instantPickerOptions"
-						></el-date-picker>
-					</el-form-item>
-					<el-form-item label="操作对象">
+						></el-date-picker>		
+					</div>
+				</div>
+				<div class="form-item">
+					<div class="form-label">操作对象</div>
+					<div class="form-search">
 						<el-select v-model="formData.employee_id" size="medium" filterable placeholder="请输入或选择人员" clearable>
 							<el-option v-for="item in employee_map" :key="item.id" :label="item.name" :value="item.id"></el-option>
-						</el-select>
-					</el-form-item>
-				</el-form>
-			  </template>
+						</el-select>		
+					</div>
+				</div>
 			</FormBox>
 			<div style="margin: 10px 0;">
 				<el-button type="primary" size="medium" plain @click="exportRanking">导出</el-button>
@@ -136,7 +143,6 @@
 						<el-date-picker
 							size="medium"
 							style="width:290px"
-							class="first-element-btn"
 							:clearable="false"
 							v-model="exportTime_range"
 							type="daterange"
@@ -147,7 +153,7 @@
 							:picker-options="instantPickerOptions"
 						></el-date-picker>
 					</el-form-item>
-					<el-form-item label="人员">
+					<el-form-item label="姓名">
 						<el-select v-model="exportData.employee_id" size="medium" filterable placeholder="请输入或选择人员" clearable>
 							<el-option v-for="item in employee_map" :key="item.id" :label="item.name" :value="item.id"></el-option>
 						</el-select>

+ 16 - 14
src/views/welfare/prize.vue

@@ -20,24 +20,26 @@
 						<div class="groupsName" style="font-size: 20px;">{{ params.name }}</div>
 						<el-button @click="Group(2)" size="medium" style="margin-left:15px;" v-show="params.name != '全部分类'">编辑</el-button>
 						<div class="flex-1"></div>
-						<el-button type="primary" @click="isPrizeShow = true" size="medium">新增奖品</el-button>
 					</div>
-					<FormBox  :isShowHeader="false">
-						<template #footer>
-							<el-form ref="form" :inline="true" label-width="70px">
-								<el-form-item label="状态">
-										<el-select v-model="params.status" size="medium"  style="width: 100px;">
-											<el-option v-for="item in statusArr" :key="item.id" :label="item.name" :value="item.id"></el-option>
-										</el-select>
-								</el-form-item>
-								<el-form-item label="奖品搜索">
-									<el-input placeholder="奖品搜索" size="medium"  v-model="params.keyword" clearable></el-input>
-								</el-form-item>
-							</el-form>
-						</template>
+					<FormBox style="width: 800px;">
+						<div class="form-item">
+							<div class="form-label">上架状态</div>
+							<div class="form-search">
+								<el-select v-model="params.status" size="medium">
+									<el-option v-for="item in statusArr" :key="item.id" :label="item.name" :value="item.id"></el-option>
+								</el-select>
+							</div>
+						</div>
+						<div class="form-item">
+							<div class="form-label">奖品搜索</div>
+							<div class="form-search">
+								<el-input size="medium" v-model="params.keyword" clearable placeholder="请输入"  maxlength="20"></el-input>
+							</div>
+						</div>
 					</FormBox>
 					
 					<div style="margin: 10px 0;">
+						<el-button type="primary" @click="isPrizeShow = true" size="medium">新增奖品</el-button>
 						<el-button type="success" plain @click="putaway(1)" size="medium">批量上架</el-button>
 						<el-button type="danger" plain @click="putaway(2)" size="medium">批量下架</el-button>
 						<el-button type="primary" plain @click="exportExcel" size="medium">导 出</el-button>

+ 31 - 23
src/views/workbench/alreadySp.vue

@@ -1,41 +1,49 @@
 <template>
 	<div>
 		<div class="all padding-20">
-			<FormBox :isShowHeader="false">
-				<template slot="footer">
-					<el-form ref="formData" :inline="true" :model="formData" label-width="70px">
-						<el-form-item label="工作类型">
+			<FormBox>
+				<div class="form-item">
+					<div class="form-label">姓名搜索</div>
+					<div class="form-search">
+						<el-select size="medium" v-model="formData.target_id" filterable clearable placeholder="请输入或选择人员">
+						  <el-option v-for="item in employee_map" :key="item.id" :label="item.name" :value="item.id"></el-option>
+						</el-select>
+					</div>
+				</div>
+				<div class="form-item">
+					<div class="form-label">审批来源</div>
+					<div class="form-search">
 						  <el-select size="medium" v-model="formData.source_type" placeholder="请选择排序">
 							<el-option v-for="item in sourceList" :key="item.id" :label="item.name" :value="item.id"></el-option>
 						  </el-select>
-						</el-form-item>
-						<el-form-item label="积分类型">
-							<el-select size="medium" v-model="formData.pt_id" placeholder="请选择排序">
-								<el-option v-for="item in point_types" :key="item.id" :label="item.name" :value="item.id"></el-option>
-							</el-select>
-						</el-form-item>
-						<el-form-item label="人员">
-							<el-select size="medium" v-model="formData.target_id" filterable clearable placeholder="请输入或选择人员">
-							  <el-option v-for="item in employee_map" :key="item.id" :label="item.name" :value="item.id"></el-option>
-							</el-select>
-						</el-form-item>
-						<el-form-item label="内容搜索">
-							<el-input size="medium" max="20" v-model="formData.keyword" placeholder="请输入审批内容" clearable></el-input>
-						</el-form-item>
-					</el-form>
-				</template>
+					</div>
+				</div>
+				<div class="form-item">
+					<div class="form-label">积分类型</div>
+					<div class="form-search">
+						<el-select size="medium" v-model="formData.pt_id" placeholder="请选择排序">
+							<el-option v-for="item in point_types" :key="item.id" :label="item.name" :value="item.id"></el-option>
+						</el-select>
+					</div>
+				</div>
+				<div class="form-item">
+					<div class="form-label">内容搜索</div>
+					<div class="form-search">
+						<el-input size="medium" max="20" v-model="formData.keyword" placeholder="请输入" clearable></el-input>
+					</div>
+				</div>
 			</FormBox>
 			<div>
 				<div class="orange" style="padding-left: 10px;" v-if="config.event_review_status">复核开启后,积分需管理员复核后才计入排名和统计</div>
 				<el-table :data="list" style="cursor: pointer;" v-loading="loading" class="listTable" @row-click="openDetail">
-					<el-table-column label="审批标题" prop="task_name">
+					<el-table-column label="" prop="task_name">
 						<template slot-scope="scope">
 							<div class="flex-box flex-v-ce">
 								<userImage width="50px" height="50px" :id="scope.row.employee_id" :user_name="scope.row.employee_name"></userImage>
 								<div style="margin-left: 5px;">
 									<span class="tableTitle" v-show="scope.row.source_type == 1">{{ scope.row.employee_name }}的积分任务</span>
 									<span class="tableTitle" v-show="scope.row.source_type == 2">{{ scope.row.employee_name }}的积分申请</span>
-									<span class="tableTitle" v-show="scope.row.source_type == 3">{{ scope.row.employee_name }}的积分录入</span>
+									<span class="tableTitle" v-show="scope.row.source_type == 3">{{ scope.row.employee_name }}的积分奖扣</span>
 									<span class="tableTitle" v-show="scope.row.source_type == 4">{{ scope.row.employee_name }}的绩效工作</span>
 								</div>
 							</div>
@@ -113,7 +121,7 @@ export default {
 			detailShow: false,
 			detail_id: null,
 			employee_map: this.$getCache("userList"),
-			sourceList: [{ name: '全部', id: '0' }, { name: '积分任务', id: '1' }, { name: '积分申请', id: '2' }, { name: '积分录入', id: '3' }],
+			sourceList: [{ name: '全部', id: '0' }, { name: '积分任务', id: '1' }, { name: '积分申请', id: '2' }, { name: '积分奖扣', id: '3' }],
 			config:{},
 		};
 	},

+ 17 - 15
src/views/workbench/approval_batch.vue

@@ -8,19 +8,21 @@
 			</el-alert>
 		</div>
 		<div class="all padding-20">
-			<FormBox :isShowHeader="false">
-				<template slot="footer">
-					<el-form :inline="true" label-width="70px">
-						<el-form-item label="执行人">
-							<el-select size="medium" v-model="target_id" filterable collapse-tags clearable placeholder="请输入/选择员工">
-								<el-option v-for="item in employee_map" :key="item.id" :label="item.name" :value="item.id"></el-option>
-							</el-select>
-						</el-form-item>
-						<el-form-item label="内容搜索">
-							<el-input size="medium" max="20" v-model="formData.keyword" placeholder="请输入审批内容" clearable></el-input>
-						</el-form-item>
-					</el-form>
-				</template>
+			<FormBox>
+				<div class="form-item">
+					<div class="form-label">姓名搜索</div>
+					<div class="form-search">
+						<el-select size="medium" v-model="target_id" filterable collapse-tags clearable placeholder="请输入或选择人员">
+							<el-option v-for="item in employee_map" :key="item.id" :label="item.name" :value="item.id"></el-option>
+						</el-select>
+					</div>
+				</div>
+				<div class="form-item">
+					<div class="form-label">内容搜索</div>
+					<div class="form-search">
+						<el-input size="medium" max="20" v-model="formData.keyword" placeholder="请输入" clearable></el-input>
+					</div>
+				</div>
 			</FormBox>		
 			<div style="margin: 10px 0;">
 				<el-button size="medium" type="primary" plain @click="pass">批量通过</el-button>
@@ -28,14 +30,14 @@
 			</div>
 			<el-table :data="list" style="width: 100%;cursor: pointer;"  v-loading="loading" @selection-change="deleteEvents" @row-click="openDetail">
 				<el-table-column width="50" type="selection"></el-table-column>
-					<el-table-column label="审批标题" prop="task_name">
+					<el-table-column label="" prop="task_name">
 						<template slot-scope="scope">
 							<div class="flex-box flex-v-ce">
 								<userImage width="50px" height="50px"  :id="scope.row.employee_id" :user_name="scope.row.employee_name"></userImage>
 								<div style="margin-left: 5px;">
 									<span class="tableTitle" v-show="scope.row.source_type == 1">{{ scope.row.employee_name }}的积分任务</span>
 									<span class="tableTitle" v-show="scope.row.source_type == 2">{{ scope.row.employee_name }}的积分申请</span>
-									<span class="tableTitle" v-show="scope.row.source_type == 3">{{ scope.row.employee_name }}的积分录入</span>
+									<span class="tableTitle" v-show="scope.row.source_type == 3">{{ scope.row.employee_name }}的积分奖扣</span>
 									<span class="tableTitle" v-show="scope.row.source_type == 4">{{ scope.row.employee_name }}的绩效工作</span>
 								</div>
 							</div>

+ 175 - 144
src/views/workbench/approval_list.vue

@@ -1,50 +1,64 @@
 <template>
 	<div>
 		<div class="all padding-20">
-			<FormBox :isShowHeader="false">
-				<template slot="footer">
-					<el-form ref="formData" :inline="true" :model="formData" label-width="70px">
-						<el-form-item label="工作类型">
-						  <el-select size="medium" v-model="formData.source_type" placeholder="请选择排序">
+			<FormBox>
+				<div class="form-item">
+					<div class="form-label">姓名搜索</div>
+					<div class="form-search">
+						<el-select v-model="formData.target_id" filterable clearable placeholder="请输入或选择人员">
+							<el-option size="medium" v-for="item in employee_map" :key="item.id" :label="item.name" :value="item.id"></el-option>
+						</el-select>
+					</div>
+				</div>
+				<div class="form-item">
+					<div class="form-label">审批来源</div>
+					<div class="form-search">
+						<el-select size="medium" v-model="formData.source_type" placeholder="请选择排序">
 							<el-option v-for="item in sourceList" :key="item.id" :label="item.name" :value="item.id"></el-option>
-						  </el-select>
-						</el-form-item>
-						<el-form-item label="积分类型">
-							<el-select size="medium" v-model="formData.pt_id" placeholder="请选择排序">
-								<el-option v-for="item in point_types" :key="item.id" :label="item.name" :value="item.id"></el-option>
-							</el-select>
-						</el-form-item>
-						<el-form-item label="人员">
-							<el-select v-model="formData.target_id" filterable clearable placeholder="请输入或选择人员">
-							  <el-option size="medium" v-for="item in employee_map" :key="item.id" :label="item.name" :value="item.id"></el-option>
-							</el-select>
-						</el-form-item>	
-						<el-form-item label="内容搜索">
-							<el-input size="medium" v-model="formData.keyword" max="20" placeholder="请输入审批内容" clearable></el-input>
-						</el-form-item>
-						
-					</el-form>
-				</template>	
-			</FormBox>	
+						</el-select>
+					</div>
+				</div>
+				<div class="form-item">
+					<div class="form-label">积分类型</div>
+					<div class="form-search">
+						<el-select size="medium" v-model="formData.pt_id" placeholder="请选择排序">
+							<el-option v-for="item in point_types" :key="item.id" :label="item.name" :value="item.id"></el-option>
+						</el-select>
+					</div>
+				</div>
+				<div class="form-item">
+					<div class="form-label">内容搜索</div>
+					<div class="form-search">
+						<el-input size="medium" v-model="formData.keyword" max="20" placeholder="请输入"	clearable></el-input>
+					</div>
+				</div>
+			</FormBox>
 
 			<div>
-				<el-table :data="list" style="cursor: pointer;" v-loading="loading" class="listTable" @row-click="openDetail">
-					<el-table-column label="审批标题" prop="task_name">
+				<el-table :data="list" style="cursor: pointer;" v-loading="loading" class="listTable"
+					@row-click="openDetail">
+					<el-table-column label="" prop="task_name">
 						<template slot-scope="scope">
 							<div class="flex-box flex-v-ce">
-								<userImage width="50px" height="50px"  :id="scope.row.employee_id" :user_name="scope.row.employee_name"></userImage>
+								<userImage width="50px" height="50px" :id="scope.row.employee_id"
+									:user_name="scope.row.employee_name"></userImage>
 								<div style="margin-left: 5px;">
-									<span class="tableTitle" v-show="scope.row.source_type == 1">{{ scope.row.employee_name }}的积分任务</span>
-									<span class="tableTitle" v-show="scope.row.source_type == 2">{{ scope.row.employee_name }}的积分申请</span>
-									<span class="tableTitle" v-show="scope.row.source_type == 3">{{ scope.row.employee_name }}的积分录入</span>
-									<span class="tableTitle" v-show="scope.row.source_type == 4">{{ scope.row.employee_name }}的绩效工作</span>
+									<span class="tableTitle"
+										v-show="scope.row.source_type == 1">{{ scope.row.employee_name }}的积分任务</span>
+									<span class="tableTitle"
+										v-show="scope.row.source_type == 2">{{ scope.row.employee_name }}的积分申请</span>
+									<span class="tableTitle"
+										v-show="scope.row.source_type == 3">{{ scope.row.employee_name }}的积分奖扣</span>
+									<span class="tableTitle"
+										v-show="scope.row.source_type == 4">{{ scope.row.employee_name }}的绩效工作</span>
 								</div>
 							</div>
 						</template>
 					</el-table-column>
 					<el-table-column label="审批内容" prop="remark.rule">
 						<template slot-scope="scope">
-							<span class="font-flex-word" style="max-width: 200px;">{{ scope.row.remark.customize || scope.row.remark.rule }}</span>
+							<span class="font-flex-word"
+								style="max-width: 200px;">{{ scope.row.remark.customize || scope.row.remark.rule }}</span>
 						</template>
 					</el-table-column>
 					<el-table-column label="时间" prop="event_time" width="150"></el-table-column>
@@ -63,16 +77,10 @@
 			</div>
 
 			<center style="padding: 20px 0;">
-				<el-pagination
-					background
-					@size-change="handleSizeChange"
-					@current-change="handleCurrentChange"
-					:current-page="formData.page"
-					:page-sizes="[10, 20, 50, 100]"
-					layout="total, sizes, prev, pager, next"
-					:page-size="formData.page_size"
-					:total="total"
-				></el-pagination>
+				<el-pagination background @size-change="handleSizeChange" @current-change="handleCurrentChange"
+					:current-page="formData.page" :page-sizes="[10, 20, 50, 100]"
+					layout="total, sizes, prev, pager, next" :page-size="formData.page_size"
+					:total="total"></el-pagination>
 			</center>
 		</div>
 		<examinePopup :title="'审核详情'" :id="detail_id" :show.sync="detailShow"></examinePopup>
@@ -80,119 +88,142 @@
 </template>
 
 <script>
-import examinePopup from '@/components/examinePopup.vue';
-import { _debounce, getToken } from '@/api/auth';
-export default {
-	data() {
-		return {
-			formData: {
-				type: 'waiting',
-				source_type: '0',
-				target_id:null,
-				pt_id: 0,
-				page_size: 10,
-				page: 1,
-				keyword:'',
+	import examinePopup from '@/components/examinePopup.vue';
+	import {
+		_debounce,
+		getToken
+	} from '@/api/auth';
+	export default {
+		data() {
+			return {
+				formData: {
+					type: 'waiting',
+					source_type: '0',
+					target_id: null,
+					pt_id: 0,
+					page_size: 10,
+					page: 1,
+					keyword: '',
+				},
+				total: null,
+				list: null,
+				loading: false,
+				point_types: null,
+				detailShow: false,
+				detail_id: null,
+				employee_map: this.$getCache("userList"),
+				sourceList: [{
+					name: '全部',
+					id: '0'
+				}, {
+					name: '积分任务',
+					id: '1'
+				}, {
+					name: '积分申请',
+					id: '2'
+				}, {
+					name: '积分奖扣',
+					id: '3'
+				}]
+			};
+		},
+		watch: {
+			'formData.keyword': {
+				deep: true,
+				handler: _debounce(function(val) {
+					this.formData.page = 1;
+					this.getSpList();
+				}, 1000)
 			},
-			total: null,
-			list: null,
-			loading: false,
-			point_types: null,
-			detailShow: false,
-			detail_id: null,
-			employee_map: this.$getCache("userList"),
-			sourceList: [{ name: '全部', id: '0' }, { name: '积分任务', id: '1' }, { name: '积分申请', id: '2' }, { name: '积分录入', id: '3' }]
-		};
-	},
-	watch: {
-		'formData.keyword': {
-			deep: true,
-			handler: _debounce(function(val) {
+			'formData.pt_id'() {
 				this.formData.page = 1;
 				this.getSpList();
-			}, 1000)
-		},
-		'formData.pt_id'() {
-			this.formData.page = 1;
-			this.getSpList();
-		},
-		'formData.source_type'() {
-		  this.formData.page = 1;
-		  this.getSpList();
-		},
-		'formData.target_id'(val) {
-		  if(!val){
-		    this.formData.target_id = null;
-		  }
-		  this.formData.page = 1;
-		  this.getSpList();
-		}
-	},
-	components: { examinePopup },
-	mounted() {
-		this.getSpList();
-		this.point_types = this.getPointTypes();
-	},
-	methods: {
-		openDetail(item) {
-			this.detail_id = item.id;
-			this.detailShow = true;
-		},
-		getTypes() {
-			var arr = this.$getTyps();
-			return arr.filter(function(item) {
-				return item.code != 'JX';
-			});
+			},
+			'formData.source_type'() {
+				this.formData.page = 1;
+				this.getSpList();
+			},
+			'formData.target_id'(val) {
+				if (!val) {
+					this.formData.target_id = null;
+				}
+				this.formData.page = 1;
+				this.getSpList();
+			}
 		},
-		// 获取积分类型
-		getPointTypes() {
-			let point = this.getTypes();
-			point.unshift({ code: 'all', id: 0, name: '全部' });
-			return point;
+		components: {
+			examinePopup
 		},
-		// 页码变更
-		handleCurrentChange(val) {
-			this.formData.page = val;
+		mounted() {
 			this.getSpList();
+			this.point_types = this.getPointTypes();
 		},
-		handleSizeChange(val) {
-			this.formData.page_size = val;
-			this.getSpList();
-		},
-		getSpList() {
-			let self = this;
-			self.loading = true;
-			let params = JSON.parse(JSON.stringify(this.formData));
-			self.$axios('get', '/api/integral/review/list', params)
-				.then(res => {
-					if (res.data.code == 1) {
-						self.list = res.data.data.list;
-						self.total = res.data.data.total;
-					}
-				})
-				.finally(e => {
-					self.loading = false;
+		methods: {
+			openDetail(item) {
+				this.detail_id = item.id;
+				this.detailShow = true;
+			},
+			getTypes() {
+				var arr = this.$getTyps();
+				return arr.filter(function(item) {
+					return item.code != 'JX';
+				});
+			},
+			// 获取积分类型
+			getPointTypes() {
+				let point = this.getTypes();
+				point.unshift({
+					code: 'all',
+					id: 0,
+					name: '全部'
 				});
+				return point;
+			},
+			// 页码变更
+			handleCurrentChange(val) {
+				this.formData.page = val;
+				this.getSpList();
+			},
+			handleSizeChange(val) {
+				this.formData.page_size = val;
+				this.getSpList();
+			},
+			getSpList() {
+				let self = this;
+				self.loading = true;
+				let params = JSON.parse(JSON.stringify(this.formData));
+				self.$axios('get', '/api/integral/review/list', params)
+					.then(res => {
+						if (res.data.code == 1) {
+							self.list = res.data.data.list;
+							self.total = res.data.data.total;
+						}
+					})
+					.finally(e => {
+						self.loading = false;
+					});
+			}
 		}
-	}
-};
+	};
 </script>
 
 <style lang="scss">
-.box {
-	min-height: calc(100vh - 140px);
-	width: 100%;
-	background-color: #fff;
-	padding: 20px;
-	& .listTable {
-		& .tableTitle {
-			line-height: 50px;
-			padding-left: 10px;
+	.box {
+		min-height: calc(100vh - 140px);
+		width: 100%;
+		background-color: #fff;
+		padding: 20px;
+
+		& .listTable {
+			& .tableTitle {
+				line-height: 50px;
+				padding-left: 10px;
+			}
 		}
 	}
-}
-.popperSPBOX {
-	max-width: calc(100vh - 400px);
-	background-color: #fff;
-}
-</style>
+
+	.popperSPBOX {
+		max-width: calc(100vh - 400px);
+		background-color: #fff;
+	}
+</style>

+ 109 - 91
src/views/workbench/review.vue

@@ -5,88 +5,110 @@
 				<el-tab-pane :disabled="loading" label="待复核" name="review"></el-tab-pane>
 				<el-tab-pane :disabled="loading" label="已复核" name="noreview"></el-tab-pane>
 			</el-tabs>
-			<FormBox :isShowHeader="false" :isShowMore="true">
-				<template slot="footer">
-					<el-form ref="form" :inline="true" label-width="70px">
-						<el-form-item label="规则分类">
-							<el-cascader
-								class="date-picker-width"
-								v-model="rule"
-								:options="rule_trees"
-								:props="props"
-								@change="rule_null"
-								size="medium"
-								ref="rule"
-								clearable
-								placeholder="全部规则分类"
-							></el-cascader>
-						</el-form-item>
-						<el-form-item label="积分类型">
-							<el-select class="date-picker-width" size="medium" v-model="formData.pt_id" clearable placeholder="请选择积分类型">
-								<el-option v-for="item in getTypes()" :key="item.name" :label="item.name" :value="item.id"></el-option>
-							</el-select>
-						</el-form-item>
-						<el-form-item label="部门">
-							<el-cascader
-								size="medium"
-								class="date-picker-width"
-								v-model="dept_name"
-								:options="dept_tree"
-								:props="{ checkStrictly: true, multiple: true, value: 'id', label: 'name', children: '_child' }"
-								ref="dept"
-							    filterable
-							    collapse-tags
-								clearable
-								placeholder="全公司"
-							></el-cascader>
-						</el-form-item>
-						<el-form-item label="事件来源">
-							<el-select class="date-picker-width" size="medium" v-model="formData.source_type" clearable placeholder="全部">
+			<FormBox>
+				<div class="form-item">
+					<div class="form-label">姓名搜索</div>
+					<div class="form-search">
+						<el-select size="medium" v-model="select_employee_id" filterable clearable placeholder="请输入或选择人员">
+							<el-option v-for="item in employee_map" :key="item.id" :label="item.name" :value="item.id"></el-option>
+						</el-select>
+					</div>
+				</div>
+				<div class="form-item">
+					<div class="form-label">所在部门</div>
+					<div class="form-search">
+						<el-cascader
+							size="medium"
+							v-model="dept_name"
+							:options="dept_tree"
+							:props="{ checkStrictly: true, multiple: true, value: 'id', label: 'name', children: '_child' }"
+							ref="dept"
+							filterable
+							collapse-tags
+							clearable
+							placeholder="全公司"
+						></el-cascader>
+					</div>
+				</div>
+				<div class="form-item">
+					<div class="form-label">积分类型</div>
+					<div class="form-search">
+						<el-select  size="medium" v-model="formData.pt_id" clearable placeholder="请选择积分类型">
+							<el-option v-for="item in getTypes()" :key="item.name" :label="item.name" :value="item.id"></el-option>
+						</el-select>
+					</div>
+				</div>
+				<div class="form-item">
+					<div class="form-label">事件来源</div>
+					<div class="form-search">
+							<el-select size="medium" v-model="formData.source_type" clearable placeholder="全部">
 								<el-option v-for="item in source_type" :key="item.id" :label="item.name" :value="item.id"></el-option>
 							</el-select>
-						</el-form-item>
-						<el-form-item label="复核状态" v-if="active=='noreview'">
-							<el-select class="date-picker-width" size="medium" v-model="dc_status"  placeholder="全部">
-								<el-option v-for="item in reviewArr" :key="item.id" :label="item.name" :value="item.id"></el-option>
-							</el-select>
-						</el-form-item>
-						<el-form-item label="人员状态" label-width="90px">
-							<template slot="label">
-								<el-tooltip effect="dark" placement="top">
-								  <template slot="content">
-									默认仅显示组织架构中“已启用”人员的积分事件,未启用、已离职等人员的积分事件可以通过“未启用&未授权”筛选查看
-								  </template>
-								  <span>人员状态	<i class="el-icon-warning"></i></span>
-								</el-tooltip>
-							</template>
-							<el-select class="date-picker-width" size="medium" v-model="formData.is_enable">
-								<el-option  label="已启用" :value="1"></el-option>
-								<el-option  label="未授权&未启用" :value="0"></el-option>
-							</el-select>
-						</el-form-item>
-						<el-form-item label="人员">
-							<el-select size="medium" v-model="select_employee_id" filterable clearable placeholder="请输入或选择人员">
-								<el-option v-for="item in employee_map" :key="item.id" :label="item.name" :value="item.id"></el-option>
-							</el-select>
-						</el-form-item>
-						<el-form-item label="内容搜索">
-							<el-input size="medium" clearable max="20" v-model="formData.keyword" placeholder="输入关键字查找"></el-input>
-						</el-form-item>
-						<el-form-item label="发生时间">
-							<el-date-picker
-								v-model="time_slot"
-								type="daterange"
-								size="medium"
-								value-format="yyyy-MM-dd"
-								range-separator="至"
-								start-placeholder="开始日期"
-								end-placeholder="结束日期"
-							></el-date-picker>
-						</el-form-item>
-					</el-form>
-				</template>	
+					</div>
+				</div>
+				<div class="form-item">
+					<div class="form-label">规则分类</div>
+					<div class="form-search">
+						<el-cascader
+							v-model="rule"
+							:options="rule_trees"
+							:props="props"
+							@change="rule_null"
+							size="medium"
+							ref="rule"
+							clearable
+							placeholder="全部规则分类"
+						></el-cascader>
+					</div>
+				</div>
+				<div class="form-item">
+					<div class="form-label">
+						<el-tooltip effect="dark" placement="top">
+						  <template slot="content">
+							默认仅显示组织架构中“已启用”人员的积分事件,未启用、已离职等人员的积分事件可以通过“未启用&未授权”筛选查看
+						  </template>
+						  <span>人员状态	<i class="el-icon-warning"></i></span>
+						</el-tooltip>
+					</div>
+					<div class="form-search">
+						<el-select size="medium" v-model="formData.is_enable">
+							<el-option  label="已启用" :value="1"></el-option>
+							<el-option  label="未授权&未启用" :value="0"></el-option>
+						</el-select>
+					</div>
+				</div>
+				<div class="form-item">
+					<div class="form-label">发生时间</div>
+					<div class="form-search">
+						<el-date-picker
+							v-model="time_slot"
+							type="daterange"
+							size="medium"
+							value-format="yyyy-MM-dd"
+							range-separator="至"
+							start-placeholder="开始日期"
+							end-placeholder="结束日期"
+						></el-date-picker>
+					</div>
+				</div>
+				<div class="form-item" v-if="active=='noreview'">
+					<div class="form-label">复核状态</div>
+					<div class="form-search">
+						<el-select class="date-picker-width" size="medium" v-model="dc_status"  placeholder="全部">
+							<el-option v-for="item in reviewArr" :key="item.id" :label="item.name" :value="item.id"></el-option>
+						</el-select>
+					</div>
+				</div>
+				<div class="form-item">
+					<div class="form-label">内容搜索</div>
+					<div class="form-search">
+						<el-input size="medium" clearable max="20" v-model="formData.keyword" placeholder="请输入"></el-input>
+					</div>
+				</div>
+				
+
 			</FormBox>
-			<div style="padding: 10px 0;position: relative;z-index: 1;background-color: #fff;">
+			<div style="padding: 10px 0;position: relative;z-index: 1;background-color: #fff;" v-if="active=='review'">
 				<el-button plain  size="medium" :disabled="deleteDisabled" @click="deleteInBatches" type="primary">批量复核通过</el-button>
 			</div>
 			<!-- 表格 -->
@@ -388,7 +410,6 @@ export default {
 				page_size: 10,
 				dc_status:JSON.stringify([0]),
 				is_enable:1,
-				// order_key:'update_time'
 			},
 			time_slot: null,
 			rule_trees: [],
@@ -420,7 +441,7 @@ export default {
 				// {id: 6,name: '绩效任务包'},
 				{ id: 8, name: '积分导入' },
 				{ id: 9, name: 'A分转B分' },
-				{ id: 10, name: '钉钉汇报(日志)奖扣分' }
+				{ id: 10, name: '钉钉汇报(日志)分' }
 			],
 			dc_status:0,
 			reviewArr: [
@@ -470,13 +491,6 @@ export default {
 		this.point_types = this.getTypes();
 	},
 	watch: {
-		'formData.keyword': {
-			deep: true,
-			handler: _debounce(function(val) {
-				this.formData.page = 1;
-				this.get_integral_list(this.formData);
-			}, 1000)
-		},
 		selectionID() {
 			if (this.selectionID.length == 0) {
 				this.deleteDisabled = true;
@@ -484,6 +498,13 @@ export default {
 				this.deleteDisabled = false;
 			}
 		},
+		'formData.keyword': {
+			deep: true,
+			handler: _debounce(function(val) {
+				this.formData.page = 1;
+				this.get_integral_list(this.formData);
+			}, 1000)
+		},
 		'formData.is_enable'(val, old_val) {
 			this.formData.page = 1;
 			this.get_integral_list(this.formData);
@@ -523,7 +544,6 @@ export default {
 				let dept_ids=[];
 				val.forEach((item)=>{
 					dept_ids.push(item[item.length-1]);
-					// dept_ids.push(...item);
 				})
 				let set =new Set(dept_ids);
 				this.formData.dept_ids = [...set].toString();
@@ -563,7 +583,6 @@ export default {
 				this.$socketApiTow.closewebsocket();
 			}
 		},
-		
 	},
 	methods: {
 		setGrade(item){
@@ -624,7 +643,6 @@ export default {
 			}else{
 				console.log(this.results)
 			}
-			
 		},
 		onmessageWS(e){
 			this.setLoading=false;