123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843 |
- <template>
- <div>
- <!--规则提示-->
- <div class="diy_tip_bg" >
- <el-alert class="diy-tip" type="success" :closable="false">
- <p><b>团队PK通过自定义档案配置、团队参与人员等。在相同积分规则内对团队进行积分对比</b></p>
- <p><b>PK配置流程</b></p>
- <li class="headLi">指定档案在哪些积分规则分类或者积分规则内有效</li>
- <li class="headLi">创建团队,指定参与者</li>
- <p><b>团队积分构成</b></p>
- <li class="headLi">团队参与者在档案配置中积分规则内的积分总和</li>
- <li class="headLi">单独向团队录入的积分</li>
- </el-alert>
- </div>
- <div style="background-color: #fff;padding: 20px;position: relative;" class="flex-box boxMinHeight">
- <div class="left box-sizing-w scroll-bar" v-loading="menuLoading">
- <div style="text-align: center; padding: 10px 0;">
- <el-button type="primary" @click="addDoc" v-if="!manageAble">创建档案</el-button>
- </div>
- <el-menu v-if="docList.length > 0" :default-active="menuActive" @select="activeRouter" class="el-menu-vertical-demo" >
- <el-menu-item v-for="(item, index) in docList" :key="index" :index="index.toString()" @click="refreshContent(item)">
- <span slot="title">{{item.name}}</span>
- </el-menu-item>
- </el-menu>
- <div v-if="docList.length == 0"><NoData></NoData></div>
- </div>
- <div style="overflow-x: auto" class="flex-1 scroll-bar">
- <div style="margin-bottom: 20px" >
- <el-button v-if="currentDoc" type="primary" size="small" @click="editDoc">档案配置</el-button>
- <el-button v-if="currentDoc" type="primary" size="small" @click="addTeam">添加团队</el-button>
- </div>
- <el-tabs v-if=" currentDoc && currentDoc.teams.length > 0 " v-model="activeTeam" type="border-card" closable @tab-remove="removeTeam" v-loading="contentLoading">
- <el-tab-pane v-for="(team,index) in currentDoc.teams" :key="index" :name="index.toString()" :label="team.name" >
- <el-table :data="team.employees" v-if="activeTeam == index.toString()"> <!--v-if="activeTeam == index.toString()"防止标签切换抖动-->
- <el-table-column label="员工" align="left" width="200">
- <template slot-scope="scope">
- <userImage class="fl" :id="scope.row.id" :user_name="scope.row.name" :img_url="scope.row.img_url" width="50px" height="50px"></userImage>
- <span style="line-height: 50px; padding-left: 10px;">{{ scope.row.name }}</span>
- </template>
- </el-table-column>
- <el-table-column label="部门" prop="dept_list" align="center"></el-table-column>
- <el-table-column label="操作" align="center">
- <template slot="header" slot-scope="scope" >
- <el-tooltip effect="light" placement="top" content="团队配置">
- <el-button type="primary" size="mini" circle icon="el-icon-setting" @click="editTeam"></el-button>
- </el-tooltip>
- <el-tooltip effect="light" placement="top" content="添加团队积分">
- <el-button type="success" size="mini" circle icon="el-icon-folder-add" @click="addTeamPoint"></el-button>
- </el-tooltip>
- <el-tooltip effect="light" placement="top" content="团队积分列表">
- <el-button type="info" size="mini" circle icon="el-icon-document" @click="clickShowPoint" ></el-button>
- </el-tooltip>
- <!-- <el-button type="primary" size="mini" round @click="editTeam">团队配置</el-button>-->
- <!-- <el-button type="primary" size="mini" round>添加积分</el-button>-->
- <!-- <el-button type="primary" size="mini" round>团队积分</el-button>-->
- </template>
- <template slot-scope="scope">
- <el-button @click="dropEmployee(team.id,scope.row.id,scope.row.name)" size="medium" type="danger" >移除出团队</el-button>
- </template>
- </el-table-column>
- </el-table>
- </el-tab-pane>
- </el-tabs>
- <div v-if="!currentDoc || currentDoc.teams.length === 0"><NoData></NoData></div>
- </div>
- </div>
- <!-- 创建/编辑档案 -->
- <el-dialog :title="isUpdateDoc ? '编辑档案': '创建档案' " width="700px" top="10vh" :visible.sync="showDoc" :close-on-click-modal="false" >
- <el-form ref="docForm" :model="docForm" :rules="docFormValidateRules" label-width="100px" @submit.native.prevent style="margin: 0 auto;">
- <el-form-item label="档案名" prop="name" :required="true">
- <el-input v-model="docForm.name" maxlength="10" auto-complete="off" show-word-limit placeholder="请输入档案名" ></el-input>
- </el-form-item>
- <el-form-item label="积分规则" :required="true" >
- <el-select v-model="docForm.ruleType" style="margin-bottom: 6px;width: 400px;" >
- <el-option label="全部" :value="1"></el-option>
- <el-option label="指定规则分类" :value="2"></el-option>
- <el-option label="指定规则" :value="3"></el-option>
- </el-select>
- <el-cascader
- style="width: 400px;"
- v-if="docForm.ruleType == 2"
- v-model="rule_list_value"
- ref="ruleCascader"
- :show-all-levels="false"
- filterable
- :options="rule_list"
- :props="{children:'child',label: 'name',value: 'id', checkStrictly: true,multiple: true}"
- ></el-cascader>
- <div v-if="docForm.ruleType == 3" style="position: relative;" >
- <div class="inputBox" @click="showItem = true">
- <span v-if="selectItem.length > 0">已选择了{{selectItem.length}}条</span>
- <span v-else style="color: #909399;">请选择</span>
- </div>
- </div>
- <div>
- <span v-if="docForm.ruleType==1">统计全部积分事件,不包含基础分和工龄分</span>
- <span v-if="docForm.ruleType==2">包含指定规则分类的积分,不包含基础分和工龄分</span>
- <span v-if="docForm.ruleType==3">按已指定的积分规则进行积分统计并排名,不包含基础分和工龄分</span>
- </div>
- </el-form-item>
- </el-form>
- <div class="flex-box-ce">
- <el-button type="danger" v-if="isUpdateDoc" :loading="commitLoading" @click="deleteDoc">删 除</el-button>
- <div class="flex-1"></div>
- <el-button type="primary" :loading="commitLoading" @click="commitDocForm('docForm')" >提 交</el-button>
- </div>
- </el-dialog>
- <!-- 创建编辑团队 -->
- <el-dialog :title="isUpdateTeam ? '编辑团队' : '创建团队'" width="700px" top="10vh" :visible.sync="showTeam" :close-on-click-modal="false" >
- <el-form ref="teamForm" :model="teamForm" :rules="teamFormValidateRules" label-width="100px" @submit.native.prevent style="margin: 0 auto;" >
- <el-form-item label="团队名" prop="name" :required="true">
- <el-input v-model="teamForm.name" maxlength="10" auto-complete="off" show-word-limit placeholder="请输入团队名" ></el-input>
- </el-form-item>
- <el-form-item label="参与人员" :required="true">
- <div class="cursor" style="border-radius: 4px;border: 1px solid #dcdfe6;line-height: 34px;width: 400px;padding: 0 15px;" @click="showEmployeeSelect">
- <div class="flex-box-ce fontColorB font-flex-word" v-if="employees_selected.employee.length>0">
- <span v-for="item in employees_selected.employee" :key="item.id"> {{item.name}},</span>
- </div>
- <div v-else style="color: #C0C4CF;">请选择参与人员</div>
- </div>
- </el-form-item>
- </el-form>
- <div class="flex-box-ce">
- <el-button type="danger" v-if="isUpdateTeam" :loading="commitLoading" @click="deleteTeam">删 除</el-button>
- <div class="flex-1"></div>
- <el-button type="primary" :loading="commitLoading" @click="commitTeamForm('teamForm')" >提 交</el-button>
- </div>
- </el-dialog>
- <!-- 添加团队积分 -->
- <el-dialog title="添加团队积分" width="700px" top="10vh" :visible.sync="showAddPoint" :close-on-click-modal="false" >
- <el-form ref="pointForm" :model="pointForm" :rules="pointFormValidateRules" label-width="100px" @submit.native.prevent style="margin: 0 auto;">
- <el-form-item label="积分" prop="point" :required="true">
- <el-input-number v-model="pointForm.point" :min="-999999" :max="999999" ></el-input-number>
- </el-form-item>
- <el-form-item label="日期" prop="date" :required="true">
- <el-date-picker
- v-model="pointForm.date"
- type="date"
- value-format="yyyy-MM-dd"
- ></el-date-picker>
- </el-form-item>
- <el-form-item label="说明" prop="remark" >
- <el-input
- placeholder="积分说明"
- type="textarea"
- v-model="pointForm.remark"
- maxlength="100"
- rows="4"
- show-word-limit
- clearable></el-input>
- </el-form-item>
- <div class="flex-box-ce">
- <div class="flex-1"></div>
- <el-button type="primary" :loading="commitLoading" @click="commitPointForm('pointForm')" >提 交</el-button>
- </div>
- </el-form>
- </el-dialog>
- <el-dialog title="团队积分事件" width="700px" top="10vh" :visible.sync="showPoint" :close-on-click-modal="false" >
- <el-form :inline="true" @submit.native.prevent >
- <el-date-picker
- v-model="pointSearchDateScope"
- type="daterange"
- align="right"
- unlink-panels
- range-separator="至"
- start-placeholder="开始日期"
- end-placeholder="结束日期"
- value-format="yyyy-MM-dd"
- editable
- ></el-date-picker>
- </el-form>
- <el-table :data="pointListData.list" style="width: 100%" v-loading="pointListLoading" >
- <el-table-column label="积分" align="center" prop="point"></el-table-column>
- <el-table-column label="日期" align="center" prop="date"></el-table-column>
- <el-table-column label="说明" align="center" prop="remark"></el-table-column>
- <template slot="empty">
- <NoData></NoData>
- </template>
- </el-table>
- <el-pagination
- @current-change="handlePointPageChange"
- :current-page="pointSearchForm.page"
- :page-size="pointSearchForm.pageSize"
- :total="pointListData.total"
- ></el-pagination>
- </el-dialog>
- <EmployeeSelector
- title="选择成员"
- :selected="employees_selected"
- :close_clear_data="false"
- :visible.sync="showEmployeeSelector"
- @confirm="move_employee_confirm"
- :isChecKedAll="true"
- :max="0"
- />
- <SelectRule :isAll="true" :visible.sync="showItem" @confirm="ruleConfirm" :ptId="docForm.ptId" :selectItems="selectItem"></SelectRule>
- </div>
- </template>
- <script>
- import SelectRule from "@/components/SelectRule.vue";
- import EmployeeSelector from "@/components/EmployeeSelector.vue";
- import Template from "../../../examine/components/Template.vue";
- export default {
- components: {Template, SelectRule,EmployeeSelector},
- data(){
- return {
- manageAble: this.$supremeAuthority('dept_manager') || this.$supremeAuthority('employee'),
- menuActive: '0',
- menuLoading: false,
- contentLoading: false,
- currentDoc: null,
- currentTeam: null,
- activeTeam: 0,
- docList: [],
- isUpdateDoc: false,
- isUpdateTeam: false,
- showDoc: false,
- showTeam: false,
- showEmployeeSelector: false,
- docForm:{
- docId:0,
- name:'',
- ptId:3,
- ruleType:1,
- rules:[],
- items:[],
- },
- docFormValidateRules:{
- name: [
- {required: true,message:'请输入档案名称'},
- { min: 3, max: 10, message: '长度在 3 到 10 个字符'}
- ]
- },
- teamFormValidateRules:{
- name: [
- {required: true,message:'请输入档案名称'},
- { min: 3, max: 10, message: '长度在 3 到 10 个字符'}
- ]
- },
- // 规则分类
- rule_list: [],
- rule_tree:[],
- rule_list_value:[],
- showItem:false,
- selectItem:[],
- commitLoading:false,
- teamForm:{
- docId:0,
- teamId:0,
- name:"",
- employees:[]
- },
- employees_selected: { employee: [], dept: [] },
- showAddPoint:false,
- showPoint:false,
- pointForm:{
- teamId:0,
- teamName:'',
- point:0,
- date:"",
- remark:""
- },
- pointFormValidateRules:{
- point:[
- {type:'integer'},
- {required:true,message:"必须填写积分"},
- ],
- remark:[
- {type:'string'},
- {min:0,max:100,message:"最多100个字符"}
- ],
- date:[
- {type:'string'},
- {required:true,message:'积分日期必须填写'}
- ]
- },
- pointSearchDateScope:[],
- pointSearchForm:{
- timeScope:[],
- teamId:0,
- docId:0,
- page:1,
- pageSize:10
- },
- pointListLoading:false,
- pointListData:{
- list:[],
- total:0
- }
- }
- },
- methods: {
- initDocForm(){
- this.docForm.docId = 0;
- this.docForm.name = '';
- this.docForm.ruletype = 1;
- this.docForm.rules = [];
- this.docForm.items = [];
- this.selectItem = [];
- this.rule_list_value = [];
- },
- initTeamForm(){
- this.teamForm.docId = this.currentDoc.id;
- this.teamForm.teamId = 0;
- this.teamForm.name = '';
- this.teamForm.employees = [];
- this.employees_selected = { employee: [], dept: [] };
- },
- initPointForm(){
- this.pointForm.teamName = '';
- this.pointForm.point = 0;
- this.pointForm.teamId = 0;
- this.pointForm.remark = '';
- this.pointForm.date = '';
- },
- initPointListData(){
- this.pointListData = {
- list:[],
- total:0
- }
- },
- addDoc(){
- //封装表单数据
- this.initDocForm()
- //打开表单弹窗
- this.isUpdateDoc = false;
- this.showDoc = true;
- },
- editDoc(){
- //封装表单数据
- this.docForm.docId = this.currentDoc.id;
- this.docForm.name = this.currentDoc.name;
- if (this.currentDoc.items.length > 0){
- this.docForm.ruleType = 3;
- this.docForm.rules = [];
- this.docForm.items = this.currentDoc.items.map(e => e.id)
- this.selectItem = this.currentDoc.items.map(e => {
- return {
- id:e.id,
- remark:e.name
- }
- })
- }else if (this.currentDoc.rules.length > 0){
- this.docForm.ruleType = 2;
- this.docForm.items = [];
- this.docForm.rules = this.currentDoc.rules.map(e => e.id)
- let rule_list_value = [];
- if(this.currentDoc.rules.length > 0){
- this.docForm.rules.forEach(id => {
- let arr = [];
- this.returnRuleVal(id,arr);
- rule_list_value.push(arr);
- this.rule_list_value = rule_list_value;
- })
- }
- }else {
- this.docForm.ruleType = 1;
- this.docForm.rules = [];
- this.docForm.rules = [];
- this.selectItem = [];
- this.rule_list_value = [];
- }
- //打开表单弹窗
- this.isUpdateDoc = true;
- this.showDoc = true;
- },
- deleteDoc(){
- this.$confirm('确认删除当前档案吗?','删除档案',{confirmButtonText:'确定',cancelButtonText:'取消',type:"warning"}).then(() => {
- this.commitDeleteDoc();
- })
- },
- getDocList(){
- this.menuLoading = true;
- this.$axiosUser('get','/api/pro/pk/doc/list').then(res => {
- this.docList = res.data.data.list;
- if(this.docList.length > 0 && !this.currentDoc){
- this.refreshContent(this.docList[this.menuActive]);
- }
- }).finally(()=>{
- this.menuLoading = false;
- })
- },
- //获取分类规则
- get_rule_trees() {
- let params = {pt_id:3,cycle_type:1};
- this.$axiosUser('get', '/api/pro/integral/rule/trees', params).then(res => {
- this.rule_list = this.getTreeData(res.data.data.rule_tree);
- this.rule_tree = this.flatten(res.data.data.rule_tree);
- })
- },
- // 递归判断列表,把最后的child设为undefined
- getTreeData(data) {
- for (var i = 0; i < data.length; i++) {
- if (data[i].child.length < 1) {
- // child若为空数组,则将child设为undefined
- data[i].child = undefined;
- } else {
- // child若不为空数组,则继续 递归调用 本方法
- this.getTreeData(data[i].child);
- }
- }
- return data;
- },
- flatten(arr) {
- return arr.reduce((result, item) => {
- return result.concat(item, Array.isArray(item.child) ? this.flatten(item.child) : []);
- }, []);
- },
- returnRuleVal(rule_id,arr){
- arr.unshift(rule_id)
- let list = this.rule_tree.filter(x => x.id == rule_id)
- if(list[0]&&list[0].pid != 0){
- this.returnRuleVal(list[0].pid,arr)
- }
- return arr;
- },
- activeRouter(index, indexPath){
- this.menuActive = index.toString();
- },
- //加载右边内容页
- refreshContent(doc){
- if (!doc || !doc.id) return;
- this.currentTeam = null;
- this.currentDoc = null;
- this.contentLoading = true;
- this.$axiosUser('get','/api/pro/pk/doc/info',{doc_id:doc.id})
- .then(res => {
- this.currentDoc = res.data.data;
- this.activeTeam = 0; //只能在这里设置不能在开头初始化
- if (this.currentDoc.teams.length > 0) this.currentTeam = this.currentDoc.teams[0];
- })
- .finally(() => {
- this.contentLoading = false;
- })
- },
- addTeam(){
- //封装表单数据
- this.initTeamForm();
- //打开表单弹窗
- this.isUpdateTeam = false;
- this.showTeam = true;
- },
- editTeam(){
- //封装表单数据
- this.teamForm.docId = this.currentDoc.id;
- this.teamForm.teamId = this.currentTeam.id;
- this.teamForm.name = this.currentTeam.name;
- this.teamForm.employees = this.currentTeam.employees.map(e => e.id);
- this.employees_selected.employee = this.currentTeam.employees;
- //打开表单弹窗
- this.isUpdateTeam = true;
- this.showTeam = true;
- },
- deleteTeam(){
- this.$confirm('确认删除当前团队吗?','删除团队',{
- confirmButtonText: '确定',
- cancelButtonText: '取消',
- type: 'warning'
- }).then(() => {
- this.commitDeleteTeam(this.teamForm.teamId);
- })
- },
- removeTeam(i){
- if (this.currentDoc.teams.length < i) return;
- let team = this.currentDoc.teams[i];
- let message = '确认删除团队<<' + team.name + '>>吗?';
- this.$confirm(message,'删除团队',{
- confirmButtonText: '确定',
- cancelButtonText: '取消',
- type: 'warning'
- }).then(() => {
- this.commitDeleteTeam(team.id)
- })
- },
- commitDeleteTeam(teamId){
- this.commitLoading = true;
- this.$axiosUser('POST','/api/pro/pk/team/d',{team_id:teamId})
- .then(res => {
- this.$message.success(res.data.msg);
- this.isUpdateTeam = false;
- this.showTeam = false;
- this.initTeamForm();
- this.refreshContent(this.currentDoc);
- })
- .finally(() => {
- this.commitLoading = false;
- })
- },
- dropEmployee(teamId,employeeId,employeeName){
- let message = "确认将<<" + employeeName + ">>移出团队吗?"
- this.$confirm(message,"移出团队",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"})
- .then(() => {
- this.commitDeleteEmployee(teamId,employeeId);
- })
- },
- //选择规则
- ruleConfirm(rules) {
- if (rules.length > 0) {
- this.docForm.items = rules.map(e=> e.id);
- } else {
- this.docForm.items = [];
- }
- this.selectItem = rules;
- },
- commitDocForm(formName) {
- this.$refs[formName].validate(valid => {
- if (!valid) return;
- if (this.isUpdateDoc){
- this.commitUpdateDoc();
- }else{
- this.commitCreateDoc();
- }
- })
- },
- commitCreateDoc(){
- let params = {
- name:this.docForm.name,
- rules:[],
- items:[]
- };
- if (this.docForm.docId > 0){
- this.$message.error("表单状态异常");
- return;
- }
- if(this.docForm.ruleType === 2) {
- if (this.docForm.rules.length === 0){
- this.$message.error("选择规则分类");
- return;
- }
- params.rules = this.docForm.rules;
- }else if(this.docForm.ruleType === 3){
- if (this.docForm.items.length === 0){
- this.$message.error("请选择规则");
- return;
- }
- params.items = this.docForm.items;
- }
- this.commitLoading = true
- this.$axiosUser('POST','/api/pro/pk/doc/c',params).then(res => {
- this.$message.success(res.data.msg);
- this.showDoc = false;
- this.initDocForm();
- this.getDocList();
- })
- .finally(() => {
- this.commitLoading = false
- });
- },
- commitUpdateDoc(){
- let params = {
- doc_id:this.docForm.docId,
- name:this.docForm.name,
- rules:[],
- items:[]
- }
- if (this.docForm.docId <= 0){
- this.$message.error("表单状态异常");
- return;
- }
- if(this.docForm.ruleType === 2) {
- if (this.docForm.rules.length === 0){
- this.$message.error("选择规则分类");
- return;
- }
- params.rules = this.docForm.rules;
- }else if(this.docForm.ruleType === 3){
- if (this.docForm.items.length === 0){
- this.$message.error("请选择规则");
- return;
- }
- params.items = this.docForm.items;
- }
- this.commitLoading = true
- this.$axiosUser('POST','/api/pro/pk/doc/e',params).then(res => {
- this.$message.success(res.data.msg);
- this.showDoc = false;
- this.initDocForm();
- this.getDocList();
- })
- .finally(() => {
- this.commitLoading = false
- });
- },
- // 选人组件提交
- move_employee_confirm(data) {
- this.teamForm.employees = data.employee.map(element => {
- return element.id
- });
- this.employees_selected.employee = data.employee;
- },
- showEmployeeSelect(){
- this.showEmployeeSelector = true;
- },
- commitTeamForm(formName){
- this.$refs[formName].validate(valid => {
- if (!valid) return;
- if (this.isUpdateTeam){
- this.commitUpdateTeam();
- }else {
- this.commitCreateTeam();
- }
- })
- },
- commitUpdateTeam(){
- let params = {
- team_id:this.teamForm.teamId,
- name:this.teamForm.name,
- employees:this.teamForm.employees
- }
- this.commitLoading = true;
- this.$axiosUser('POST','/api/pro/pk/team/e',params).then(res => {
- this.$message.success(res.data.msg);
- this.showTeam = false;
- this.initTeamForm();
- this.refreshContent(this.currentDoc)
- })
- .finally(() => {
- this.commitLoading = false
- });
- },
- commitCreateTeam(){
- let params = {
- doc_id: this.teamForm.docId,
- name: this.teamForm.name,
- employees:this.teamForm.employees
- }
- this.$axiosUser('POST','/api/pro/pk/team/c',params).then(res => {
- this.$message.success(res.data.msg);
- this.showTeam = false;
- this.initTeamForm();
- this.refreshContent(this.currentDoc)
- })
- .finally(() =>{
- this.commitLoading = false
- });
- },
- commitDeleteEmployee(teamId,employeeId){
- this.commitLoading = true;
- this.$axiosUser('POST','/api/pro/pk/team/employee/d',{team_id:teamId,employee_id:employeeId})
- .then(res => {
- this.$message.success(res.data.msg);
- this.refreshContent(this.currentDoc);
- })
- .finally(()=>{
- this.commitLoading = false
- })
- },
- commitDeleteDoc(){
- this.commitLoading = true;
- this.$axiosUser('POST','/api/pro/pk/doc/d',{doc_id:this.currentDoc.id})
- .then(res => {
- this.$message.success(res.data.msg);
- this.showDoc = false;
- this.currentDoc = null;
- this.currentTeam = null;
- this.initDocForm();
- this.getDocList();
- })
- .finally(() => {
- this.commitLoading = false;
- })
- },
- addTeamPoint(){
- this.pointForm.teamId = this.currentTeam.id;
- this.pointForm.teamName = this.currentTeam.name;
- this.showAddPoint = true;
- this.pointForm.date = this.$moment(new Date()).format('YYYY-MM-DD');
- },
- commitPointForm(formName){
- this.$refs[formName].validate(valid => {
- if (!valid) return;
- this.commitLoading = true;
- let params = {
- team_id: this.pointForm.teamId,
- point: this.pointForm.point,
- date: this.pointForm.date,
- remark: this.pointForm.remark
- }
- this.$axiosUser('POST','/api/pro/pk/team/point',params)
- .then(res => {
- this.$message.success(res.data.msg);
- this.showAddPoint = false;
- this.initPointForm();
- })
- .finally(()=>{
- this.commitLoading = false;
- })
- })
- },
- initPointSearchDateRange(){
- //初始化积分列表时间区间
- const pkStartData = new Date();
- const pkEndData = new Date();
- pkStartData.setTime(pkStartData.getTime() - 3600 * 1000 * 24 * 30);
- this.pointSearchDateScope[0] = this.$moment(pkStartData).format('YYYY-MM-DD');
- this.pointSearchDateScope[1] = this.$moment(pkEndData).format('YYYY-MM-DD');
- this.pointSearchForm.timeScope = this.pointSearchDateScope;
- },
- initPointSearchForm(){
- this.initPointSearchDateRange();
- this.pointSearchForm.teamId = this.currentTeam.id;
- this.pointSearchForm.docId = this.currentDoc.id;
- this.pointSearchForm.page = 1;
- this.pointSearchForm.pageSize = 10;
- },
- handlePointPageChange(page){
- this.pointSearchForm.page = page;
- this.getPointList();
- },
- getPointList(){
- if (this.pointSearchForm.teamId === 0 || this.pointSearchForm.docId === 0 || !this.pointSearchForm.timeScope || this.pointSearchForm.timeScope.length !== 2) {
- this.initPointListData();
- return;
- }
- this.pointListLoading = true;
- let params = {
- doc_id: this.pointSearchForm.docId,
- team_id: this.pointSearchForm.teamId,
- page: this.pointSearchForm.page,
- page_size: this.pointSearchForm.pageSize,
- start_date: this.pointSearchForm.timeScope[0],
- end_date: this.pointSearchForm.timeScope[1]
- }
- this.$axiosUser('get','/api/pro/pk/team/point/list',params)
- .then(res => {
- this.pointListData = res.data.data;
- })
- .finally(()=>{
- this.pointListLoading = false;
- })
- },
- clickShowPoint(){
- //初始化积分搜索数据
- this.initPointSearchForm();
- this.getPointList();
- this.showPoint = true;
- }
- },
- created() {
- this.get_rule_trees();
- },
- watch:{
- activeTeam(value){
- this.currentTeam = this.currentDoc.teams.length > value ? this.currentDoc.teams[value] : null;
- },
- rule_list_value(val){
- if(val.length > 0){
- this.docForm.rules = val.map(e => e[e.length - 1]);
- }else {
- this.docForm.rules = [];
- }
- },
- pointSearchDateScope(val){
- this.pointSearchForm.timeScope = val ? val : [];
- this.getPointList();
- }
- },
- mounted() {
- this.getDocList();
- }
- }
- </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;
- }
- .left{
- padding:10px;
- overflow: auto;
- max-height: 800px;
- }
- .boxMinHeight{
- background-color: #fff;
- }
- .inputBox {
- height: 36px;
- line-height: 36px;
- padding-right: 30px;
- -webkit-appearance: none;
- background-color: #fff;
- background-image: none;
- border-radius: 4px;
- border: 1px solid #dcdfe6;
- -webkit-box-sizing: border-box;
- box-sizing: border-box;
- color: #606266;
- display: inline-block;
- font-size: inherit;
- width: 400px;
- outline: 0;
- padding: 0 15px;
- cursor: pointer;
- -webkit-transition: border-color 0.2s cubic-bezier(0.645, 0.045, 0.355, 1);
- transition: border-color 0.2s cubic-bezier(0.645, 0.045, 0.355, 1);
- }
- </style>
|