|
@@ -14,6 +14,7 @@
|
|
|
<el-option v-for="item in useAgentStore().questionnaireList" :key="item.id" :label="item.title" :value="item.id"/>
|
|
|
</el-select>
|
|
|
<el-select v-model="queryParams.status" placeholder="全部状态" style="width: 300px;" @change="getList" clearable>
|
|
|
+ <el-option label="待发布" :value="-1"></el-option>
|
|
|
<el-option label="进行中" :value="0"></el-option>
|
|
|
<el-option label="已完成" :value="1"></el-option>
|
|
|
</el-select>
|
|
@@ -22,7 +23,22 @@
|
|
|
<div class="l_item" v-for="(item, index) in dataList" :key="index">
|
|
|
<div class="li_top adfacjb">
|
|
|
<div class="lt_l">项目名称:{{ item.programName }}</div>
|
|
|
- <div class="lt_r adfac">
|
|
|
+ <div class="lt_r adfac" v-if="item.status===-1">
|
|
|
+ <div class="lr_pre adfac" @click="handleUpdate(item)">
|
|
|
+ <img src="@/assets/images/agent/send_mini.png">
|
|
|
+ <span>修改问卷</span>
|
|
|
+ </div>
|
|
|
+ <div class="lr_pre adfac" @click="handlePublish(item)">
|
|
|
+ <img src="@/assets/images/agent/send_mini.png">
|
|
|
+ <span>发布问卷</span>
|
|
|
+ </div>
|
|
|
+ <div class="lr_pre adfac" @click="handleDelete(item)">
|
|
|
+ <img src="@/assets/images/agent/report_mini.png">
|
|
|
+ <span>删除问卷</span>
|
|
|
+ </div>
|
|
|
+ <div class="lr_status dfb">待发布</div>
|
|
|
+ </div>
|
|
|
+ <div class="lt_r adfac" v-else>
|
|
|
<div class="lr_pre adfac" v-hasPermi="['core:questionnaire:info']" @click="handleSchedule(item)">
|
|
|
<img src="@/assets/images/agent/send_mini.png">
|
|
|
<span>查看进度</span>
|
|
@@ -40,7 +56,7 @@
|
|
|
<div class="li_time_person adf">
|
|
|
<div class="ltp">发布时间:{{ item.startTime }}</div>
|
|
|
<div class="ltp">截止时间:{{ item.endTime }}</div>
|
|
|
- <div class="ltp">团队成员:<span>{{ item.finishNum||0 }}/{{item.userNum||0}}</span>完成</div>
|
|
|
+ <div class="ltp">作答成员:<span>{{ item.finishNum||0 }}/{{item.userNum||0}}</span>完成</div>
|
|
|
<div class="ltp">发送人:{{ item.creatorName }}</div>
|
|
|
</div>
|
|
|
<div class="li_jd">
|
|
@@ -48,7 +64,7 @@
|
|
|
</div>
|
|
|
<div class="li_text adfacjb">
|
|
|
<span>完成情况</span>
|
|
|
- <span>{{ ((item.finishNum/item.userNum)*100).toFixed(0) }}%</span>
|
|
|
+ <span>{{ item.userNum?((item.finishNum/item.userNum)*100).toFixed(0):0 }}%</span>
|
|
|
</div>
|
|
|
</div>
|
|
|
<el-row style="display: flex;justify-content: center;">
|
|
@@ -64,13 +80,108 @@
|
|
|
</el-pagination>
|
|
|
</el-row>
|
|
|
</div>
|
|
|
+ <el-dialog width="40%" :visible.sync="show" title="修改问卷" @close="cancel">
|
|
|
+ <div class="content">
|
|
|
+ <div class="c_set">
|
|
|
+ <div class="cs_title" style="margin-top: 0;">选择项目成员</div>
|
|
|
+ <div class="cs_users adf">
|
|
|
+ <div class="cu_l adfacjb">
|
|
|
+ <img src="@/assets/images/agent/users_mini.png">
|
|
|
+ <div class="cul_add" @click="handleAddUser">+ 添加</div>
|
|
|
+ </div>
|
|
|
+ <div class="cu_r adfac">
|
|
|
+ <div class="cr_item adfacjb" v-for="(item,index) in params.persons" :key="index">
|
|
|
+ <span>{{ item.name }}</span>
|
|
|
+ <img src="@/assets/images/agent/remove_mini.png" @click="handleRemoveUser(item,index)">
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="cs_title">问卷回答设置</div>
|
|
|
+ <div class="cs_zd adfac">
|
|
|
+ <span>只允许作答</span>
|
|
|
+ <el-input-number v-model="params.answerSetting" :min="1" controls-position="right" style="margin: 0 9px;"></el-input-number>
|
|
|
+ <span>次</span>
|
|
|
+ </div>
|
|
|
+ <div class="cs_title">问卷作答时间设置</div>
|
|
|
+ <div class="cs_time">
|
|
|
+ <div class="ct_pre adfac">
|
|
|
+ <span>开始时间</span>
|
|
|
+ <el-date-picker v-model="params.startTime" type="datetime" placeholder="选择开始时间" style="width:311px;" @change="e=>handleChangeDatetime(e,'startTime')"></el-date-picker>
|
|
|
+ </div>
|
|
|
+ <div class="ct_pre adfac">
|
|
|
+ <span>截止时间</span>
|
|
|
+ <el-date-picker v-model="params.endTime" type="datetime" placeholder="选择截止时间" style="width:311px;" @change="e=>handleChangeDatetime(e,'endTime')"></el-date-picker>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="demo-drawer__footer" style="display: flex;justify-content: end;">
|
|
|
+ <el-button :loading="buttonLoading" type="primary" @click="submitForm">确 认</el-button>
|
|
|
+ <el-button @click="cancel" style="margin-right: 5%;">取 消</el-button>
|
|
|
+ </div>
|
|
|
+ </el-dialog>
|
|
|
+ <el-dialog width="790px" :visible.sync="userShow" title="选择成员" @close="userShow=false">
|
|
|
+ <div class="ed_coach adf">
|
|
|
+ <div class="ec_l">
|
|
|
+ <el-input placeholder="请输入成员名搜索" suffix-icon="el-icon-search" v-model="userName" style="width: 100%;"></el-input>
|
|
|
+ <template v-if="!checkShow">
|
|
|
+ <div class="ecl_gs">
|
|
|
+ <div class="eg_title">按项目选</div>
|
|
|
+ <div class="egt_item adfacjb" v-for="(item,index) in companyList" :key="index">
|
|
|
+ <div class="ei_l adffc" style="cursor: pointer;">
|
|
|
+ <div class="adfac">
|
|
|
+ <span @click="handleChooseUser(item)">{{ item.programName }}</span>
|
|
|
+ <span></span>
|
|
|
+ </div>
|
|
|
+ <div><span style="margin-left: 0;">{{ item.enterpriseName }}-{{ item.teamName }}</span></div>
|
|
|
+ </div>
|
|
|
+ <div class="ei_r" @click="handleChooseUser(item)">
|
|
|
+ <span>成员</span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ <template v-else>
|
|
|
+ <div class="ecl_company">
|
|
|
+ <i class="el-icon-arrow-left" @click="handleUserBack"></i>
|
|
|
+ {{ companyName }}
|
|
|
+ </div>
|
|
|
+ <el-checkbox :indeterminate="isIndeterminate" v-model="checkAll" @change="handleCheckAllChange" style="margin-top: 33px;">全选</el-checkbox>
|
|
|
+ <div class="ecl_cbs">
|
|
|
+ <el-checkbox v-model="user.checked" v-for="(user,index) in userList" :key="index" @change="handleChangeUser" style="margin-top: 24px;display: block;">{{ user.name }}</el-checkbox>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </div>
|
|
|
+ <div class="ec_r">
|
|
|
+ <div class="ecr_text">已选择({{ selectedUsers.length }}/<span>{{ userList.length }}</span>)</div>
|
|
|
+ <div class="ecr_names">
|
|
|
+ <div class="en_pre adfacjc" v-for="(item,index) in selectedUsers" :key="index">
|
|
|
+ <span>{{ item.name }}</span>
|
|
|
+ <img src="@/assets/images/agent/delete_mini.png" @click="handleDeleteUser(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>
|
|
|
+ </el-dialog>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
<script setup name="">
|
|
|
import { ref, getCurrentInstance, onMounted } from 'vue'
|
|
|
import {useAgentStore} from "@/store_v3/modules/agent";
|
|
|
- import { getTeamQuestionnaireList } from "@/api/agent/index.js";
|
|
|
+ import {
|
|
|
+ getTeamQuestionnaireList,
|
|
|
+ deleteQuestionnaireOne,
|
|
|
+ getQuestionnairePublishInfo,
|
|
|
+ getProgramList,
|
|
|
+ getCoachList,
|
|
|
+ publishQuestionnaireConfirm,
|
|
|
+ updateQuestionnairePublish
|
|
|
+ } from "@/api/agent/index.js";
|
|
|
const { proxy } = getCurrentInstance();
|
|
|
useAgentStore().getQuestionnaireData();
|
|
|
|
|
@@ -83,6 +194,170 @@
|
|
|
const total = ref(0)
|
|
|
const dataList = ref([])
|
|
|
|
|
|
+ const show = ref(false)
|
|
|
+ const params = ref({
|
|
|
+ questionnaireId:'',
|
|
|
+ programId:'',
|
|
|
+ teamId:'',
|
|
|
+ userIds:[],
|
|
|
+ persons:[],
|
|
|
+ memberInfos:[],
|
|
|
+ answerSetting:1,
|
|
|
+ startTime:'',
|
|
|
+ endTime:''
|
|
|
+ })
|
|
|
+ const userShow = ref(false)
|
|
|
+ const checkShow = ref(false)
|
|
|
+ const companyName = ref('')
|
|
|
+ const userName = ref('')
|
|
|
+ const companyList = ref([])
|
|
|
+ const userList = ref([])
|
|
|
+ const selectedUsers = ref([])
|
|
|
+ const checkAll = ref(false)
|
|
|
+ const isIndeterminate = ref(false)
|
|
|
+ const buttonLoading = ref(false)
|
|
|
+
|
|
|
+ const handleAddUser = () => {
|
|
|
+ userShow.value = true
|
|
|
+ getProgramList({page:1,limit:-1}).then(res=>{
|
|
|
+ if(res.code !==0) return proxy.$message({type:'warning',message:res.msg});
|
|
|
+ companyList.value = res.data.list.map(l=>{
|
|
|
+ return {
|
|
|
+ id:l.id,
|
|
|
+ programName:l.programName,
|
|
|
+ enterpriseName:l.enterpriseName,
|
|
|
+ teamName:l.teamName,
|
|
|
+ teamId:l.teamId
|
|
|
+ }
|
|
|
+ });
|
|
|
+ })
|
|
|
+ }
|
|
|
+ const handleChangeDatetime = (e,key) => {
|
|
|
+ params.value[key] = proxy.parseTime(new Date(e), '{yy}-{mm}-{dd} {hh}:{ii}:{ss}');
|
|
|
+ }
|
|
|
+ const handleRemoveUser = (item,index) => {
|
|
|
+ params.value.persons.splice(index,1);
|
|
|
+ params.value.userIds = params.value.persons.map(l=>l.id);
|
|
|
+ }
|
|
|
+ const handleChooseUser = (item) => {
|
|
|
+ params.value.programId = item.id;
|
|
|
+ params.value.teamId = item.teamId;
|
|
|
+ getCoachList({teamId:item.teamId,page:1,limit:-1}).then(res=>{
|
|
|
+ if(res.code!==0) return proxy.$message({type:'warning',message:res.msg});
|
|
|
+ userList.value = res.data.list.map(l=>{
|
|
|
+ return {id:l.id,name:l.realName,checked:false}
|
|
|
+ })
|
|
|
+ })
|
|
|
+
|
|
|
+ checkShow.value = true
|
|
|
+ companyName.value = item.programName
|
|
|
+ }
|
|
|
+ const handleUserBack = () => {
|
|
|
+ checkShow.value = false
|
|
|
+ companyName.value = ''
|
|
|
+ }
|
|
|
+ const handleCheckAllChange = (val) => {
|
|
|
+ selectedUsers.value = val ? JSON.parse(JSON.stringify(userList.value)) : [];
|
|
|
+ isIndeterminate.value = false;
|
|
|
+ userList.value.forEach(item => item.checked = val)
|
|
|
+ }
|
|
|
+ const handleChangeUser = () => {
|
|
|
+ let trues = userList.value.filter(item => item.checked).length;
|
|
|
+ if(trues>0&&trues<userList.value.length) isIndeterminate.value = true;
|
|
|
+ else isIndeterminate.value = false;
|
|
|
+ if(trues===userList.value.length) checkAll.value = true;
|
|
|
+ else checkAll.value = false;
|
|
|
+
|
|
|
+ selectedUsers.value = userList.value.filter(item => item.checked);
|
|
|
+ }
|
|
|
+ const handleDeleteUser = (item,index) => {
|
|
|
+ let i = userList.value.findIndex(c => c.id === item.id);
|
|
|
+ if(i>-1) userList.value[i].checked = false;
|
|
|
+ selectedUsers.value.splice(index,1);
|
|
|
+
|
|
|
+ let trues = userList.value.filter(item => item.checked).length;
|
|
|
+ if(trues>0&&trues<userList.value.length) isIndeterminate.value = true;
|
|
|
+ else isIndeterminate.value = false;
|
|
|
+ if(trues===userList.value.length) checkAll.value = true;
|
|
|
+ else checkAll.value = false;
|
|
|
+ }
|
|
|
+ const submitForm2 = () => {
|
|
|
+ if(selectedUsers.value.length===0) return proxy.$message.warning('请至少选择一位成员')
|
|
|
+ params.value.persons = JSON.parse(JSON.stringify(selectedUsers.value));
|
|
|
+ params.value.userIds = params.value.persons.map(l=>l.id);
|
|
|
+ checkAll.value = false;
|
|
|
+ isIndeterminate.value = false;
|
|
|
+ selectedUsers.value = [];
|
|
|
+ userList.value = [];
|
|
|
+ checkShow.value = false;
|
|
|
+ userShow.value = false;
|
|
|
+ }
|
|
|
+ const cancel2 = () => {
|
|
|
+ userShow.value = false;
|
|
|
+ }
|
|
|
+ const cancel = () => {
|
|
|
+ show.value = false;
|
|
|
+ }
|
|
|
+ const submitForm = () => {
|
|
|
+ if(buttonLoading.value) return
|
|
|
+ buttonLoading.value = true;
|
|
|
+
|
|
|
+ if(params.value.userIds.length === 0){
|
|
|
+ proxy.$message({type:'warning',message:'请选择项目成员'});
|
|
|
+ buttonLoading.value = false;
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if(!params.value.startTime || !params.value.endTime){
|
|
|
+ proxy.$message({type:'warning',message:'请设置问卷作答时间'});
|
|
|
+ buttonLoading.value = false;
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ params.value.memberInfos = params.value.persons.map(l=>{
|
|
|
+ return {
|
|
|
+ userId:l.id,
|
|
|
+ realName:l.name
|
|
|
+ }
|
|
|
+ })
|
|
|
+ let { persons ,userIds ,...paras } = params.value;
|
|
|
+ let data = {...paras};
|
|
|
+ updateQuestionnairePublish(data).then(res=>{
|
|
|
+ if(res.code!==0) return proxy.$message.error(res.msg)
|
|
|
+ proxy.$message.success('修改成功')
|
|
|
+ }).finally(()=>{buttonLoading.value = false;show.value = false;})
|
|
|
+ }
|
|
|
+
|
|
|
+ const handleUpdate = row => {
|
|
|
+ getQuestionnairePublishInfo(row.id).then(res=>{
|
|
|
+ if(res.code!==0) return proxy.$message({type:'warning',message:res.msg});
|
|
|
+ params.value = {...res.data,persons:[],userIds:[]}
|
|
|
+ params.value.persons = res.data.memberInfos.map(m=>({id:m.userId,name:m.realName}));
|
|
|
+ params.value.userIds = res.data.memberInfos.map(m=>m.userId);
|
|
|
+ show.value = true;
|
|
|
+ })
|
|
|
+ }
|
|
|
+ const handlePublish = async row => {
|
|
|
+ await proxy.$modal.confirm('是否确认发布该问卷?', '提示', {})
|
|
|
+ let res = await publishQuestionnaireConfirm(row.id).finally(()=>{})
|
|
|
+ if(res.code!==0) return proxy.$message.error(res.msg)
|
|
|
+ proxy.$message.success('发布成功')
|
|
|
+ getList()
|
|
|
+ }
|
|
|
+ const handleDelete = row => {
|
|
|
+ proxy.$confirm('是否确认删除该问卷?', '警告', {
|
|
|
+ confirmButtonText: '确定',
|
|
|
+ cancelButtonText: '取消',
|
|
|
+ type: 'warning'
|
|
|
+ }).then(async () => {
|
|
|
+ let res = await deleteQuestionnaireOne(row.id)
|
|
|
+ if(res.code!==0) return proxy.$message.error(res.msg)
|
|
|
+ proxy.$message.success('删除成功')
|
|
|
+ return
|
|
|
+ }).then(()=>{
|
|
|
+ getList()
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
const handleSchedule = (item) => {
|
|
|
proxy.$router.push({
|
|
|
path: '/agentQuestionnaireSchedule',
|
|
@@ -209,6 +484,10 @@
|
|
|
font-size: 14px;
|
|
|
line-height: 24px;
|
|
|
text-align: center;
|
|
|
+ &.dfb{
|
|
|
+ background: #e7e7e7;
|
|
|
+ color: #414040;
|
|
|
+ }
|
|
|
&.jxz{
|
|
|
background: #FCECB6;
|
|
|
color: #864F10;
|
|
@@ -281,4 +560,231 @@
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ .content{
|
|
|
+ .c_set{
|
|
|
+ width: 100%;
|
|
|
+ background: #FFFFFF;
|
|
|
+ border-radius: 6px;
|
|
|
+ margin-top: 8px;
|
|
|
+ padding: 0 21px 28px 21px;
|
|
|
+ box-sizing: border-box;
|
|
|
+ .cs_title{
|
|
|
+ font-family: PingFang-SC, PingFang-SC;
|
|
|
+ font-weight: bold;
|
|
|
+ font-size: 14px;
|
|
|
+ color: #252525;
|
|
|
+ line-height: 20px;
|
|
|
+ margin-top: 30px;
|
|
|
+ }
|
|
|
+ .cs_users{
|
|
|
+ width: 100%;
|
|
|
+ height: 36px;
|
|
|
+ border-radius: 6px;
|
|
|
+ border: 1px solid #E5E7EB;
|
|
|
+ margin-top: 20px;
|
|
|
+ padding: 7px 12px;
|
|
|
+ box-sizing: border-box;
|
|
|
+ .cu_l{
|
|
|
+ width: 104px;
|
|
|
+ padding-right: 15px;
|
|
|
+ box-sizing: border-box;
|
|
|
+ &>img{
|
|
|
+ width: 18px;
|
|
|
+ height: 18px;
|
|
|
+ margin-top: -5px;
|
|
|
+ }
|
|
|
+ .cul_add{
|
|
|
+ width: 54px;
|
|
|
+ height: 24px;
|
|
|
+ border-radius: 4px;
|
|
|
+ border: 1px solid #761E6A;
|
|
|
+ font-family: PingFangSC, PingFang SC;
|
|
|
+ font-weight: 400;
|
|
|
+ font-size: 12px;
|
|
|
+ color: #761E6A;
|
|
|
+ line-height: 22px;
|
|
|
+ text-align: center;
|
|
|
+ margin-top: -2px;
|
|
|
+ cursor: pointer;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .cu_r{
|
|
|
+ width: calc(100% - 104px);
|
|
|
+ margin-left: -16px;
|
|
|
+ .cr_item{
|
|
|
+ padding: 4px 10px;
|
|
|
+ background: #F9FAFB;
|
|
|
+ border-radius: 6px;
|
|
|
+ margin-left: 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;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .cs_zd{
|
|
|
+ margin-top: 12px;
|
|
|
+ span{
|
|
|
+ font-family: PingFangSC, PingFang SC;
|
|
|
+ font-weight: 400;
|
|
|
+ font-size: 14px;
|
|
|
+ color: #6B7280;
|
|
|
+ line-height: 20px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .cs_time{
|
|
|
+ margin-top: 6px;
|
|
|
+ .ct_pre{
|
|
|
+ margin-top: 30px;
|
|
|
+ span{
|
|
|
+ font-family: PingFangSC, PingFang SC;
|
|
|
+ font-weight: 400;
|
|
|
+ font-size: 14px;
|
|
|
+ color: #6B7280;
|
|
|
+ line-height: 20px;
|
|
|
+ margin-right: 23px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .cs_btn{
|
|
|
+ margin-top: 70px;
|
|
|
+ padding-left: 79px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .ed_coach{
|
|
|
+ margin-top: -20px;
|
|
|
+ .ec_l{
|
|
|
+ width: calc(50% - 1px);
|
|
|
+ height: 100%;
|
|
|
+ padding-right: 30px;
|
|
|
+ box-sizing: border-box;
|
|
|
+ border-right: 1px solid #ECEEF5;
|
|
|
+
|
|
|
+ .ecl_gs{
|
|
|
+ margin-top: 19px;
|
|
|
+ .eg_title{
|
|
|
+ font-family: PingFangSC, PingFang SC;
|
|
|
+ font-weight: 400;
|
|
|
+ font-size: 14px;
|
|
|
+ color: #6B7280;
|
|
|
+ line-height: 20px;
|
|
|
+ }
|
|
|
+ .egt_item{
|
|
|
+ margin-top: 24px;
|
|
|
+ .ei_l{
|
|
|
+ span{
|
|
|
+ font-family: PingFang-SC, PingFang-SC;
|
|
|
+ font-weight: bold;
|
|
|
+ font-size: 14px;
|
|
|
+ color: #252525;
|
|
|
+ line-height: 20px;
|
|
|
+ &:last-child{
|
|
|
+ font-weight: 400;
|
|
|
+ color: #6B7280;
|
|
|
+ margin-left: 20px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .ei_r{
|
|
|
+ span{
|
|
|
+ font-family: PingFangSC, PingFang SC;
|
|
|
+ font-weight: 400;
|
|
|
+ font-size: 14px;
|
|
|
+ color: #761E6A;
|
|
|
+ line-height: 20px;
|
|
|
+ position: relative;
|
|
|
+ padding-left: 8px;
|
|
|
+ cursor: pointer;
|
|
|
+ &::before{
|
|
|
+ content: '';
|
|
|
+ width: 1px;
|
|
|
+ height: 16px;
|
|
|
+ background: #DDE0E6;
|
|
|
+ position: absolute;
|
|
|
+ left: 0;
|
|
|
+ top: 50%;
|
|
|
+ margin-top: -8px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .ecl_company{
|
|
|
+ margin-top: 19px;
|
|
|
+ position: relative;
|
|
|
+ font-family: PingFang-SC, PingFang-SC;
|
|
|
+ font-weight: bold;
|
|
|
+ font-size: 14px;
|
|
|
+ color: #252525;
|
|
|
+ line-height: 20px;
|
|
|
+ text-align: center;
|
|
|
+ i{
|
|
|
+ position: absolute;
|
|
|
+ left: 0;
|
|
|
+ font-size: 14px;
|
|
|
+ color: #252525;
|
|
|
+ cursor: pointer;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .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>
|