|
@@ -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;
|
|
|
}
|