| 
					
				 | 
			
			
				@@ -0,0 +1,870 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<template>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <div class="page">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <div class="title">{{ title }}</div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <div class="tabs">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <div class="t_pre" :class="{'active':tidx===1}" @click="handleChangeTab(1)">活动项目</div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <div class="t_pre" :class="{'active':tidx===2}" @click="handleChangeTab(2)">项目进展</div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <template v-if="tidx===1">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <div class="t_add" @click="handleAddProgram" v-hasPermi="['core:project:add']">+ 创建项目</div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </template>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <template v-else-if="tidx===2">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <div class="t_add" @click="handleAddJZ">+ 添加项目进展</div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </template>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <template v-if="tidx===1">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <div class="query adfacjb">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <el-input placeholder="请输入项目名称" prefix-icon="el-icon-search" v-model="queryParams.programName" style="width: 100%" @keyup.enter.native="getProgramListFn"></el-input>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <div class="content">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <template v-if="programList.length">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    <el-table :data="programList" border cell-class-name="vertical-top-cell" v-loading="loading" empty-text="暂无项目" max-height="578px">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        <el-table-column label="序号" width="50">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            <template #default="scope">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                {{ scope.$index + 1 }}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            </template>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        </el-table-column>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        <el-table-column label="项目编号" prop="programNo" width="150"></el-table-column>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        <el-table-column label="项目名称" prop="programName"></el-table-column>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        <el-table-column label="公司名称" prop="enterpriseName"></el-table-column>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        <el-table-column label="团队名称" prop="teamName"></el-table-column>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        <el-table-column label="教练" prop="coachNames"></el-table-column>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        <el-table-column label="备注" prop="remark" width="300" show-overflow-tooltip></el-table-column>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        <el-table-column label="操作" width="150">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            <template #default="scope">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                <el-button link type="text" size="mini" @click="handleEdit(scope.row)">编辑</el-button>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                <el-button link type="text" size="mini" @click="handleDelete(scope.row)" v-hasPermi="['core:program:delete']">删除</el-button>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            </template>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        </el-table-column>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    </el-table>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    <el-row style="display: flex;justify-content: center;">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        <el-pagination
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            @size-change="handleSizeChange"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            @current-change="handleCurrentChange"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            :current-page="queryParams.page"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            :page-sizes="[5, 10, 20, 50]"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            :page-size="10"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            layout="total, sizes, prev, pager, next, jumper"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            :total="total"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            v-show="total > 0">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        </el-pagination>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    </el-row>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                </template>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <template v-else>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    <div class="empty">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        <img src="@/assets/images/agent/team.png">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        <p>您还没有添加过任何项目</p>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        <div class="e_add" @click="handleAddProgram">+ 添加项目</div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    </div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                </template>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </template>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <template v-else-if="tidx===2">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <div class="query adfacjb">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <el-input placeholder="请输入项目名称" prefix-icon="el-icon-search" v-model="programName2" style="width: 100%" @keyup.enter.native="getProgramProgressData"></el-input>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <div class="content">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <template v-if="programList2.length">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    <el-table :data="programList2" border cell-class-name="vertical-top-cell" v-loading="loading2" empty-text="暂无项目进展" max-height="578px">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        \<el-table-column label="序号" width="50">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            <template #default="scope">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                {{ scope.$index + 1 }}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            </template>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        </el-table-column>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        <el-table-column label="项目编号" prop="programNo"></el-table-column>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        <el-table-column label="项目名称" prop="programName"></el-table-column>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        <el-table-column label="公司名称" prop="enterpriseName"></el-table-column>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        <el-table-column label="更新时间" prop="updateDate"></el-table-column>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        <el-table-column label="项目的阶段及状态" prop="progress" width="400" show-overflow-tooltip></el-table-column>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        <el-table-column label="操作" width="150">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            <template #default="scope">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                <el-button link type="text" size="mini" @click="handleEdit2(scope.row)" v-hasPermi="['core:projectprogress:update']">编辑</el-button>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                <el-button link type="text" size="mini" @click="handleDelete2(scope.row)" v-hasPermi="['core:projectprogress:delete']">删除</el-button>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            </template>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        </el-table-column>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    </el-table>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                </template>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <template v-else>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    <div class="empty">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        <img src="@/assets/images/agent/team.png">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        <p>您还没有添加过任何项目进展</p>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        <div class="e_add" @click="handleAddJZ">+ 添加项目进展</div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    </div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                </template>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </template>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <el-drawer :title="programTitle" :visible.sync="programShow" append-to-body size="50%" @close="cancel">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <el-form ref="programRef" :model="programForm" :rules="programRules" label-width="100px" style="width: 90%;margin: 0 auto;">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <el-form-item label="项目编号" prop="programNo">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    <el-input v-model="programForm.programNo"disabled />
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                </el-form-item>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <el-form-item label="项目名称" prop="programName">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    <el-input v-model="programForm.programName" placeholder="请输入项目名称" />
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                </el-form-item>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <el-form-item label="公司名称" prop="enterpriseId">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    <el-select v-model="programForm.enterpriseId" placeholder="请选择公司" filterable clearable style="width: 100%;" @change="handleChangeCompany">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        <el-option v-for="item in useAgentStore().companyList" :key="item.id" :label="item.enterpriseName" :value="item.id"></el-option>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    </el-select>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                </el-form-item>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <el-form-item label="团队名称" prop="teamId">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    <el-select v-model="programForm.teamId" placeholder="请选择团队" filterable clearable style="width: 100%;" :disabled="!programForm.enterpriseId">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        <el-option v-for="item in teamList" :key="item.id" :label="item.teamName" :value="item.id"></el-option>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    </el-select>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                </el-form-item>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <el-form-item label="项目教练" prop="">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    <el-popover
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        placement="top-start"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        title="选择教练"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        width="790"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        trigger="click"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        v-model="coachShow"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        @show="hangleSelectCoach">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        <div class="ed_coach adf">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            <div class="ec_l">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                <el-input placeholder="请输入教练名搜索" suffix-icon="el-icon-search" v-model="coachName" style="width: 100%;" @keyup.enter.native="handleQueryCoach"></el-input>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                <el-checkbox :indeterminate="isIndeterminate" v-model="checkAll" @change="handleCheckAllChange" style="margin-top: 65px;">全选</el-checkbox>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                <div class="ecl_cbs">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    <el-checkbox v-model="coach.checked" v-for="(coach,index) in coachList" :key="coach.id" @change="handleChangeCoach" style="margin-top: 24px;display: block;">{{ coach.realName }}</el-checkbox>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                </div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            </div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            <div class="ec_r">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                <div class="ecr_text">已选择({{ coachSelecteds.length }}/<span>{{ coachList.length }}</span>)</div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                <div class="ecr_names">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    <div class="en_pre adfacjc" v-for="(item,index) in coachSelecteds" :key="index">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                        <span>{{ item.realName }}</span>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                        <img src="@/assets/images/agent/delete_mini.png" @click="handleDeleteCoach(item,index)">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    </div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                </div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            </div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        </div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        <div class="demo-drawer__footer" style="display: flex;justify-content: end;margin-top: 20px;">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            <el-button type="primary" @click="submitForm2">确 认</el-button>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            <el-button @click="cancel2" style="margin-right: 5%;">取 消</el-button>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        </div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        <div slot="reference">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            <div class="f_s adfacjb" v-if="programForm.coachList.length===0">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                <div class="fs_text" :class="{'active':coachs!=='请选择'}">{{ coachs }}</div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                <i class="el-icon-arrow-down" style="color: #C0C4CC;"></i>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            </div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            <div class="f_s adfacjb" v-else>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                <p>{{ cocahNames }}</p>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                <i class="el-icon-arrow-down" style="color: #C0C4CC;"></i>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            </div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        </div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    </el-popover>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                </el-form-item>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <el-form-item label="项目备注" prop="remark">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    <el-input type="textarea" :rows="2" v-model="programForm.remark" placeholder="请输入项目概述" />
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                </el-form-item>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </el-form>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <div class="demo-drawer__footer" style="display: flex;justify-content: end;">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <el-button :loading="buttonLoading" type="primary" @click="submitForm" v-hasPermi="['core:program:save']">保 存</el-button>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <el-button @click="cancel" style="margin-right: 5%;">取 消</el-button>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </el-drawer>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <el-drawer :title="progressTitle" :visible.sync="progressShow" append-to-body size="50%" @close="cancel">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <el-form ref="progressRef" :model="progressForm" :rules="progressRules" label-width="140px" style="width: 90%;margin: 0 auto;">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <el-form-item label="项目名称" prop="programId">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    <el-select v-model="progressForm.programId" placeholder="请选择项目名称" filterable clearable style="width: 100%;" @change="handleChangeProgram">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        <el-option v-for="item in useAgentStore().programList" :key="item.id" :label="item.programName" :value="item.id"></el-option>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    </el-select>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                </el-form-item>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <el-form-item label="公司名称">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    <el-select v-model="progressForm.enterpriseId" placeholder="请选择公司" filterable clearable style="width: 100%;" disabled>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        <el-option v-for="item in useAgentStore().companyList" :key="item.id" :label="item.enterpriseName" :value="item.id"></el-option>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    </el-select>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                </el-form-item>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <el-form-item label="团队名称">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    <el-select v-model="progressForm.teamId" placeholder="请选择团队" filterable clearable style="width: 100%;" disabled>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        <el-option v-for="item in teamList" :key="item.id" :label="item.teamName" :value="item.id"></el-option>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    </el-select>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                </el-form-item>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <el-form-item label="项目教练" prop="">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    <el-input v-model="progressForm.cocahNames" disabled></el-input>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                </el-form-item>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <el-form-item label="项目的阶段及状态" prop="progress">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    <el-input type="textarea" :rows="2" v-model="progressForm.progress" placeholder="请输入项目的阶段及状态" />
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                </el-form-item>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </el-form>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <div class="demo-drawer__footer" style="display: flex;justify-content: end;">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <el-button :loading="buttonLoading3" type="primary" @click="submitForm3" v-hasPermi="['core:projectprogress:save']">保 存</el-button>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <el-button @click="cancel3" style="margin-right: 5%;">取 消</el-button>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </el-drawer>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    </div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+</template>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<script setup name="">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    import { generateNo } from '@/utils/ruoyi'
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    import { ref, getCurrentInstance, onMounted } from 'vue'
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const { proxy } = getCurrentInstance();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    import { useAgentStore } from '@/store_v3/modules/agent';
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    useAgentStore().getCompanyData();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    useAgentStore().getProgramData();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    import { 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        getProgramList,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        addProgram,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        updateProgram,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        getProgramInfo,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        deleteProgram,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        getCoachList,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        getTeamListById,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        getProgramProgressList,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        addProgramProgress,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        updateProgramProgress,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        getProgramProgressInfo,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        deleteProgramProgress,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } from '@/api/agent/index.js'
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const title = ref('项目管理')
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const tidx = ref(1)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const programName2 = ref('')
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const programList = ref([])
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const total = ref(0)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const programList2 = ref([])
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const teamList = ref([])
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const loading = ref(false)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const loading2 = ref(false)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const coachs = ref('请选择')
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const coachName = ref('')
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const coachShow = ref(false)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const coachSelecteds = ref([])
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const coachList = ref([])
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const isIndeterminate = ref(false)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const checkAll = ref(false)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const cocahNames = ref('')
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const queryParams = ref({
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        page: 1,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        limit: 10,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        programName: ''
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    })
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const programTitle = ref('添加项目')
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const programShow = ref(false)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const programRef = ref(null)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const programForm = ref({
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        id: '',
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        programNo: '',
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        programName: '',
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        enterpriseId: '',
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        enterpriseName: '',
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        teamId: '',
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        teamName: '',
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        coachList: [],
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        remark: ''
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    })
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const programRules = ref({
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        programNo: [
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            { required: true, message: '请输入项目编号', trigger: 'blur' }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ],
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        programName: [
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            { required: true, message: '请输入项目名称', trigger: 'blur' }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ],
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        enterpriseId: [
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            { required: true, message: '请选择公司', trigger: 'change' }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ],
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        teamId: [
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            { required: true, message: '请选择团队', trigger: 'change' }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ]
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    })
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const buttonLoading = ref(false)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const progressTitle = ref('添加项目阶段及进展')
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const progressShow = ref(false)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const progressRef = ref(null)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const progressForm = ref({
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        id: '',
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        programId: '',
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        enterpriseId: '',
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        teamId: '',
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        cocahNames: '',
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        progress: ''
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    })
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const progressRules = ref({
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        programId: [
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            { required: true, message: '请选择项目', trigger: 'change' }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ],
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        progress: [
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            { required: true, message: '请输入项目的阶段及状态', trigger: 'blur' }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ]
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    })
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const buttonLoading3 = ref(false)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const getProgramListFn = async () => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        loading.value = true;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const res = await getProgramList(queryParams.value);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(res.code!==0) return proxy.$message.error(res.msg);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        programList.value = res.data.list;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        programList.value.forEach(p=>{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            p.coachNames = p.coachList.map(c=>c.coachName).join('、');
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        })
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        total.value = res.data.total;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        loading.value = false;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const handleSizeChange = (val) => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        queryParams.value.limit = val
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        getProgramListFn()
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const handleCurrentChange = (val) => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        queryParams.value.page = val
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        getProgramListFn()
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const handleChangeTab = (idx) => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        tidx.value = idx;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(idx===2){
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            getProgramProgressData();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const handleAddProgram = () => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        reset();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        programTitle.value = '添加项目';
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        programForm.value.programNo = generateNo();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        programShow.value = true;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const handleEdit = (row) => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        programTitle.value = '编辑项目';
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        getProgramInfo(row.id).then(res=>{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(res.code!==0) return proxy.$message.error(res.msg);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            programForm.value = {...programForm.value,...res.data};
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(programForm.value.coachList===null) programForm.value.coachList = [];
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            cocahNames.value = programForm.value.coachList.map(item => item.coachName).join(';');
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            getTeamListById({enterpriseId: res.data.enterpriseId}).then(r=>{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if(r.code!==0) return proxy.$message.error(r.msg);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                teamList.value = r.data;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            })
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            programShow.value = true;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        });
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const handleDelete = async (row) => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        await proxy.$modal.confirm('确认删除项目【' + row.programName + '】吗?');
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        deleteProgram([row.id]).then(res=>{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(res.code === 0) proxy?.$modal.msgSuccess("删除成功");
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            else return proxy?.$modal.msgError(res.msg);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            getProgramListFn();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        });
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const handleChangeCompany = (e) => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        getTeamListById({enterpriseId: e}).then(res=>{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(res.code!==0) proxy.$message.error(res.msg);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            teamList.value = res.data;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        })
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const submitForm = () => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        proxy.$refs.programRef.validate((valid) => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (valid) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                let dto = JSON.parse(JSON.stringify(programForm.value));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if(dto.coachList.length===0) return proxy.$message.warning('请至少选择一位教练');
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if(dto.id){
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    updateProgram(dto).then((res)=>{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        if(res.code!==0) return proxy.$message.error(res.msg);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        buttonLoading.value = false;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        programShow.value = false;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        getProgramListFn();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    })
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                }else{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    addProgram(dto).then((res)=>{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        if(res.code!==0) return proxy.$message.error(res.msg);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        buttonLoading.value = false;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        programShow.value = false;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        getProgramListFn();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    })
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }else return false
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        })
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const reset = () => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        programForm.value = {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            id: '',
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            programNo: '',
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            programName: '',
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            enterpriseId: '',
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            enterpriseName: '',
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            teamId: '',
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            teamName: '',
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            coachList: [],
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            remark: ''
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        };
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        proxy.resetForm("programRef");
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const cancel = () => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        programShow.value = false;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        reset();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const hangleSelectCoach = () => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        getCoachList({page:1,limit:-1,realName:coachName.value}).then(res => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(res.code!==0) return proxy.$message.error(res.msg);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            coachList.value = res.data.list.filter(d=>d.userType=='1');
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            coachList.value.forEach(item => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                item.checked = false;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            })
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            coachShow.value = true;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        })
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const handleQueryCoach = e =>{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        coachList.value = [];
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        getCoachList({page:1,limit:-1,realName:e.target.value}).then(res => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(res.code!==0) return proxy.$message.error(res.msg);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            coachList.value = res.data.list.filter(d=>d.userType=='1');
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            coachList.value.forEach(item => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                item.checked = false;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            })
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            checkAll.value = false;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            isIndeterminate.value = false;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            coachSelecteds.value = [];
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        })
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const handleCheckAllChange = (val) => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        coachSelecteds.value = val ? JSON.parse(JSON.stringify(coachList.value)) : [];
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        isIndeterminate.value = false;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        coachList.value.forEach(item => item.checked = val)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const handleChangeCoach = () => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let trues = coachList.value.filter(item => item.checked).length;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(trues>0&&trues<coachList.value.length) isIndeterminate.value = true;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        else isIndeterminate.value = false;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(trues===coachList.value.length) checkAll.value = true;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        else checkAll.value = false;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        coachSelecteds.value = coachList.value.filter(item => item.checked);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const handleDeleteCoach = (item,index) => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let i = coachList.value.findIndex(c => c.id === item.id);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(i>-1) coachList.value[i].checked = false;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        coachSelecteds.value.splice(index,1);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let trues = coachList.value.filter(item => item.checked).length;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(trues>0&&trues<coachList.value.length) isIndeterminate.value = true;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        else isIndeterminate.value = false;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(trues===coachList.value.length) checkAll.value = true;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        else checkAll.value = false;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const submitForm2 = () => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(coachSelecteds.value.length===0) return proxy.$message.warning('请至少选择一位教练')
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        programForm.value.coachList = JSON.parse(JSON.stringify(coachSelecteds.value)).map(c=>{return {coachId:c.id,coachName:c.realName}});
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        cocahNames.value = programForm.value.coachList.map(c=>c.coachName).join(';');
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        checkAll.value = false;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        isIndeterminate.value = false;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        coachSelecteds.value = [];
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        coachList.value = [];
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        coachName.value = '';
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        coachShow.value = false;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const cancel2 = () => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        checkAll.value = false;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        isIndeterminate.value = false;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        coachSelecteds.value = [];
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        coachList.value = [];
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        coachName.value = '';
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        coachShow.value = false;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const getProgramProgressData = async () => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        loading2.value = true;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const res = await getProgramProgressList({programName:programName2.value});
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(res.code!==0) return proxy.$message.error(res.msg);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        programList2.value = res.data;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        loading2.value = false;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const handleAddJZ = () => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        reset2();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        progressTitle.value = '添加项目阶段及进展';
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        progressShow.value = true;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const reset2 = () => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        progressForm.value = {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            id: '',
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            programId: '',
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            enterpriseId: '',
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            teamId: '',
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            cocahNames: '',
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            progress: ''
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        };
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        proxy.resetForm("progressRef");
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const handleChangeProgram = e =>{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        getProgramInfo(e).then(res=>{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(res.code!==0) return proxy.$message.error(res.msg);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            progressForm.value = {...progressForm.value,...res.data};
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            progressForm.value.id = '';
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            getTeamListById({enterpriseId: res.data.enterpriseId}).then(res=>{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if(res.code!==0) proxy.$message.error(res.msg);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                teamList.value = res.data;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            })
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            progressForm.value.cocahNames = res.data.coachList.map(item => item.coachName).join('、');
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        })
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const submitForm3 = () => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        proxy.$refs.progressRef.validate((valid) => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (valid) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                let dto = JSON.parse(JSON.stringify(progressForm.value));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if(dto.id){
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    updateProgramProgress(dto).then((res)=>{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        if(res.code!==0) return proxy.$message.error(res.msg);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        buttonLoading3.value = false;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        progressShow.value = false;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        getProgramProgressData();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    })
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                }else{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    addProgramProgress(dto).then((res)=>{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        if(res.code!==0) return proxy.$message.error(res.msg);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        buttonLoading3.value = false;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        progressShow.value = false;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        getProgramProgressData();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    })
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }else return false
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        })
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const cancel3 = () => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        progressShow.value = false;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        reset2();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const handleEdit2 = (item) => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        reset2();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        progressTitle.value = '编辑项目阶段及进展';
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        getProgramProgressInfo(item.id).then(res=>{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(res.code!==0) return proxy.$message.error(res.msg);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            progressForm.value = {...progressForm.value,...res.data};
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            getProgramInfo(res.data.programId).then(res2=>{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if(res.code!==0) return proxy.$message.error(res2.msg);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                progressForm.value.enterpriseId = res2.data.enterpriseId;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                progressForm.value.teamId = res2.data.teamId;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                getTeamListById({enterpriseId: res2.data.enterpriseId}).then(res3=>{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if(res.code!==0) proxy.$message.error(res3.msg);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    teamList.value = res3.data;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                })
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                progressForm.value.cocahNames = res2.data.coachList.map(item => item.coachName).join('、');
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            })
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            progressShow.value = true;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        })
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const handleDelete2 = async (row) => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        await proxy.$modal.confirm('确认删除项目进展【' + row.programName + '】吗?');
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        deleteProgramProgress([row.id]).then(res=>{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(res.code === 0) proxy?.$modal.msgSuccess("删除成功");
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            else return proxy?.$modal.msgError(res.msg);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            getProgramProgressData();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        });
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    onMounted(()=>{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        getProgramListFn();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    })
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+</script>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<style scoped lang="scss">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ::v-deep .queryInput .el-input__inner{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        border: none !important;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        height: 30px !important;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        line-height: 30px !important;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        padding: 0 !important;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        width: 200px !important;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    :v-deep .el-dialog__wrapper{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        background: rgba(0,0,0,.3) !important;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ::v-deep .el-dialog__title{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        font-weight: bold !important;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ::v-deep .el-dialog{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        margin-top: 15vh !important;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ::v-deep .el-drawer__header span{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        font-weight: bold;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        font-size: 16px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        color: #1D2129;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        line-height: 22px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    .query{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        width: 100%;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        padding: 16px 20px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        box-sizing: border-box;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        background: #FFFFFF;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        border-radius: 6px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        border: 1px solid #F3F4F6;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        margin-top: 11px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    .page{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        padding: 28px 16px 12px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        background: #FAFAFA;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        .title{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            font-family: PingFang-SC, PingFang-SC;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            font-weight: bold;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            font-size: 16px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            color: #111111;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            line-height: 16px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        .tabs{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            position: relative;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            display: flex;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            align-items: center;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            border-bottom: 1px solid #E5E7EB;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            padding-bottom: 18px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            margin-top: 32px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            .t_pre{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                width: 116px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                font-family: PingFangSC, PingFang SC;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                font-weight: 400;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                font-size: 14px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                color: #111111;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                line-height: 16px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                text-align: center;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                position: relative;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                cursor: pointer;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                &.active{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    font-weight: bold;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    color: #761E6A;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    &::after{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        content: '';
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        position: absolute;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        bottom: -18px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        left: 0;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        width: 100%;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        height: 2px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        background: #761E6A;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            .t_add{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                width: 112px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                height: 30px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                background: #761E6A;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                border-radius: 6px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                font-family: PingFangSC, PingFang SC;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                font-weight: 400;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                font-size: 14px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                color: #FFFFFF;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                line-height: 26px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                text-align: center;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                position: absolute;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                top: -10px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                right: 0;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                cursor: pointer;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                border: 1px solid #833478;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                &.t_add2{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    background: #FFFFFF;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    color: #833478;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    right: 130px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        .content{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            width: 100%;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            height: calc(100vh - 220px);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            background: #FFFFFF;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            border: 1px solid #F3F4F6;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            margin-top: 5px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            .empty{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                width: 100%;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                height: 100%;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                display: flex;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                flex-direction: column;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                align-items: center;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                justify-content: center;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                img{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    width: 90px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    height: 76px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                p{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    font-family: PingFangSC, PingFang SC;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    font-weight: 400;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    font-size: 14px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    color: #1D2129;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    line-height: 20px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    margin-top: 20px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .e_add{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    width: 114px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    height: 32px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    background: #761E6A;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    border-radius: 6px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    font-family: PingFangSC, PingFang SC;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    font-weight: 400;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    font-size: 14px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    color: #FFFFFF;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    line-height: 32px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    text-align: center;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    margin-top: 36px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    cursor: pointer;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    .f_s{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        width: 100%;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        height: 42px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        border-radius: 6px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        border: 1px solid #dcdfe6;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        padding: 11px 11px 11px 16px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        box-sizing: border-box;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        cursor: pointer;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        .fs_text{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            font-family: PingFangSC, PingFang SC;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            font-weight: 400;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            font-size: 14px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            color: #C0C4CC;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            line-height: 20px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            &.active{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                color: #606266;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    .f_title{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        font-family: PingFangSC, PingFang SC;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        font-weight: 600;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        font-size: 16px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        color: #0D162A;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        line-height: 16px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        margin-bottom: 20px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    .f_pldr{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        margin-top: 20px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        .fp_box{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            display: flex;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            width: 526px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            height: 125px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            border-radius: 4px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            border: 1px solid #EDEEF0;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            position: relative;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            .fpb_pre{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                width: calc(50% - 1px);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                height: 100%;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                display: flex;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                align-items: center;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                justify-content: center;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .fpbp_btn{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    width: 140px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    height: 36px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    border-radius: 6px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    border: 1px solid #E5E7EB;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    font-family: PingFangSC, PingFang SC;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    font-weight: 400;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    font-size: 12px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    color: #761E6A;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    line-height: 32px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    text-align: center;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    cursor: pointer;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                &.sc{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    border-left: 1px solid #EDEEF0;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .fpbp_btn{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        background: #761E6A;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        border: 1px solid #761E6A;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        color: #FFFFFF;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            img{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                width: 50px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                height: 20px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                position: absolute;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                left: 50%;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                margin-left: -25px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                top: 50%;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                margin-top: -10px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        p{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            margin-top: 11px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            font-family: PingFangSC, PingFang SC;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            font-weight: 400;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            font-size: 12px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            color: #C1C7D2;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            line-height: 20px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            text-align: justify;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    .f_sdlr{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        padding-top: 10px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        .fs_add{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            width: 80px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            height: 32px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            background: #761E6A;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            border-radius: 6px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            font-family: PingFangSC, PingFang SC;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            font-weight: 400;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            font-size: 14px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            color: #FFFFFF;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            line-height: 32px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            text-align: center;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            margin-top: 20px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            cursor: pointer;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            &.del{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                background: rgb(212, 96, 96);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                margin: 0;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                margin-top: 5px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    .ed_coach{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        .ec_l{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            width: calc(50% - 1px);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            height: 100%;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            padding-right: 30px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            box-sizing: border-box;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            border-right: 1px solid #ECEEF5;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            .ecl_cbs{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                width: 100%;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                // height: calc(100% - 143px);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                max-height: 376px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                overflow-y: auto;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        .ec_r{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            width: 50%;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            padding-left: 30px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            box-sizing: border-box;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            .ecr_text{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                font-family: PingFang-SC, PingFang-SC;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                font-weight: bold;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                font-size: 16px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                color: #252525;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                line-height: 22px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                span{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    color: #B9B9B9;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            .ecr_names{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                margin-left: -16px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                overflow: hidden;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .en_pre{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    float: left;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    padding: 10px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    background: #F9FAFB;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    border-radius: 6px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    margin: 19px 0 0 16px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    span{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        font-family: PingFangSC, PingFang SC;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        font-weight: 400;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        font-size: 14px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        color: #252525;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        line-height: 14px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    img{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        width: 16px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        height: 16px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        margin-left: 10px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        cursor: pointer;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+</style> 
			 |