347617796@qq.com 4 years ago
parent
commit
f92ff4e53e

+ 2 - 1
src/api/axios.js

@@ -8,6 +8,7 @@ import qs from 'qs'
 
 const service = axios.create({
 	baseURL: process.env.VUE_APP_BASE_API, // api的base_url
+	// baseURL:'https://ding.insys.g107.com/',
 	timeout: 5000,
 	headers: {
 		'Content-Type': 'application/x-www-form-urlencoded',
@@ -21,7 +22,7 @@ service.interceptors.request.use(
 	config => {
 		if (getToken()) {
 			config.headers['A-Token'] = getToken()
-			// config.headers['A-Token'] = ' eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczpcL1wvdGVzdC1kaW5nLmcxMDcuY29tXC9hcGlcL2RpbmdcL2xvZ2luIiwiaWF0IjoxNjAxMjc2NzgzLCJleHAiOjE2MDE4NzY3ODMsIm5iZiI6MTYwMTI3Njc4MywianRpIjoiNzRZaHFnQW5UOVlxOEVDNiIsInN1YiI6MiwicHJ2IjoiY2E2NDg5ZDUwZjI0MDdhNjc4MzBlODA5MGQwMTQ4ODM1Njg1OTYyYiIsInJvbGUiOiJlbXBsb3llZSJ9.gamq3c4oI9ctknWq-uyx880S32MvHWz_SkRJ0euX66k'
+			// config.headers['A-Token'] = ' eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczpcL1wvdGVzdC1kaW5nLmcxMDcuY29tXC9hcGlcL2RpbmdcL2xvZ2luIiwiaWF0IjoxNjAyMzE2OTU0LCJleHAiOjE2MDI5MTY5NTQsIm5iZiI6MTYwMjMxNjk1NCwianRpIjoiSWViRUVZSGREcmM4bGJ2ZiIsInN1YiI6MiwicHJ2IjoiY2E2NDg5ZDUwZjI0MDdhNjc4MzBlODA5MGQwMTQ4ODM1Njg1OTYyYiIsInJvbGUiOiJlbXBsb3llZSJ9.gAoRB1uC4HQAal1IINiVCJkAqTqSgVvXmJJtDqC7hx4'
 		}
 		
 		if (config.url == '/api/integral/statistics/ranking' || config.url == '/api/integral/review/apply') {

+ 4 - 2
src/assets/css/reset.css

@@ -190,6 +190,7 @@ table { border-collapse:collapse; border-spacing:0; }
 	border-radius: 5px;
 	min-height:calc(100vh - 184px);
 	min-width: 800px;
+	position: relative;
 }
 .terr-left {
 	width: 200px;
@@ -215,13 +216,13 @@ table { border-collapse:collapse; border-spacing:0; }
 	content: ' ';
 	position: absolute;
 	top: 0;
-	left: 0;
+	left: 200px;
 	bottom: 0;
 	width: 1px;
 	background: #ebeef5;
 }
 .border-right {
-	position: relative;
+	/* position: relative; */
 }
 .margin-bottom{
 	margin-bottom: 20px;
@@ -233,6 +234,7 @@ table { border-collapse:collapse; border-spacing:0; }
 	border: 1px solid #67c23a !important;
 	padding:16px !important;
 	min-width: 800px;
+	border-radius: 4px;
 }
 .diy-tip p{
 	color: #67c23a !important;

+ 0 - 1
src/components/EmployeeSelector.vue

@@ -126,7 +126,6 @@ export default {
   name: "EmployeeSelector",
   data() {
     let selected = JSON.parse(JSON.stringify(this.selected));
-	console.log(selected);
     let user_no_select = JSON.parse(JSON.stringify(this.user_no_select));
     return {
       table_loading:false,

+ 5 - 3
src/components/publics/workpoints.vue

@@ -51,16 +51,18 @@ export default {
 	};
   },
   created() {
-	  // console.log(this.initia_arr)
   },
-  mounted() {},
+  mounted() {;
+	  if(this.initia_arr[0].type=="switch"){
+		  	 this.disabled=this.initia_arr[0].initia_input.age==1? false:true;
+	  }
+  },
   methods: {
 	changeAge(e){
 		this.disabled=e==1? false:true
 	},
     save() {
       let arr = [];
-
       // 正则判断代码
       // for (var i = 0; i < this.initia_arr.length; i++) {
       //   if (this.initia_arr[i].initia_input.age !== "") {

+ 20 - 7
src/index.vue

@@ -11,22 +11,21 @@
 					<div class="flex-box flex-v-ce">
 <!-- 						<div>您当前的版本:15~20人(剩余231天)</div>
 						<el-button size="small" @click="tz" class="upgrade" type="primary" icon="el-icon-upload">续费升级</el-button> -->
-						<el-tooltip class="item" effect="dark" content="设置向导" placement="bottom" v-if="isShowWn">
+						<el-tooltip class="item" effect="dark" content="设置向导" placement="bottom">
 							<img src="./assets/image/wn.png" class="wn" @click="showWn">
 						</el-tooltip>
-						<!-- <userImage :user_name="userData.name" :img_url="userData.img_url" width="44px" height="44px"></userImage> -->
+						<userImage :user_name="userData.name" :img_url="userData.img_url" width="44px" height="44px"></userImage>
 					</div>
 				</div>
 			</div>
 		</el-header>
 		<el-container class="main">
 			<el-aside>
-				<el-menu :default-active="defaultActive" class="el-menu-vertical-demo" :router="true">
+				<el-menu :default-active="defaultActive" class="el-menu-vertical-demo" :router="true" @select="activeRouter">
 					<el-submenu :index="index.toString()" v-for="(item, index) in routers" :key="index">
-						<template slot="title"><span class="iconfont titleIcon" :class="item.icon"></span><span style="margin-left: 5px;">{{item.name}}</span>
-						</template>
+						<template slot="title"><span class="iconfont titleIcon" :class="item.icon" style="font-size: 20px;"></span><span style="margin-left: 5px;">{{item.name}}</span></template>
 						<template v-for="(item2, index2) in item.children">
-							<el-menu-item :index="returnIndex(index,index2)" :route="item2.path" :key="index2" class="font-flex-word">
+							<el-menu-item :index="returnIndex(index,index2)" :ref="item2.path" :route="item2.path" :key="index2" class="font-flex-word">
 								<span slot="title" style="margin-left: 10px;width:120px">{{ item2.name }}</span>
 							</el-menu-item>
 						</template>
@@ -92,13 +91,17 @@ export default {
 			isShowWn:true,
 		};
 	},
-	created() {this.returnRoutersArr('ranking')
+	created() {
+		this.returnRoutersArr('ranking');
 		this.routers=[
 			{name:'设置',children:this.returnRoutersArr('set'),icon:'icon-dingdingPC_shezhi'},
 			{name:'统计',children:this.returnRoutersArr('ranking'),icon:'icon-dingdingPC_tongji'},
 			];
 		this.routers_one=this.returnRoutersArr('set');
 		this.userData=this.$getUserData();
+		if(this.$route.path!='/framework'){//当刷新页面是控制左边导航栏的选中
+			this.defaultActive=localStorage.getItem("path");
+		}
 	},
 	mounted() {
 		this.getTypes();
@@ -114,6 +117,10 @@ export default {
 		});
 	},
 	methods: {
+		//当刷新页面是控制左边导航栏的选中
+		activeRouter(index,indexPath){
+			localStorage.setItem("path",indexPath[1]);
+		},
 		returnRoutersArr(str){
 			var routers = this.$router.options.routes[0].children;
 			var routersArr=[];
@@ -129,6 +136,7 @@ export default {
 		},
 		openView(e){
 			this.defaultActive="0-"+(e).toString();
+			localStorage.setItem("path",this.defaultActive);
 			this.wn_show=false;
 			this.isShowWn=false;
 			this.$router.push({path:this.routers_one[e].path})
@@ -243,6 +251,7 @@ export default {
 	width: 30px;
 	height: 30px;
 	margin-right: 5px;
+	border-radius: 6px;
 }
 .logo-box div {
 	font-size: 16px;
@@ -263,4 +272,8 @@ export default {
 ::v-deep .el-menu-item{
 	padding-right: 10px !important;
 }
+::v-deep .el-menu-item.is-active {
+    color: #26A2FF;
+	background-color: #ecf5ff;
+}
 </style>

+ 110 - 68
src/init.vue

@@ -1,94 +1,136 @@
 <template>
 	<div class="noData flex-box-v flex-center-center">
 		<div class="data-all">
-			<img src="./assets/image/init.gif" class="appImg"/>
+			<img src="./assets/image/init.gif" class="appImg" />
 			<div>管理执行难,就用功道云</div>
+			<el-button class="refresh" type="primary" :loading="disabled" :disabled="disabled" v-if="isRefresh" @click="openLogin()">{{ text }}</el-button>
 		</div>
 	</div>
 </template>
 
 <script>
-	export default{
-		data(){
-			return{
-				
-			}
-		},
-		mounted() {
-			var url = window.location.href;
-			var str = this.GetRequest(url).corpId || '123';
-			var corpId = str.split('#')[0];
-			if (corpId) {
-				this.login(corpId);
-			}
+export default {
+	data() {
+		return {
+			text: '重试',
+			corpId: '',
+			isRefresh: false,
+			disabled: false,
+			showBtnCunt: 0
+		};
+	},
+	watch: {},
+	mounted() {
+		var url = window.location.href;
+		var str = this.GetRequest(url).corpId || '123';
+		var corpId = str.split('#')[0];
+		this.corpId = corpId;
+		if (corpId) {
+			this.login(corpId);
+		}
+	},
+	methods: {
+		//重新登录
+		openLogin() {
+			var num = 10;
+			var that = this;
+			this.disabled = true;
+			this.showBtnCunt = this.showBtnCunt + 1;
+			var intterval = setInterval(function() {
+				num--;
+				if (num == 0) {
+					that.text = '重试';
+					that.disabled = false;
+					if (that.showBtnCunt >= 2) {
+						that.$alert('数据加载过慢,请联系客服', '温馨提示', {
+							confirmButtonText: '确定',
+							callback: action => {}
+						});
+					}
+					clearInterval(intterval);
+					return;
+				}
+				that.text = num;
+			}, 1000);
+			this.login(this.corpId);
 		},
-		methods:{
-			login(corpId) {
-				var that = this;
-				this.loading=true;
-				this.$dd.runtime.permission.requestAuthCode({
-					corpId: corpId, // 企业id
-					onSuccess: function(info) {
-						that.$axios('post','api/ding/login', { authCode: info.code, corpId: corpId }).then(res => {
-							var is=false;
+		login(corpId) {
+			var that = this;
+			this.loading = true;
+			this.$dd.runtime.permission.requestAuthCode({
+				corpId: corpId, // 企业id
+				onSuccess: function(info) {
+					that.$axios('post', '/api/ding/login', { authCode: info.code, corpId: corpId })
+						.then(res => {
+							var is = false;
 							if (res.data.code == 1) {
 								var { token, user } = res.data.data;
-								user.employee_detail.role_list.forEach(item=>{
-									if(user.is_official==1){
-										if(item.name=='admin'||item.name=='creator'||item.name=='point_manager'){
-											is=true;
+								user.employee_detail.role_list.forEach(item => {
+									// if (user.is_official == 1) {
+										if (item.name == 'admin' || item.name == 'creator' || item.name == 'point_manager') {
+											is = true;
 										}
-									}
-								})
-								if(is){
+									// }
+								});
+								if (is) {
 									that.$setUserData(user);
-									that.$router.replace({path:'/index'})
-								}else{
-									that.$router.replace({path:'/noAccess'})
+									that.$router.replace({ path: '/index' });
+								} else {
+									that.$router.replace({ path: '/noAccess' });
 								}
 							}
-						}).finally(() => {
+						})
+						.catch(() => {
+							// if(!that.showBtn){
+							that.isRefresh = true;
+							// }
+						})
+						.finally(() => {
 							that.loading = false;
 						});
-					}
-				});
-			},
-			GetRequest(urlStr) {
-				if (typeof urlStr == 'undefined') {
-					var url = decodeURI(location.search); //获取url中"?"符后的字符串
-				} else {
-					var url = '?' + urlStr.split('?')[1];
 				}
-				var theRequest = new Object();
-				var strs;
-				if (url.indexOf('?') != -1) {
-					var str = url.substr(1);
-					strs = str.split('&');
-					for (var i = 0; i < strs.length; i++) {
-						theRequest[strs[i].split('=')[0]] = decodeURI(strs[i].split('=')[1]);
-					}
+			});
+		},
+		GetRequest(urlStr) {
+			if (typeof urlStr == 'undefined') {
+				var url = decodeURI(location.search); //获取url中"?"符后的字符串
+			} else {
+				var url = '?' + urlStr.split('?')[1];
+			}
+			var theRequest = new Object();
+			var strs;
+			if (url.indexOf('?') != -1) {
+				var str = url.substr(1);
+				strs = str.split('&');
+				for (var i = 0; i < strs.length; i++) {
+					theRequest[strs[i].split('=')[0]] = decodeURI(strs[i].split('=')[1]);
 				}
-				return theRequest;
 			}
+			return theRequest;
 		}
-	} 
+	}
+};
 </script>
 
 <style scoped="scoped">
-	.appImg{
-		width: 200px;
-		height: 200px;
-	}
-	.noData{
-		text-align: center;
-		position: fixed;
-		left: 0;
-		top: 0;
-		right: 0;
-		bottom: 0;
-	}
-	.data-all{
-		margin-bottom: 10%;
-		color: #595959;
-	}
+.refresh {
+	margin-top: 100px;
+	width: 100px;
+}
+.appImg {
+	width: 200px;
+	height: 200px;
+}
+.noData {
+	text-align: center;
+	position: fixed;
+	left: 0;
+	top: 0;
+	right: 0;
+	bottom: 0;
+}
+.data-all {
+	margin-bottom: 10%;
+	color: #595959;
+}
 </style>

+ 3 - 2
src/main.js

@@ -17,7 +17,7 @@ Vue.component('userImage', userImage)
 
 Vue.use(ElementUI);
 // if (process.env.NODE_ENV === 'development') {
-  // new VConsole()
+  new VConsole()
 // }
 
 Vue.prototype.$dd=dd;
@@ -37,7 +37,8 @@ var CancelToken = axios.CancelToken;
 Vue.$httpRequestList=[];
 
 Vue.prototype.$axios = (type, url, data) => {
-	if(url!='/api/ding/login'&&url!='/api/integral/types'){
+	// console.log(url)
+	if(url!='/api/ding/login'&& url!='/api/integral/types'){
 		if(getToken()){
 			return new Promise((resolve, reject) => {   //封装ajax
 			    var aa = {

+ 1 - 1
src/router/index.js

@@ -82,7 +82,7 @@ const routes = [{
 			},
 			{
 				path: '/dept_rank',
-				name: '部门B分排名',
+				name: '部门排名',
 				component: () => import('@/views/ranking/dept_rank.vue'),
 				meta: {
 					icon: 'icon-shezhi_zuzhijiagou',

+ 27 - 11
src/views/ranking/custom_rank.vue

@@ -4,7 +4,7 @@
 			<div class="flex-box">
 				<div class="terr-left">
 					<el-button size="medium" @click="addGroup" type="primary">新建分组</el-button>
-					<el-menu default-active="0" class="el-menu-vertical-demo" style="border: none" v-loading="groups_loading">
+					<el-menu default-active="0" class="el-menu-vertical-demo" style="border: none" v-if="groups_list.length>0" v-loading="groups_loading">
 						<el-menu-item
 							style="height: 47px;line-height: 47px;"
 							:index="index.toString()"
@@ -18,10 +18,14 @@
 							<span slot="title">{{ item.name }}</span>
 						</el-menu-item>
 					</el-menu>
+					<div v-else style="text-align: center;margin-top: 10%;" class="fontColorF">
+						<img src="@/assets/image/nodata.png" style="width: 180px;height: 120px;margin: 30px auto;">
+						还没有自定义分组
+					</div>
 				</div>
 				<div class="terr-right border-right flex-1">
-					<div class="listData" v-loading="table_loading">
-						<div class="flex-box" v-if="table_list.length > 0">
+					<div class="listData" v-loading="table_loading" v-if="table_list.length > 0">
+						<div class="flex-box">
 							<div class="flex-box flex-v-ce margin-bottom">
 								<div class="groupsName">{{groups_info.name}}<span class="blue">({{groups_info.employees.length}}人)</span></div>
 								<el-button @click="editGroup" size="medium">编辑</el-button>
@@ -32,11 +36,11 @@
 							<el-form-item label="时间" label-width="40px">
 								<el-date-picker v-model="params.month"  size="medium" type="month" placeholder="请选择月份" value-format="yyyy-MM"></el-date-picker>
 							</el-form-item>
-							<el-form-item label="规则分类" label-width="70px">
+<!-- 						<el-form-item label="规则分类" label-width="70px">
 								<el-cascader  size="medium"  class="date-picker-width" v-model="params.rule_id" :options="rule_trees" :props="props" @change="rule_null"
 									ref="rule" clearable filterable	placeholder="全部规则分类"
 								></el-cascader>
-							</el-form-item>
+							</el-form-item> -->
 							<el-form-item>
 								<el-checkbox v-model="sort" size="medium" label="由低到高" border></el-checkbox>
 							</el-form-item>
@@ -61,10 +65,7 @@
 							</el-table-column>
 							<el-table-column label="B分" align="left" prop="point"></el-table-column>
 							<template slot="empty">
-								<div class="nopoint_box">
-									<div class="noimg noperson"></div>
-									<span class="title">没有对应的数据</span>
-								</div>
+								<noData></noData>
 							</template>
 						</el-table>
 						<center style="padding: 20px 0;">
@@ -80,6 +81,13 @@
 							</el-pagination>
 						</center>
 					</div>
+					<div v-else style="margin-top: 10%;">
+						<noData :isSolt="true">
+							<template v-slot:default>
+								<div style="text-align: center;">还没有分组,<span style="color:#26A2FF;cursor:pointer" @click="addGroup">去添加 >></span></div>
+							</template>
+						</noData>
+					</div>
 				</div>
 			</div>
 		</div>
@@ -221,7 +229,11 @@ export default {
 				if(!this.popupType){//为编辑时
 					this.groups_info=obj;
 				}
-				this.get_groups_list()
+				if(this.groups_list.length==0){
+					this.get_groups_list(true)
+				}else{
+					this.get_groups_list()
+				}
 				
 		    }else{
 		      this.$message.error(res.data.msg)
@@ -316,7 +328,11 @@ export default {
 			this.$axios('get','/api/integral/statistics/groups').then(res => {
 				if (res.data.code == 1) {
 					this.groups_list = res.data.data.list;
-					isAdd? this.open_right(this.groups_list[0]):this.open_right();
+					if(this.groups_list[0]){
+						isAdd? this.open_right(this.groups_list[0]):this.open_right();
+					}else{
+						this.table_list=[];
+					}
 				}
 			}).finally(() => {
 				this.groups_loading = false;

+ 20 - 6
src/views/ranking/dept_rank.vue

@@ -62,7 +62,7 @@
 						<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-form-item label="规则分类">
 					<el-cascader
 					   size="medium"
 						class="date-picker-width"
@@ -74,7 +74,12 @@
 						collapse-tags
 						placeholder="请选择规则分类"
 					></el-cascader>
-				</el-form-item>
+				</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 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" style="width:150px" placeholder="请选择">
 						<el-option v-for="item in positions" :key="item.id" :label="item.name" :value="item.age"></el-option>
@@ -86,7 +91,7 @@
 				</el-form-item>
 				<el-form-item>
 					<el-button type="primary"  size="medium" plain @click="dialogVisible = true">导出排名</el-button>
-					<el-button type="primary"  size="medium" plain @click="byRanking('byRankingData')">轮播排名</el-button>
+					<!-- <el-button type="primary"  size="medium" plain @click="byRanking('byRankingData')">轮播排名</el-button> -->
 				</el-form-item>
 			</el-form>
 			<el-table :data="list" style="width: 100%" v-loading="loading">
@@ -106,7 +111,7 @@
 							</div>
 					</template>
 				</el-table-column>
-				<el-table-column label="B分" align="left" prop="point"></el-table-column>
+				<el-table-column :label="labelName" align="left" prop="point"></el-table-column>
 				<template slot="empty">
 					<div class="nopoint_box">
 						<div class="noimg noperson"></div>
@@ -251,6 +256,7 @@ export default {
 			rule_trees: null,
 			rule_id: null,
 			list: null,
+			point_types:[],
 			point_type: [],
 			sort: false,
 			time_types: [{ label: '月份', value: '1' }, { label: '年份', value: '2' }, { label: '季度', value: '3' }],
@@ -275,7 +281,8 @@ export default {
 				month: [{ required: true, message: '请选择月份', trigger: 'blur' }],
 				dept_id: [{ required: true, message: '请选择部门', trigger: 'change' }],
 				position: [{ required: true, message: '请选择人员范围', trigger: 'change' }]
-			}
+			},
+			labelName:'B分',
 		};
 	},
 	watch: {
@@ -378,7 +385,10 @@ export default {
 				default:
 					break;
 			}
+			
 			let data = JSON.parse(JSON.stringify(this.formData));
+			var employee_ids =data.exclusion.join(',');
+			data.exclusion=employee_ids;
 			data.page = 1;
 			data.page_size = 10;
 			this.$nextTick(() => {
@@ -419,8 +429,10 @@ export default {
 			let self = this;
 			self.loading = true;
 			data ? '' : (data = this.formData);
+			
 			data.position = data.position == 'manager' ? 'manager' : data.position == 'employee' ? 'employee' : 'all';
 			self.$axios('get','/api/integral/statistics/ranking',data).then(res => {
+				this.labelName=this.formData.pt_id==2? 'A分':'B分';
 				if (res.data.code == 1) {
 					self.list = res.data.data.list;
 					self.total = res.data.data.total;
@@ -503,7 +515,7 @@ export default {
 			if (this.Dc_Data.rule_id.length > 0) {
 				data += '&rule_id=' + this.Dc_Data.rule_id;
 			}
-			window.open(process.env.VUE_APP_BASE_API + 'api/download/ranking/v2?pt_id=3&employee_id=2'+ data, '_blank');
+			window.open(process.env.VUE_APP_BASE_API + 'api/download/ranking/v2?pt_id='+this.formData.pt_id+'&employee_id='+this.$getUserData().id+ data, '_blank');
 			this.dialogVisible = false;
 		},
 		//获取部门
@@ -514,8 +526,10 @@ export default {
 		},
 	},
 	mounted() {
+		this.point_types=this.$getTyps().slice(1);
 		this.tips_show = JSON.parse(localStorage.getItem('dept_rank_tips')) ? false : true;
 		this.getDepartment();
+		this.getEmployeeList();
 		this.get_list(this.formData, true);
 		this.get_rule_tree();
 	}

+ 33 - 32
src/views/ranking/integral_event.vue

@@ -52,13 +52,13 @@
 			  <el-form-item>
 				  <!-- <el-button type="primary" size="medium" @click="excelImportShow = true">导入数据</el-button> -->
 				  <el-button type="primary" size="medium" @click="exportExcel">导出当前数据</el-button>
-				  <el-button type="primary" size="medium" plain @click="swiperShow = true">轮播事件</el-button>
+				  <!-- <el-button type="primary" size="medium" plain @click="swiperShow = true">轮播事件</el-button> -->
 			  </el-form-item>
 			</el-form> 
 			 <!-- 表格 -->
 			<div>
 				<el-table :data="list" style="width: 100%" v-loading="loading" @row-click="open_detail">
-					<el-table-column prop="employee_name" label="姓名" align="left">	
+					<el-table-column prop="employee_name" label="姓名" align="left" width="200px">	
 						<template slot-scope="scope">
 							<div class="flex-box">
 								<userImage	class="fl" :user_name="scope.row.employee_name"	:img_url="scope.row.employee_img_url" width="50px" height="50px"></userImage>
@@ -66,7 +66,7 @@
 							</div>
 						</template>
 					</el-table-column>
-					<el-table-column prop="dept" label="部门" align="left" width="150px"></el-table-column>
+					<el-table-column prop="dept" label="部门" align="left" width="200px"></el-table-column>
 					<el-table-column prop="point" label="积分" align="left" width="80px">
 						<template slot-scope="scope">
 							<span :class="scope.row.point < 0 ? 'color_green' : 'color_red'">{{ scope.row.point }} {{ point_name(scope.row.pt_id) }}</span>
@@ -112,58 +112,58 @@
 			<div class="drawer_title">事件详情</div>
 			<div class="detail_popup" v-loading="detail_loading" v-if="detail_info !== null">
 				<el-row style="padding-bottom:10px;border-bottom:1px #f8f8f8 solid;">
-					<el-col :span="24">
+					<div class="flex-box flex-v-ce">
 						<userImage :user_name="detail_info.employee_name" class="fl" width="50px" height="50px" fontSize="1"></userImage>
-						<span style="line-height:50px; margin-left:10px;margin-right:4px;">{{ detail_info.employee_name }}</span>
+						<span style="font-size: 18px;line-height:50px; margin-left:10px;margin-right:4px;">{{ detail_info.employee_name }}</span>
 						<span class="color_red point" v-show="detail_info.point >= 0">+{{ detail_info.point }} {{ point_name(detail_info.pt_id) }}</span>
 						<span class="color_green point" v-show="detail_info.point < 0">{{ detail_info.point }} {{ point_name(detail_info.pt_id) }}</span>
-					</el-col>
+					</div>
 				</el-row>
 
 				<el-row>
-					<el-col :span="4">任务描述</el-col>
-					<el-col :span="20" v-if="detail_info.remark">{{ detail_info.remark && (detail_info.remark.customize || detail_info.remark.rule) }}</el-col>
+					<el-col :span="6">任务描述</el-col>
+					<el-col :span="18" v-if="detail_info.remark">{{ detail_info.remark && (detail_info.remark.customize || detail_info.remark.rule) }}</el-col>
 				</el-row>
 
 				<el-row>
-					<el-col :span="4">规则分类</el-col>
-					<el-col :span="20">{{ detail_info.rule_list }}</el-col>
+					<el-col :span="6">规则分类</el-col>
+					<el-col :span="18">{{ detail_info.rule_list }}</el-col>
 				</el-row>
 
 				<el-row v-show="detail_info.rule_list">
-					<el-col :span="4">事件时间</el-col>
-					<el-col :span="20">{{ detail_info.date }}</el-col>
+					<el-col :span="6">事件时间</el-col>
+					<el-col :span="18">{{ detail_info.date }}</el-col>
 				</el-row>
 
 				<el-row v-show="detail_info.source_type_mark">
-					<el-col :span="4">来源类型</el-col>
-					<el-col :span="20">{{ detail_info.source_type_mark }}</el-col>
+					<el-col :span="6">来源类型</el-col>
+					<el-col :span="18">{{ detail_info.source_type_mark }}</el-col>
 				</el-row>
 
 				<el-row v-show="!detail_info.rule_id">
-					<el-col :span="4">记录人</el-col>
-					<el-col :span="20">{{ detail_info.employee_name }}</el-col>
+					<el-col :span="6">记录人</el-col>
+					<el-col :span="18">{{ detail_info.employee_name }}</el-col>
 				</el-row>
 
 				<el-row v-show="detail_info.files !== null && detail_info.files.length > 0">
-					<el-col :span="4">图片</el-col>
-					<el-col :span="20"><el-image style="width: 100px; height: 100px" :src="detail_info.files[0]" :preview-src-list="detail_info.files"></el-image></el-col>
+					<el-col :span="6">图片</el-col>
+					<el-col :span="18"><el-image style="width: 100px; height: 100px" :src="detail_info.files[0]" :preview-src-list="detail_info.files"></el-image></el-col>
 				</el-row>
 
 				<div v-show="detail_info.rule_id">
 					<p class="row_title">规则依据</p>
 					<el-row>
-						<el-col :span="4">规则分类</el-col>
-						<el-col :span="19">{{ detail_info.rule_list }}</el-col>
+						<el-col :span="6">规则分类</el-col>
+						<el-col :span="18">{{ detail_info.rule_list }}</el-col>
 					</el-row>
 					<el-row v-show="detail_info.remark.rule">
-						<el-col :span="4">积分规则</el-col>
-						<el-col :span="19">{{ detail_info.remark.rule }}</el-col>
+						<el-col :span="6">积分规则</el-col>
+						<el-col :span="18">{{ detail_info.remark.rule }}</el-col>
 					</el-row>
 					<el-row>
-						<el-col :span="5">积分</el-col>
-						<el-col :span="19" v-show="detail_info.rule_item.min_point == detail_info.rule_item.max_point">{{ detail_info.rule_item.min_point }}</el-col>
-						<el-col :span="19" v-show="detail_info.rule_item.min_point != detail_info.rule_item.max_point">
+						<el-col :span="6">积分</el-col>
+						<el-col :span="18" v-show="detail_info.rule_item.min_point == detail_info.rule_item.max_point">{{ detail_info.rule_item.min_point }}</el-col>
+						<el-col :span="18" v-show="detail_info.rule_item.min_point != detail_info.rule_item.max_point">
 							{{ detail_info.rule_item.min_point }} ~ {{ detail_info.rule_item.max_point }}
 						</el-col>
 					</el-row>
@@ -176,14 +176,17 @@
 					</p>
 					<div class="examine_steps">
 						<el-steps direction="vertical" :space="50">
-							<el-step v-for="(item, index) in detail_info.process" :key="index">
+							<el-step v-for="(item, index) in detail_info.process" :key="index" style="margin-bottom: 5px;">
 								<template slot="icon">
 									<userImage width="36px" height="36px" :img_url="item.img_url" :user_name="item.name"></userImage>
 								</template>
 								<template slot="title">
 									<div style="color: #303133;font-size:14px;margin-top:-2px;">
 										{{ item.name }} {{ item.remark }}
-										<span v-show="item.point !== 0">{{ item.point }}</span>
+										<strong v-show="item.point !== 0" style="font-weight: 500;">
+											<span class="color_red point" v-show="item.point >= 0">+{{ item.point }}</span>
+											<span class="color_green point" v-show="item.point < 0">{{ item.point }}</span>
+										</strong>
 									</div>
 								</template>
 								<template slot="description" style="">
@@ -469,7 +472,7 @@ export default {
 				cancelButtonText: '取消',
 				type: 'warning'
 			}).then(() => {
-				this.$axios("DELETE",'/api/integral/statistics/integral',{ event_id: item.event_id }).then(res => {
+				this.$axios("post",'/api/integral/statistics/integral/destroy',{ event_id: item.event_id }).then(res => {
 						if (res.data.code == 1) {
 							this.$message.success(res.data.msg);
 							this.detail_popup = false;
@@ -477,16 +480,14 @@ export default {
 						} else {
 							this.$message.error(res.data.msg);
 						}
-					})
-					.catch(e => {
-						this.$message.error(e.data.msg);
-					});
+				})
 			});
 		},
 		close_integral_event() {
 			this.detail_popup = false;
 		},
 		point_name(id) {
+			
 			return this.point_types.find(item => {
 				if (item.id == id) {
 					return item.name;

+ 24 - 15
src/views/set/check.vue

@@ -1,6 +1,6 @@
 <template>
   <div v-loading="loading">
-    <workpoints :initia_arr="initia_arr" :initia_head="initia_head" :obj="obj" @initia="initia" />
+    <workpoints :initia_arr="initia_arr" v-if="!loading" :initia_head="initia_head" :obj="obj" @initia="initia" />
   </div>
 </template>
 
@@ -46,13 +46,11 @@ export default {
             age: "0",
           },
         },
-        {
-          initialName: "旷工缺席,每次扣分",
-          initia_mark: false,
-          initia_input: {
-            age: "0",
-          },
-        },
+
+
+
+
+
         {
           initialName: "上班迟到,每次扣分",
           initia_mark: false,
@@ -67,6 +65,17 @@ export default {
             age: "0",
           },
         },
+		
+		
+		{
+		  initialName: "旷工缺席,每次扣分",
+		  initia_mark: false,
+		  initia_input: {
+		    age: "0",
+		  },
+		},
+		
+		
         {
           initialName: "加班,每小时加分",
           initia_mark: false,
@@ -108,9 +117,9 @@ export default {
       objs.month_full_ad =ok[1].sj; //>=0
       objs.normal = ok[2].sj; //>=0
       objs.no_sign = ok[3].sj>0? -ok[3].sj:ok[3].sj; //<=0
-      objs.absent = ok[4].sj>0? -ok[4].sj:ok[4].sj; //<=0
-      objs.on_duty_late = ok[5].sj>0? -ok[5].sj:ok[5].sj; //<=0
-      objs.off_duty_early = ok[6].sj>0? -ok[6].sj:ok[6].sj; //<=0
+      objs.absent = ok[6].sj>0? -ok[6].sj:ok[6].sj; //<=0
+      objs.on_duty_late = ok[4].sj>0? -ok[4].sj:ok[4].sj; //<=0
+      objs.off_duty_early = ok[5].sj>0? -ok[5].sj:ok[5].sj; //<=0
       objs.ot_per_hour = ok[7].sj; //>=0
       objs.leave_per_hour = ok[8].sj>0? -ok[8].sj:ok[8].sj; //<=0
       this.$axios('post',"/api/ad/update",objs).then((res) => {
@@ -133,13 +142,13 @@ export default {
 		config.on_duty_late=config.on_duty_late-(config.on_duty_late+config.on_duty_late);
 		config.off_duty_early=config.off_duty_early-(config.off_duty_early+config.off_duty_early);
 		config.leave_per_hour=config.leave_per_hour-(config.leave_per_hour+config.leave_per_hour);
-		this.initia_arr[0].initia_input.age =config.enable? config.enable:0
+		this.initia_arr[0].initia_input.age =config.enable
         this.initia_arr[1].initia_input.age =config.month_full_ad? config.month_full_ad:0
         this.initia_arr[2].initia_input.age =config.normal? config.normal:0
         this.initia_arr[3].initia_input.age =config.no_sign? config.no_sign:0
-        this.initia_arr[4].initia_input.age =config.absent? config.absent:0
-        this.initia_arr[5].initia_input.age =config.on_duty_late? config.on_duty_late:0
-        this.initia_arr[6].initia_input.age =config.off_duty_early? config.off_duty_early:0
+        this.initia_arr[6].initia_input.age =config.absent? config.absent:0
+        this.initia_arr[4].initia_input.age =config.on_duty_late? config.on_duty_late:0
+        this.initia_arr[5].initia_input.age =config.off_duty_early? config.off_duty_early:0
         this.initia_arr[7].initia_input.age =config.ot_per_hour? config.ot_per_hour:0
 		this.initia_arr[8].initia_input.age =config.leave_per_hour? config.leave_per_hour:0
       }).finally(err=>{

+ 10 - 19
src/views/set/framework.vue

@@ -1,14 +1,9 @@
 <template>
 	<div class="all-box">
 		<!-- 头部提示 -->
-		<div class="top-msg" style="margin-bottom: 10px;">
+		<div class="diy-tip" style="margin-bottom: 10px;">
 			<div>
-				当前组织架构成员通过钉钉通讯录同步,上次同步时间
-				<span v-if="info.sync_time">{{ info.sync_time }}</span>
-				<span v-else>暂未同步</span>
-			</div>
-			<div>
-				如果您的钉钉通讯录有变动,<span class="red">同步间隔时间为每两小时能同步一次</span>
+				当前组织架构成员通过钉钉通讯录同步,员工开启积分管理后才能正式启用并进入“功道云积分制”,如果您的钉钉通讯录有变动,点击
 				<span class="blue" style="margin-left: 10px;cursor: pointer;" @click="tb()" v-loading="tbLoading">
 					<i class="el-icon-refresh"></i>
 					立即同步
@@ -31,7 +26,6 @@
 						<el-tree
 							:data="bmList"
 							class="cate-tree"
-							:expand-on-click-node="false"
 							:highlight-current="true"
 							:props="{ children: '_child', label: 'name' }"
 							@node-click="handleNodeClick"
@@ -76,7 +70,7 @@
 							</template>
 						</el-table-column>
 						<el-table-column prop="accedence_time" label="入职时间"></el-table-column>
-						<el-table-column label="是否参与积分管理">
+						<el-table-column label="启用积分管理">
 							<template slot-scope="scope">
 								<div :class="[scope.row.is_official==1? 'switch-box':'']" @click="changeIs(scope.row.is_official, scope.row.id)">
 									<div class="switch"></div>
@@ -163,13 +157,11 @@ export default {
 			  type: 'warning'
 			}).then(() => {
 				this.tbLoading = true;
-				var http1 = this.$axios('post','/api/ding/department_sync');
-				var http2 = this.$axios('post','/api/ding/employee_sync');
-				Promise.all([http1, http2]).then(res => {
-					if (res[0]) {
-						this.$message.success({ message: '同步成功' });
-						this.getInfo();
-					}
+				this.$axios('post','/api/ding/department_sync').then(res => {
+					this.$message.success({ message: '同步成功' });
+					this.dept_id=0;
+					this.getInfo();
+					this.getEmployee();
 				}).finally(()=>{
 					this.tbLoading = false;
 				});
@@ -202,10 +194,10 @@ export default {
 			});
 		},
 		//获取公司信息
-		getInfo() {
+		getInfo(is) {
 			this.$axios('get','/api/site/info').then(res => {
 				this.info = res.data.data;
-				this.getDepartment();
+				this.getDepartment(is);
 			});
 		},
 		//选择员工
@@ -230,7 +222,6 @@ export default {
 					_child:res.data.data.list
 				}]
 				this.bmList = list;
-				
 			});
 		},
 		//获取员工

+ 46 - 29
src/views/set/jurisdiction.vue

@@ -23,38 +23,50 @@
 				<div class="terr-right border-right flex-1">
 					<div class="margin-bottom">
 						<div class="name">{{ item_info.name }}</div>
-						<div class="user_text fontColorF" v-if="item_info.code == 'creator'">创始人为默认角色,拥有所有功能权限,该角色不可改</div>
-						<div class="user_text fontColorF" v-if="item_info.code == 'admin'">公司管理员一般为合伙人、股东等高级管理人员,可管理多个部门和人员</div>
+						<div class="user_text fontColorF" v-if="item_info.code == 'creator'">创始人即钉钉的【主管理员】,在钉钉管理后台设置后即可同步</div>
+						<div class="user_text fontColorF" v-if="item_info.code == 'admin'">公司管理员即钉钉的【子管理员】,在钉钉管理后台设置后即可同步</div>
 						<div class="user_text fontColorF" v-if="item_info.code == 'point_manager'">积分专员一般为人事、行政等管理督办人员,可管理多个部门和人员</div>
 						<div class="user_text fontColorF" v-if="item_info.code == 'dept_manager'">部门管理员一般为部门/团队经理、主管、组长,可管理一部分人员</div>
 						<div class="user_text fontColorF" v-if="item_info.code == 'employee'">员工为默认角色,每个人都拥有员工角色的功能权限,该角色不可修改</div>
 					</div>
 					<div class="flex-box btns flex-v-ce margin-bottom">
-						<el-button size="small" v-show="item_info.code != 'creator' && table_list.length > 0" @click="del_item" type="danger">删除</el-button>
-						<el-button size="small" v-show="item_info.code != 'creator'" @click="add_item" type="primary">添加</el-button>
+						<el-button size="small" v-show="item_info.code != 'creator' && table_list.length > 0 && item_info.code != 'admin'" @click="del_item" type="danger">删除</el-button>
+						<el-button size="small" v-show="item_info.code != 'creator'&&item_info.code != 'admin'" @click="add_item" type="primary">添加</el-button>
 					</div>
-
-					<el-table :data="table_list" v-if="item_info.code == 'creator'||item_info.code == 'employee'" v-loading="table_loading">
-						<el-table-column prop="name" label="姓名">
-							<template slot-scope="scope">
-								<div class="flex-box flex-v-ce">
-									<userImage class="fl" width="50px" height="50px" :img_url="scope.row.img_url" :user_name="scope.row.name"></userImage>
-									<span style="margin-left: 10px; line-height: 50px;">{{ scope.row.name }}</span>
-								</div>
-							</template>
-						</el-table-column>
-						<el-table-column prop="dept" label="部门" v-if="item_info.code != 'creator'"></el-table-column>
-						<template slot="empty">
-							<noData :isSolt="true">
-								<template v-slot:default>
-									<div style="position: inherit;">
-										还没有{{ item_info.name }},
-										<span style="color:#26A2FF;cursor:pointer;" @click="add_item">去添加>></span>
+					<div v-if="item_info.code == 'creator'||item_info.code == 'employee'||item_info.code == 'admin'">
+						<el-table :data="table_list"  v-loading="table_loading" v-if="table_list.length > 0">
+							<el-table-column prop="name" label="姓名">
+								<template slot-scope="scope">
+									<div class="flex-box flex-v-ce">
+										<userImage class="fl" width="50px" height="50px" :img_url="scope.row.img_url" :user_name="scope.row.name"></userImage>
+										<span style="margin-left: 10px; line-height: 50px;">{{ scope.row.name }}</span>
 									</div>
 								</template>
-							</noData>
-						</template>
-					</el-table>
+							</el-table-column>
+							<el-table-column prop="dept" label="部门" v-if="item_info.code != 'creator'"></el-table-column>
+							<template slot="empty">
+								<noData :isSolt="true">
+									<template v-slot:default>
+										<div style="position: inherit;">
+											还没有{{ item_info.name }},
+											<span style="color:#26A2FF;cursor:pointer;" @click="add_item">去添加>></span>
+										</div>
+									</template>
+								</noData>
+							</template>
+						</el-table>
+						<div v-else style="text-align: center;">
+							<template v-if="item_info.code == 'creator'">
+								<div style="margin-top: 10%;margin-bottom: 10px;">
+									创始人即钉钉的主管理员,请确认应用的使用范围中是否选择了主管理员设置步骤:
+								</div>
+								<div>
+									进入【<span class="blue">钉钉管理后台</span>】→【<span class="blue">工作台</span>】→【<span class="blue">功道云积分制</span>】→【<span class="blue">设置</span>】,修改可见范围为全部员工或从部分员工中选上主管理员
+								</div>
+							</template>
+							<div v-else>公司管理员即钉钉管理后台的子管理员,如需添加公司管理员,请到<span class="blue">钉钉管理后台</span>设置</div>
+						</div>
+					</div>
 
 					<el-table :data="table_list" fit v-else  @selection-change="handleSelectionChange" v-loading="table_loading">
 						<el-table-column width="40" fixed>
@@ -122,7 +134,7 @@
 									</div>
 								</template>
 							</el-table-column>
-							<el-table-column label="奖分上限">
+							<el-table-column label="每月奖分上限">
 								<template slot-scope="scope">
 									<div @click="open_integral_limit(scope.row)" v-show="scope.row.entry_limit == 0" class="cursor_pointer" style="text-decoration:underline">
 										未设置
@@ -258,13 +270,13 @@
 		  :visible.sync="integral_limit_show"
 		  :close-on-click-modal="false"
 		  width="700px">
-		  <el-form label-width="100px" :model="integral_limit_form" ref="integral_limit_form" v-loading="integral_limit_loading">
+		  <el-form label-width="120px" :model="integral_limit_form" ref="integral_limit_form" v-loading="integral_limit_loading">
 		    <span v-for="(item,index) in integral_limit_form.point_limit" :key="index" v-show="item.pt_id !== 1">
-		      <el-form-item :label="item.name+'权限'" :rules="[{required: true, message: '请输入', trigger: 'blur'}]">
+		      <el-form-item :label="'(单次奖扣)'+item.name+'权限'" :rules="[{required: true, message: '请输入', trigger: 'blur'}]">
 		        <el-input v-model="item.point" type="Number"></el-input>
 		      </el-form-item>
 		    </span>
-		    <el-form-item label="奖分上限" :rules="[{required: true, message: '请输入', trigger: 'blur'}]">
+		    <el-form-item label="每月奖分上限" :rules="[{required: true, message: '请输入', trigger: 'blur'}]">
 		      <el-input v-model="integral_limit_form.entry_limit" type="Number"></el-input>
 		    </el-form-item>
 		    <el-form-item style="text-align: right; margin-bottom: 0">
@@ -479,7 +491,7 @@ export default {
 		  this.$refs.Employee2.confirm();//调用组件的confirm();
 		  this.$axios('post','/api/employee/scope',{employee_id: this.list_info.id,id: this.management_arr}).then((res) => {
 		    if (res.data.code == 1) {
-		      this.$message.success("设置成功,如需登录积分管理平台,需到组织架构开启参与积分管理");
+		      this.$message.success("设置成功");
 		      this.table_list.forEach(element => {
 		        if (element.id == this.list_info.id) {
 		          element.manage_scope_count = this.management_arr.length
@@ -588,10 +600,15 @@ export default {
 		},
 		handleSelectionChange() {},
 		del_item() {
+			var userData=this.$getUserData();
 			if (!this.radioVal) {
 				this.$message.error('请选择要删除的人员');
 				return false;
 			}
+			if(this.radioVal==userData.id){
+				this.$message.error('不能删除自己');
+				return false;
+			}
 			this.$confirm('确定要删除该人员?', '提示', {
 				confirmButtonText: '确定',
 				cancelButtonText: '取消',

+ 54 - 20
src/views/set/rule.vue

@@ -2,7 +2,7 @@
 	<div class="all-box">
 		<!-- 头部提示 -->
 		<el-alert class="diy-tip" title="如何使用积分规则?" type="success" @close="tips_close" v-if="tips_show" description show-icon>
-			<p>先【添加规则分类】,再【添加规则】;或者直接【导入规则】</p>
+			<p>先【添加规则分类】,再【添加规则】</p>
 		</el-alert>
 		<div class="all">
 			<div class="flex-box" v-loading="rule_loading">
@@ -12,7 +12,6 @@
 						<el-tree
 							accordion
 							:data="rule_tree"
-							:expand-on-click-node="false"
 							class="cate-tree"
 							:props="defaultProps"
 							:highlight-current="true"
@@ -64,11 +63,12 @@
 						clearable
 					></el-cascader>
 				</el-form-item>
-				<el-form-item style="text-align: right; margin-bottom:0;">
+				<div class="flex-box">
 					<el-button type="danger" @click="del_dept" v-show="class_type == 'edit'">删除分类</el-button>
+					<div class="flex-1"></div>
 					<el-button @click="add_dept_close('dept_formdata')">取消</el-button>
 					<el-button type="primary" @click="submit_add_dept('dept_formdata')" :loading="dept_loading">确定</el-button>
-				</el-form-item>
+				</div>
 			</el-form>
 		</el-dialog>
 
@@ -104,15 +104,38 @@
 						<el-radio :label="item.value" v-for="(item, index) in range_type_arr" :key="index">{{ item.name }}</el-radio>
 					</el-radio-group>
 				</el-form-item>
-				<el-form-item>
+				<div class="flex-box flex-v-ce">
+					<el-form-item prop="min_point" class="select_width">
+						<el-input
+							placeholder="请输入分值"
+							v-model.number="rules_detail_form.min_point"
+							type="age" class="input-with-select"
+						>
+							<el-select v-model="integral_select_name1" slot="prepend" placeholder="请选择类型">
+								<el-option v-for="(item, index) in integral_select" :key="index" :label="item.name" :value="item.value"></el-option>
+							</el-select>
+						</el-input>
+					</el-form-item>
+					<div v-if="rules_detail_form.range_type == 2" style="position: relative;bottom: 10px;padding: 0 10px;">至</div>
+					<el-form-item prop="max_point" v-if="rules_detail_form.range_type == 2" class="form-right select_width">
+						<el-input
+							placeholder="请输入分值"
+							v-model.number="rules_detail_form.max_point"
+							type="age"	class="input-with-select"
+						>
+							<el-select v-model="integral_select_name2" slot="prepend" placeholder="请选择类型">
+								<el-option v-for="(item, index) in integral_select" :key="index" :label="item.name" :value="item.value"></el-option>
+							</el-select>
+						</el-input>
+					</el-form-item>
+				</div>
+<!-- 				<el-form-item prop="min_point">
 					<el-row :gutter="20" class="select_width">
 						<el-col :span="11">
 							<el-input
 								placeholder="请输入分值"
-								:rules="[{ required: true, message: '请输入加分项名称', trigger: 'blur' }]"
-								v-model="rules_detail_form.min_point"
-								type="Number"
-								class="input-with-select"
+								v-model.number="rules_detail_form.min_point"
+								type="age" class="input-with-select"
 							>
 								<el-select v-model="integral_select_name1" slot="prepend" placeholder="请选择类型">
 									<el-option v-for="(item, index) in integral_select" :key="index" :label="item.name" :value="item.value"></el-option>
@@ -123,10 +146,8 @@
 						<el-col :span="11" v-show="rules_detail_form.range_type == 2">
 							<el-input
 								placeholder="请输入分值"
-								:rules="[{ required: true, message: '请输入加分项名称', trigger: 'blur' }]"
-								v-model="rules_detail_form.max_point"
-								type="Number"
-								class="input-with-select"
+								v-model.number="rules_detail_form.max_point"
+								type="age"	class="input-with-select"
 							>
 								<el-select v-model="integral_select_name2" slot="prepend" placeholder="请选择类型">
 									<el-option v-for="(item, index) in integral_select" :key="index" :label="item.name" :value="item.value"></el-option>
@@ -134,7 +155,7 @@
 							</el-input>
 						</el-col>
 					</el-row>
-				</el-form-item>
+				</el-form-item> -->
 				<div class="flex-box flex-v-ce">
 					<el-button type="danger" @click="del_rule" :loading="delRule_loading" v-show="rule_type == 'edit'">删除规则</el-button>
 					<div class="flex-1"></div>
@@ -261,7 +282,9 @@ export default {
 						message: '请选择分类',
 						trigger: 'change'
 					}
-				]
+				],
+				min_point:[{ required: true, message: '分值不能为空'},{ pattern: /^[1-9]\d*$/, message: '分值必须为数字值'}],
+				max_point:[{ required: true, message: '分值不能为空'},{ pattern: /^[1-9]\d*$/, message: '分值必须为数字值'}],
 			},
 			integral_select_name1: '1',
 			integral_select_name2: '1',
@@ -373,7 +396,6 @@ export default {
 		},
 
 		edit_submit_rule(form) {
-			this.rule_loading2=true;
 			let self = this;
 			self.$refs[form].validate(valid => {
 				if (valid) {
@@ -405,6 +427,7 @@ export default {
 							}
 						)
 							.then(() => {
+								this.rule_loading2=true;
 								let min_point = self.rules_detail_form.min_point;
 								self.rules_detail_form.min_point = self.rules_detail_form.max_point;
 								self.rules_detail_form.max_point = min_point;
@@ -427,6 +450,7 @@ export default {
 							
 							})
 					} else {
+						this.rule_loading2=true;
 						self.rules_detail_form.item_id = self.rules_detail_form.id;
 						let data = self.rules_detail_form;
 						data.item_id = self.rules_detail_form.id;
@@ -453,7 +477,6 @@ export default {
 		},
 		//添加规则
 		add_submit_rule(form) {
-			this.rule_loading2=true;
 			let self = this;
 			self.$refs[form].validate(valid => {
 				if (valid) {
@@ -484,6 +507,7 @@ export default {
 								type: 'warning'
 							}
 						).then(() => {
+							this.rule_loading2=true;
 							let min_point = self.rules_detail_form.min_point;
 							self.rules_detail_form.min_point = self.rules_detail_form.max_point;
 							self.rules_detail_form.max_point = min_point;
@@ -495,7 +519,7 @@ export default {
 							let data = {
 								items: [self.rules_detail_form]
 							};
-							this.$axios.post('/api/integral/rule/items', data).then(res => {
+							this.$axios('post','/api/integral/rule/items', data).then(res => {
 									if (res.data.code == 1) {
 										self.$message.success(res.data.msg);
 										self.getData();
@@ -506,6 +530,7 @@ export default {
 								});
 						});
 					} else {
+						this.rule_loading2=true;
 						self.rules_detail_form.item_id = self.rules_detail_form.id;
 						if (self.rules_detail_form.min_point == 0 && self.rules_detail_form.range_type == 1) {
 							self.$message.error('积分不能为零');
@@ -589,6 +614,7 @@ export default {
 			this.integral_select_name1 = '1';
 			this.integral_select_name2 = '1';
 		},
+		//批量删除
 		del_item() {
 			if (this.del_item_id.length == 0) {
 				this.$message.error('请选择积分细则');
@@ -602,10 +628,10 @@ export default {
 				let data = {
 					item_id: this.del_item_id
 				};
-				this.$axios.post('/api/integral/rule/items/destroy', data).then(res => {
+				this.$axios('post','/api/integral/rule/items/destroy', data).then(res => {
 						if (res.data.code == 1) {
 							this.$message.success(res.data.msg);
-							this.getData(true);
+							this.getData();
 							this.handleNodeClick(this.selectItem);
 						}
 					})
@@ -812,6 +838,11 @@ export default {
 <style scoped lang="scss">
 .select_width .el-select {
 	width: 80px;
+	background-color: #fff;
+	border: 1px solid #f1f1f1;
+	border-left: none;
+	color: #222;
+	border-radius: 5px;
 }
 .text-center {
 	text-align: center;
@@ -859,6 +890,9 @@ export default {
 		white-space: nowrap;
 	}
 }
+.form-right ::v-deep .el-form-item__content{
+	margin-left: 0px !important;
+}
 .terr-left button {
 	margin: 0 auto;
 	display: block;

+ 3 - 3
src/views/set/voluntarilyPoint.vue

@@ -12,14 +12,14 @@
 					<!-- 循环分组 -->
 					<el-col :span="24" style="padding-right: 0;" v-loading="rule_trees_load">
 						<el-menu :default-active='default_active' class="rule_name" :unique-opened="true">
-							<el-submenu :index="index.toString()" v-for="(item, index) in rule_list">
+							<el-submenu :index="index.toString()" :key="index" v-for="(item, index) in rule_list">
 								<template slot="title">
 									<div style="width: 80%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap; height: 47px;line-height: 47px;" >
 										<i class="el-icon-edit-outline title_top" @click.stop="edit_grouping(item)"></i>
 										<span class="title_top">{{ item.name }}</span>
 									</div>
 								</template>
-								<el-menu-item  :index="returnIndex(index,index2)" v-for="(data, index2) in item.child" @click="open_rights(data)" style="height: 47px;line-height: 47px;">
+								<el-menu-item  :key="index2" :index="returnIndex(index,index2)" v-for="(data, index2) in item.child" @click="open_rights(data)" style="height: 47px;line-height: 47px;">
 										<div style="overflow:hidden;text-overflow:ellipsis;white-space:nowrap">
 											<span slot="title">{{ data.remark }}</span>
 										</div>
@@ -554,7 +554,7 @@ export default {
 				this.disabled = true;
 				this.$axios('post','/api/integral/rule/items/destroy',{item_id: item.id}).then(res => {
 						if (res.data.code == 1) {
-							this.$message.success(res.data.msg);
+							this.$message.success('删除成功');
 							this.rules_detail_show = false;
 							this.get_role_lists(true);
 						} else {