|  | @@ -3,14 +3,19 @@
 | 
	
		
			
				|  |  |  		<div class="all" style="padding: 40px;">
 | 
	
		
			
				|  |  |  			<div style="margin-bottom: 30px;">
 | 
	
		
			
				|  |  |  				<div class="initia_title">工作日志积分</div>
 | 
	
		
			
				|  |  | -				<div class="initia_title_1">日志的相关说明</div>
 | 
	
		
			
				|  |  | +				<div class="initia_title_1">
 | 
	
		
			
				|  |  | +					1、启用后,在钉钉发布工作日志,系统自动按“日志积分规则”奖分<br />
 | 
	
		
			
				|  |  | +					2、日志名称必须与“钉钉日志模板名称”一致,否则奖分不会生效<br />
 | 
	
		
			
				|  |  | +					3、日志支持每月、每周、每次汇报,可自行根据需要设置“日志积分规则
 | 
	
		
			
				|  |  | +					
 | 
	
		
			
				|  |  | +				</div>
 | 
	
		
			
				|  |  |  			</div>
 | 
	
		
			
				|  |  |  			<el-table ref="multipleTable" :data="list" tooltip-effect="dark" align="center" v-loading="loading">
 | 
	
		
			
				|  |  |  				<el-table-column label="序号" align="left" type="index"></el-table-column>
 | 
	
		
			
				|  |  |  				<el-table-column label="日志名称" prop="name"></el-table-column>
 | 
	
		
			
				|  |  |  				<el-table-column label="日志积分规则">
 | 
	
		
			
				|  |  |  					<template slot-scope="scope">
 | 
	
		
			
				|  |  | -						<span>{{getMoney(scope.row.interval)}}<span v-if="scope.row.config.upper_limit>0">{{scope.row.config.upper_limit }}</span>汇报,每次奖{{ scope.row.config.point }} B分</span>
 | 
	
		
			
				|  |  | +						<span>{{ getMoney(scope.row.interval) }}汇报,每次奖{{ scope.row.config.point }} B分</span>
 | 
	
		
			
				|  |  |  					</template>
 | 
	
		
			
				|  |  |  				</el-table-column>
 | 
	
		
			
				|  |  |  				<el-table-column label="状态">
 | 
	
	
		
			
				|  | @@ -29,39 +34,47 @@
 | 
	
		
			
				|  |  |  				</template>
 | 
	
		
			
				|  |  |  			</el-table>
 | 
	
		
			
				|  |  |  		</div>
 | 
	
		
			
				|  |  | -		<el-dialog title="设置" :visible.sync="dialogVisible" top="25vh" width="520px">
 | 
	
		
			
				|  |  | -			<el-form label-width="110px" :model="selectItem" ref="setForm">
 | 
	
		
			
				|  |  | -				<el-form-item label="是否启用"><el-switch v-model="selectItem.enable"></el-switch></el-form-item>
 | 
	
		
			
				|  |  | -				<el-form-item label="日志名称" prop="name" :rules="[{ required: true, message: '请输入日志名称'}]">
 | 
	
		
			
				|  |  | -					 <div class="flex-box flex-v-ce">
 | 
	
		
			
				|  |  | -						 <div class="font-flex-word name">{{selectItem.name}}</div>
 | 
	
		
			
				|  |  | -						 <div class="blue" @click="showName(selectItem.name)">修改</div>
 | 
	
		
			
				|  |  | -					 </div>
 | 
	
		
			
				|  |  | -					 <el-dialog title="设置名称" :visible.sync="isShowName" top="25vh" width="520px" append-to-body>
 | 
	
		
			
				|  |  | -						 <div style="text-align: center;">
 | 
	
		
			
				|  |  | -							  <!-- <el-popover placement="top-start" title="温馨提示" width="200" trigger="hover" content="日志名称必须与钉钉预设模板名称一致,否则可能会无法同步钉钉的日志记录"> -->
 | 
	
		
			
				|  |  | -								 <el-input style="width: 200px;" v-model="nameVal" slot="reference"></el-input>
 | 
	
		
			
				|  |  | -							  <!-- </el-popover> -->
 | 
	
		
			
				|  |  | -							  <div  class="yellow" style="margin-top: 10px;">*日志名称必须与钉钉预设模板名称一致,<br/>否则可能会无法同步钉钉的日志记录*</div>
 | 
	
		
			
				|  |  | -							  <div class="flex-box-end" style="margin-top: 20px;">
 | 
	
		
			
				|  |  | -								  <el-button @click="isShowName = false">取消</el-button>
 | 
	
		
			
				|  |  | -								  <el-button type="primary" @click="submitName()">确定</el-button>
 | 
	
		
			
				|  |  | -							  </div>
 | 
	
		
			
				|  |  | -						  </div>
 | 
	
		
			
				|  |  | -					 </el-dialog>
 | 
	
		
			
				|  |  | -				</el-form-item>
 | 
	
		
			
				|  |  | -				<div class="title">日志积分规则</div>
 | 
	
		
			
				|  |  | -				<el-form-item label="日志汇报要求" prop="interval" :rules="[{ required: true, message: '请选择汇报要求'}]">
 | 
	
		
			
				|  |  | -					  <el-select class="widthInput"  v-model="selectItem.interval" placeholder="请选择">
 | 
	
		
			
				|  |  | -					    <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="每次汇报奖" :rules="[{ required: true, message: '请输入分值', trigger: 'change' }]" prop="config.point">
 | 
	
		
			
				|  |  | -					<el-input class="widthInput"  oninput="value=value.replace(/[^\d]/g,'')"  v-model.number="selectItem.config.point"></el-input><span style="margin-left: 5px;">B分</span>
 | 
	
		
			
				|  |  | -				</el-form-item>
 | 
	
		
			
				|  |  | -				<el-form-item label="汇报提交超过" prop="config.upper_limit" :rules="[{ required: true, message: '请输入次数'}]" >
 | 
	
		
			
				|  |  | -					<el-input class="widthInput"  oninput="value=value.replace(/[^\d]/g,'')" v-model.number="selectItem.config.upper_limit"></el-input><span style="margin-left: 5px;">次,不再奖励积分</span>
 | 
	
		
			
				|  |  | +		<el-dialog title="设置" :visible.sync="dialogVisible" top="25vh" width="520px" class="dialog">
 | 
	
		
			
				|  |  | +			<el-alert class="el-dialog__body" title="日志名称必须与钉钉日志模板名称一致,否则设置无效,不会产生积分" type="warning"  :closable="false" show-icon></el-alert>
 | 
	
		
			
				|  |  | +			<el-form label-width="110px" :model="selectItem" ref="setForm" class="form">
 | 
	
		
			
				|  |  | +				<el-form-item style="margin-bottom: 0px;" label="日志名称">
 | 
	
		
			
				|  |  | +					<div class="flex-box flex-v-ce">
 | 
	
		
			
				|  |  | +						<div class="font-flex-word name">{{ selectItem.name }}</div>
 | 
	
		
			
				|  |  | +						<div class="blue" @click="showName(selectItem.name)">修改</div>
 | 
	
		
			
				|  |  | +					</div>
 | 
	
		
			
				|  |  | +					<el-dialog title="设置名称" :visible.sync="isShowName" top="25vh" width="520px" append-to-body>
 | 
	
		
			
				|  |  | +						<div style="text-align: center;">
 | 
	
		
			
				|  |  | +							<!-- <el-popover placement="top-start" title="温馨提示" width="200" trigger="hover" content="日志名称必须与钉钉预设模板名称一致,否则可能会无法同步钉钉的日志记录"> -->
 | 
	
		
			
				|  |  | +							<el-input style="width: 200px;" v-model="nameVal" slot="reference"></el-input>
 | 
	
		
			
				|  |  | +							<!-- </el-popover> -->
 | 
	
		
			
				|  |  | +							<div class="yellow" style="margin-top: 10px;">
 | 
	
		
			
				|  |  | +								*日志名称必须与钉钉日志模板名称一致,否则设置无效,不会产生积分*
 | 
	
		
			
				|  |  | +							</div>
 | 
	
		
			
				|  |  | +							<div class="flex-box-end" style="margin-top: 20px;">
 | 
	
		
			
				|  |  | +								<el-button @click="isShowName = false">取消</el-button>
 | 
	
		
			
				|  |  | +								<el-button type="primary" @click="submitName()">确定</el-button>
 | 
	
		
			
				|  |  | +							</div>
 | 
	
		
			
				|  |  | +						</div>
 | 
	
		
			
				|  |  | +					</el-dialog>
 | 
	
		
			
				|  |  |  				</el-form-item>
 | 
	
		
			
				|  |  | +				<el-form-item style="margin-bottom: 10px;" label="是否启用"><el-switch v-model="selectItem.enable"></el-switch></el-form-item>
 | 
	
		
			
				|  |  | +				<template v-if="selectItem.enable">
 | 
	
		
			
				|  |  | +					<div style="margin-top: 20px;"></div>
 | 
	
		
			
				|  |  | +					<div class="title">日志积分规则</div>
 | 
	
		
			
				|  |  | +					<el-form-item label="日志汇报要求" prop="interval" :rules="[{ required: true, message: '请选择汇报要求' }]">
 | 
	
		
			
				|  |  | +						<el-select class="widthInput" v-model="selectItem.interval" placeholder="请选择">
 | 
	
		
			
				|  |  | +							<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="每次汇报奖励" :rules="[{ required: true, message: '请输入分值', trigger: 'change' }]" prop="config.point">
 | 
	
		
			
				|  |  | +						<el-input class="widthInput" oninput="value=value.replace(/[^\d]/g,'')" v-model.number="selectItem.config.point"></el-input>
 | 
	
		
			
				|  |  | +						<span style="margin-left: 5px;">B分</span>
 | 
	
		
			
				|  |  | +					</el-form-item>
 | 
	
		
			
				|  |  | +					<el-form-item label="汇报提交超过" prop="config.upper_limit" :rules="[{ required: true, message: '请输入次数' }]">
 | 
	
		
			
				|  |  | +						<el-input class="widthInput" oninput="value=value.replace(/[^\d]/g,'')" v-model.number="selectItem.config.upper_limit"></el-input>
 | 
	
		
			
				|  |  | +						<span style="margin-left: 5px;">次,不再奖励积分</span>
 | 
	
		
			
				|  |  | +					</el-form-item>
 | 
	
		
			
				|  |  | +				</template>
 | 
	
		
			
				|  |  |  				<el-form-item style="text-align: right; margin-bottom: 0">
 | 
	
		
			
				|  |  |  					<el-button @click="dialogVisible = false">取消</el-button>
 | 
	
		
			
				|  |  |  					<el-button type="primary" :loading="setLoading" :disabled="setLoading" @click="submit('setForm')">确定</el-button>
 | 
	
	
		
			
				|  | @@ -82,71 +95,77 @@ export default {
 | 
	
		
			
				|  |  |  			ding_enable: true,
 | 
	
		
			
				|  |  |  			list: [],
 | 
	
		
			
				|  |  |  			dialogVisible: false,
 | 
	
		
			
				|  |  | -			selectItem:{
 | 
	
		
			
				|  |  | -				config: {point: "", upper_limit: ""},
 | 
	
		
			
				|  |  | +			selectItem: {
 | 
	
		
			
				|  |  | +				config: { point: '', upper_limit: '' },
 | 
	
		
			
				|  |  |  				enable: '',
 | 
	
		
			
				|  |  |  				id: '',
 | 
	
		
			
				|  |  |  				interval: '',
 | 
	
		
			
				|  |  | -				name: "",
 | 
	
		
			
				|  |  | +				name: '',
 | 
	
		
			
				|  |  |  				site_id: '',
 | 
	
		
			
				|  |  | -				type: "",
 | 
	
		
			
				|  |  | +				type: ''
 | 
	
		
			
				|  |  |  			},
 | 
	
		
			
				|  |  | -			options: [{
 | 
	
		
			
				|  |  | -			  value: 1,
 | 
	
		
			
				|  |  | -			  label: '每日'
 | 
	
		
			
				|  |  | -			}, {
 | 
	
		
			
				|  |  | -			  value: 2,
 | 
	
		
			
				|  |  | -			  label: '每周'
 | 
	
		
			
				|  |  | -			}, {
 | 
	
		
			
				|  |  | -			  value: 3,
 | 
	
		
			
				|  |  | -			  label: '每月'
 | 
	
		
			
				|  |  | -			}],
 | 
	
		
			
				|  |  | -			isShowName:false,
 | 
	
		
			
				|  |  | -			nameVal:"",
 | 
	
		
			
				|  |  | +			options: [
 | 
	
		
			
				|  |  | +				{
 | 
	
		
			
				|  |  | +					value: 1,
 | 
	
		
			
				|  |  | +					label: '每日'
 | 
	
		
			
				|  |  | +				},
 | 
	
		
			
				|  |  | +				{
 | 
	
		
			
				|  |  | +					value: 2,
 | 
	
		
			
				|  |  | +					label: '每周'
 | 
	
		
			
				|  |  | +				},
 | 
	
		
			
				|  |  | +				{
 | 
	
		
			
				|  |  | +					value: 3,
 | 
	
		
			
				|  |  | +					label: '每月'
 | 
	
		
			
				|  |  | +				}
 | 
	
		
			
				|  |  | +			],
 | 
	
		
			
				|  |  | +			isShowName: false,
 | 
	
		
			
				|  |  | +			nameVal: ''
 | 
	
		
			
				|  |  |  		};
 | 
	
		
			
				|  |  |  	},
 | 
	
		
			
				|  |  |  	mounted() {
 | 
	
		
			
				|  |  |  		this.getList();
 | 
	
		
			
				|  |  |  	},
 | 
	
		
			
				|  |  |  	methods: {
 | 
	
		
			
				|  |  | -		submitName(){
 | 
	
		
			
				|  |  | -			if(!this.nameVal||this.nameVal==null||this.nameVal==undefined){
 | 
	
		
			
				|  |  | -				this.$message.error("请输入日志名称");
 | 
	
		
			
				|  |  | -				return
 | 
	
		
			
				|  |  | +		submitName() {
 | 
	
		
			
				|  |  | +			if (!this.nameVal || this.nameVal == null || this.nameVal == undefined) {
 | 
	
		
			
				|  |  | +				this.$message.error('请输入日志名称');
 | 
	
		
			
				|  |  | +				return;
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  | -			this.selectItem.name=this.nameVal
 | 
	
		
			
				|  |  | -			this.isShowName=false;
 | 
	
		
			
				|  |  | +			this.selectItem.name = this.nameVal;
 | 
	
		
			
				|  |  | +			this.isShowName = false;
 | 
	
		
			
				|  |  |  		},
 | 
	
		
			
				|  |  | -		showName(name){
 | 
	
		
			
				|  |  | -			this.nameVal=name;
 | 
	
		
			
				|  |  | -			this.isShowName=true;
 | 
	
		
			
				|  |  | +		showName(name) {
 | 
	
		
			
				|  |  | +			this.nameVal = name;
 | 
	
		
			
				|  |  | +			this.isShowName = true;
 | 
	
		
			
				|  |  |  		},
 | 
	
		
			
				|  |  |  		submit(fromName) {
 | 
	
		
			
				|  |  |  			this.$refs[fromName].validate(valid => {
 | 
	
		
			
				|  |  |  				if (valid) {
 | 
	
		
			
				|  |  |  					this.setLoading = true;
 | 
	
		
			
				|  |  | -					let jsonItem=JSON.stringify(this.selectItem)
 | 
	
		
			
				|  |  | -					let data=JSON.parse(jsonItem);
 | 
	
		
			
				|  |  | -					data.enable=data.enable? 1:0;
 | 
	
		
			
				|  |  | -					data.point=data.config.point;
 | 
	
		
			
				|  |  | -					data.upper_limit=data.config.upper_limit;
 | 
	
		
			
				|  |  | -					this.$axios('post', '/api/integral/report/templates', data).then(res => {
 | 
	
		
			
				|  |  | -						if (res.data.code == 1) {
 | 
	
		
			
				|  |  | -							this.$message.success(res.data.msg);
 | 
	
		
			
				|  |  | -							this.getList();
 | 
	
		
			
				|  |  | -							this.dialogVisible = false;
 | 
	
		
			
				|  |  | -						}
 | 
	
		
			
				|  |  | -					}).finally(() => {
 | 
	
		
			
				|  |  | -						this.setLoading = false;
 | 
	
		
			
				|  |  | -					});
 | 
	
		
			
				|  |  | +					let jsonItem = JSON.stringify(this.selectItem);
 | 
	
		
			
				|  |  | +					let data = JSON.parse(jsonItem);
 | 
	
		
			
				|  |  | +					data.enable = data.enable ? 1 : 0;
 | 
	
		
			
				|  |  | +					data.point = data.config.point;
 | 
	
		
			
				|  |  | +					data.upper_limit = data.config.upper_limit;
 | 
	
		
			
				|  |  | +					this.$axios('post', '/api/integral/report/templates', data)
 | 
	
		
			
				|  |  | +						.then(res => {
 | 
	
		
			
				|  |  | +							if (res.data.code == 1) {
 | 
	
		
			
				|  |  | +								this.$message.success(res.data.msg);
 | 
	
		
			
				|  |  | +								this.getList();
 | 
	
		
			
				|  |  | +								this.dialogVisible = false;
 | 
	
		
			
				|  |  | +							}
 | 
	
		
			
				|  |  | +						})
 | 
	
		
			
				|  |  | +						.finally(() => {
 | 
	
		
			
				|  |  | +							this.setLoading = false;
 | 
	
		
			
				|  |  | +						});
 | 
	
		
			
				|  |  |  				}
 | 
	
		
			
				|  |  |  			});
 | 
	
		
			
				|  |  |  		},
 | 
	
		
			
				|  |  |  		openSet(item) {
 | 
	
		
			
				|  |  | -			var jsonItem=JSON.stringify(item)
 | 
	
		
			
				|  |  | -			this.selectItem=JSON.parse(jsonItem);
 | 
	
		
			
				|  |  | -			this.selectItem.enable=this.selectItem.enable==0? false:true
 | 
	
		
			
				|  |  | -			this.dialogVisible=true;
 | 
	
		
			
				|  |  | +			var jsonItem = JSON.stringify(item);
 | 
	
		
			
				|  |  | +			this.selectItem = JSON.parse(jsonItem);
 | 
	
		
			
				|  |  | +			this.selectItem.enable = this.selectItem.enable == 0 ? false : true;
 | 
	
		
			
				|  |  | +			this.dialogVisible = true;
 | 
	
		
			
				|  |  |  		},
 | 
	
		
			
				|  |  |  		getMoney: function(index) {
 | 
	
		
			
				|  |  |  			var str; //1-每日 2-每周 3-每月
 | 
	
	
		
			
				|  | @@ -177,14 +196,19 @@ export default {
 | 
	
		
			
				|  |  |  };
 | 
	
		
			
				|  |  |  </script>
 | 
	
		
			
				|  |  |  <style scoped lang="scss">
 | 
	
		
			
				|  |  | - .widthInput{
 | 
	
		
			
				|  |  | -	 width: 120px;
 | 
	
		
			
				|  |  | - }	
 | 
	
		
			
				|  |  | +.el-dialog__body{
 | 
	
		
			
				|  |  | +	position: relative;
 | 
	
		
			
				|  |  | +	top: -20px;
 | 
	
		
			
				|  |  | +}	
 | 
	
		
			
				|  |  | +.widthInput {
 | 
	
		
			
				|  |  | +	width: 120px;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  |  .title {
 | 
	
		
			
				|  |  |  	margin: 10px 0;
 | 
	
		
			
				|  |  |  	margin-top: 0;
 | 
	
		
			
				|  |  | -	font-size: 16px;
 | 
	
		
			
				|  |  | +	font-size: 14px;
 | 
	
		
			
				|  |  |  	font-weight: 700;
 | 
	
		
			
				|  |  | +	padding-left: 13px;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  .initia_title {
 | 
	
		
			
				|  |  |  	font-size: 20px;
 | 
	
	
		
			
				|  | @@ -205,7 +229,7 @@ export default {
 | 
	
		
			
				|  |  |  .lookQrcode:hover {
 | 
	
		
			
				|  |  |  	color: #2490fd;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  | -.name{
 | 
	
		
			
				|  |  | +.name {
 | 
	
		
			
				|  |  |  	max-width: 200px;
 | 
	
		
			
				|  |  |  	margin-right: 10px;
 | 
	
		
			
				|  |  |  }
 |