瀏覽代碼

最新需求设计图修改

htc 1 周之前
父節點
當前提交
9bd8ee7492

+ 5 - 0
src/App.vue

@@ -622,6 +622,11 @@ input[type="number"] {
   align-items: center;
   justify-content: space-between;
 }
+.adffcac{
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+}
 .adffcacjc{
   display: flex;
   flex-direction: column;

二進制
src/assets/images/agent/report.gif


+ 2 - 1
src/assets/scss/common.scss

@@ -405,7 +405,8 @@ img {
   box-shadow: 1px 0 2px 0 rgba(0, 0, 0, .05);
   overflow: hidden;
   transition: width .3s;
-  z-index: 201;
+  // z-index: 201;
+  z-index: 99;
   border-right: 1px solid #E5E7EB;
 
   &__inner {

+ 36 - 1
src/assets/scss/global.scss

@@ -1,5 +1,4 @@
 
-
 .el-button--primary,.el-checkbox__input.is-checked .el-checkbox__inner, .el-checkbox__input.is-indeterminate .el-checkbox__inner{
     background: #761E6A !important;
     border-color: #761E6A !important;
@@ -13,4 +12,40 @@
 }
 .el-radio__input.is-checked+.el-radio__label{
     color: #761E6A !important;
+}
+.eb_default{
+    padding: 9px 27px;
+    background: #F7F2F6;
+    border-radius: 6px;
+    font-family: PingFangSC, PingFang SC;
+    font-weight: 400;
+    font-size: 14px;
+    color: #761E6A;
+    line-height: 14px;
+    cursor: pointer;
+}
+
+.cus_dialog{
+    width: 100%;
+    height: 100vh;
+    position: fixed;
+    left: 0;
+    right: 0;
+    top: 0;
+    bottom: 0;
+    z-index: 9999;
+    background: rgba(0,0,0,.4);
+}
+.zt_btn{
+    width: 100%;
+    height: 36px;
+    background: #761E6A;
+    border-radius: 6px;
+    font-family: PingFangSC, PingFang SC;
+    font-weight: 400;
+    font-size: 14px;
+    color: #FFFFFF;
+    line-height: 36px;
+    text-align: center;
+    cursor: pointer;
 }

+ 89 - 165
src/views/modules/agent/program.vue

@@ -17,7 +17,7 @@
                                 <div class="tullt_r" @click="handleAddTeam" v-hasPermi="['core:project:addTeam']">+添加团队</div>
                             </div>
                             <div class="tull_query queryInput">
-                                <el-input v-model="programName" placeholder="请输入项目名称" @keyup.enter.native="getProgramList"></el-input>
+                                <el-input v-model="programName" placeholder="请输入公司名称" @keyup.enter.native="getProgramList"></el-input>
                                 <img src="@/assets/images/agent/query_mini.png">
                             </div>
                             <div class="tull_list">
@@ -41,7 +41,7 @@
                                             <span>({{ team.teamNum||0 }}人)</span>
                                             <el-popover placement="right" width="177" trigger="click">
                                                 <div class="tl_czs">
-                                                    <div class="tlc_pre" @click="handleTeamDetail(team)" v-hasPermi="['core:team:info']">团队详情</div>
+                                                    <div class="tlc_pre" @click="handleTeamDetail(team,item)" v-hasPermi="['core:team:info']">团队详情</div>
                                                     <div class="tlc_pre" @click="handleTeamDelete(team)" v-hasPermi="['core:team:delete']">删除团队</div>
                                                 </div>
                                                 <i slot="reference" class="el-icon-more" style="font-size: 14px;color: #999; transform: rotate(90deg);" @click.stop="handleSetTeam(team,idx)"></i>
@@ -81,13 +81,15 @@
                                 <el-table-column label="性别" prop="gender">
                                     <template #default="{ row }">{{ genderCfg[row.gender]||'未知' }}</template>
                                 </el-table-column>
-                                <el-table-column label="出生日期" prop="birthdate"></el-table-column>
+                                <el-table-column label="类型" prop="category">
+                                    <template #default="{ row }">{{ UserCategory.find(u=>u.value===row.category).label ||'未知' }}</template>
+                                </el-table-column>
                                 <el-table-column label="所属部门" prop="dept"></el-table-column>
+                                <el-table-column label="手机号码" prop="mobile"></el-table-column>
                                 <el-table-column label="职位" prop="post"></el-table-column>
                                 <el-table-column label="级别" prop="level"></el-table-column>
                                 <el-table-column label="分工" prop="divisionOfLabour"></el-table-column>
                                 <!-- <el-table-column label="上级" prop="realName"></el-table-column> -->
-                                <el-table-column label="手机号码" prop="mobile"></el-table-column>
                                 <el-table-column label="创建时间" prop="createDate" width="200"></el-table-column>
                                 <el-table-column label="操作" width="150">
                                     <template #default="scope">
@@ -142,9 +144,11 @@
                 </el-row>
                 <el-row>
                   <el-col :span="12">
-                    <el-form-item label="出生日期" prop="birthdate">
-                        <el-date-picker v-model="userForm.birthdate" type="date" placeholder="请选择出生日期" style="width: 100%;"  @change="handleChangeDate"></el-date-picker>
-                    </el-form-item>
+                        <el-form-item label="类型" prop="category">
+                            <el-select v-model="userForm.category" placeholder="请选择类型" style="width: 100%;">
+                                <el-option v-for="item in UserCategory" :label="item.label" :value="item.value"></el-option>
+                            </el-select>
+                        </el-form-item>
                   </el-col>
                   <el-col :span="12">
                     <el-form-item label="手机号码" prop="mobile">
@@ -182,11 +186,20 @@
                         <el-input v-model="userForm.level" placeholder="请输入级别" />
                     </el-form-item>
                   </el-col>
-                  <!-- <el-col :span="12">
-                    <el-form-item label="上级" prop="jjj">
-                      <el-input v-model="userForm.jjj" placeholder="请输入上级" />
+                </el-row>
+                <el-row>
+                  <el-col :span="24">
+                    <el-form-item label="人物简介" prop="introduction">
+                        <el-input type="textarea" :rows="2" v-model="userForm.introduction" placeholder="请输入人物简介" />
+                    </el-form-item>
+                  </el-col>
+                </el-row>
+                <el-row>
+                  <el-col :span="24">
+                    <el-form-item label="人物故事" prop="userStory">
+                        <el-input type="textarea" :rows="2" v-model="userForm.userStory" placeholder="请输入人物故事" />
                     </el-form-item>
-                  </el-col> -->
+                  </el-col>
                 </el-row>
             </el-form>
             <div class="demo-drawer__footer" style="display: flex;justify-content: end;">
@@ -197,35 +210,30 @@
         <el-drawer title="团队详情" :visible.sync="teamShow" append-to-body size="60%" @close="teamShow=false">
             <el-form ref="teamRef" :model="teamForm" :rules="teamRules" label-width="120px" style="width: 90%;margin: 0 auto;">
                 <el-row>
-                  <!-- <el-col :span="12">
-                    <el-form-item label="所属项目" prop="realName">
-                      <el-input v-model="teamForm.realName" placeholder="请输入所属项目" />
-                    </el-form-item>
-                  </el-col> -->
                   <el-col :span="24">
-                    <el-form-item label="团队名称" prop="teamName">
-                        <el-input v-model="teamForm.teamName" placeholder="请输入团队名称" />
+                    <el-form-item label="所属公司名称" prop="companyName">
+                        <el-input v-model="teamForm.companyName" placeholder="请输入所属公司名称" disabled/>
                     </el-form-item>
                   </el-col>
                 </el-row>
                 <el-row>
                   <el-col :span="24">
-                    <el-form-item label="团队介绍" prop="introduce">
-                        <el-input type="textarea" v-model="teamForm.introduce" placeholder="请输入团队介绍" />
+                    <el-form-item label="团队类型" prop="teamName">
+                        <el-input v-model="teamForm.teamName" placeholder="请输入团队类型" />
                     </el-form-item>
                   </el-col>
                 </el-row>
                 <el-row>
                   <el-col :span="24">
-                    <el-form-item label="工作任务" prop="workTasks">
-                        <el-input type="textarea" v-model="teamForm.workTasks" placeholder="请输入工作任务" />
+                    <el-form-item label="团队故事" prop="teamStory">
+                        <el-input type="textarea" v-model="teamForm.teamStory" placeholder="请输入团队故事" />
                     </el-form-item>
                   </el-col>
                 </el-row>
                 <el-row>
                   <el-col :span="24">
-                    <el-form-item label="团队项目情况" prop="projectSituation">
-                        <el-input type="textarea" v-model="teamForm.projectSituation" placeholder="请输入团队项目情况" />
+                    <el-form-item label="项目阶段及状态" prop="projectSituation">
+                        <el-input type="textarea" v-model="teamForm.projectSituation" placeholder="请输入项目阶段及状态" />
                     </el-form-item>
                   </el-col>
                 </el-row>
@@ -237,8 +245,8 @@
         </el-drawer>
         <el-drawer title="项目详情" :visible.sync="programShow" append-to-body size="60%" @close="programShow=false">
             <el-form ref="programRef" :model="programForm" :rules="programRules" label-width="140px" style="width: 90%;margin: 0 auto;">
-                <el-form-item label="企业名称" prop="enterpriseName">
-                    <el-input v-model="programForm.enterpriseName" placeholder="请输入企业名称" />
+                <el-form-item label="公司名称" prop="enterpriseName">
+                    <el-input v-model="programForm.enterpriseName" placeholder="请输入公司名称" />
                 </el-form-item>
                 <el-form-item label="统一社会信用代码" prop="creditCode">
                     <el-input v-model="programForm.creditCode" placeholder="请输入统一社会信用代码" />
@@ -311,6 +319,9 @@
                         </div>
                     </el-popover>
                 </el-form-item>
+                <el-form-item label="公司背景" prop="background">
+                    <el-input type="textarea" :rows="2" v-model="programForm.background" placeholder="请输入公司背景" />
+                </el-form-item>
             </el-form>
             <div class="demo-drawer__footer" style="display: flex;justify-content: end;">
                 <el-button :loading="buttonLoading4" type="primary" @click="submitForm4" v-hasPermi="['core:project:save']">保 存</el-button>
@@ -321,139 +332,30 @@
             <el-form :model="programTeamForm" :rules="programTeamRules" ref="programTeamRef" label-width="130px" style="margin: 0 25px;">
                 <el-row style="width: 100%;">
                     <el-col :span="12">
-                        <el-form-item label="团队名称" prop="teamName">
-                            <el-input v-model="programTeamForm.teamName" clearable placeholder="请输入团队名称"></el-input>
+                        <el-form-item label="所属公司名称" prop="companyName">
+                            <el-input v-model="programTeamForm.companyName" clearable placeholder="请输入所属公司名称" disabled></el-input>
                         </el-form-item>
                     </el-col>
                     <el-col :span="12">
-                        <el-form-item label="工作任务" prop="workTasks">
-                            <el-input v-model="programTeamForm.workTasks" clearable placeholder="请输入工作任务"></el-input>
+                        <el-form-item label="团队类型" prop="teamName">
+                            <el-input v-model="programTeamForm.teamName" clearable placeholder="请输入团队类型"></el-input>
                         </el-form-item>
                     </el-col>
                 </el-row>
                 <el-row style="width: 100%;">
                     <el-col :span="24">
-                        <el-form-item label="团队介绍" prop="introduce">
-                            <el-input type="textarea" v-model="programTeamForm.introduce" clearable placeholder="请输入团队介绍"></el-input>
+                        <el-form-item label="团队故事" prop="teamStory">
+                            <el-input type="textarea" v-model="programTeamForm.teamStory" clearable placeholder="请输入团队故事"></el-input>
                         </el-form-item>
                     </el-col>
                 </el-row>
                 <el-row style="width: 100%;">
                     <el-col :span="24">
-                        <el-form-item label="团队项目情况" prop="projectSituation">
-                            <el-input type="textarea" v-model="programTeamForm.projectSituation" clearable placeholder="请输入团队项目情况"></el-input>
+                        <el-form-item label="项目阶段及状态" prop="projectSituation">
+                            <el-input type="textarea" v-model="programTeamForm.projectSituation" clearable placeholder="请输入项目阶段及状态"></el-input>
                         </el-form-item>
                     </el-col>
                 </el-row>
-                <!-- <div class="f_title" style="margin-top: 31px;">添加成员</div>
-                <el-row style="width: 100%;">
-                    <el-col :span="24">
-                        <el-form-item label="团队成员" prop="">
-                            <div class="f_type">
-                                <el-radio-group v-model="addType">
-                                    <el-radio :label="1">批量导入</el-radio>
-                                    <el-radio :label="2">手动录入</el-radio>
-                                </el-radio-group>
-                            </div>
-                            <template v-if="addType===1">
-                                <div class="f_pldr">
-                                    <div class="fp_box">
-                                        <div class="fpb_pre">
-                                            <div class="fpbp_btn" @click="handleDownloadExcel" v-hasPermi="['core:project:downloadExcel']">下载Excel示例文件</div>
-                                        </div>
-                                        <img src="@/assets/images/agent/arrow_right_two.png">
-                                        <div class="fpb_pre sc">
-                                            <el-upload
-                                                :action="uploadUrl2"
-                                                :headers="uploadHeaders"
-                                                :on-success="uploadFileSuccess"
-                                                :before-upload="beforeAvatarUpload"
-                                                :limit="1">
-                                                <div class="fpbp_btn" v-hasPermi="['core:project:uploadExcel']">上传Excel文件</div>
-                                            </el-upload> 
-                                        </div>
-                                    </div>
-                                    <p>
-                                        1、Excel文件后缀名为xls或者xlsx,文件中所含列数请勿超过20列<br>
-                                        2、模版中用户姓名为必填,其他为选填,且不能对已有字段进行删除、修改<br>
-                                        3、部门:上下级部门间用“/”符号隔开,且从最上级部门开始,例如“产品部门/设计”。若存在属于多个部门的情况,不同部门之间用 ; 隔开。
-                                    </p>
-                                </div>
-                            </template>
-                            <template v-else-if="addType===2">
-                                <div class="f_sdlr">
-                                    <div class="fs_item" v-for="(item,index) in programTeamForm.users" :key="index">
-                                        <el-form :model="programTeamForm.users[index]" label-width="100px">
-                                            <el-row style="width: 100%;">
-                                                <el-col :span="8">
-                                                    <el-form-item label="姓名" prop="realName">
-                                                        <el-input v-model="programTeamForm.users[index].realName" clearable placeholder="请输入"></el-input>
-                                                    </el-form-item>
-                                                </el-col>
-                                                <el-col :span="8">
-                                                    <el-form-item label="性别" prop="gender">
-                                                        <el-select v-model="programTeamForm.users[index].gender" placeholder="请选择" style="width: 100%;">
-                                                            <el-option label="男" :value="0"></el-option>
-                                                            <el-option label="女" :value="1"></el-option>
-                                                            <el-option label="保密" :value="2"></el-option>
-                                                        </el-select>
-                                                    </el-form-item>
-                                                </el-col>
-                                                <el-col :span="8">
-                                                    <el-form-item label="出生日期" prop="birthdate">
-                                                        <el-date-picker v-model="programTeamForm.users[index].birthdate" type="date" placeholder="请选择" style="width: 100%;" @change="e=>handleDealDate(e,index)"></el-date-picker>
-                                                    </el-form-item>
-                                                </el-col>
-                                            </el-row>
-                                            <el-row style="width: 100%;">
-                                                <el-col :span="8">
-                                                    <el-form-item label="手机号码" prop="mobile">
-                                                        <el-input type="number" v-model="programTeamForm.users[index].mobile" clearable placeholder="请输入"></el-input>
-                                                    </el-form-item>
-                                                </el-col>
-                                                <el-col :span="8">
-                                                    <el-form-item label="所属部门" prop="dept">
-                                                        <el-input v-model="programTeamForm.users[index].dept" clearable placeholder="请输入"></el-input>
-                                                    </el-form-item>
-                                                </el-col>
-                                                <el-col :span="8">
-                                                    <el-form-item label="职位" prop="post">
-                                                        <el-input v-model="programTeamForm.users[index].post" clearable placeholder="请输入"></el-input>
-                                                    </el-form-item>
-                                                </el-col>
-                                            </el-row>
-                                            <el-row style="width: 100%;">
-                                                <el-col :span="8">
-                                                    <el-form-item label="分工" prop="divisionOfLabour">
-                                                        <el-input v-model="programTeamForm.users[index].divisionOfLabour" clearable placeholder="请输入"></el-input>
-                                                    </el-form-item>
-                                                </el-col>
-                                                <el-col :span="8">
-                                                    <el-form-item label="教育程度" prop="education">
-                                                        <el-input v-model="programTeamForm.users[index].education" clearable placeholder="请输入"></el-input>
-                                                    </el-form-item>
-                                                </el-col>
-                                                <el-col :span="8">
-                                                    <el-form-item label="级别" prop="level">
-                                                        <el-input v-model="programTeamForm.users[index].level" clearable placeholder="请输入"></el-input>
-                                                    </el-form-item>
-                                                </el-col>
-                                            </el-row>
-                                            <el-row style="width: 100%;">
-                                                <el-col :span="8">
-                                                    <el-form-item label="" prop="">
-                                                        <div class="fs_add del" @click="handleDeleteItem(item,index)">x 删除</div>
-                                                    </el-form-item>
-                                                </el-col>
-                                            </el-row>
-                                        </el-form>
-                                    </div>
-                                    <div class="fs_add" @click="handleAddItem">+ 添加</div>
-                                </div>
-                            </template>
-                        </el-form-item>
-                    </el-col>
-                </el-row> -->
             </el-form>
             <div class="demo-drawer__footer" style="display: flex;justify-content: end;">
                 <el-button :loading="buttonLoading6" type="primary" @click="submitForm6" v-hasPermi="['core:team:save']">保 存</el-button>
@@ -468,7 +370,7 @@
     import { ref, reactive, getCurrentInstance,onMounted } from 'vue'
     import { useRegion } from "@/mixins/region-module";
     const { proxy } = getCurrentInstance();
-    const { companyIndustry, staffSize} = proxy.useDict("companyIndustry", "staffSize");
+    const { companyIndustry, staffSize, UserCategory} = proxy.useDict("companyIndustry", "staffSize", "UserCategory");
     const {
         provinceOptions,
         cityOptions,
@@ -535,7 +437,10 @@
         divisionOfLabour:'',
         post:'',
         level:'',
-        userType:2
+        userType:2,
+        category:'',
+        introduction:'',
+        userStory:''
     });
     const userRules = ref({
         realName: [
@@ -565,6 +470,15 @@
         ],
         level:[
             { required: true, message: '请输入级别', trigger: 'blur' }
+        ],
+        category:[
+            { required: true, message: '请选择成员类型', trigger: 'change' }
+        ],
+        introduction:[
+            { required: true, message: '请输入成员简介', trigger: 'blur' }
+        ],
+        userStory:[
+            { required: true, message: '请输入成员故事', trigger: 'blur' }
         ]
     });
     const buttonLoading2 = ref(false);
@@ -573,23 +487,28 @@
     const teamForm = ref({
         id:'',
         enterpriseId:'',
+        companyName:'',
         teamName:'',
-        introduce:'',
+        teamStory:'',
         workTasks:'',
-        projectSituation:''
+        projectSituation:'',
+        background:''
     });
     const teamRules = ref({
         teamName: [
-            { required: true, message: '请输入团队名称', trigger: 'blur' }
+            { required: true, message: '请输入所属公司名称', trigger: 'blur' }
         ],
-        introduce: [
-            { required: true, message: '请输入团队介绍', trigger: 'blur' }
+        teamStory: [
+            { required: true, message: '请输入团队故事', trigger: 'blur' }
         ],
         workTasks: [
             { required: true, message: '请输入工作任务', trigger: 'blur' }
         ],
         projectSituation: [
-            { required: true, message: '请输入团队项目情况', trigger: 'blur' }
+            { required: true, message: '请输入项目阶段及状态', trigger: 'blur' }
+        ],
+        background:[
+            { required: true, message: '请输入团队背景', trigger: 'blur' }
         ]
     });
     const buttonLoading3 = ref(false);
@@ -597,7 +516,6 @@
         id:'',
         enterpriseName: '',
         creditCode: '',
-        areaCode: '',
         industryCode: '',
         staffSizeCode: '',
         province:'',
@@ -608,7 +526,7 @@
     });
     const programRules = ref({
         enterpriseName: [
-            { required: true, message: '请输入企业名称', trigger: 'blur' }
+            { required: true, message: '请输入公司名称', trigger: 'blur' }
         ],
         creditCode: [
             { required: true, message: '请输入统一社会信用代码', trigger: 'blur' }
@@ -640,25 +558,26 @@
     const programTeamForm = ref({
         id:'',
         enterpriseId:'',
+        companyName:'',
         teamName:'',
         workTasks:'',
-        introduce:'',
+        teamStory:'',
         projectSituation:'',
         file:'',
         users:[]
     });
     const programTeamRules = ref({
-        teamName: [
-            { required: true, message: '请输入团队名称', trigger: 'blur' }
+        companyName: [
+            { required: true, message: '请输入所属公司名称', trigger: 'blur' }
         ],
-        workTasks: [
-            { required: true, message: '请输入工作任务', trigger: 'blur' }
+        teamName: [
+            { required: true, message: '请输入团队类型', trigger: 'blur' }
         ],
-        introduce: [
-            { required: true, message: '请输入团队介绍', trigger: 'blur' }
+        teamStory: [
+            { required: true, message: '请输入团队故事', trigger: 'blur' }
         ],
         projectSituation: [
-            { required: true, message: '请输入团队项目情况', trigger: 'blur' }
+            { required: true, message: '请输入项目阶段及状态', trigger: 'blur' }
         ]
     });
     const programTeamRef = ref(null);
@@ -675,6 +594,7 @@
 
     const handleExpand = (item, index) => {
         programid.value = item.id;
+        programTeamForm.value.companyName = item.enterpriseName;
         item.expand = !item.expand;
         companyList.value.forEach(c => { c.select = false; });
         item.select = true;
@@ -718,15 +638,15 @@
         getUserList();
     }
 
-    const handleTeamDetail = team => {
+    const handleTeamDetail = (team,item) => {
         getProgramTeamInfo(team.teamId).then(res=>{
             if(res.code!==0) return proxy.$message.error(res.msg);
             teamForm.value = {...teamForm.value,...res.data};
+            teamForm.value.companyName = item.enterpriseName;
             teamShow.value = true;
         })
     }
     const handleTeamDelete = async team => {
-        console.log(team);
         await proxy.$modal.confirm('确认删除团队【' + team.teamName + '】吗?').finally(() => buttonLoading3.value = false);
         deleteProgramTeam(team.teamId).then(res=>{
             if(res.code === 0) proxy?.$modal.msgSuccess("删除成功");
@@ -791,7 +711,10 @@
             divisionOfLabour:'',
             post:'',
             level:'',
-            userType:2
+            userType:2,
+            category:'',
+            introduction:'',
+            userStory:''
         };
         proxy.resetForm("userRef");
     }
@@ -901,7 +824,7 @@
     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;
+            coachList.value = res.data.list.filter(d=>d.userType=='1');
             coachList.value.forEach(item => {
                 item.checked = false;
             })
@@ -927,6 +850,7 @@
             if (valid) {
                 buttonLoading5.value = true;
                 programForm.value.id = programid.value;
+                programForm.value.areaCode = `${programForm.value.province}-${programForm.value.city}-${programForm.value.area}`;
                 updateCoachProgram(programForm.value).then((res)=>{
                     if(res.code!==0) return proxy.$message.error(res.msg);
                     else proxy?.$modal.msgSuccess("保存成功");

+ 55 - 25
src/views/modules/agent/program/addTeam.vue

@@ -27,8 +27,8 @@
                 <template v-if="step===1">
                     <el-form ref="programRef" :model="programForm" :rules="programRules" label-width="140px" style="width: 90%;margin: 0 auto;">
                         <div class="f_title">创建新项目</div>
-                        <el-form-item label="企业名称" prop="enterpriseName">
-                            <el-input v-model="programForm.enterpriseName" placeholder="请输入企业名称" />
+                        <el-form-item label="公司名称" prop="enterpriseName">
+                            <el-input v-model="programForm.enterpriseName" placeholder="请输入公司名称" />
                         </el-form-item>
                         <el-form-item label="统一社会信用代码" prop="creditCode">
                             <el-input v-model="programForm.creditCode" placeholder="请输入统一社会信用代码" />
@@ -69,6 +69,9 @@
                                 <p>{{ cocahNames }}</p>
                             </div>
                         </el-form-item>
+                        <el-form-item label="公司背景" prop="background">
+                            <el-input type="textarea" :rows="2" placeholder="请输入公司背景" v-model="programForm.background"></el-input>
+                        </el-form-item>
                     </el-form>
                 </template>
                 <template v-else>
@@ -76,27 +79,27 @@
                         <div class="f_title">添加团队</div>
                         <el-row style="width: 100%;">
                             <el-col :span="12">
-                                <el-form-item label="团队名称" prop="teamName">
-                                    <el-input v-model="programForm.team.teamName" clearable placeholder="请输入团队名称"></el-input>
+                                <el-form-item label="所属公司名称" prop="companyName">
+                                    <el-input v-model="programForm.team.companyName" clearable placeholder="请输入所属公司名称" disabled></el-input>
                                 </el-form-item>
                             </el-col>
                             <el-col :span="12">
-                                <el-form-item label="工作任务" prop="workTasks">
-                                    <el-input v-model="programForm.team.workTasks" clearable placeholder="请输入工作任务"></el-input>
+                                <el-form-item label="团队类型" prop="teamName">
+                                    <el-input v-model="programForm.team.teamName" clearable placeholder="请输入团队类型"></el-input>
                                 </el-form-item>
                             </el-col>
                         </el-row>
                         <el-row style="width: 100%;">
                             <el-col :span="24">
-                                <el-form-item label="团队介绍" prop="introduce">
-                                    <el-input type="textarea" v-model="programForm.team.introduce" clearable placeholder="请输入团队介绍"></el-input>
+                                <el-form-item label="团队故事" prop="teamStory">
+                                    <el-input type="textarea" v-model="programForm.team.teamStory" clearable placeholder="请输入团队故事"></el-input>
                                 </el-form-item>
                             </el-col>
                         </el-row>
                         <el-row style="width: 100%;">
                             <el-col :span="24">
-                                <el-form-item label="团队项目情况" prop="projectSituation">
-                                    <el-input type="textarea" v-model="programForm.team.projectSituation" clearable placeholder="请输入团队项目情况"></el-input>
+                                <el-form-item label="项目阶段及状态" prop="projectSituation">
+                                    <el-input type="textarea" v-model="programForm.team.projectSituation" clearable placeholder="请输入项目阶段及状态"></el-input>
                                 </el-form-item>
                             </el-col>
                         </el-row>
@@ -155,8 +158,10 @@
                                                             </el-form-item>
                                                         </el-col>
                                                         <el-col :span="8">
-                                                            <el-form-item label="出生日期" prop="birthdate">
-                                                                <el-date-picker v-model="programForm.team.users[index].birthdate" type="date" placeholder="请选择" style="width: 100%;" @change="e=>handleDealDate(e,index)"></el-date-picker>
+                                                            <el-form-item label="类型" prop="category">
+                                                                <el-select v-model="programForm.team.users[index].category" placeholder="请选择" style="width: 100%;">
+                                                                    <el-option v-for="item in UserCategory" :label="item.label" :value="item.value"></el-option>
+                                                                </el-select>
                                                             </el-form-item>
                                                         </el-col>
                                                     </el-row>
@@ -172,8 +177,8 @@
                                                             </el-form-item>
                                                         </el-col>
                                                         <el-col :span="8">
-                                                            <el-form-item label="职位" prop="post">
-                                                                <el-input v-model="programForm.team.users[index].post" clearable placeholder="请输入"></el-input>
+                                                            <el-form-item label="教育程度" prop="education">
+                                                                <el-input v-model="programForm.team.users[index].education" clearable placeholder="请输入"></el-input>
                                                             </el-form-item>
                                                         </el-col>
                                                     </el-row>
@@ -184,8 +189,8 @@
                                                             </el-form-item>
                                                         </el-col>
                                                         <el-col :span="8">
-                                                            <el-form-item label="教育程度" prop="education">
-                                                                <el-input v-model="programForm.team.users[index].education" clearable placeholder="请输入"></el-input>
+                                                            <el-form-item label="职位" prop="post">
+                                                                <el-input v-model="programForm.team.users[index].post" clearable placeholder="请输入"></el-input>
                                                             </el-form-item>
                                                         </el-col>
                                                         <el-col :span="8">
@@ -194,6 +199,20 @@
                                                             </el-form-item>
                                                         </el-col>
                                                     </el-row>
+                                                    <el-row style="width: 100%;">
+                                                        <el-col :span="24">
+                                                            <el-form-item label="人物简介" prop="introduction">
+                                                                <el-input v-model="programForm.team.users[index].introduction" type="textarea" :rows="2" clearable placeholder="请输入"></el-input>
+                                                            </el-form-item>
+                                                        </el-col>
+                                                    </el-row>
+                                                    <el-row style="width: 100%;">
+                                                        <el-col :span="24">
+                                                            <el-form-item label="人物故事" prop="userStory">
+                                                                <el-input v-model="programForm.team.users[index].userStory" type="textarea" :rows="2" clearable placeholder="请输入"></el-input>
+                                                            </el-form-item>
+                                                        </el-col>
+                                                    </el-row>
                                                     <el-row style="width: 100%;">
                                                         <el-col :span="8">
                                                             <el-form-item label="" prop="">
@@ -253,7 +272,7 @@
     import { getCoachList,addCoachProgram,getCoachProgramInfo } from "@/api/agent/index";
     import { useRegion } from "@/mixins/region-module";
     const { proxy } = getCurrentInstance();
-    const { companyIndustry, staffSize} = proxy.useDict("companyIndustry", "staffSize");
+    const { companyIndustry, staffSize, UserCategory} = proxy.useDict("companyIndustry", "staffSize", "UserCategory");
     const {
         provinceOptions,
         cityOptions,
@@ -287,11 +306,13 @@
         area:'',
         areaCode:'',
         coachList:[],
+        background:'',
         team:{
             id:'',
+            companyName:'',
             teamName:'',
             workTasks:'',
-            introduce:'',
+            teamStory:'',
             projectSituation:'',
             file:'',
             users:[]
@@ -299,7 +320,7 @@
     });
     const programRules = ref({
         enterpriseName: [
-            { required: true, message: '请输入企业名称', trigger: 'blur' }
+            { required: true, message: '请输入公司名称', trigger: 'blur' }
         ],
         creditCode: [
             { required: true, message: '请输入统一社会信用代码', trigger: 'blur' }
@@ -312,23 +333,29 @@
         ],
         area: [
             { required: true, message: '请选择所在地区', trigger: 'change' }
+        ],
+        background: [
+            { required: true, message: '请输入公司背景', trigger: 'change' }
         ]
     });
     const addType = ref(1)
     const programRef = ref(null)
     const teamDtoRef = ref(null)
     const rules = ref({
+        companyName: [
+            { required: true, message: '请输入所属公司', trigger: 'blur' }
+        ],
         teamName: [
-            { required: true, message: '请输入团队名称', trigger: 'blur' }
+            { required: true, message: '请输入团队类型', trigger: 'blur' }
         ],
         workTasks: [
             { required: true, message: '请输入工作任务', trigger: 'blur' }
         ],
-        introduce: [
-            { required: true, message: '请输入团队介绍', trigger: 'blur' }
+        teamStory: [
+            { required: true, message: '请输入团队故事', trigger: 'blur' }
         ],
         projectSituation: [
-            { required: true, message: '请输入团队项目情况', trigger: 'blur' }
+            { required: true, message: '请输入项目阶段及状态', trigger: 'blur' }
         ]
     })
 
@@ -362,6 +389,9 @@
             divisionOfLabour:'',
             education:'',
             level:'',
+            category:'',
+            introduction:'',
+            userStory:'',
         })
     }
 
@@ -374,9 +404,9 @@
             if (valid) {
                 programForm.value.areaCode = `${programForm.value.province}-${programForm.value.city}-${programForm.value.area}`;
                 if(programForm.value.coachList.length===0) return proxy.$message.warning('请至少选择一位教练');
-                console.log(programForm.value,'programForm')
                 step.value = 2;
                 topname.value = '添加团队及其成员';
+                programForm.value.team.companyName = programForm.value.enterpriseName;
             } else {
                 return false;
             }
@@ -409,7 +439,7 @@
     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;
+            coachList.value = res.data.list.filter(d=>d.userType=='1');
             coachList.value.forEach(item => {
                 item.checked = false;
             })

+ 4 - 3
src/views/modules/agent/questionnaire.vue

@@ -27,10 +27,10 @@
                             <img src="@/assets/images/agent/send_mini.png">
                             <span>查看进度</span>
                         </div>
-                        <!-- <div class="lr_pre adfac" @click="handleReport(item)">
+                        <div class="lr_pre adfac" v-hasPermi="['core:questionnaire:info']" @click="handleSchedule(item)">
                             <img src="@/assets/images/agent/report_mini.png">
-                            <span>查看报告</span>
-                        </div> -->
+                            <span>生成报告</span>
+                        </div>
                         <div class="lr_status" :class="{'jxz':item.status===0,'ywc':item.status===1}">{{ item.status===0?'进行中':(item.status===1?'已完成':'未知') }}</div>
                     </div>
                 </div>
@@ -75,6 +75,7 @@
                 questionnaireName: item.questionnaireName,
                 questionnaireName: item.title,
                 enterpriseName: item.enterpriseName,
+                teamName: item.teamName,
                 startTime: item.startTime,
                 endTime: item.endTime,
                 userNum: item.userNum,

+ 106 - 24
src/views/modules/agent/questionnaire/schedule.vue

@@ -6,20 +6,21 @@
         </div>
         <div class="content">
             <div class="c_top adfacjb">
-                <div class="ct_l adfac">
-                    <div class="cl_title">问卷作答进度</div>
-                    <div class="cl_pre">发布时间:<span>{{ questionnaireInfo.startTime }}</span></div>
-                    <div class="cl_pre">截止时间:<span>{{ questionnaireInfo.endTime }}</span></div>
-                    <div class="cl_pre">项目名称:<span>{{ questionnaireInfo.enterpriseName }}</span></div>
+                <div class="ct_l">
+                    <div class="cl_title">作答进度</div>
                 </div>
                 <div class="ct_r adfac">
-                    <template v-if="multipleSelection.length">
-                        <p>已选择:<span>{{ multipleSelection.length }}人</span></p>
-                        <el-button type="default" style="margin-left: 20px;" @click="handleCancel">取消</el-button>
-                    </template>
-                    <el-button type="primary" style="margin-left: 20px;" @click="handleReminds">批量提醒</el-button>
+                    <div class="eb_default" style="margin-left: 20px;" @click="handleReminds">批量提醒</div>
+                    <el-button type="primary" style="margin-left: 20px;" @click="handleMoreSingleReport">批量个人报告</el-button>
+                    <el-button type="primary" style="margin-left: 20px;" @click="handleTeamReport">生成团队报告</el-button>
                 </div>
             </div>
+            <div class="c_texts adfac">
+                <div class="cl_pre">公司名称:<span>{{ questionnaireInfo.enterpriseName }}</span></div>
+                <div class="cl_pre">团队类型:<span>{{ questionnaireInfo.teamName }}</span></div>
+                <div class="cl_pre">发布时间:<span>{{ questionnaireInfo.startTime }}</span></div>
+                <div class="cl_pre">截止时间:<span>{{ questionnaireInfo.endTime }}</span></div>
+            </div>
             <div class="c_nums adfac">
                 <div class="cn_pre">团队人数:<span>{{ questionnaireInfo.userNum }}</span></div>
                 <div class="cn_pre">已作答:<span>{{ questionnaireInfo.finishNum }}</span> 人</div>
@@ -31,6 +32,9 @@
                 <el-table-column label="性别" prop="gender">
                     <template #default="{ row }">{{ genderCfg[row.gender]||'' }}</template>
                 </el-table-column>
+                <el-table-column label="类型" prop="category">
+                    <template #default="{ row }">{{ UserCategory.find(u=>u.value===row.category)?.label ||'未知' }}</template>
+                </el-table-column>
                 <el-table-column label="手机号码" prop="mobile"></el-table-column>
                 <el-table-column label="所属部门" prop="dept"></el-table-column>
                 <el-table-column label="职位" prop="post"></el-table-column>
@@ -49,12 +53,23 @@
                 <el-table-column label="提交时间" prop="submitTime"></el-table-column>
                 <el-table-column label="操作" width="150">
                     <template #default="scope">
-                        <el-button link type="text" size="mini" @click="handleReport(scope.row)" v-if="scope.row.status==='1'">查看报告</el-button>
+                        <el-button link type="text" size="mini" @click="handleReport(scope.row)" v-if="scope.row.status==='1'">生成报告</el-button>
                         <el-button link type="text" size="mini" @click="handleRemind(scope.row)" v-if="scope.row.status==='0'" v-hasPermi="['core:questionnaire:remind']">提醒作答</el-button>
                     </template>
                 </el-table-column>
             </el-table>
         </div>
+        <div class="cus_dialog adffcacjc" v-if="reportShow" @click.prevent="closeReportAlert">
+            <div class="cus_dialog_content adffcac">
+                <div class="cdc_title">生成报告</div>
+                <i class="el-icon-close cdc_close" style="font-size: 20px;color: #393939;" @click.stop="closeReportAlert"></i>
+                <img src="@/assets/images/agent/report.gif">
+                <p>{{ questionnaireInfo.enterpriseName }} - {{ questionnaireInfo.teamName }}</p>
+                <p>报告正在生成中,预计需要时间<span>7-10分钟</span></p>
+                <p>可去报告管理中查看结果~</p>
+                <div class="zt_btn" @click.stop="closeReportAlert">我知道了</div>
+            </div>
+        </div>
     </div>
 </template>
 
@@ -62,12 +77,15 @@
     import { ref, getCurrentInstance, onMounted, nextTick } from 'vue'
     const { proxy } = getCurrentInstance();
     import { getQuestionnaireSchedule } from '@/api/agent/index.js'
+    const { UserCategory} = proxy.useDict("UserCategory");
     
     const genderCfg = { 0: '男', 1: '女', 2: '保密' }
     const questionnaireInfo = ref({})
     const multipleSelection = ref([])
     const userList = ref([{status:1},{status:0}])
     const loading = ref(false)
+    const reportShow = ref(false)
+
     const handleBack = () => {
         proxy.$router.go(-1)
     }
@@ -79,7 +97,7 @@
         proxy.$refs.multipleTable.clearSelection();
     }
     const handleReminds = () => {
-        if(!multipleSelection.value.length) return proxy.$message({ type: 'warning', message: '请选需要提醒的人员' })
+        if(!multipleSelection.value.length) return proxy.$message({ type: 'warning', message: '请选需要提醒的人员' })
         proxy.$confirm('是否确认发送通知提醒??', '警告', {
             confirmButtonText: '确定',
             confirmButtonColor:'#761E6A',
@@ -89,9 +107,25 @@
             
         })
     }
+    const handleMoreSingleReport = () => {
+        if(!multipleSelection.value.length) return proxy.$message({ type: 'warning', message: '请勾选需要生成报告的人员' })
+        setTimeout(()=>{
+            reportShow.value = true
+        },1000)
+    }
+
+    const handleTeamReport = () => {
+        setTimeout(()=>{
+            reportShow.value = true
+        },1000)
+    }
+
 
     const handleReport = (row) => {
-        proxy.$router.push({ path: '/agentQuestionnaireReport' })
+        // proxy.$router.push({ path: '/agentQuestionnaireReport' })
+        setTimeout(()=>{
+            reportShow.value = true
+        },1000)
     }
     const handleRemind = (row) => {
         proxy.$confirm('是否确认发送通知提醒??', '警告', {
@@ -114,6 +148,10 @@
         })
     }
 
+    const closeReportAlert = () => {
+        reportShow.value = false;
+    }
+
     onMounted(()=>{
         questionnaireInfo.value = proxy.$route.query;
         nextTick(()=>{
@@ -177,17 +215,6 @@
                         color: #252525;
                         line-height: 16px;
                     }
-                    .cl_pre{
-                        font-family: PingFang-SC, PingFang-SC;
-                        font-weight: bold;
-                        font-size: 16px;
-                        color: #808080;
-                        line-height: 16px;
-                        margin-left: 30px;
-                        span{
-                            color: #252525;
-                        }
-                    }
                 }
                 .ct_r{
                     p{
@@ -202,6 +229,21 @@
                     }
                 }
             }
+            .c_texts{
+                margin-top: 20px;
+                .cl_pre{
+                    width: 25%;
+                    font-family: PingFang-SC, PingFang-SC;
+                    font-weight: 400;
+                    font-size: 14px;
+                    color: #808080;
+                    line-height: 16px;
+                    span{
+                        color: #252525;
+                        margin-left: 10px;
+                    }
+                }
+            }
 
             .c_nums{
                 width: 100%;
@@ -259,4 +301,44 @@
             }
         }
     }
+
+    .cus_dialog_content{
+        width: 400px;
+        background: linear-gradient( 180deg, #FDF2FB 0%, #FFFFFF 100%);
+        border-radius: 6px;
+        padding: 36px 68px;
+        box-sizing: border-box;
+        position: relative;
+        .cdc_title{
+            font-family: PingFang-SC, PingFang-SC;
+            font-weight: bold;
+            font-size: 16px;
+            color: #252525;
+            line-height: 16px;
+            text-align: center;
+        }
+        .cdc_close{
+            position: absolute;
+            right: 30px;
+            top: 36px;
+            cursor: pointer;
+        }
+        img{
+            width: 100%;
+        }
+        p{
+            font-family: PingFangSC, PingFang SC;
+            font-weight: 400;
+            font-size: 14px;
+            color: #393939;
+            line-height: 24px;
+            text-align: center;
+            span{
+                color: #F31616;
+            }
+        }
+        .zt_btn{
+            margin-top: 40px;
+        }
+    }
 </style>