<!-- 课件管理页面 -->
<template>
  <div class="courseManage">
    <div class="headerf">
      <!-- 搜索框及按钮 -->
      <div class="filter">
        <div class="filterItems">
          <div class="pathnameInp">
            <a-input
              v-model:value="createName"
              style="width: 200px; height: 40px; border-radius: 8px"
              placeholder="请输入创建人"
              @pressEnter="handleSearch1"
            />
          </div>
          <div class="pathnameInp">
            <a-input
              v-model:value="name"
              style="width: 200px; height: 40px; border-radius: 8px"
              placeholder="请输入名称"
              @pressEnter="handleSearch1"
            />
          </div>
          <div class="pathnameInp">
            <a-input
              v-model:value="projectName"
              style="width: 200px; height: 40px; border-radius: 8px"
              placeholder="请输入所属项目"
              @pressEnter="handleSearch1"
            />
          </div>
          <div class="select">
            <a-select
              v-model:value="auditStatus"
              dropdownClassName="dropdown-style"
              style="width: 200px"
              placeholder="请选择状态"
              :options="options1"
              allowClear
            >
            </a-select>
          </div>
          <div class="select">
            <a-tree-select
              :getPopupContainer="
                (triggerNode) => triggerNode.parentNode || document.body
              "
              v-model:value="sysTypeId"
              show-search
              style="width: 200px"
              :dropdown-style="{ maxHeight: '400px', overflow: 'auto' }"
              placeholder="请选择内容分类"
              allow-clear
              tree-default-expand-all
              :fieldNames="{
                children: 'children',
                label: 'name',
                value: 'code',
              }"
              :tree-data="sysTypeOptions"
            >
            </a-tree-select>
          </div>
          <div class="select">
            <div class="select addTimeBox">
              <div class="addTime">创建时间：</div>
              <a-range-picker
                v-model:value="projectTime"
                style="width: 420px"
                format="YYYY-MM-DD"
                separator="至"
                :placeholder="['      开始时间', '        结束时间']"
              />
            </div>
          </div>
          <div style="display: flex; margin-bottom: 20px" class="courseBtn">
            <div class="btn btn1" @click="handleSearch1">
              <div class="search"></div>
              <div class="btnText">搜索</div>
            </div>
            <div class="btnn btn2" @click="handleRest1" style="width: 110px">
              <div class="search"></div>
              <div class="btnText">重置</div>
            </div>
          </div>
          <div class="btns">
            <!-- 2022-11-30注释 后面放开 -->
            <div
              class="btnn btn2"
              @click="openMessage"
              style="margin-right: 14px"
            >
              <div class="daochu"></div>
              <div class="btnText">导出</div>
            </div>
            <div class="btn btn3" @click="of_hShow">
              <div class="search"></div>
              <div class="btnText">新建课程</div>
            </div>
          </div>
        </div>
      </div>

      <!-- 搜索框及按钮 -->
    </div>
    <!-- 选择线上还是面授课弹窗 -->
    <a-modal
      v-model:visible="of_hs"
      :closable="closableQR"
      wrapClassName="sofModal"
      :footer="null"
      style="margin-top: 400px"
      @cancel="of_exit"
    >
      <div
        class="selectonlineface"
        :style="{ display: of_hs ? 'block' : 'none' }"
      >
        <div class="of_header"></div>
        <div class="of_main">
          <div class="ofm_header">
            <div class="add_icon"></div>
            <span>请选择课程类型</span>
            <div class="close_exit" @click="of_exit"></div>
          </div>
          <div class="ofm_body">
            <div class="ofmb_items">
              <div class="signbox">
                <div class="sign">
                  <img
                    src="@/assets/images/coursewareManage/asterisk.png"
                    alt=""
                  />
                </div>
                <span style="margin-right: 3px">课程名称：</span>
              </div>
              <div class="in b_input">
                <NameInput
                  placeholder="请输入课程名称"
                  v-model:value="xzinputV1"
                  v-model:validated="validated"
                  :id="offcourseId"
                  :maxlength="20"
                  show-count
                  :type="2"
                ></NameInput>
                <!--                <a-input-->
                <!--                  v-model:value="xzinputV1"-->
                <!--                  maxlength="20"-->
                <!--                  style="width: 440px; height: 40px; border-radius: 8px"-->
                <!--                  placeholder="请输入课程名称"-->
                <!--                />-->
                <!--                <div class="inp_num">-->
                <!--                  <span style="color: #c7cbd2">{{ xzinputV1.length }}/20</span>-->
                <!--                </div>-->
              </div>
            </div>
            <div class="b_sub">
              <div class="bs_header">
                <div class="b_left">
                  <span style="color: #999ba3">课程命名规则</span>
                </div>
                <div class="b_right" @click="hideShow" style="cursor: pointer">
                  <div
                    class="b_zk"
                    :style="{ display: hideshow ? 'block' : 'none' }"
                  >
                    <div class="zksqbox" style="display: flex">
                      <span style="color: #4ea6ff; margin-right: 5px">
                        收起
                      </span>
                      <div class="b_icon">
                        <img
                          src="@/assets/images/coursewareManage/up.png"
                          alt=""
                        />
                      </div>
                    </div>
                  </div>
                  <div
                    class="b_sq"
                    :style="{ display: hideshow ? 'none' : 'block' }"
                  >
                    <div class="zksqbox" style="display: flex">
                      <span style="color: #4ea6ff; margin-right: 5px">
                        展开
                      </span>
                      <div class="b_icon">
                        <img
                          src="@/assets/images/coursewareManage/down.png"
                          alt=""
                        />
                      </div>
                    </div>
                  </div>
                </div>
              </div>
              <div
                class="bl_detail"
                :style="{ display: hideshow ? 'block' : 'none' }"
              >
                <span style="color: #999ba3">
                  1、课程名称统一不加书名号。<br />
                  2、项目名称、属地等信息如需体现在课程名称中，请放在课程名称信息
                  之后，如“时间管理（GROW180项目）”或“时间管理（B*）”确保首先
                  看到的是课程内容主题。<br />
                  3、同一课程如先后有多个版本，原则上仅开放最新版本，旧版本应停用
                  版本如必须以年份标明，请以“沟通技巧（2022年）”的方式呈现。
                </span>
              </div>
            </div>
            <div class="ofmb_items">
              <div class="signbox">
                <div class="sign">
                  <img
                    src="@/assets/images/coursewareManage/asterisk.png"
                    alt=""
                  />
                </div>

                <span>授课形式</span>
              </div>
              <a-radio-group v-model:value="valueE1">
                <div class="bc_box">
                  <!-- 2022-12-21 隐藏 后面放开 lixiaoge -->
                  <!-- <div class="bc_boxl">
                    <div class="ol_checkbox" @click="expectOnline">
                      <a-radio
                        v-model:checked="checked"
                        :value="1"
                        disabled="true"
                        @click="bs_hShow"
                      >
                        线上
                      </a-radio>
                    </div>
                  </div> -->
                  <div class="bc_boxr">
                    <div class="ol_checkbox">
                      <a-radio
                        v-model:checked="checked"
                        :value="2"
                        @click="clear_valueE1"
                      >
                        面授
                      </a-radio>
                    </div>
                  </div>
                </div>
              </a-radio-group>
            </div>

            <div class="b_sup" :style="{ display: bs_hs ? 'block' : 'none' }">
              <div class="ofmb_items">
                <div class="signbox">
                  <div class="sign">
                    <img
                      src="@/assets/images/coursewareManage/asterisk.png"
                      alt=""
                    />
                  </div>

                  <span>是否设置目录</span>
                </div>
                <a-radio-group v-model:value="valueE2">
                  <div class="bc_box">
                    <div class="ol_checkbox">
                      <a-radio
                        v-model:checked="checked"
                        :value="3"
                        @click="clear_valueE2"
                      >
                        是
                      </a-radio>
                    </div>
                    <div class="ol_checkbox">
                      <a-radio
                        v-model:checked="checked"
                        :value="4"
                        @click="clear_valueE2"
                      >
                        否
                      </a-radio>
                    </div>
                  </div>
                </a-radio-group>
              </div>
            </div>
            <div class="b_footer">
              <div class="btn btn6" @click="of_exit1">
                <div class="btnText">取消</div>
              </div>
              <a-button
                class="btn btn6"
                @click="createft"
                :loading="validated === 1"
              >
                确定
              </a-button>
            </div>
          </div>
        </div>
      </div>
    </a-modal>
    <!-- 选择线上还是面授课弹窗 -->
    <!-- 确定新建面授课弹窗 -->
    <CourseModal
      ref="CourseModalRef"
      v-model:xzinputV1="xzinputV1"
      @visibleClose="closeOnlineCoursevisible"
    />

    <!-- 查看面授课弹框 end -->
    <!-- 确定新建面授课弹窗 -->
    <!-- 表格 -->
    <div style="padding: 10px 35px">
      <a-table
        :header-cell-style="{ 'text-align': 'center' }"
        style="border: 1px solid #f2f6fe"
        :columns="columns1"
        :data-source="tableData1"
        :loading="tableLoading"
        :pagination="false"
        :scroll="{ x: 'max-content' }"
      >
        <template #action="{ text, record, index }">
          <a-space :key="record.id">
            <a-button
              v-if="(record.auditStatus === 2 || record.auditStatus === 3) && !record.publishStatus && checkPer(record.permissions,createId)"
              @click="() => handlePush(text, index)"
              type="link"
              >发布
            </a-button>
            <a-button
              v-if="record.auditStatus === 0 && checkPer(record.permissions,createId)"
              @click="() => handleSubmit(text, index)"
              type="link"
              >提交审核
            </a-button>
            <a-button
              v-if="(record.auditStatus === -1 || record.auditStatus === 2 || record.auditStatus === 3) && !record.publishStatus && checkPer(record.permissions,createId)"
              @click="() => handleEdit(record, String(record.courseform))"
              type="link"
              >编辑
            </a-button>
            <!-- <a-button
              @click="() => handleEdit(record, String(record.courseform))"
              type="link"
              >编辑
            </a-button> -->
            <a-button
              v-if="
                (record.publishStatus === 1)
              "
              @click="() => handleStart(record, String(record.courseform))"
              type="link"
              >开课
            </a-button>
            <a-button
              @click="() => handleLook(record, String(record.courseform))"
              type="link"
              >查看
            </a-button>
            <a-button
              v-if="
                (record.auditStatus === 2 || record.publishStatus)
              "
              @click="() => handleGuan22(record, String(record.courseform))"
              type="link"
              >管理
            </a-button>
            <DropDown
              v-if="checkOwner(record.permissions)"
              value="授权"
            >
              <OwnerTableModelStudent :types="[10, 11, 12]" :id="record.id" :type="12"
                >权限名单</OwnerTableModelStudent
              >
              <CommonStudent :type="10" :id="record.id" title="查看权"
                >查看权</CommonStudent
              >
              <CommonStudent :type="11" :id="record.id" title="管理权"
                >管理权</CommonStudent
              >
            </DropDown>
            <DropDown v-if="checkPer(record.permissions,createId)" value="更多">
              <a-button @click="() => handleCopy(text)" type="link" block>复制</a-button>
              <a-button
                v-if="
                  (record.auditStatus === 1 || record.auditStatus === 2 || record.publishStatus) &&
                  record.status &&
                  checkPer(record.permissions,createId)
                "
                @click="() => handleRejectExit(text, index, record)"
                type="link"
                block
                >撤回</a-button
              >
              <a-button
                v-if="
                  record.publishStatus&&
                  record.status &&
                  checkPer(record.permissions,createId)
                "
                @click="() => handleStop(record)"
                type="link"
                block
                >停用</a-button
              >
              <a-button
                v-if="
                  record.publishStatus&&
                  !record.status &&
                  checkPer(record.permissions,createId)
                "
                @click="() => handleOpen(record)"
                type="link"
                block
                >启用</a-button
              >
              <a-button
                v-if="record.publishStatus!==1 || !record.status"
                @click="() => handleDelete(text, index, record)"
                type="link"
                block
                danger
                >删除
              </a-button>
            </DropDown>
          </a-space>
        </template>
      </a-table>
    </div>
    <div class="pa">
      <a-pagination
        v-if="tableDataTotal1 > 10"
        :showSizeChanger="false"
        :showQuickJumper="true"
        :hideOnSinglePage="true"
        :pageSize="pageSize1"
        :current="currentPage1"
        :total="tableDataTotal1"
        class="pagination"
        @change="handelChangePage1"
      />
    </div>
    <!-- 表格 -->
    <!-- 操作 在线面授课程管理 页面 -->
    <a-modal
      v-model:visible="om_1"
      title="Title"
      @ok="closeModal"
      :footer="null"
      :closable="false"
      wrapClassName="modalStyle onlmanageModal"
      width="80%"
      @cancel="om_exit"
    >
      <div class="modalHeader">
        <div class="headerLeft">
          <img
            style="width: 17px; height: 18px; margin-right: 8px"
            src="@/assets/images/coursewareManage/pc.png"
          />
          <div :style="{ display: ft_1 ? 'none' : 'block' }">
            <span class="headerLeftText">在线课程管理</span>
          </div>
          <div :style="{ display: ft_1 ? 'block' : 'none' }">
            <span class="headerLeftText">面授课程管理</span>
          </div>
        </div>
        <div style="margin-right: 57px; cursor: pointer">
          <img
            @click="om_exit"
            style="width: 22px; height: 22px"
            src="../../assets/images/basicinfo/close22.png"
          />
        </div>
      </div>
      <div class="modalMain">
        <div class="onlinemanage" :style="{ display: om_1 ? 'block' : 'none' }">
          <div class="om_main">
            <div class="om_body">
              <div class="b_sub">
                <div class="b_title">课程：{{ newCourseName }}</div>
                <div class="bs_type" style="margin-left: 20px">类型：</div>
                <div class="bs_right">{{ faceType }}</div>
                <div class="bs_left">内容分类：</div>
                <div class="bs_right">{{ faceClassification }}</div>
                <div class="bs_left">状态：</div>
                <div class="bs_right">
                  {{ faceStatus == 1 ? "已启用" : "已停用" }}
                </div>
              </div>
              <a-tabs
                class="b_menu"
                v-model:activeKey="faceManageTab"
                size="large"
                :tabBarStyle="{ marginLeft: '10px' }"
                @change="faceManageChange"
              >
                <!-- <a-tab-pane key="1" tab="报名管理">
                  <div class="b_menunav">
                    <div class="bm_select">
                      <a-select
                        class="select"
                        ref="select"
                        placeholder="请选择状态"
                        v-model:value="gl_selectV1"
                        style="width: 200px"
                        :options="options1"
                        allowClear
                        showSearch
                        @focus="focus"
                        @change="handleChange"
                      >

                      </a-select>
                    </div>
                    <div class="bm_input">
                      <a-input
                        v-model:value="gl_inputv1"
                        style="width: 200px; height: 40px; border-radius: 8px"
                        placeholder="姓名"
                      />
                    </div>
                    <div class="bm_btn">
                      <div class="btn btn1" @click="handleSearchTable2">
                        <div class="search"></div>
                        <div class="btnText">搜索</div>
                      </div>
                    </div>
                  </div>
                  <div class="bm_table" style="margin-bottom: 20px">
                    <a-table
                      :columns="columns2"
                      :data-source="tableData2"
                      :loading="tableDataTotal22 === -1 ? true : false"
                      :pagination="false"
                    />
                    <div class="tableBox" style="margin-top: 50px">
                      <div class="pa">
                        <a-pagination
                          :showSizeChanger="false"
                          showQuickJumper="true"
                          hideOnSinglePage="true"
                          :pageSize="pageSize22"
                          :current="currentPage22"
                          :total="tableDataTotal22"
                          class="pagination"
                          @change="handelChangePage22"
                        />
                      </div>
                    </div>
                  </div>
                </a-tab-pane> -->
                <a-tab-pane key="1" tab="学习记录">
                  <div class="b_menunav">
                    <div class="bm_select">
                      <a-select
                        class="select"
                        ref="select"
                        placeholder="请选择状态"
                        v-model:value="gl_selectV2"
                        style="width: 200px"
                        :options="options11"
                        allowClear
                        @focus="focus"
                        @change="handleChange"
                      >
                        <!-- <a-select-option value="status">状态</a-select-option>
                        <a-select-option value="passed">已通过</a-select-option>
                        <a-select-option value="weishenhe">
                          未审核
                        </a-select-option>
                        <a-select-option value="reject">
                          管理员拒绝
                        </a-select-option> -->
                      </a-select>
                    </div>
                    <div class="bm_input">
                      <a-input
                        v-model:value="gl_inputV2"
                        style="width: 200px; height: 40px; border-radius: 8px"
                        placeholder="姓名"
                      />
                    </div>
                    <div class="bm_btn">
                      <div class="btn btn1" @click="handleSearchTable3">
                        <div class="search"></div>
                        <div class="btnText">搜索</div>
                      </div>
                      <div class="btn btn2" @click="reseatSearchTable3">
                        <div class="search"></div>
                        <div class="btnText">重置</div>
                      </div>
                    </div>
                  </div>
                  <div class="bm_table" style="margin-bottom: 20px">
                    <a-table
                      :columns="columns2"
                      :data-source="tableData3"
                      :loading="manageStuLoading"
                      :pagination="false"
                    >
                      <template #bodyCell="{ column }">
                        <template v-if="column.key === 'opacation'">
                          <a @click="ckxq_hs">查看详情</a>
                        </template>
                      </template>
                    </a-table>
                    <div class="tableBox" style="margin-top: 50px">
                      <div class="pa">
                        <a-pagination
                          :showSizeChanger="false"
                          showQuickJumper="true"
                          hideOnSinglePage="true"
                          :pageSize="pageSize222"
                          :current="currentPage222"
                          :total="tableDataTotal222"
                          class="pagination"
                          @change="handelChangePage222"
                        />
                      </div>
                    </div>
                  </div>
                </a-tab-pane>
              </a-tabs>
            </div>
          </div>
        </div>
      </div>
    </a-modal>
    <!-- 操作 在线面授课程管理 页面 -->
    <!-- 面授课程管理查看详情 页面 -->
    <a-modal
      v-model:visible="om_ckxq"
      title="Title"
      @ok="closeModal"
      :footer="null"
      :closable="false"
      wrapClassName="modalStyle coursewareDetail"
      width="80%"
    >
      <div class="modalHeader">
        <div class="headerLeft">
          <img
            style="width: 17px; height: 18px; margin-right: 8px"
            src="@/assets/images/coursewareManage/detail.png"
          />
          <span class="headerLeftText">查看详情</span>
        </div>
        <div style="margin-right: 57px; cursor: pointer">
          <img
            @click="ftsr_exit"
            style="width: 22px; height: 22px"
            src="../../assets/images/basicinfo/close22.png"
          />
        </div>
      </div>
      <div class="modalMain">
        <div
          class="ftsturecord"
          :style="{ display: om_ckxq ? 'block' : 'none' }"
        >
          <div class="ftsr_main">
            <div class="ftsr_table">
              <a-table
                :columns="columns4"
                :data-source="tableData4"
                :loading="tableDataTotal === -1 ? true : false"
                :pagination="false"
              >
              </a-table>
            </div>
            <div class="ftsr_btn" @click="ftsr_exit">
              <div class="btnText">取消</div>
            </div>
          </div>
        </div>
      </div>
    </a-modal>
    <!-- 面授 课程管理查看详情 页面 -->
    <!--开课页面 -->
    <a-drawer
      v-model:visible="stm_hs"
      @ok="stm_exit"
      :footer="null"
      :closable="false"
      wrapClassName="modalStyle schtimeModal"
      width="80%"
      @cancel="stm_exit"
    >
      <div class="modalHeader">
        <div class="headerLeft">
          <img
            style="width: 17px; height: 18px; margin-right: 8px"
            src="@/assets/images/coursewareManage/scht.png"
          />
          <span class="headerLeftText">开课</span>
        </div>
        <div style="margin-right: 57px; cursor: pointer">
          <img
            @click="stm_exit"
            style="width: 22px; height: 22px"
            src="../../assets/images/basicinfo/close22.png"
          />
        </div>
      </div>
      <div class="modalMain">
        <div class="schooltime" :style="{ display: stm_hs ? 'block' : 'none' }">
          <div class="st_main">
            <div class="stm_inputbtn">
              <a-input
                v-model:value="kk_inputV0"
                style="
                  width: 270px;
                  height: 40px;
                  border-radius: 8px;
                  margin-right: 14px;
                "
                placeholder="请输入开课名称"
              />
              <a-input
                v-model:value="kk_inputV2"
                style="
                  width: 270px;
                  height: 40px;
                  border-radius: 8px;
                  margin-right: 14px;
                "
                placeholder="请输入授课教师姓名/工号"
              />
              <a-input
                v-model:value="kk_inputV1"
                style="
                  width: 270px;
                  height: 40px;
                  border-radius: 8px;
                  margin-right: 14px;
                "
                placeholder="请输入创建人姓名/工号"
              />
              <div class="select">
                <!-- <a-date-picker
                  v-model:value="selectTime"
                  type="date"
                  placeholder="创建时间"
                  style="width: 270px; margin-right: 14px"
                /> -->
                <a-range-picker
                  v-model:value="selectTime"
                  type="date"
                  style="width: 300px; margin-right: 14px"
                  :placeholder="['  课程开始时间', '   课程结束时间']"
                  :show-time="{
                    defaultValue: [
                      moment('00:00', 'HH:mm'),
                      moment('23:59', 'HH:mm'),
                    ],
                  }"
                />
              </div>
              <div class="btn btn1" @click="handleSearchTable">
                <div class="search"></div>
                <div class="btnText">搜索</div>
              </div>
              <div
                class="btnn btn2"
                @click="handleRestTable"
                style="width: 110px"
              >
                <div class="search"></div>
                <div class="btnText">重置</div>
              </div>
            </div>
            <div class="stm_inputbtn">
              <div class="btns" v-if="checkPer(permissions,createId)">
                <div class="btn btn3" @click="createkk">
                  <div class="search"></div>
                  <div class="btnText">
                    <span style="color: #ffffff">新建开课</span>
                  </div>
                </div>
              </div>
              
            </div>
            <!-- 无数据样式 -->
            <div class="notable" v-if="tableData6.length === 0">
              <div class="notablebox">
                <div class="boxbody">
                  <div class="boximg"></div>
                  <div class="boxtitle">
                    <span style="color: #ffb64e; font-size: 20px">无课程</span>
                  </div>
                  <div class="boxtitle2">
                    <span style="color: #878b92">请点击新建开课，创建课程</span>
                  </div>
                </div>
                <div class="smallleft"></div>
                <div class="smallright"></div>
              </div>
            </div>
            <!-- 无数据样式 -->
            <!-- 有数据表格 -->
            <div class="tableBox" v-else style="margin-left: 58px;">
              <a-table
                :columns="columns6"
                :data-source="tableData6"
                :loading="tableCoursePlanLoading"
                :scroll="{ x: 'max-content' }"
                expandRowByClick="true"
                @expand="expandTable"
                :pagination="false"
              >
                <template #action="{ record, column }">
                    <div class="operation">
                      <div class="fb">
                        <div class="jc" @click="qrcodeVisible(record, 3)" v-if="checkPer(permissions,createId)">
                          评估码
                        </div>
                        <!--新加 签到 -->
                        <div class="jc" @click="qrcodeVisible(record, 2)" v-if="checkPer(permissions,createId)">
                          签到码
                        </div>

                        <div
                          class="jc"
                          v-if="checkPer(permissions,createId)"
                          @click="
                            () => {
                              handelEditStu(record);
                            }
                          "
                        >
                          编辑
                        </div>
                        <div
                          class="jc"
                          @click="
                            () => {
                              handelGuan(record);
                            }
                          "
                        >
                          管理
                        </div>
                      </div>
                      <a-dropdown v-if="checkPer(permissions,createId)">
                        <template #overlay>
                          <a-menu style="margin-left: 20px">
                            <a-menu-item
                              @click="
                                () => {
                                  handleCopyP(record);
                                }
                              "
                            >
                              复制
                            </a-menu-item>
                            <a-menu-item
                              @click="
                                () => {
                                  handleDeleteKaike(record);
                                }
                              "
                            >
                              删除
                            </a-menu-item>
                            <!-- 新加 二维码 -->
                            <a-menu-item @click="qrcodeVisible(record, 1)">
                              二维码
                            </a-menu-item>
                          </a-menu>
                        </template>
                        <div class="fb" style="margin-left: -20px">
                          <div class="jc">
                            更多
                            <down-outlined />
                          </div>
                        </div>
                      </a-dropdown>
                    </div>
                </template>
                <template #teacherName="{record}">
                  <div :title="moreLine(record.offteachers)">
                    {{record.offteachers.map(item=>item.name).length > 3 ? record.offteachers.map(item=>item.name).slice(0,3).join(',')+'...':record.offteachers.map(item=>item.name).join(',') }}
                  </div>
                </template>
              </a-table>
              <div class="tableBox" style="margin-top: 50px">
                <div class="pa">
                  <a-pagination
                    :showSizeChanger="false"
                    showQuickJumper="true"
                    hideOnSinglePage="true"
                    :pageSize="pageSize2"
                    :current="currentPage2"
                    :total="tableDataTotal2"
                    class="pagination"
                    @change="handelChangePage2"
                  />
                </div>
              </div>
            </div>
            <!-- 有数据表格 -->
          </div>
        </div>
      </div>
    </a-drawer>
    <!--开课页面 -->
    <!--新建开课页面 -->
    <a-modal
      v-model:visible="cstm_hs"
      style="margin-top: 400px"
      @cancel="handleCancelStu"
    >
      <div
        class="createschooltime"
        :style="{ display: cstm_hs ? 'block' : 'none' }"
      >
        <div class="cst_header"></div>
        <div class="cst_main">
          <div class="cstm_header">
            <div class="add_icon"></div>
            <span v-if="kk_eidt">编辑开课</span>
            <span v-else>新建开课</span>
            <div class="close_exit" @click="handleCancelStu"></div>
          </div>
          <div class="cstm_title">
            <span>面授名称：{{ newCourseName }}</span>
          </div>
          <div class="cstm_items" style="align-items: flex-start;">
            <div class="signbox" style="position: relative;top: 11px;">
              <div class="sign">
                <img
                  src="@/assets/images/coursewareManage/asterisk.png"
                  alt=""
                />
              </div>
              <span style="margin-right: 3px">开课名称</span>
            </div>
            <div class="b_input">
              <NameInputNew
                maxlength="30"
                v-model:value="xjkkinputV1"
                v-model:validated="validated"
                show-count
                :id="offcoursePlanId"
                :onceName="onceName"
                :type="5"
                style="width: 440px; height: 40px; border-radius: 8px"
                placeholder="请输入开课名称"
                :disabled="editBeginClass"
                :changeName="changeName"
              ></NameInputNew>
            </div>
          </div>
          <div class="cstm_items">
            <div class="signbox">
              <div class="sign">
                <img
                  src="@/assets/images/coursewareManage/asterisk.png"
                  alt=""
                />
              </div>
              <span style="margin-right: 3px">面授时间</span>
            </div>
            <div class="select fitems" style="width: 84%">
              <!-- <a-range-picker
                style="width: 440px; height: 40px; border-radius: 8px"
                :show-time="{ format: 'HH:mm' }"
                format="YYYY-MM-DD HH:mm"
                v-model:value="xjkkinputV3"
                @change="timeChange"
                separator="至"
                :placeholder="['        开始时间', '        结束时间']"
                :disabled="editBeginClass"
              /> -->
              <a-date-picker 
                style="width: 45%; height: 40px; border-radius: 8px"
                :show-time="{ format: 'HH:mm' }"
                :format="['YYYY-MM-DD HH:mm','YYYY/MM/DD HH:mm']"
                valueFormat="YYYY-MM-DD HH:mm"
                v-model:value="xjkkinputV3[0]"
                @change="timeChange"
                :placeholder="'        开始时间'"
                :disabled="editBeginClass"
                @blur="onBlurStart"
                @focus="onFocusStart"
                @select="onDateSelect"
                :open="openStart"
                @ok="onOkStart"
              />
              <span style="margin: 0 10px;">至</span>
              <a-date-picker
                style="width: 45%; height: 40px; border-radius: 8px"
                :show-time="{ format: 'HH:mm' }"
                :format="['YYYY-MM-DD HH:mm','YYYY/MM/DD HH:mm']"
                valueFormat="YYYY-MM-DD HH:mm"
                v-model:value="xjkkinputV3[1]"
                @change="timeChangeEnd"
                :placeholder="'        结束时间'"
                :disabled="editBeginClass"
                @focus="onFocusEnd"
                @blur="onBlurEnd"
                @select="onDateEnd"
                :open="openEnd"
                @ok="onOkEnd"
                :disabled-date="disabledDate"
                :disabled-time="disabledDateTime"
              />
            </div>
          </div>
          <div class="cstm_items">
            <div class="signbox">
<!--              <div class="sign">-->
<!--                <img-->
<!--                  src="@/assets/images/coursewareManage/asterisk.png"-->
<!--                  alt=""-->
<!--                />-->
<!--              </div>-->
              <span style="margin-right: 3px">持续时间</span>
            </div>
            <div class="b_input">
              <a-input-number
                  :min="0"
                  :max="999999"
                  :precision="0"
                  :placeholder="durationText"
                  style="
                            width: 88%;
                            height: 32px;
                            border-radius: 8px;
                            overflow: hidden;"
                  v-model:value="duration"
              ></a-input-number>
              <div class="inp_num">
                <span style="color: #c7cbd2">分钟</span>
              </div>
            </div>
          </div>
          <div class="cstm_items" style="align-items: flex-start;">
            <div class="signbox" style="position: relative;top: 11px">
              <div class="sign">
                <img
                  src="@/assets/images/coursewareManage/asterisk.png"
                  alt=""
                />
              </div>
              <span style="margin-right: 3px">授课教师</span>
            </div>
            <div class="select teacher_input"  style="display: flex; flex-wrap: wrap;width: 74.5%">
              <!-- <ProjectManager
                v-model:value="member.value"
                v-model:name="member.name"
                :disabled="editBeginClass"
              ></ProjectManager> -->
              <div v-for="(item, index) in offteachers"
                :key="index" style="display: flex;margin-bottom: 10px;width: 100%;">
                <ProjectManager
                  v-model:value="item.teacherId"
                  v-model:name="item.teacherName"
                  :disabled="editBeginClass"
                ></ProjectManager>
                <a-input-number :min="0" @change="inputWeightChange(index)"  v-model:value="item.weight" placeholder="%"/>
                <span style="margin-top: 10px;width: 34px;">权重</span>
                <div style="display: flex;">
                  <!-- <a-button v-if="index===0" shape="circle" class="btn-circle btn-add" @click="inputAdd">+</a-button> -->
                  <a-button shape="circle" class="btn-circle" @click="inputRemove(index)" :disabled="offteachers.length == 1"><delete-outlined class="custom-icon"/></a-button>
                </div>
              </div>
              <a-button shape="circle" class="btn-circle btn-add" @click="inputAdd">+</a-button>
            </div>
          </div>
          <div class="cstm_items">
            <div class="signbox">
              <div class="sign">
                <!-- <img
                  src="@/assets/images/coursewareManage/asterisk.png"
                  alt=""
                /> -->
              </div>
              <span style="margin-right: 3px">地点</span>
            </div>
            <div class="b_input">
              <a-input
                  v-model:value="xjkkinputV2"
                  maxlength="50"
                  style="width: 440px; height: 40px; border-radius: 8px"
                  placeholder="请输入详细地点"
              />
              <div class="inp_num" style="right: 164px">
                <span style="color: #c7cbd2">{{ xjkkinputV2.length }}/50</span>
              </div>
            </div>
          </div>
          <div class="cstm_items">
            <div class="signbox">
              <span style="margin-right: 3px">考勤设置：</span>
            </div>
            <div style="display: flex; align-items: center">
              <div style="margin-right: 10px">签到</div>
              <div
                style="display: flex; align-items: center; margin-right: 20px"
              >
                <span>开始前：</span>
                <a-input-number
                  :min="0"
                  :max="999999"
                  :precision="0"
                  style="
                    width: 100px;
                    height: 32px;
                    border-radius: 8px;
                    overflow: hidden;
                  "
                  v-model:value="beforeValue"
                ></a-input-number>
                <span style="color: #999999; margin-left: 8px">分钟</span>
              </div>
              <div style="display: flex; align-items: center">
                <span>开始后：</span>
                <a-input-number
                  :min="0"
                  :max="999999"
                  :precision="0"
                  style="
                    width: 100px;
                    height: 32px;
                    border-radius: 8px;
                    overflow: hidden;
                  "
                  v-model:value="afterStartValue"
                ></a-input-number>
                <span style="color: #999999; margin-left: 8px">分钟</span>
              </div>
            </div>
          </div>
          <div class="cstm_items">
            <div class="signbox">
              <span style="margin-right: 3px">报名设置</span>
            </div>
            <div class="b_input">
              <a-checkbox v-model:checked="checked1" :disabled = "itemType!=3">
                <span style="color: #6d7584">是否允许未报名的学员扫码签到、扫码评估</span>
              </a-checkbox>
            </div>
          </div>

          <div class="cstm_items">
            <div class="signbox">
              <span style="margin-right: 3px">签到设置</span>
            </div>
            <div class="b_input">
              <a-checkbox v-model:checked="xjkkradioV1" :disabled = "itemType!=3">
                <span style="color: #6d7584">是否允许未报名的学员签到</span>
              </a-checkbox>
            </div>
          </div>
          
          <div class="cstm_items">
            <div class="signbox">
              <span style="margin-right: 3px">结业设置</span>
            </div>
            <div class="b_input">
              <a-checkbox v-model:checked="xjkkradioVEnd" :disabled = "itemType!=3">
                <span style="color: #6d7584">是否允许自动结业</span>
              </a-checkbox>
              <span>面授时间结束后</span>
              <a-input-number :precision="0" :min="0"  v-model:value="xjkkradioVEndTime" style="
                width: 60px;
                height: 32px;
                border-radius: 8px;
                margin: 0 10px;"
              />
              天
            </div>
          </div>
          
          <div class="cstm_items">
            <div class="signbox">
              <span style="margin-right: 3px">评估设置</span>
            </div>
            <div class="b_input">
              <a-checkbox v-model:checked="checked4" :disabled="editBeginClass">
                <span style="color: #6d7584">是否需要评估</span>
              </a-checkbox>
            </div>
          </div>
          <div v-if="checked4" class="cstm_items main_item">
            <div class="signbox"></div>
            <div class="btnbox">
              <AssessmentList
                v-model:assessmentName="assessmentName"
                v-model:assessmentId="assessmentId"
                :disabled="editBeginClass"
              >
                <button
                  class="xkbtn"
                  @click="showAssessment"
                  style="margin-bottom: 0; margin-top: 0"
                >
                  选择评估
                </button>
              </AssessmentList>
              <div v-if="assessmentId > 0">
                <a-tag :closable="!editBeginClass" @close="removePG" color="processing">
                  <span style="font-size: 14px; line-height: 33px">
                    {{ assessmentName }}
                  </span>
                </a-tag>
              </div>
            </div>
          </div>

          <div class="cstm_items main_item">
            <div class="signbox"></div>
            <div class="btnbox">
              <add-homework v-model:info="workInfo">
                <button class="xkbtn" style="margin-bottom: 0; margin-top: 0">
                  配置作业
                </button>
              </add-homework>
              <div v-if="workInfo.workName">
                <a-tag closable @close="logW" color="processing">
                  <span style="font-size: 14px; line-height: 33px">
                    {{ workInfo.workName }}
                  </span>
                </a-tag>
              </div>
            </div>
          </div>
          <div class="cstm_items main_item" style="margin-bottom: 0px">
            <div class="signbox"></div>
            <div class="btnbox">
              <add-test v-model:info="examInfo">
                <button class="xkbtn" style="margin-bottom: 0; margin-top: 0">
                  配置考试
                </button>
              </add-test>
              <div v-if="examInfo.examinationName">
                <a-tag closable @close="logT" color="processing">
                  <span style="font-size: 14px; line-height: 33px">
                    {{ examInfo.examinationName }}
                  </span>
                </a-tag>
              </div>
            </div>
          </div>
          <!--
          <div class="cstm_items">
            <div class="signbox">
              <span style="margin-right: 3px">完成规则</span>
            </div>
            <div class="b_input">

              <a-checkbox
                v-model:checked="regisCom"
                @click="regisCom = !regisCom"
              >
                <span style="color: #6d7584">报名即完成</span>
              </a-checkbox> -->
          <!--
              <a-checkbox v-model:checked="signCom" @click="signCom = !signCom">
                <span style="color: #6d7584">签到即完成</span>
              </a-checkbox>
              <a-checkbox
                v-model:checked="comLeave"
                @click="comLeave = !comLeave"
              >
                <span style="color: #6d7584">请假算完成</span>
              </a-checkbox>
            </div>
          </div> -->
          <div class="cstm_items items_fj">
            <div class="signbox">
              <span style="margin-right: 3px"></span>
            </div>
            <div class="b_input">
              <FJUpload v-model:value="attach" @changevalue="changevalue" />
            </div>
          </div>

          <div class="items_btn">
            <div class="cstm_btn btn6" @click="handleCancelStu">
              <div class="btnText">取消</div>
            </div>
            <a-button
              class="cstm_btn btn6"
              @click="handleSureStu"
              :loading="validated === 1"
            >
              确定
            </a-button>
          </div>
        </div>
      </div>
    </a-modal>
    <!--新建开课页面 -->
    <!--开课学员管理页面 -->
    <a-modal
      v-model:visible="sm_hs"
      title="Title"
      @ok="closeModal"
      :footer="null"
      :closable="false"
      wrapClassName="modalStyle stusmanageModal"
      width="90%"
      @cancel="sm_exit"
    >
      <div class="modalHeader">
        <div class="headerLeft">
          <img
            style="width: 17px; height: 18px; margin-right: 8px"
            src="@/assets/images/coursewareManage/stum.png"
          />
          <span class="headerLeftText">学员管理</span>
        </div>
        <div style="margin-right: 57px; cursor: pointer">
          <img
            @click="sm_exit"
            style="width: 22px; height: 22px"
            src="../../assets/images/basicinfo/close22.png"
          />
        </div>
      </div>
      <div class="modalMain">
        <div
          class="studentsmanage"
          :style="{ display: sm_hs ? 'block' : 'none' }"
        >
          <div class="stm_main">
            <div class="stmmitems">
              <div class="stmm_i1">
                <span style="margin-right: 52px">
                  {{ currentPlanItem.name }}课程-第1期-
                  {{ currentPlanItem.createTime }}
                </span>
                <span style="color: #ffb751"
                  >已开课
                  {{
                    currentPlanItem.courseScore !== -1
                      ? currentPlanItem.courseScore.toFixed(2)
                      : "-"
                  }}</span>
              </div>
              <div class="stmm_i2">
                <span style="color: #999ba3">时间：</span>
                <span>{{ currentPlanItem.endTime }}</span>
              </div>
              <div class="stmm_i3">
                <span style="color: #999ba3">地点：</span>
                <span>{{ currentPlanItem.address }}</span>
              </div>
              <div class="stmm_i4">
                <span style="color: #999ba3">授课教师：</span>
                <!-- <span>{{ currentPlanItem.teacher }}</span> -->
              </div>
              <div class="stmm_i5">
                <TableStudent
                  :type="3"
                  :id="offcoursePlanId"
                  :params="{status:1}"
                  :columns="stuColumns"
                  :visable="sm_hs"
                  :permissions="permissions"
                  :isgetStudent="isgetStudent"
                >
                  <!-- <template #extension="{ data: { record } }">
                    <a-button
                      v-if="record.source === 4 && record.status === 1 && checkPer(permissions,createId)"
                      @click="
                        () => {
                          record.status = 0;
                          auditStudent(record);
                        }
                      "
                      type="link"
                      >审核通过
                    </a-button>
                    <a-button
                      v-if="record.source === 4 && record.status === 1 && checkPer(permissions,createId)"
                      @click="
                        () => {
                          record.status = 2;
                          auditStudent(record);
                        }
                      "
                      type="link"
                      >拒绝
                    </a-button>
                    <a-button
                      v-if="
                        record.source === 4 &&
                        (record.status === 0 || record.status === 2)
                         && checkPer(permissions,createId)
                      "
                      @click="
                        () => {
                          record.status = 1;
                          auditStudent(record);
                        }
                      "
                      type="link"
                      >撤回
                    </a-button>
                  </template> -->
                </TableStudent>
              </div>
            </div>
          </div>
        </div>
      </div>
    </a-modal>
    <!--开课学员管理页面 -->
    <!--二维码页面 -->
    <a-modal
      v-model:visible="QR_hs"
      :footer="null"
      :closable="closableQR"
      wrapClassName="QRModal"
      style="margin-top: 400px"
      :zIndex="9999"
      @cancel="qr_exit"
    >
      <div class="QR" :style="{ display: QR_hs ? 'block' : 'none' }">
        <div class="qr_header"></div>
        <div class="qr_main">
          <div class="qrm_header">
            <div class="qr_icon"></div>
            <div :style="{ display: qrQR_hs ? 'block' : 'none' }">
              <span>二维码</span>
            </div>
            <div :style="{ display: olQR_hs ? 'block' : 'none' }">
              <span>在线课</span>
            </div>
            <div :style="{ display: ftQR_hs ? 'block' : 'none' }">
              <span>面授课</span>
            </div>
            <div :style="{ display: ftsQR_hs ? 'block' : 'none' }">
              <span>面授课签到</span>
            </div>
            <div :style="{ display: vipftQR_hs ? 'block' : 'none' }">
              <span>管理者面授课</span>
            </div>
            <div class="close_exit" @click="qr_exit"></div>
          </div>
          <div class="qrm_body">
            <div class="QR_img"></div>
          </div>
          <div class="qrm_footer">
            <span style="margin-left: 52px">下载二维码</span>
            <div class="qrmbtn">
              <div class="btntext">200*200</div>
            </div>
            <!-- <div class="qrmbtn">
              <div class="btntext">400*400</div>
            </div>
            <div class="qrmbtn">
              <div class="btntext">800*800</div>
            </div> -->
          </div>
        </div>
      </div>
    </a-modal>
    <!--二维码页面 -->
    <!--录入成绩页面 -->
    <a-modal
      v-model:visible="rg_hs"
      :footer="null"
      :closable="closableQR"
      wrapClassName="recgradeModal"
      style="margin-top: 400px"
      :zIndex="9999"
      @cancel="rg_exit"
    >
      <div class="recordgrade" :style="{ display: rg_hs ? 'block' : 'none' }">
        <div class="rg_header"></div>
        <div class="rg_main">
          <div class="rgm_header">
            <div class="rg_icon"></div>
            <span>录入成绩</span>
            <div class="close_exit" @click="rg_exit"></div>
          </div>
          <div class="rgm_body">
            <div class="rgmb_items">
              <div class="items_left">
                <div class="sign">
                  <img
                    src="@/assets/images/coursewareManage/asterisk.png"
                    alt=""
                  />
                </div>
                <span>得分</span>
              </div>
              <div class="rgmb_input">
                <a-input
                  v-model:value="lrcj_inputV1"
                  maxlength="20"
                  style="width: 440px; height: 40px; border-radius: 8px"
                  placeholder=""
                />
              </div>
            </div>
          </div>
          <div class="qrm_btnbox">
            <div class="qrm_btn btn1" @click="rg_exit">
              <div class="btnText">取消</div>
            </div>
            <div
              class="qrm_btn btn2"
              style="background-color: #4ea6ff; color: #ffffff"
              @click="handleJoin"
            >
              <div class="btnText">确定</div>
            </div>
          </div>
        </div>
      </div>
    </a-modal>
    <!--录入成绩页面 -->
    <!--结业页面 -->
    <a-modal
      v-model:visible="graduate_hs"
      :footer="null"
      :closable="closableQR"
      wrapClassName="graModal"
      style="margin-top: 400px"
      :zIndex="9999"
      @cancel="graduate_exit"
    >
      <div
        class="graduate"
        :style="{ display: graduate_hs ? 'block' : 'none' }"
      >
        <div class="gra_header"></div>
        <div class="gra_main">
          <div class="gram_header">
            <div class="gra_icon"></div>
            <span>结业</span>
            <div class="close_exit" @click="graduate_exit"></div>
          </div>
          <div class="gram_body">
            <div class="gramb_items">
              <div class="items_left">
                <div class="sign">
                  <img
                    src="@/assets/images/coursewareManage/asterisk.png"
                    alt=""
                  />
                </div>
                <span>结业</span>
              </div>
              <div class="gramb_input">
                <a-radio-group v-model:value="jyradioV1">
                  <div class="bc_box">
                    <div class="ol_checkbox">
                      <a-radio
                        v-model:checked="checked"
                        :value="1"
                        @click="clear_jyradioV1"
                        >结业
                      </a-radio>
                    </div>
                    <div class="ol_checkbox">
                      <a-radio
                        v-model:checked="checked"
                        :value="2"
                        @click="clear_jyradioV1"
                        >不结业
                      </a-radio>
                    </div>
                  </div>
                </a-radio-group>
              </div>
            </div>
          </div>
          <div class="qrm_btnbox">
            <div class="qrm_btn btn1" @click="graduate_exit">
              <div class="btnText">取消</div>
            </div>
            <div class="qrm_btn btn2" @click="handleJie">
              <div class="btnText">确定</div>
            </div>
          </div>
        </div>
      </div>
    </a-modal>
    <!--结业页面 -->
    <!--请确定是否同意拒绝此学员学习此课程弹窗 -->
    <a-modal
      v-model:visible="agreereject_hs"
      :footer="null"
      :closable="closableQR"
      wrapClassName="agrstudyModal"
      centered="true"
      @cancel="agreereject_exit"
    >
      <div
        class="agreestudy"
        :style="{ display: agreereject_hs ? 'block' : 'none' }"
      >
        <div class="agree_header"></div>
        <div class="agree_main">
          <div class="agreem_header">
            <div class="agreem_icon"></div>
            <span>提示</span>
            <div class="close_exit" @click="agreereject_exit"></div>
          </div>
          <div class="agreem_body">
            <div
              class="body_box"
              :style="{ display: agreestudy_hs ? 'block' : 'none' }"
            >
              <div>请确定是否同意此学员学习此课程</div>
            </div>
            <div
              class="body_box"
              :style="{ display: rejectstudy_hs ? 'block' : 'none' }"
            >
              <div>请确定是否拒绝此学员学习此课程</div>
            </div>
          </div>
          <div class="qrm_btnbox">
            <div class="qrm_btn btn1">
              <div class="btnText" @click="agreereject_exit">取消</div>
            </div>
            <div class="qrm_btn btn2">
              <div class="btnText" @click="handleAgreeTrue">确定</div>
            </div>
          </div>
        </div>
      </div>
    </a-modal>
    <!--请确定是否同意拒绝此学员学习此课程弹窗 -->
    <!--删除 复制 停用弹窗 -->
    <a-modal
      v-model:visible="delete_hs"
      :footer="null"
      :closable="closableQR"
      wrapClassName="DelModal"
      style="margin-top: 400px"
      :zIndex="9999"
      @cancel="delete_exit1"
    >
      <div
        class="delete"
        :style="{
          display:
            del_hs ||
            copy_hs ||
            nouse_hs ||
            back_hs ||
            submit_hs ||
            useCourse ||
            push_hs
              ? 'block'
              : 'none',
        }"
      >
        <div class="del_header"></div>
        <div class="del_main">
          <div class="header">
            <div
              class="del-icons"
              :style="{ display: del_hs ? 'block' : 'none' }"
            >
              <img src="@/assets/images/coursewareManage/notice.png" alt="" />
            </div>
            <div
              class="del-icons"
              :style="{ display: copy_hs || nouse_hs ? 'block' : 'none' }"
            >
              <img src="@/assets/images/coursewareManage/QR.png" alt="" />
            </div>
            <span>提示</span>
            <div class="close_exit" @click="delete_exit1"></div>
          </div>
          <div class="body">
            <div :style="{ display: del_hs && !del_hs_stu ? 'block' : 'none' }">
              <span>您确定要删除此课程吗</span>
            </div>
            <div :style="{ display: del_hs && del_hs_stu ? 'block' : 'none' }">
              <span>您确定要删除此学员吗</span>
            </div>
            <div :style="{ display: copy_hs ? 'block' : 'none' }">
              <span>您确定要复制此课程吗</span>
            </div>
            <div :style="{ display: nouse_hs ? 'block' : 'none' }">
              <span>您确定要停用此课程吗</span>
            </div>
            <div :style="{ display: submit_hs ? 'block' : 'none' }">
              <span>您确定要提交审核吗</span>
            </div>
            <div :style="{ display: back_hs ? 'block' : 'none' }">
              <span>您确定要撤回吗</span>
            </div>
            <div :style="{ display: useCourse ? 'block' : 'none' }">
              <span>您确定要启用吗</span>
            </div>
            <div :style="{ display: push_hs ? 'block' : 'none' }">
              <span>您确定要发布吗</span>
            </div>
          </div>
          <div class="del_btnbox">
            <div class="del_btn btn2" @click="delete_exit1">
              <div class="btnText">取消</div>
            </div>
            <div class="del_btn btn2" @click="handleDeleteExit">
              <div class="btnText">确定</div>
            </div>
          </div>
        </div>
      </div>
    </a-modal>
    <!-- 预览弹窗 -->
    <SeeModal
      :visible="lookCourseModal"
      :detail="faceDetailObj"
      @cancel="ft_exit_see"
    />
    <!--删除 复制 停用弹窗 -->
    <!-- 学员管理课程库-归属权抽屉 -->
    <!-- <own-power v-model:ownpowervisible="ownpowervisible" /> -->
    <!-- 学员管理课程库-归属权抽屉 -->
    <!-- 添加授权侧弹窗 -->
    <!-- <corpowerlist v-model:corpowerlistVisible="corpowerlistvisible" /> -->
    <!-- 添加授权侧弹窗 -->
    <!-- 学员管理-添加学员抽屉 -->
    <!-- <StuAdd v-model:Stuvisible="Stuvisible" @sure="handlePostSure" /> -->
    <!-- 添加学员抽屉 -->
    <!-- <proj-check-ship
      v-model:ProjCheckvisible="viewpowervisible"
      :selectProjectId="offcourseId"
      v-model:addStudentList="addStudentList"
      :authClassify="authClassify"
      classify="addstudent"
    /> -->
    <!-- 新建在线课弹窗 -->
    <addOnlineCourse
      v-model:addOnlineCoursevisible="addOnlineCoursevisible"
      :closeOnlineModal="closeOnlineCoursevisible"
    />
    <!-- 新建在线课弹窗 -->

    <!-- 授权名单抽屉 -->
    <proj-power-list
      v-model:ProjPvisible="corpowerlistvisible"
      :selectProjectId="selectCourseId"
      classify="course"
    />
    <!-- 归属权抽屉 -->
    <proj-owner-ship
      v-model:ProjOwnervisible="ownpowervisible"
      :selectProjectId="selectCourseId"
      classify="course"
    />
    <!-- 查看权抽屉 -->
    <!-- <proj-check-ship
      v-model:ProjCheckvisible="viewpowervisible"
      :selectProjectId="selectCourseId"
      v-model:addAuthList="addAuthList"
      :authClassify="authClassify"
      classify="course"
    /> -->
    <!--查看权抽屉 管理权抽屉 添加学员抽屉  -->
    <proj-check-ship
      v-model:ProjCheckvisible="viewpowervisible"
      :selectProjectId="selectCourseId"
      v-model:addAuthList="addAuthList"
      :authClassify="authClassify"
      classify="course"
      :type="shipType"
    />
  </div>

  <div class="aeLoading" :style="{ display: addLoading ? 'flex' : 'none' }">
    <a-spin :spinning="addLoading" tip="" />
  </div>

  <!-- 二维码弹窗 -->
  <two-dimensional-code
    v-model:codevisible="codevisible"
    :codeInfo="codeInfo"
    :index="codeIndex"
    :type="codeType == 1 ? '课程二维码' : codeType == 2 ? '签到二维码' : ''"
  />
  <!-- 二维码弹窗 -->
</template>
<script lang="jsx">
import {
  reactive,
  toRefs,
  defineComponent,
  ref,
  shallowRef,
  onMounted,
  onBeforeUnmount,
  watch,
  computed,
} from "vue";

import * as apis from "../../api/indexTaskManage";
import { message } from "ant-design-vue";
import { useRouter, useRoute } from "vue-router";
import CommonStudent from "@/components/student/CommonStudent";
import OwnerTableModelStudent from "@/components/student/OwnerTableModelStudent";
import addOnlineCourse from "../../components/Modals/addOnlineCourse.vue";

import ProjOwnerShip from "../../components/drawers/ProjectOwn";
import NameInput from "../../components/project/NameInput";
import NameInputNew from "../../components/project/NameInputNew";
import ProjPowerList from "../../components/drawers/ProjPowerList";
import ProjCheckShip from "../../components/drawers/ProjCheckPower";
import AssessmentList from "../../components/drawers/AssessmentList.vue";
import dialog from "@/utils/dialog";
// import { queryAssessmentDetailList } from "@/api/indexResearch";
import {
  list,
  detail,
  handle,
  deletePlan,
  planList,
  editPlan,
  studentList,
  addStudent,
  studentExport,
  handleStudent,
  getMemberInfoApi,
  copyCoursePlan,
  copyCourse,
} from "@/api/indexCourse";
import {
  traverseArr,
  getdateToTime,
  newFile,
  getdateToDate,
} from "../../utils/utils";
import { validateName } from "@/api/index1";
import { fileUp } from "../../api/indexEval";
import * as api1 from "../../api/index1";

import "@wangeditor/editor/dist/css/style.css";
import ProjectManager from "@/components/project/ProjectManagerNewTeacher";

import SeeModal from "./components/seeModal.vue";
import CourseModal from "./courseModal.vue";
import * as moment from "moment";
import TwoDimensionalCode from "../../components/TwoDimensionalCode.vue";
import { codeUrl, toDate } from "@/api/method";
import { queryWorkDetailById } from "@/api/indexWork";
import { queryExaminationDetailById } from "@/api/indexExam";
import AddHomework from "../../components/drawers/CommonHomework.vue";
import AddTest from "../../components/drawers/CommonTest.vue";
import TableStudent from "@/components/student/TableStudent";
import FJUpload from "@/components/common/FJUpload";
import {auditStudentStatus} from "@/api/indexProjStu";
import { useStore } from "vuex";
import DropDown from "@/components/common/DropDown";
import { checkPer, checkOwner } from "@/utils/utils";
import dayjs from "dayjs";
import {duration} from "moment";
import { DeleteOutlined } from '@ant-design/icons-vue';

//列表表格
const moreLine = (item) => {
  item.map(val => {
    return (val.line = val.teacherName + "  权重  " + val.weight + '%')
  })
  return item.map(i => i.line).join('\n')
}
//列表操作在线面授管理
const columns2 = [
  {
    title: "姓名",
    dataIndex: "studentName",
    key: "studentName",
    width: "6%",
    align: "center",
    customRender: ({ record: { studentName } }) => studentName || "-",
  },
  {
    title: "工号",
    dataIndex: "studentUserNo",
    key: "studentUserNo",
    width: "12%",
    ellipsis: true,
    align: "center",
    customRender: ({ record: { studentUserNo } }) => studentUserNo || "-",
  },
  {
    title: "开课名称",
    dataIndex: "name",
    key: "name",
    width: "12%",
    ellipsis: true,
    align: "center",
    customRender: ({ record: { name } }) => name || "-",
  },
  {
    title: "地点",
    dataIndex: "address",
    key: "address",
    width: "12%",
    ellipsis: true,
    align: "center",
    customRender: ({ record: { address } }) => address || "-",
  },
  {
    title: "数据来源",
    dataIndex: "courseSource",
    key: "courseSource",
    ellipsis: true,
    width: "12%",
    align: "center",
    customRender: ({ record: { courseName, routerName } }) =>
      courseName || routerName || "开课",
  },
  {
    title: "是否开课学员",
    dataIndex: "infoType",
    key: "infoType",
    ellipsis: true,
    width: "10%",
    align: "center",
    customRender: ({ record: { infoType } }) => infoType ===1 ? '是':'否'
  },
  {
    title: "学习时间",
    dataIndex: "lastStudyTime",
    key: "lastStudyTime",
    width: "10%",
    align: "center",
    ellipsis: true,
    customRender: ({ record: { lastStudyTime } }) => lastStudyTime || "-",
  },
  {
    title: "签到时间",
    dataIndex: "signTime",
    key: "signTime",
    width: "10%",
    align: "center",
    ellipsis: true,
    customRender: ({ record: { signTime } }) => signTime || "-",
  },
  {
    title: "状态",
    dataIndex: "status",
    key: "status",
    width: "12%",
    align: "center",
    customRender: (text) => {
      return (
        <div class="racona">
          <span>
            {" "}
            {text.record.finishStatus == 0 || text.record.finishStatus == null
              ? "未开始" :text.record.finishStatus == 1?"已完成"
              : '进行中'}
          </span>
        </div>
      );
    },
  },
  // {
  //   title: "操作",
  //   dataIndex: "opacation",
  //   key: "opacation",
  //   width: "14%",
  //   align: "center",
  // },
];
//管理查看详情
const columns4 = [
  {
    title: "开课名称",
    dataIndex: "projectName",
    key: "projectName",
    width: "30%",
    align: "center",
  },
  {
    title: "地点",
    dataIndex: "address",
    key: "address",
    width: "30%",
    align: "center",
  },
  {
    title: "状态",
    dataIndex: "status",
    key: "status",
    width: "40%",
    align: "center",
  },
];
//开课表格
const columns6 = [
  // {
  //  title: "序号",
  //  dataIndex: "num",
  //  key: "num",
  // width: "8%",
  // align: "center",
  //  ellipsis: true,
  // customRender: ({ index, record }) => {
  //   const pageNum =
  //    Number(record.pageNo) - 1 > 0 ? (Number(record.pageNo) - 1) * 10 : 0;
  //  return index + 1 + pageNum;
  // },
  // },
  {
    title: "开课名称",
    dataIndex: "organization",
    key: "organization",
    width: "15%",
    align: "center",
    customCell:() => {return {style: {maxWidth: '200px',overflow: 'hidden',whiteSpace: 'nowrap',textOverflow:'ellipsis',cursor:'pointer',padding:'0px 10px'}}},
    customRender: ({ text }) => {
      return <a-tooltip color="white" placement="bottom" title = {text} >{text ? text : "-"}</a-tooltip>
    },
  },
  {
    title: "授课教师",
    dataIndex: "teacher",
    key: "teacher",
    width: "30%",
    align: "center",
    ellipsis: true,
    slots: { customRender: "teacherName" },
  },
  {
    title: "时长",
    dataIndex: "duration",
    key: "duration",
    width: "12%",
    ellipsis: true,
    align: "center",
    customRender: ({ text }) => {
      return text ? Math.floor(text / 60) : "-";
    },
  },
  {
    title: "面授时间",
    dataIndex: "starttime",
    key: "starttime",
    width: "40%",
    ellipsis: true,
    align: "center",
    customRender: ( text ) => {
      return text.record.beginTime + ' ~ ' + text.record.endTime
    },
  },
  {
    title: "学员数",
    dataIndex: "studentCnt",
    key: "studentCnt",
    width: 100,
    align: "center",
    ellipsis: true,
    customRender: ( text ) => {
      return(
      <div style="display:flex;justify-content:center;align-items:center;">
        <span>{text.record.studentCnt || '0'}</span>
        <div class="daochu" onClick={()=>downStudent(text.record)} title="导出学员信息"></div>
      </div>
      )
    },
  },
  {
    title: "评分",
    dataIndex: "studentCnt",
    key: "studentCnt",
    width: 100,
    align: "center",
    ellipsis: true,
    customRender: ( text ) => {
      return(
        text.record && text.record.courseScore != -1 ?
          <div style="display:flex;justify-content:center;align-items:center;">
            <span>{text.record.courseScore || '0'}</span>
            <div class="daochu" onClick={()=>downPin(text.record)} title="导出评估信息"></div>
          </div>
          : '-'
      )
    },
  },
  {
    title: "创建人",
    dataIndex: "createName",
    key: "createName",
    width: "10%",
    align: "center",
    ellipsis: true,
    customRender: ({ text }) => {
      return text ? text : "-";
    },
  },
  {
    title: "地点",
    dataIndex: "address",
    key: "saddress",
    width: "30%",
    align: "center",
    ellipsis: true,
    customRender: ({ text }) => {
      return text ? text : "-";
    },
  },
  {
    title: "操作",
    width: 300,
    dataIndex: "operation",
    key: "operation",
    align: "center",
    fixed: "right",
    slots: { customRender: "action" },
  },
];
const downStudent = (val) => {
  if (val.id != undefined) {
    window.open(
      `${
        process.env.VUE_APP_BASE_API
      }/admin/student/exportTaskStudent?type=${3}&pid=${val.id}&thirdType=2`
    );
  }
}
const downPin = (val) => {
  if (val.id != undefined) {
    window.open(
      `${
        process.env.VUE_APP_BASE_API
      }/admin/assessment/manage/exportCoursePlanAssessmentMessage?type=3&pid=${val.id}&courseId=${val.assessmentId}&taskId=${val.id}&taskType=11`
    );
  }
}
//开课学员管理
const columns7 = [
  ////  {
  //   title: "序号",
  //    width: 200,
  //   dataIndex: "num",
  //  key: "num",
  //  align: "center",
  //   customRender: ({ index, record }) => {
  //   const pageNum =
  //     Number(record.pageNo) - 1 > 0 ? (Number(record.pageNo) - 1) * 10 : 0;
  //  return index + 1 + pageNum;
  // },
  // },
  {
    title: "姓名",
    width: 200,
    dataIndex: "name",
    key: "name",
    customRender: ({ text }) => {
      return text ? text : "-";
    },
  },
  {
    title: "工号",
    width: 200,
    dataIndex: "number",
    key: "1",
    align: "center",
    customRender: ({ text }) => {
      return text ? text : "-";
    },
  },
  {
    title: "部门",
    width: 200,
    dataIndex: "department",
    key: "2",
    align: "center",
    customRender: ({ text }) => {
      return text ? text : "-";
    },
  },
  // {
  //   title: "岗位",
  //   width: 300,
  //   dataIndex: "postion",
  //   key: "3",
  //  align: "center",
  //  customRender: ({ text }) => {
  //    return text ? text : "-";
  //  },
  // },
  {
    title: "Band",
    width: 200,
    dataIndex: "band",
    key: "4",
    align: "center",
    customRender: ({ text }) => {
      return text ? text : "-";
    },
  },
  {
    title: "报名状态",
    width: 200,
    dataIndex: "status",
    key: "5",
    align: "center",
    customRender: ({ record }) => {
      switch (String(record.status)) {
        case "0":
          return "审核通过";
        case "1":
          return "待审核";
        case "2":
          return "审核拒绝";
      }
    },
  },
  {
    title: "加入方式",
    width: 200,
    dataIndex: "join",
    key: "6",
    align: "center",
    customRender: ({ record }) => {
      switch (String(record.source)) {
        case "1":
          return "导入";
        case "2":
          return "报名加入";
      }
    },
  },
  // {
  //   title: "签到状态",
  //   width: 200,
  //   dataIndex: "signstatus",
  //   key: "7",
  //   align: "center",
  //   customRender: ({ record }) => {
  //     switch (String(record.signStatus)) {
  //       case "0":
  //         return "未签到";
  //       case "1":
  //         return "已签到";
  //       case "2":
  //         return "请假";
  //     }
  //   },
  // },
  // {
  //   title: "评估状态",
  //   width: 200,
  //   dataIndex: "evastatus",
  //   key: "8",
  //   align: "center",
  //   customRender: ({ record }) => {
  //     switch (String(record.evalStatus)) {
  //       case "0":
  //         return "未评估";
  //       case "1":
  //         return "已评估";
  //     }
  //   },
  // },
  // {
  //   title: "结业状态",
  //   width: 100,
  //   className: "h",
  //   dataIndex: "overstatus",
  //   key: "overstatus",
  //   fixed: "right",
  //   align: "center",
  //   // key: "9",
  //   // align: "center",
  //   // customRender: ({ record }) => {
  //   //   switch (String(record.source)) {
  //   //     case "0":
  //   //       return "未结业";
  //   //     case "1":
  //   //       return "已结业";
  //   //   }
  //   // },
  // },
  {
    title: "操作",
    width: 100,
    className: "h",
    dataIndex: "operation",
    key: "operation",
    fixed: "right",
    align: "center",
  },
];
export default defineComponent({
  components: {
    // OwnPower,
    // Corpowerlist,
    CommonStudent,
    DropDown,
    OwnerTableModelStudent,
    SeeModal,
    CourseModal,
    FJUpload,
    // StuAdd,
    ProjectManager,
    ProjOwnerShip,
    ProjPowerList,
    ProjCheckShip,
    AssessmentList,
    AddHomework,
    AddTest,
    NameInput,
    NameInputNew,
    TableStudent,
    // VNodes: (_, {attrs}) => {
    //   return attrs.vnodes;
    // },
    addOnlineCourse,
    TwoDimensionalCode,
    DeleteOutlined
  },
  setup() {
    const CourseModalRef = ref(null);
    const store = useStore();
    const sysTypeOptions = computed(() => store.state.content_type);
    const durationText = computed(() => state.xjkkinputV3?.length?dayjs(state.xjkkinputV3[1]).diff(dayjs(state.xjkkinputV3[0]),'minute'):'请输入持续时间');
    
    const state = reactive({
      tableCoursePlanLoading: false,
      permissions:null,
      createId:null,
      workInfo: {},
      examInfo: {},
      tableLoading: false,
      itemType: null,
      columns1: [
        {
          title: "课程编号",
          width: 130,
          dataIndex: "offcourseNumber",
          key: "offcourseNumber",
          align: "center",
        },
        {
          title: "名称",
          width: 400,
          dataIndex: "name",
          key: "name",
          ellipsis: true,
          align: "left",
          customRender: ({ text }) => {
            return text ? text : "-";
          },
        },
        {
          title: "关键字",
          dataIndex: "tips",
          key: "tips",
          align: "left",
          customCell  :() => {return {style: {maxWidth: '200px',overflow: 'hidden',whiteSpace: 'nowrap',textOverflow:'ellipsis',cursor:'pointer'}}},
          customRender: ({ text }) => {
            return <a-tooltip color="white" placement="topLeft" title = {text} >{text ? text : "-"}</a-tooltip>
          },
        },
        {
          title: "内容分类",
          width: 130,
          dataIndex: "contentTxt",
          ellipsis: true,
          key: "contentTxt",
          align: "center",
          customRender: ({ record }) =>
            findClassFullName(sysTypeOptions.value, record.sysTypeId) || "-",
        },
        {
          title: "课程形式",
          width: 130,
          dataIndex: "courseform",
          key: "2",
          align: "center",
          customRender: ({ record }) => {
            switch (String(record.courseform)) {
              case "1":
                return "线上";
              case "2":
                return "面授";
            }
          },
        },
        {
          title: " 所属项目",
          width: 250,
          dataIndex: "projectName",
          key: "3",
          align: "center",
          ellipsis: true,
          customRender: ({ text }) => {
            return text ? text : "-";
          },
        },
        {
          title: " 所属路径",
          width: 250,
          dataIndex: "routerName",
          key: "3",
          align: "center",
          ellipsis: true,
          customRender: ({ text }) => {
            return text ? text : "-";
          },
        },
        {
          title: " 资源归属",
          width: 250,
          dataIndex: "sourceBelongFullName",
          key: "3",
          align: "center",
          ellipsis: true,
          customRender: ({ text }) => {
            return text ? text : "-";
          },
        },

        {
          title: " 目标人群",
          width: 250,
          dataIndex: "targetUser",
          key: "3",
          align: "center",
          ellipsis: true,
          customRender: ({ text }) => {
            return text ? text : "-";
          },
        },
        {
          title: "学习人数",
          width: 130,
          dataIndex: "studentCnt",
          key: "4",
          align: "center",
          customRender: ({ text }) => {
            return text ? text : "0";
          },
        },
        // {
        //  title: "评分",
        //  width: 130,
        //  dataIndex: "grade",
        //   key: "5",
        //  align: "center",
        // customRender: ({ text }) => {
        //   return text ? text : "0";
        //  },
        // },
        {
          title: "状态",
          width: 130,
          dataIndex: "auditStatus",
          key: "6",
          align: "center",
          customRender: ({ record }) => {
            switch (String(record.auditStatus)) {
              case "0":
                return "未提交";
              case "1":
                return "待审核";
              case "2":
                return "已审核";
              case "3":
                return "已审核";
              case "-1":
                return "审核未通过";
            }
          },
        },
        {
          title: "是否发布",
          width: 100,
          dataIndex: "publishStatus",
          key: "7",
          align: "center",
          customRender: ({ record }) =>
            record.publishStatus? "已发布" : "未发布",
        },
        {
          title: "创建人",
          width: 100,
          dataIndex: "createName",
          key: "8",
          ellipsis: true,
          align: "center",
          customRender: ({ text }) => {
            return text ? text : "-";
          },
        },
        {
          title: "创建时间",
          width: 100,
          dataIndex: "createTime",
          key: "9",
          ellipsis: true,
          align: "center",
          customRender: ({ text }) => {
            return text ? text : "-";
          },
        },
        {
          title: "发布时间",
          width: 100,
          ellipsis: true,
          dataIndex: "publishTime",
          key: "10",
          align: "center",
          customRender: ({ text, publishStatus }) => {
            return publishStatus? text || "-" : "-";
          },
        },
        {
          title: "是否停用",
          width: 100,
          key: "status",
          dataIndex: "status",
          align: "center",
          customRender: ({ record }) =>
            record.publishStatus? (record.status ? "启用" : "停用") : "-",
        },
        {
          title: "操作",
          width: 250,
          dataIndex: "id",
          key: "id",
          fixed: "right",
          align: "right",
          slots: { customRender: "action" },
        },
      ],

      shipType: 1,
      addLoading: false,
      currentPlanItem: {},
      teacherId: null,
      // teacher: null,
      selectedRowKeys7: [],
      auditDescription: "",
      isEdit: 0,
      member: { name: "", value: "" },
      offteachers:[{
        teacherId: "",
        teacherName: "",
        weight: '',
      }],
      //列表表格
      tableData1: [
        // {
        //   key: "1",
        //   num: 1,
        //   name: "时间管理",
        //   content: "领导力",
        //   courseform: "线上",
        //   project: "管理者进阶-腾飞班1",
        //   stunum: "50",
        //   grade: "5",
        //   status: "未提交",
        //   ynpub: "未发布",
        //   creator: "管理员",
        //   createtime: "2022-07-20 9:30",
        //   pubtime: "2022-07-20 9:30",
        //   kkty: false,
        // },
      ],
      //在线面授管理报名管理
      tableData2: [
        // {
        //   key: 1,
        //   projectName: "刘莉",
        //   numb: "10064511",
        //   applytime: "2022-07-20 14:00:00",
        //   signtime: "-",
        //   status: "已通过",
        // },
      ],
      //在线面授管理学习记录
      tableData3: [
        {
          key: 1,
          projectName: "刘莉",
          numb: "10064511",
          applytime: "2022-07-20 14:00:00",
          signtime: "-",
          status: "已通过",
        },
      ],
      //管理查看详情
      tableData4: [
        {
          key: 1,
          projectName: "刘莉",
          address: "10064511",
          status: "已通过",
        },
      ],
      //列表表格
      tableData5: [
        // {
        //   key: "1",
        //   num: 1,
        //   name: "时间管理",
        //   content: "领导力",
        //   courseform: "线上",
        //   project: "管理者进阶-腾飞班1",
        //   stunum: "50",
        //   grade: "5",
        //   status: "未提交",
        //   ynpub: "未发布",
        //   creator: "管理员",
        //   createtime: "2022-07-20 9:30",
        //   pubtime: "2022-07-20 9:30",
        //   kkty: false,
        // },
      ],
      //开课
      tableData6: [
        // {
        //   key: 1,
        //   num: 1,
        //   organization: "管理者面授课1",
        //   address: "核心能力大楼培训",
        //   starttime: "2022-07-20 14:00:00",
        //   createtime: "2022-07-14 14:00:00",
        // },
      ],
      //开课学员管理
      tableData7: [
        // {
        //   key: "1",
        //   num: 1,
        //   name: "李梦",
        //   number: "1000",
        //   department: "显示事业",
        //   postion: "产品经理",
        //   band: "Band9",
        //   status: "待审核",
        //   join: "手动加入",
        //   signstatus: "-",
        //   evastatus: "-",
        //   overstatus: "-",
        // },
      ],
      stuColumns: [],
      currentPage1: 1,
      tableDataTotal1: -1,
      pageSize1: 10,

      currentPageTea1: 1,
      tableDataTotalTea1: 0,
      pageSizeTea1: 10,
      currentPageTea2: 1,
      tableDataTotalTea2: 0,
      pageSizeTea2: 10,

      Stuvisible: false, //添加学员

      currentPage: 1,
      tableDataTotal: 100,
      pageSize: 10,
      selectedRowKeys: [],
      faceManageTab: "1",
      of_hs: false,
      hideshow: true,
      bs_hs: false,
      ft_hs: false,
      lookMs: false,
      om_1: false,
      ft_1: false,
      om_ckxq: false,
      stm_hs: false,
      cstm_hs: false,
      sm_hs: false,
      QR_hs: false,
      closableQR: false,
      rg_hs: false,
      piliang: false,
      graduate_hs: false,
      agreereject_hs: false,
      agreestudy_hs: false,
      rejectstudy_hs: false,
      delete_hs: false,
      submit_hs: false,
      push_hs: false,
      back_hs: false,
      del_hs: false,
      del_hs_stu: false,
      copy_hs: false,
      nouse_hs: false,
      // 二维码标题状态
      qrQR_hs: false,
      olQR_hs: false,
      ftQR_hs: false,
      ftsQR_hs: false,
      vipftQR_hs: false,
      //抽屉状态
      ownpowervisible: false,
      corpowerlistvisible: false,

      lookCourseModal: false,
      faceDetailObj: {},

      offcourseId: null,
      temp: null,
      useCourse: false,
      stopCourse: false,
      projectName: "",
      name: "",
      createName: "",
      auditStatus: null,
      categoryId: undefined,
      sysTypeId: undefined,
      projectTime: "",

      //列表
      value1: "",
      value2: "",
      value3: "",
      value4: "",
      //选择线上还是面授
      xzinputV1: "",
      valueE1: "",
      valueE2: "",
      //确定面授
      ft_eidt: false,
      statusJuJue: 0,
      statusTingQi: 1,
      qdms_inputV1: "",
      qdms_inputV2: "",
      qdms_inputV3: "",
      qdms_inputV4: [],
      tagsOptions: [],
      qdms_inputV5: null,
      fen_lei: null,
      feng_mian_1: null,
      feng_mian_2: null,
      chang_jin: null,
      tags_val_single: "",
      tags_val: [],
      qdms_inputV6: "",
      //在线面授管理
      gl_selectV1: undefined,
      gl_selectV2: undefined,
      gl_inputV1: "",
      gl_inputV2: "",
      manageStuLoading: true,
      currentFaceId: "",
      //开课
      kk_eidt: false,
      kkinputV1: "",
      kkinputV2: "",
      //新建开课
      xjkkradioV1: false,
      xjkkradioVEnd: false,
      xjkkradioVEndTime: null,
      completeType: "",
      xjkkinputV1: "",
      onceName: "",
      changeName:false,
      xjkkinputV2: "",
      duration: "",
      xjkkinputV3: [],
      xjkkinputV4: null,
      beforeValue: null, //考勤 开始前
      afterStartValue: null, //考勤 开始后
      //开课学员管理
      xygl_inputV1: "",
      //录入成绩
      lrcj_inputV1: "",
      scoreId: null, //录入成绩id
      isgetStudent: false, //是否重新获取学员
      //结业
      jyradioV1: "",

      imageUrl: "",
      imgList: [],
      validated: 0,
      attach: "",
      pageSize2: 10,
      currentPage2: 1,
      tableDataTotal2: 0,
      pageSize22: 10,
      currentPage22: 1,
      tableDataTotal22: 0,
      pageSize222: 10,
      currentPage222: 1,
      tableDataTotal222: 0,
      kk_inputV0: '',
      kk_inputV1: "",
      kk_inputV2: "",
      selectTime: "",

      pageSize3: 10,
      currentPage3: 1,
      tableDataTotal3: 0,

      checked1: false,
      checked4: false,
      offcoursePlanId: 0,
      filesList: [],
      signCom: false,
      regisCom: false,
      comLeave: false,
      studentId: 0,
      homeWorkId: null,
      studentItem: {},
      addOnlineCoursevisible: false, //新建面授弹窗

      selectCourseId: null, //授权选择的id

      viewpowervisible: false, //查看权抽屉
      authClassify: null, //1：查看权 2：管理权 3：学员
      addAuthList: null,

      addStudentList: null, //选中列表

      newCourseName: null, //新建开课名称
      EditWorkId: null,
      assessment: {},
      assessmentId: null,
      workName: null,
      EditTestId: null,
      testName: null,
      assessmentName: "",
      assessmentVisible: false,
      addhomeworkvisible: false,
      addtestvisible: false,
      codevisible: false, //二维码弹窗
      codeIndex: null,
      codeInfo: null, //二维码内容
      codeUrl: codeUrl,

      // 课程三级分类
      options2222: [
        {
          title: "领导力",
          value: "100",
          children: [
            {
              title: "管理业务",
              value: "1001",
            },
            {
              title: "管理团队",
              value: "1002",
            },
            {
              title: "管理自我",
              value: "1003",
            },
          ],
        },
        {
          title: "专业力",
          value: "200",
          children: [
            {
              title: "研发",
              value: "2001",
            },
            {
              title: "系统和解决方案",
              value: "2002",
            },
            {
              title: "生产技术与制造",
              value: "2003",
            },
            {
              title: "供应链",
              value: "2004",
            },
            {
              title: "营销",
              value: "2005",
            },
            {
              title: "品质",
              value: "2006",
            },
            {
              title: "专业职能",
              value: "2007",
              children: [
                {
                  title: "战略与企划",
                  value: "200701",
                },
                {
                  title: "流程管理",
                  value: "200702",
                },
                {
                  title: "业绩管理",
                  value: "200703",
                },
                {
                  title: "项目管理",
                  value: "200704",
                },
                {
                  title: "信息技术",
                  value: "200705",
                },
                {
                  title: "环境与安全",
                  value: "200706",
                },
                {
                  title: "人力资源",
                  value: "200707",
                },
                {
                  title: "企业文化",
                  value: "200708",
                },
                {
                  title: "品牌",
                  value: "200709",
                },
                {
                  title: "财务",
                  value: "200710",
                },
                {
                  title: "法务",
                  value: "200711",
                },
                {
                  title: "风险控制",
                  value: "200712",
                },
                {
                  title: "行政",
                  value: "200713",
                },
              ],
            },
            {
              title: "医工",
              value: "2008",
            },
          ],
        },
        {
          title: "通用力",
          value: "300",
          children: [
            {
              title: "职业操守与道德",
              value: "3001",
            },
            {
              title: "职业素养与技能",
              value: "3002",
            },
            {
              title: "规章制度",
              value: "3003",
            },
          ],
        },
      ],

      // 点击开课管理 -- 显示得信息
      faceType: "面授课", // 面授课类型
      faceClassification: "", // 课程内容分类
      faceStatus: "", // 课程状态

      codeType: null, //二维码类型
    });
    const nums = ref(0)
        watch(durationText,(val)=>{
          nums.value++
          if(nums.value>1){
            state.duration = val;
          }
    })
    // function timeChange(time, timeStr) {
    //   // state.duration || (state.duration = dayjs(timeStr[1]).diff(dayjs(timeStr[0]),'minute'))
    // }
// function timeChange(timeStr) {
//   console.log(timeStr,'timeStr')
//   formData.value.beginTime = timeStr;
// }
  function onDateSelect(date) {
    const month = String(date.$M+1).padStart(2, '0')
    const day = String(date.$D).padStart(2, '0')
    const hour = String(date.$H).padStart(2, '0')
    const minute = String(date.$m).padStart(2, '0')
    state.xjkkinputV3[0]=date.$y+'-'+month+'-'+day+' '+hour+':'+minute
  }
  const openStart = ref(false)
const onOkStart = ()=>{
  openStart.value = false
}
function onBlurStart(e){
  state.xjkkinputV3[0]=e.target.value
  openStart.value = false
}
function onFocusStart(){
  openStart.value = true
  // if(!state.xjkkinputV3[0]){
  //   let now=new Date()
  //   let start=new Date(now.setFullYear(now.getFullYear(), now.getMonth(), now.getDate(), 0, 0))
  //   state.xjkkinputV3 = [
  //     moment(start).format('YYYY-MM-DD HH:mm'),
  //     state.xjkkinputV3[1]
  //   ];
  // }
}
// function timeChangeEnd(timeStr){
//   formData.value.endTime = timeStr;
// }
function onDateEnd(date) {
    const month = String(date.$M+1).padStart(2, '0')
    const day = String(date.$D).padStart(2, '0')
    const hour = String(date.$H).padStart(2, '0')
    const minute = String(date.$m).padStart(2, '0')
    state.xjkkinputV3[1]=date.$y+'-'+month+'-'+day+' '+hour+':'+minute
    if(state.xjkkinputV3[0]==state.xjkkinputV3[1]){
      const minute = String(date.$m+1).padStart(2, '0')
      state.xjkkinputV3[1]=date.$y+'-'+month+'-'+day+' '+hour+':'+minute
    }
  }
  const openEnd = ref(false)
const onOkEnd = ()=>{
  openEnd.value = false
}
function onBlurEnd(e){
  state.xjkkinputV3[1]=e.target.value
  openEnd.value = false
}
function onFocusEnd(){
  openEnd.value = true
  // if(!state.xjkkinputV3[1]){
  //   let now=new Date()
  //      let start=new Date()
  //      let end=new Date(now.setFullYear(now.getFullYear()))
  //      state.xjkkinputV3 = [
  //      state.xjkkinputV3[0],
  //       moment(end).format('YYYY-MM-DD HH:mm')
  //   ];
  // }
}
    const totalWeightSum = ref(0)
    function inputWeightChange(index) {
      let totalWeight = 0
      state.offteachers.forEach(item => {
        totalWeight += Number(item.weight);
      });
      if (totalWeight > 100) {
        message.info("权重值最大为100%");
        state.offteachers[index].weight -= totalWeight - 100;
        totalWeight = 100;
      }
      totalWeightSum.value = totalWeight
    }
    function inputAdd() {
      state.offteachers.push({
        teacherId: "",
        teacherName: "",
        weight: '',
      });
    }
    function inputRemove(index) {
      dialog({
        content: "确定删除此授课教师吗？",
        ok: async () => {
          state.offteachers.splice(index, 1);
          message.success("删除成功");
        },
      });
    }

    function findClassFullName(list, classify, name = "") {
      return (
        (list &&
          list.length > 0 &&
          list
            .map((e) =>
              classify == e.code
                ? name
                  ? name + "-" + e.name
                  : e.name
                : findClassFullName(
                    e.children,
                    classify,
                    name ? name + "-" + e.name : e.name
                  )
            )
            .filter((name) => name)
            .join("")) ||
        ""
      );
    }

    const showStuAdd = (record) => {
      state.selectCourseId = record.offcoursePlanId;
      state.shipType = 2;
      state.authClassify = 3;
      state.viewpowervisible = true;
    };

    //  富文本 sssssssssssssss
    // 编辑器实例，必须用 shallowRef
    const editorRef = shallowRef();
    // 内容 HTML
    const valueHtml = ref("");
    // // 模拟 ajax 异步获取内容
    onMounted(() => {});

    const toolbarConfig = {
      excludeKeys: ["insertVideo", "insertImage"],
    };
    const editorConfig = { placeholder: "请输入内容...", MENU_CONF: {} };
    editorConfig.MENU_CONF["uploadImage"] = {
      // 自定义上传
      async customUpload(file, insertFn) {
        const formData = new FormData();
        formData.append("file", file);
        fileUp(formData).then((res) => {
          if (res.data.code === 200) {
            // 最后插入图片
            insertFn(res.data.data, file.name, res.data.data);
          }
        });
      },
    };
    const handleCreated = (editor) => {
      console.log("toolbar2222222222333333322222");
      console.log(editorRef.value);
      editorRef.value = editor; // 记录 editor 实例，重要！
    };
    // 组件销毁时，也及时销毁编辑器
    onBeforeUnmount(() => {
      const editor = editorRef.value;
      if (editor == null) return;
      editor.destroy();
    });
    //  富文本 eeeeeeeeeeeeee

    const route = useRoute();
    console.log(route);
    const router = useRouter();
    console.log(router);

    const beforeUpload = (file) => {
      return new Promise((resolve, reject) => {
        const isJpgOrPng =
          file.type === "image/jpg" ||
          file.type === "image/jpeg" ||
          file.type === "image/png" ||
          file.type === "image/svg" ||
          file.type === "image/bmp" ||
          file.type === "image/gif";
        if (!isJpgOrPng) {
          message.error("仅支持jpg、gif、png、jpeg、svg、bmp格式!");
          return reject(false);
        }

        console.log(file.size);
        let isLt1M = file.size / 10240 / 10240 <= 1;
        if (!isLt1M) {
          this.$message.error("图片大小超过10MB!");
          return reject(false);
        }

        let w = 0,
          h = 0;
        let reader = new FileReader();
        reader.readAsDataURL(file);
        reader.onload = () => {
          const image = new Image();
          image.src = reader.result;
          image.onload = () => {
            w = image.width;
            h = image.height;
            const ratio = 800 / 450;
            if (w / h == ratio) {
              // 图片比例为800*450横纵比一致

              const formData = new FormData();
              formData.append("file", file);
              console.log(file);
              fileUp(formData).then((res) => {
                if (res.data.code === 200) {
                  state.imageUrl = res.data.data;
                  // state.hasImgName = file.name;
                  // emit("src", { id: curItem.value.id, src: res.data.data });
                }
              });
              return resolve(true);
            } else {
              message.error(
                "图片尺寸错误，只能上传800*450(高宽比例为16：9)横纵比一致的图片"
              );
              return reject(false);
            }
          };
        };

        return reject(false);
      });
    };
    const beforeUpload2 = (file) => {
      console.log(6765555);
      console.log(file);
      const fileType = [
        "jpg",
        "jpeg",
        "png",
        "gif",
        "pdf",
        "ppt",
        "pptx",
        "doc",
        "docx",
        "xls",
        "xlsx",
        "zip",
      ];
      if (!fileType.includes(file.name.split(".")[1])) {
        message.error(
          "仅支持.pdf,.ppt,.pptx,.doc,.docx,.xls,.xlsx,.jpg,.jpeg,.png,.gif,.zip格式!"
        );
        return false;
      }

      // let isLt1M = file.size / 10240 / 10240 <= 1;
      // if (!isLt1M) {
      //   this.$message.error("图片大小超过10MB!");
      //   return false;
      // }

      const formData = new FormData();
      formData.append("file", file);
      console.log(file);
      fileUp(formData).then((res) => {
        if (res.data.code === 200) {
          state.imgList.push({
            img: res.data.data,
            name: file.name,
            size: file.size,
          });
          console.log(state.imgList);
          // state.hasImgName = res.data.data;
        }
      });
      return false;
    };
    const handleDel = (index) => {
      state.imgList.splice(index, 1);
    };
    const handleDel2 = (index) => {
      state.filesList.splice(index, 1);
    };

    // 渲染列表1操作
    const getTableDate = async () => {
      state.tableLoading = true;
      console.log("我是点击搜索的数据", state.sysTypeId);
      let startTime = "";
      let endTime = "";
      if (state.projectTime) {
        startTime = toDate(
          new Date(state.projectTime[0].$d).getTime() / 1000,
          "Y-M-D"
        );
        endTime = toDate(
          new Date(state.projectTime[1].$d).getTime() / 1000,
          "Y-M-D"
        );
      }
      let res = await list({
        pageNo: state.currentPage1,
        pageSize: state.pageSize1,
        auditStatus: state.auditStatus,
        // categoryId: state.categoryId,
        sysTypeId: state.sysTypeId,
        projectName: state.projectName,
        name: state.name,
        createName: state.createName,
        endTime: endTime,
        beginTime: startTime,
      });
      const { rows, total } = res.data.data;
      state.tableData1 = rows;
      state.tableDataTotal1 = total;
      state.tableLoading = false;
      // itm.pageNo = pageNo;
      // itm.contentTxt = findClassFullName(sysTypeOptions.value, itm.sysTypeId) || "-";
      console.log("state.tableData1", state.tableData1);
    };

    getTableDate();
    const handelChangePage1 = (page, pageSize) => {
      state.currentPage1 = page;
      state.pageSize1 = pageSize;
      getTableDate();
    };
    const handleSearch1 = () => {
      getTableDate();
    };
    const handleRest1 = () => {
      state.projectName = "";
      state.name = "";
      state.createName = "";
      state.auditStatus = null;
      state.sysTypeId = null;
      state.projectTime = "";
      getTableDate();
    };

    const handleSucessStu = (itm) => {
      console.log(itm);
      state.studentId = itm.studentId;
      state.studentItem = itm;

      state.agreereject_hs = true;
      state.agreestudy_hs = true;
    };
    const handleRejectStu = (itm) => {
      console.log(itm);
      state.studentId = itm.studentId;
      state.studentItem = itm;

      state.agreereject_hs = true;
      state.rejectstudy_hs = true;
    };
    const handleDeleteStu = (itm) => {
      console.log(itm);
      state.studentId = itm.studentId;
      state.studentItem = itm;

      state.delete_hs = true;
      state.del_hs = true;
      state.del_hs_stu = true;
    };
    const handlJoinStu = (itm) => {
      console.log(itm);
      state.studentId = itm.studentId;
      state.studentItem = itm;

      state.rg_hs = true;
      state.scoreId = itm.id;
    };
    const handleOverStu = (itm) => {
      console.log("点击结业", itm);
      state.studentId = itm.studentId;
      state.studentItem = itm;

      state.graduate_hs = true;
    };

    //快速选人 选中的数组
    const onSelectChange7 = (selectedRowKeys, item) => {
      console.log("selectedRowKeys changed: ", selectedRowKeys, item);
      state.selectedRowKeys7 = selectedRowKeys;
      if (selectedRowKeys.length) {
        state.piliang = true;
      } else {
        state.piliang = false;
      }
      // state.choosepeople = item.reverse();
      // console.log(item, "选中你了！", state.choosepeople);
      // selectedsHeight();
    };
    const handleAllJion = () => {
      console.log(111);
      if (state.piliang) {
        state.rg_hs = true;
      }
    };
    const handleAllover = () => {
      console.log(111);

      if (state.selectedRowKeys7.length === 0) {
        return;
      }

      handleStudent({
        offcoursePlanId: state.offcoursePlanId,
        score: "",
        studentIds: state.selectedRowKeys7,
        type: 2,
      }).then((res) => {
        console.log(res);
        getTableDate2();
      });
    };
    const handleAllSuc = () => {
      console.log(111);

      if (state.selectedRowKeys7.length === 0) {
        return;
      }

      handleStudent({
        offcoursePlanId: state.offcoursePlanId,
        score: "",
        studentIds: state.selectedRowKeys7,
        type: 3,
      }).then((res) => {
        console.log(res);
        getTableDate2();
      });
    };
    const handleAllReject = () => {
      console.log(111);

      if (state.selectedRowKeys7.length === 0) {
        return;
      }

      handleStudent({
        offcoursePlanId: state.offcoursePlanId,
        score: "",
        studentIds: state.selectedRowKeys7,
        type: 4,
      }).then((res) => {
        console.log(res);
        getTableDate2();
      });
    };

    const handleExportStu = () => {
      console.log(55533);
      console.log(state.offcoursePlanId);

      studentExport({
        pageNo: state.currentPage3,
        pageSize: state.pageSize3,
        // applyStatus: state.auditStatus,
        // evalStatus: state.categoryId,
        // name: state.projectName,
        // signStatus: state.name,
        // status: state.name,
        offcoursePlanId: state.offcoursePlanId,
      }).then((res) => {
        // 流文件？？？
        console.log("res33333");
        console.log(res);

        newFile(res.data.data);
      });
    };

    const showAssessment = () => {
      state.assessmentVisible = true;
    };
    const showDrawerAddHomework = () => {
      state.addhomeworkvisible = true;
    };
    const showDrawerAddTest = () => {
      state.addtestvisible = true;
    };
    const logW = () => {
      state.workInfo = {};
    };
    const logT = () => {
      state.examInfo = {};
    };
    const removePG = () => {
      console.log("11111");
      state.changeName = false
      state.assessmentId = null;
      state.assessmentName = "";
      // state.isEvaluate = "0";
    };
    const getCheckedAss = (ass) => {
      console.log("ass");
      console.log(ass);
      state.assessmentId = ass.assessmentId;
      state.assessmentName = ass.name;
      state.assessment = ass;
      // state.assessment1 = null;
    };

    const rest = () => {
      options4CurName.value = "";
      options4CurId.value = "";
      // state.teacher = null;
      state.teacherId = null;
    };
    const handleChangeTea1 = (val) => {
      console.log(787877);
      console.log(val);

      rest();
    };
    const handelChangePageTea1 = (page, pageSize) => {
      state.currentPageTea1 = page;
      state.pageSizeTea1 = pageSize;
      rest();
    };
    const handleChangeTea2 = (val) => {
      console.log(787877);
      console.log(val);
      options4CurName.value = val;
      rest();
    };
    const handelChangePageTea2 = (page, pageSize) => {
      state.currentPageTea2 = page;
      state.pageSizeTea2 = pageSize;
      rest();
    };

    //获取分类、场景、封面图、-----------字典配置-------------------------------
    const optionsUrl = ref([]);
    //获取分类、场景、封面图、----------------字典配置---------------------------

    //渲染学员管理操作
    const getTableDate2 = async () => {
      // let data2 = state.tableData7;
      let obj = {
        pageNo: state.currentPage3,
        pageSize: state.pageSize3,
        offcoursePlanId: state.offcoursePlanId,
        name: state.xygl_inputV1,
      };
      console.log("获取学员信息", obj);
      let res = await studentList(obj);
      console.log("获取学员列表", res);
      const { rows, total, pageNo } = res.data.data;
      state.tableDataTotal3 = total;

      for (let i = 0; i < rows.length; i++) {
        rows[i].num = i + 1 + (state.currentPage3 - 1) * 10;
      }
      rows.forEach((item, index) => {
        rows[index] = {
          ...item,
          ...item.userInfoBo,
        };
      });
      const data2 = traverseArr(
        rows,
        {
          key: "studentId",
          num: "num",
          name: "name",
          number: "studentId",
          department: "deptName",
          postion: "jobName",
          band: "bandDesc",
          status: "applyStatus",
          join: "source",
          signstatus: "signStatus",
          evastatus: "evalStatus",
          overstatus: "status",
        },
        true
      );
      data2.forEach((itm) => {
        itm.pageNo = pageNo;
      });
      state.tableData7 = data2;
    };
    getTableDate2();
    // 渲染开课操作

    const handleSearchTable2 = () => {
      console.log(7878);
      // getTableDate33();
    };
    const handleSearchTable3 = () => {
      state.manageStuLoading = true;
      state.currentPage222 = 1
      getCourseStudentList();
    };

    const reseatSearchTable3 = () => {
      state.currentPage222 = 1;
      state.gl_inputV2 = "";
      state.gl_selectV2 = undefined;
      state.manageStuLoading = true;
      getCourseStudentList();
    };
    // const getTableDate33 = async () => {
    // let datas = state.tableData2;
    // let res = await listReview({
    //   pageNo: state.currentPage22,
    //   pageSize: state.pageSize22,
    //   auditStatus: state.gl_selectV1,
    //   name: state.gl_inputv1,
    // });
    // const { rows, total } = res.data.data;
    // state.tableDataTotal22 = total;
    // const datas = traverseArr(
    //   rows,
    //   {
    //     key: "offcourseId",
    //     projectName: "projectName",
    //     numb: "assessmentName",
    //     applytime: "createTime",
    //     signtime: "publishTime",
    //     status: "auditStatus",
    //   },
    //   true
    // );
    // state.tableData2 = datas;
    // };
    // 渲染开课操作
    // const getTableDate333 = async () => {
    // let datas = state.tableData2;
    // let res = await studyRecordList({
    //   pageNo: state.currentPage222,
    //   pageSize: state.pageSize222,
    //   name: state.gl_selectV1,
    //   status: state.gl_inputv1,
    // });
    // const { rows, total } = res.data.data;
    // state.tableDataTotal222 = total;
    // const datas = traverseArr(
    //   rows,
    //   {
    //     key: "offcourseId",
    //     projectName: "projectName",
    //     numb: "assessmentName",
    //     applytime: "createTime",
    //     signtime: "publishTime",
    //     status: "auditStatus",
    //   },
    //   true
    // );
    // state.tableData2 = datas;
    // };
    // 渲染开课操作
    const getTableDate3 = async (type) => {
      state.tableLoading = true;
      state.tableCoursePlanLoading = true
      // let datas = state.tableData6;
      let beginTime = "";
      let endTime = "";
      if (state.selectTime) {
        // beginTime = parseInt(new Date(state.selectTime[0].$d).getTime() / 1000);
        // endTime = parseInt(new Date(state.selectTime[1].$d).getTime() / 1000);
        beginTime = dayjs(state.selectTime[0]).format("YYYY-MM-DD HH:mm:ss");
        // toDate(
        //   new Date(state.selectTime[0].$d).getTime() / 1000,
        //   "Y-M-D h:m:s"
        // );
        endTime = dayjs(state.selectTime[1]).format("YYYY-MM-DD HH:mm:ss");
        // toDate(
        //   new Date(state.selectTime[1].$d).getTime() / 1000,
        //   "Y-M-D h:m:s"
        // );
      }
      let obj = {
        pageNo: type?state.currentPage2:state.currentPage222,
        pageSize: state.pageSize222,
        createName: state.kk_inputV1,
        teacher: state.kk_inputV2,
        name: state.kk_inputV0,
        beginTime: beginTime,
        endTime: endTime,
        offcourseId: state.offcourseId,
      };
      console.log("获取开obj", obj, state.selectTime);
      let res = await planList(obj);
      state.tableLoading = false;
      console.log("开课res", res);
      const { rows, total, pageNo } = res.data.data;
      state.tableDataTotal222 = total;
      state.tableDataTotal2 = total;

      for (let i = 0; i < rows.length; i++) {
        rows[i].num = i + 1 + (state.currentPage222 - 1) * 10;
      }
      const datas = traverseArr(
        rows,
        {
          key: "offcoursePlanId",
          num: "num",
          organization: "name",
          address: "address",
          starttime: "beginTime",
          createtime: "createTime",
          createName: "createName",
        },
        true
      );
      datas.forEach((itm) => {
        itm.pageNo = pageNo;
      });
      state.tableData6 = datas;
      state.tableCoursePlanLoading = false
      console.log("state.tableData6", state.tableData6);
    };

    const options1 = ref([
      {
        value: 0,
        label: "未提交",
      },
      {
        value: 1,
        label: "待审核",
      },
      {
        value: 2,
        label: "已审核",
      },
      {
        value: -1,
        label: "审核未通过",
      },
    ]);
    const options11 = ref([
      {
        value: 0,
        label: "未开始",
      },
      {
        value: 1,
        label: "已完成",
      },
    ]);
    const options2 = ref([
      // {
      //   value: "value2",
      //   label: "请选择内容分类",
      // },
      // {
      //   value: "leadership",
      //   label: "领导力",
      // },
      // {
      //   value: "ingeneral",
      //   label: "通用力",
      // },
      // {
      //   value: "profession",
      //   label: "专业力",
      // },
    ]);
    const options3 = ref([]);
    const options4 = ref([
      // {
      //   value: "profession",
      //   label: "专业力",
      // },
    ]);
    // 删除文件返回参数
    const changevalue = (e) => {
      let arr = state.attach.split(",");
      let newarr = [];
      for (let i = 0; i < arr.length; i++) {
        if (i !== e) {
          newarr.push(arr[i]);
        }
      }
      if (newarr.length == 0) {
        state.attach = "";
      } else {
        state.attach = newarr.toString();
      }
      console.log("changevalue", e, newarr, state.attach);
    };
    const options4CurId = ref("");
    const options4CurName = ref("张");
    const of_hShow = () => {
      state.offcourseId = "";
      if (state.of_hs == false) {
        state.of_hs = true;
      }
    };
    const of_exit1 = () => {
      state.of_hs = false;
      state.valueE1 = "";
      state.valueE2 = "";
      state.xzinputV1 = "";
      state.hideshow = true;
      rest();
    };
    const of_exit = () => {
      state.of_hs = false;
      state.valueE1 = "";
      state.valueE2 = "";
      state.xzinputV1 = "";
      state.hideshow = true;
    };
    const hideShow = () => {
      if (state.hideshow == true) {
        state.hideshow = false;
      } else {
        state.hideshow = true;
      }
    };
    const bs_hShow = (value) => {
      state.bs_hs = true;
      if (value != "") {
        state.valueE1 = "";
      }
    };
    // 弹框提示敬请期待
    const expectOnline = () => {
      message.destroy();
      message.success("功能正在开发中，敬请期待。");
    };
    //新建面授课
    const createft = () => {
      if (!state.xzinputV1) {
        message.destroy();
        return message.warning("请输入课程名称");
      }

      if (state.validated !== 2) {
        message.destroy();
        return message.warning("该课程名称已存在");
      }
      console.log(
        "state.bs_hs && state.valueE1 == 2",
        state.bs_hs,
        state.valueE1 == 2
      );
      if (!state.valueE1 && !state.valueE2) {
        message.destroy();
        return message.warning("请选择课程形式");
      }

      if (state.valueE1 === 2) {
        state.of_hs = false;
        // state.ft_hs = true;
        CourseModalRef.value.visibleOpen(null, state.xzinputV1);

        state.valueE1 = "";
        state.teacher = "";
        state.teacherName = "";

        state.qdms_inputV1 = state.xzinputV1;
        state.xzinputV1 = "";
      }
      if (state.bs_hs && state.valueE1 == 1) {
        state.addOnlineCoursevisible = true;
      }
    };
    const checkVal = (checkList) => {
      let count = 0;
      for (const keyName of checkList) {
        if (!keyName) {
          count++;
        }
      }
      return count ? false : true;
    };
    const ft_exit_0 = () => {
      // state.ft_hs = false;
      CourseModalRef.value.visibleClose();
    };
    const ft_exit_1 = () => {
      // state.ft_hs = false;
      CourseModalRef.value.visibleClose();
      // router.go(0);
    };
    const ft_exit = () => {
      state.ft_eidt = false;
      state.hideshow = true;

      state.offcourseId = null;
      state.statusJuJue = 1;
      state.statusTingQi = 1;
      state.qdms_inputV1 = "";
      state.imageUrl = "";
      state.qdms_inputV2 = "";
      state.qdms_inputV3 = "";
      state.fen_lei = null;
      state.feng_mian_1 = null;
      state.feng_mian_2 = null;
      state.chang_jin = null;
      state.tags_val = [];
      state.qdms_inputV5 = null;
      state.qdms_inputV6 = "";
      state.imgList = [];
      valueHtml.value = "";
      state.fileList = [];
    };
    // 关闭查看
    const handlelookMs = () => {
      state.lookMs = false;
    };

    const om_exit = () => {
      state.gl_selectV2 = undefined;
      state.gl_inputV2 = "";
      state.om_1 = false;
      state.faceManageTab = "1";
    };
    const ckxq_hs = () => {
      state.om_ckxq = true;
    };
    const ftsr_exit = () => {
      state.om_ckxq = false;
    };
    const stm_exit = () => {
      state.stm_hs = false;
      handleCancelStu();
      // handleRestTable();
    };
    const createkk = () => {
      state.xjkkinputV1 = state.newCourseName
      state.offcoursePlanId = null;
      state.itemType = 3;
      state.member = {};
      state.offteachers = [{
        teacherId: "",
        teacherName: "",
        weight: '',
      }]
      state.changeName = true
      state.xjkkinputV3 = [moment().format('YYYY-MM-DD HH:mm'),'']
      state.cstm_hs = true;
    };
    const handleCancelStu = () => {
      editBeginClass.value = false
      state.cstm_hs = false;
      state.attach = "";

      state.kk_eidt = false;
      state.xjkkradioV1 = false;
      state.xjkkradioVEnd = false;
      state.xjkkradioVEndTime = null;
      state.completeType = "";
      // state.xjkkinputV1 = "";
      state.onceName = "";
      state.xjkkinputV2 = "";
      state.duration = "";
      // state.xjkkinputV3 = [];
      state.xjkkinputV4 = null;
      state.checked1 = false;
      state.checked4 = false;
      state.EditTestId = null;
      state.assessmentId = null;
      state.assessmentName = "";
      state.workInfo = {};
      state.examInfo = {};
      state.EditWorkId = null;
      state.beforeValue = null; //考勤 开始前
      state.afterStartValue = null; //考勤 开始后

      removePG();
    };
    //保存开课

    const handleSureStu = async () => {
      if(editBeginClass.value){
        message.info('讲师费已进入审批阶段，无法编辑')
        return
      }
      let startTime,
        endTime = 0;
      if (state.xjkkinputV3.length!=0) {
        startTime = dayjs(state.xjkkinputV3[0]).format("YYYY-MM-DD HH:mm"); //parseInt(state.xjkkinputV3[0].$d.getTime() / 1000);
        endTime = dayjs(state.xjkkinputV3[1]).format("YYYY-MM-DD HH:mm"); //parseInt(state.xjkkinputV3[1].$d.getTime() / 1000);
      }
      const offName = await validateName({
        name: state.xjkkinputV1,
        type: 5,
        id: state.offcoursePlanId,
      }).then((res) => {
        console.log(res, res.data.data);
        return res.data.data === 1;
      });
      console.log("校验重复", offName);
      if (offName) {
        message.destroy();
        return message.warning("开课名称重复，请重新填写");
      }
      let t = state.signCom ? "1," : "0,";
      let p = state.comLeave ? "1" : "0";
      let type = t.concat(p);
      const postData = {
        offcourseId: state.offcourseId,
        id: state.offcoursePlanId, //开课ID,不传代表新增
        address: state.xjkkinputV2,
        // duration: state.duration,
        duration:state.duration ? state.duration :  durationText.value,
        applyFlag: state.checked1 ? 1 : 0,
        attach: state.attach,
        beginTime: startTime,
        completeType: type,
        endTime: endTime,
        evalFlag: Number(state.assessmentId) > 0 && state.checked4 ? 1 : 0,
        assessmentId: Number(state.assessmentId),
        testId: state.examInfo.examinationName ? state.EditTestId : null,
        homeWorkId: state.EditWorkId,
        name: state.xjkkinputV1,
        signFlag: state.xjkkradioV1 ? 1 : 0, //是否允许未报名的签到:1是0否
        autoCompleteFlag: state.xjkkradioVEnd ? 1 : 0,
        afterDays: state.xjkkradioVEndTime,
        // signWordFlag: state.xjkkradioV1 === 1 ? 1 : 0, //签到是否需要口令:1是0否
        // teacherId: state.member.value,
        // teacher: state.member.name,
        offteachers: state.offteachers,
        workInfo: state.workInfo, //提交的作业信息
        examInfo: state.examInfo, //提交的考试信息
        beforeStart: state.beforeValue, //考勤 开始前
        afterStart: state.afterStartValue, //考勤 开始后
      };
      console.log(postData);
      if(!postData.name){
        return message.error("请输入开课名称");
      }
      if(!state.xjkkinputV3[0]){
        return message.error("开始时间未填写");
      }
      if(!state.xjkkinputV3[1]){
        return message.error("结束时间未填写");
      }
      if(durationText.value<0){
        return message.error("结束时间不能小于开始时间，请重新填写");
      }
      if(state.offteachers.some(item => !item.teacherName)){
        return message.error("请填写教师名称和设置权重");
      }
      inputWeightChange()
      if(state.offteachers.length==1&& totalWeightSum.value!=100){
        message.error('单名教师您设置的权重应该是100%')
        return
      }else if(state.offteachers.length>1&& totalWeightSum.value!=100){
        message.error('多名教师权重合计值为100%')
        return
      }
      const teacherNames = new Set(state.offteachers.map(item => item.teacherName));
      if (teacherNames.size !== state.offteachers.length) {
        message.error('教师重复，请检查');
        return;
      }
      if(state.offteachers.some(item => item.weight==0)){
        message.error('权重值不能为0%')
        return
      }
      if(state.xjkkradioVEnd && (state.xjkkradioVEndTime==null||state.xjkkradioVEndTime==''||state.xjkkradioVEndTime<=0)){
        message.error('请填写结业时间')
        return
      }
      console.log(postData,'传输的数据')
      // if(!postData.duration){
      //   return message.error("请输入持续时间");
      // }
      state.addLoading = true;
      editPlan(postData)
        .then(() => {
          getTableDate3();
          handleCancelStu();
          rest();
          state.addLoading = false;
        })
        .catch((err) => {
          state.loading = false;
          console.log(err);
        });
      state.cstm_hs = false;
    };
    
    let editBeginClass = ref(false)
    //编辑开课
    const handelEditStu = async (item) => {
      nums.value = 0
      editBeginClass.value = false
      if (item.expenseStatus && item.expenseStatus !== 'A10' && item.expenseStatus !== 'S00') {
        editBeginClass.value = true
        console.log(editBeginClass.value);
      }
      state.offcourseId = item.offcourseId;
      state.itemType = item.type;
      state.offcoursePlanId = item.id;

      if (item.homeWorkId) {
        queryWorkDetailById({ workId: item.homeWorkId }).then(
          (res) => (state.workInfo = res.data.data)
        );
      }
      if (item.testId) {
        queryExaminationDetailById({ examinationId: item.testId }).then(
          (res) => (state.examInfo = res.data.data)
        );
      }
      // if(item.evalFlag){
      // queryAssessmentDetailList({assessmentId:item.assessmentId }).then(
      //           (res) => (state.examInfo = res.data.data)
      //         );
      // }
      console.log("获取面授课开课详情", item);
      state.xjkkinputV2 = item.address;
      state.duration = item.duration;
      state.checked1 = item.applyFlag === 1 ? true : false;
      state.attach = item.attach;

      state.xjkkinputV3 = [
        dayjs(item.beginTime, "YYYY-MM-DD HH:mm"),
        dayjs(item.endTime, "YYYY-MM-DD HH:mm"),
      ];
      options4CurId.value = item.teacherId;
      // (state.regisCom = item.completeType.split(",")[0] == "1" ? true : false),
      (state.signCom = item.completeType.split(",")[0] == "1" ? true : false),
        (state.comLeave =
          item.completeType.split(",")[1] == "1" ? true : false),
        (state.checked4 = item.evalFlag === 1 ? true : false);
      state.assessmentName = item.assessmentName;
      state.assessmentId = String(item.assessmentId);
      state.EditTestId = Number(item.testId);
      state.EditWorkId = String(item.homeWorkId);
      state.xjkkinputV1 = item.name;
      state.onceName = item.name;
      state.beforeValue = item.beforeStart; //考勤 开始前
      state.afterStartValue = item.afterStart; //考勤 开始后
      state.xjkkradioVEndTime = item.afterDays;
      if (item.signFlag === 1) {
        //是否允许未报名的签到:1是0否
        state.xjkkradioV1 = true;
      }
      if(item.autoCompleteFlag === 1){
        state.xjkkradioVEnd = true;
      }
      // state.member = { value: item.teacherId, name: item.teacher };
      state.offteachers = [...item.offteachers]
      state.cstm_hs = true;
      state.kk_eidt = true;
    };
    const columnFun = (itm) => {
      console.log("itm", itm);
      //新加
      state.stuColumns = [
        {
          title: "岗位",
          width: "8%",
          dataIndex: "studentJobName",
          key: "7",
          align: "center",
          customRender: (text) => {
            return (
              <div class="racona">
                <span>
                  {text && text.record.studentJobName
                    ? text.record.studentJobName
                    : "-"}
                </span>
              </div>
            );
          },
        },
        {
          title: "Band",
          width: "8%",
          dataIndex: "studentBandDesc",
          key: "7",
          align: "center",
          customRender: (text) => {
            return (
              <div class="racona">
                <span>
                  {text.record.studentBandDesc ? text.record.studentBandDesc : "-"}
                </span>
              </div>
            );
          },
        },
        {
          title: "报名状态",
          width: "8%",
          dataIndex: "status",
          key: "5",
          align: "center",
          customRender: ({ record }) => {
            switch (String(record.status)) {
              case "0":
                return "审核通过";
              case "1":
                return "待审核";
              case "2":
                return "审核拒绝";
            }
          },
        },

        {
          title: "签到状态",
          width: "8%",
          dataIndex: "signstatus",
          key: "7",
          align: "center",
          customRender: ({ record }) =>
            record.signStatus ? "已签到" : "未签到",
        },
        {
          title: "评估状态",
          width: "8%",
          dataIndex: "evastatus",
          key: "8",
          align: "center",
          customRender: ({ record }) =>
            record.assessmentStatus?"已评估" : "未评估",
        },
        {
          title: "评分",
          width: "8%",
          dataIndex: "studentScore",
          key: "8",
          align: "center",
          customRender: ({ record }) => {
            return (
              <div class="racona">
                {record.assessmentScore || "-"}
              </div>
            );
            // switch (String(record.status)) {
            //   case "0":
            //     return (
            //       <span
            //         style={{ color: "#4EA6FF", cursor: "pointer" }}
            //         onClick={() => {
            //           handlJoinStu(record);
            //         }}
            //       >
            //         成绩录入
            //       </span>
            //     );
            //   case "1":
            //     return "-";
            //   case "2":
            //     return "-";
            // }
          },
        },
        // {
        //   title: "作业成绩",
        //   width: "8%",
        //   dataIndex: "workScore",
        //   key: "7",
        //   align: "center",
        //   customRender: ({ record }) => {
        //     return (
        //       <div class="racona">
        //         {record.workStatus? record.workScore?<span>{record.workScore || '-'}</span>:
        //             <span style={{ color: "#4EA6FF", cursor: "pointer" }} onClick={() => handlJoinStu(record)}>
        //               成绩录入
        //             </span>
        //           : <span>-</span>
        //         }
        //       </div>
        //     );
        //     // switch (String(record.status)) {
        //     //   case "0":
        //     //     return (
        //     //       <span
        //     //         style={{ color: "#4EA6FF", cursor: "pointer" }}
        //     //         onClick={() => {
        //     //           handlJoinStu(record);
        //     //         }}
        //     //       >
        //     //         成绩录入
        //     //       </span>
        //     //     );
        //     //   case "1":
        //     //     return "-";
        //     //   case "2":
        //     //     return "-";
        //     // }
        //   },
        // },
        {
          title: "作业状态",
          width: "8%",
          dataIndex: "workStatus",
          key: "5",
          align: "center",
          customRender: ({ record }) => {
            switch (String(record.workStatus)) {
              case "null":
                return "未完成";
              case "0":
                return "未完成";
              case "1":
                return "已完成";
              case "2":
                return "未完成";
            }
          },
        },
        {
          title: "考试成绩",
          width: "8%",
          dataIndex: "examinationScore",
          key: "8",
          align: "center",
        },
        {
          title: "结业状态",
          width: "15%",
          dataIndex: "completionStatus",
          key: "8",
          align: "center",
          customRender: ({ record }) => {
            return (
              <div>
                {record.finishStatus == 1 &&
                record.workScore != -2 &&
                record.signStatus == 1 ? (
                  <div
                    style={{ color: "#4EA6FF", cursor: "pointer" }}
                    onClick={() => {
                      handleOverStu(record);
                    }}
                  >
                    结业
                  </div>
                ) : record.completionStatus == 1 ? (
                  <div>已结业</div>
                ) : (
                  <div>-</div>
                )}
              </div>
            );
          },
        },
      ];
      // if (itm.courseScore !== -1) {
      //   let obj = {
      //     title: "评分",
      //     width: "8%",
      //     dataIndex: "studentScore",
      //     key: "8",
      //     align: "center",
      //   };

      //   state.stuColumns.splice(6, 0, obj);
      // }
    };
    const handelGuan = (itm) => {
      console.log("开课信息", itm);
      state.offcourseId = itm.offcourseId;
      state.offcoursePlanId = itm.id;
      state.studentId = itm.studentId;
      state.studentItem = itm;

      state.currentPlanItem = itm;
      state.newCourseName = itm.name;
      console.log(89877766666);
      console.log(state.currentPlanItem);

      state.sm_hs = true;
      // getTableDate2();
      state.homeWorkId = itm.homeWorkId;
      columnFun(itm);
    };
    const sm_exit = () => {
      state.sm_hs = false;
      state.hideshow = true;
      state.tableData7 = [];
    };
    const clear_valueE1 = (value) => {
      state.bs_hs = false;
      if (value != "") {
        state.valueE1 = "";
      }
    };
    const clear_valueE2 = () => {
      state.valueE2 = "";
    };
    const clear_xjkkradioV1 = (value) => {
      if (value != "") {
        state.xjkkradioV1 = false;
      }
    };
    const clear_xjkkradioV2 = (value) => {
      if (value != "") {
        state.xjkkradioV2 = "";
      }
    };
    const clear_jyradioV1 = (value) => {
      if (value != "") {
        state.jyradioV1 = "";
      }
    };
    const qr_exit = () => {
      state.QR_hs = false;
      state.qrQR_hs = false;
      state.olQR_hs = false;
      state.ftQR_hs = false;
      state.ftsQR_hs = false;
      state.vipftQR_hs = false;
      state.addLoading = false;
    };
    const rg_exit = () => {
      state.rg_hs = false;
      state.addLoading = false;
    };
    const graduate_exit = () => {
      state.graduate_hs = false;
      state.addLoading = false;
    };
    const agreereject_exit = () => {
      state.agreereject_hs = false;
      state.agreestudy_hs = false;
      state.rejectstudy_hs = false;
      state.addLoading = false;
    };
    const delete_exit1 = () => {
      state.delete_hs = false;
      state.del_hs = false;
      state.del_hs_stu = false;
      state.submit_hs = false;
      state.back_hs = false;
      state.push_hs = false;
      state.copy_hs = false;
      state.nouse_hs = false;
      state.rg_hs = false;
      state.graduate_hs = false;
      state.addLoading = false;
    };
    const handleRejectExit = (id, index, record) => {
      dialog({
        content: "确定撤回吗？",
        ok: () => {
          message.success("撤回成功");
          record.publishStatus ? (state.tableData1[index].publishStatus = 0) : (state.tableData1[index].auditStatus = 0);
          handle({ offcourseId: id, type: 0 });
        },
      });
    };

    const handleJoin = async () => {
      state.lrcj_inputV1 || message.error("请输入成绩");
      if (state.rg_hs) {
        if (state.piliang) {
          api1.updateStudent({
            workScore: state.lrcj_inputV1,
            workId: state.homeWorkId,
            studentId: state.studentId,
          });
          getTableDate2();
          delete_exit1();
        } else {
          api1
            .updateStudent({
              workScore: state.lrcj_inputV1,
              workId: state.homeWorkId,
              studentId: state.studentId,
            })
            .then((res) => {
              console.log("成绩录入", res);
              if (res.data.code === 200) {
                // getTableDate2();
                state.isgetStudent = true;
                delete_exit1();
                state.lrcj_inputV1 = "";
                state.scoreId = null;
              }
            })
            .catch((err) => {
              console.log("录入失败", err);
            });
        }
      }
    };
    const handleJie = async () => {
      if (state.graduate_hs) {
        // state.studentItem.id
        // console.log("state.studentItem.id", state.studentItem.id);
        api1
          .batchUpdateStatus({
            completionStatus: 1,
            ids: [state.studentItem?.id],
            // status: 1,
          })
          .then((res) => {
            if (res.data.code === 200) {
              getTableDate2();
              delete_exit1();
            }
          });
      }
    };
    //确认复制
    const handleAgreeTrue = async () => {
      if (state.agreestudy_hs) {
        handleStudent({
          offcoursePlanId: state.offcoursePlanId,
          score: "",
          studentIds: [state.studentId],
          type: 3,
        }).then((res) => {
          if (res.data.code === 200) {
            getTableDate2();
            delete_exit1();
            state.addLoading = false;
          }
        });
      }
      if (state.rejectstudy_hs) {
        handleStudent({
          offcoursePlanId: state.offcoursePlanId,
          score: "",
          studentIds: [state.studentId],
          type: 4,
        }).then((res) => {
          if (res.data.code === 200) {
            getTableDate2();
            delete_exit1();
          }
        });
      }
    };
    //确认复制课程 操作
    const handleDeleteExit = async () => {
      if (state.del_hs) {
        if (state.offcourseId && state.offcoursePlanId && state.studentId) {
          handleStudent({
            offcoursePlanId: state.offcoursePlanId,
            score: "",
            studentIds: [state.studentId],
            type: 5,
          }).then((res) => {
            if (res.data.code === 200) {
              getTableDate2();
              delete_exit1();
            }
          });
        } else if (state.offcourseId && state.offcoursePlanId) {
          deletePlan({
            offcoursePlanId: state.offcoursePlanId,
          }).then((res) => {
            if (res.data.code === 200) {
              getTableDate3();
              delete_exit1();
            }
          });
        } else if (state.offcourseId) {
          handle({
            offcourseId: state.offcourseId,
            type: -1,
          }).then((res) => {
            if (res.data.code === 200) {
              message.destroy();
              message.success("删除成功");
              getTableDate();
              delete_exit1();
            }
          });
        }
      }
      if (state.copy_hs) {
        state.tableLoading = true;
        if (state.offcourseId && state.offcoursePlanId) {
          await copyCoursePlan({ offcoursePlanId: state.offcoursePlanId });
          getTableDate3();
        } else if (state.offcourseId) {
          await copyCourse({ courseId: state.offcourseId });
          getTableDate();
        }
        message.success("复制成功");
        rest();
      }
      if (state.nouse_hs) {
        state.temp.auditStatus = 0;
        message.success("停用成功");
        handle({ offcourseId: state.offcourseId, type: -2 });
      }
      if (state.submit_hs) {
        state.tableLoading = true;
        message.success("提交审核成功");
        handle({ offcourseId: state.offcourseId, type: 1 }).then(() =>
          getTableDate()
        );
      }
      if (state.back_hs) {
        state.tableLoading = true;
        message.success("撤回成功");
        handle({ offcourseId: state.offcourseId, type: 0 }).then(() =>
          getTableDate()
        );
      }
      if (state.useCourse) {
        state.tableLoading = true;
        message.success("启用成功");
        handle({ offcourseId: state.offcourseId, type: 2 }).then(() =>
          getTableDate()
        );
      }
      if (state.push_hs) {
        state.tableLoading = true;
        message.success("发布成功");
        handle({ offcourseId: state.offcourseId, type: 3 }).then(() =>
          getTableDate()
        );
      }
      delete_exit1();
    };
    const handleDeleteKaike = (value) => {
      if (value.expenseStatus && value.expenseStatus !== 'A10' && value.expenseStatus !== 'S00') {
        return message.warning("该开课已在审批流程中，不可进行删除!");
      }
      state.offcoursePlanId = value.id;

      state.delete_hs = true;
      state.del_hs = true;
    };
    const onSelectChange = (selectedRowKeys) => {
      console.log("selectedRowKeys changed: ", selectedRowKeys);
      state.selectedRowKeys = selectedRowKeys;
    };

    const faceManageChange = (e) => {
      state.faceManageTab = e;
    };

    const openMessage = () => {
      console.log(122222);
      let startTime = "";
      let endTime = "";
      if (state.projectTime) {
        startTime = parseInt(
          new Date(state.projectTime[0].$d).getTime() / 1000
        );
        endTime = parseInt(new Date(state.projectTime[1].$d).getTime() / 1000);
      }
      console.log(startTime, endTime);

      // list({
      //   pageNo: 1,
      //   pageSize: 100000,
      //   auditStatus: state.auditStatus,
      //   // categoryId: state.categoryId,
      //   sysTypeId: state.sysTypeId,
      //   projectName: state.projectName,
      //   name: state.name,
      //   createName: state.createName,
      //   endTime: endTime,
      //   beginTime: startTime,
      // }).then(res=>{
      //      let list =  res.data.data.rows.map(s=>{
      //       s.contentTxt = findClassFullName(sysTypeOptions.value, s.sysTypeId) || "-";
      //       s.typeName = '面授'
      //       s.publishStatusText = s.publishStatus === 0?'未发布':'已发布'
      //       s.statusText = s.status === 0?'否':'是'
      //       s.auditStatusText = s.auditStatus === 0?'未提交': s.auditStatus === 1?'待审核':s.auditStatus === 2?'已审核':s.auditStatus === -1?"审核未通过":''
      //       return s
      //      })
      //      console.log(list)
      //      let heads = [
      //         { header: '名称', key: 'name', width: 18 },
      //         { header: '类型', key: 'typeName', width: 10 },
      //         { header: '归属路径图', key: 'routerName', width: 13 },
      //         { header: '归属项目', key: 'projectName', width: 13 },
      //         { header: '内容分类', key: 'contentTxt', width: 20 },
      //         // { header: '一级分类', key: 'firstLevelCategory', width: 10 },
      //         // { header: '二级分类', key: 'secondLevelCategory', width: 10 },
      //         // { header: '三级分类', key: 'thirdLevelCategory', width: 10 },
      //         { header: '开课次数', key: 'planCnt', width: 10 },
      //         { header: '学习人数', key: 'studentCnt', width: 10 },
      //         { header: '评分', key: 'score', width: 10 },
      //         { header: '状态', key: 'auditStatusText', width: 20 },
      //         { header: '是否发布', key: 'publishStatusText', width: 10 },
      //         { header: '创建人', key: 'createName', width: 10 },
      //         { header: '创建时间', key: 'createTime', width: 22 },
      //         { header: '上线时间', key: 'publishTime', width: 22 },
      //         { header: '是否停用', key: 'statusText', width: 10 },
      //      ]
      //      commonExport(heads,list,"课程导出")
      // })
      window.open(
        `${process.env.VUE_APP_BASE_API}/admin/offcourse/export?pageNo=${
          state.currentPage1
        }&pageSize=${state.pageSize1}&auditStatus=${
          state.auditStatus ? state.auditStatus : ""
        }&sysTypeId=${state.sysTypeId ? state.sysTypeId : ""}&projectName=${
          state.projectName ? state.projectName : ""
        }&name=${state.name ? state.name : ""}&createName=${
          state.createName ? state.createName : ""
        }&endTime=${endTime ? dayjs(new Date(state.projectTime[1].$d)).format('YYYY-MM-DD') : ""}&beginTime=${
          startTime ? dayjs(new Date(state.projectTime[0].$d)).format('YYYY-MM-DD') : ""
        }&type=3`
      );

      // {
      //   /* exportP({
      //   pageNo: state.currentPage1,
      //   pageSize: state.pageSize1,
      //   auditStatus: state.auditStatus,
      //   categoryId: state.categoryId,
      //   projectName: state.projectName,
      //   name: state.name,
      //   createName: state.createName,
      //   endTime: endTime,
      //   beginTime: startTime,
      // }).then((res) => {
      //   if (res.data.code === 200) {
      //     message.success("导出成功");
      //   }
      // }); */
      // }
    };
    //编辑面授课
    const handleEdit = async (itm, type) => {
      if (type === "1") {
        return;
      }
      // console.log(itm)
      state.offcourseId = itm.id;

      const item = await detail({
        offcourseId: Number(state.offcourseId),
      }).then((res) => {
        if (res.data.code === 200) return res.data.data;
      });

      state.statusJuJue = Number(item.auditStatus) === -1 ? 1 : 0;

      if (Number(item.auditStatus) === 2 && Number(item.status) === 1) {
        state.statusTingQi = 1;
      }
      if (Number(item.auditStatus) === 2 && Number(item.status) === 0) {
        state.statusTingQi = 0;
      }

      state.qdms_inputV1 = item.name;
      // state.imageUrl = item.picUrl;
      state.feng_mian_1 = item.picUrl;
      state.qdms_inputV2 = item.targetUser;
      state.qdms_inputV3 = item.meaning;
      state.fen_lei = String(item.categoryId);
      state.chang_jin = String(item.sceneId);
      state.tags_val = item.tips ? item.tips.split(",") : [];
      //state.qdms_inputV5 = item.teacherId;
      // state.teacher = item.teacher;
      // state.teacherId = item.teacherId;
      state.qdms_inputV6 = item.intro;
      // state.member = { value: item.teacherId, name: item.teacher };
      // state.offteachers = [...item.offteachers]
      if (item.attach == "") {
        state.imgList = [];
      } else {
        if (item.attach.indexOf(",")) {
          const arr = item.attach.split(",");
          arr.forEach((item) => {
            state.imgList.push({ img: item });
          });
        } else {
          state.imgList = [{ img: item.attach }];
        }
      }

      valueHtml.value = item.outline;

      // state.ft_hs = true;
      CourseModalRef.value.visibleOpen(state.offcourseId, null);
      state.ft_eidt = true;
    };

    // handleTagChange
    const handleTagChange = () => {
      if (state.tags_val_single) {
        state.tags_val.push(state.tags_val_single);
      }
      state.tags_val_single = "";
    };
    const handleTagClose = (index) => {
      state.tags_val.splice(index, 1);
    };

    // 预览弹框 开启和关闭
    const ft_exit_see = () => {
      state.lookCourseModal = false;
    };
    const handleLook = async (itm, type) => {
      if (type === "1") {
        return;
      }
      state.offcourseId = itm.id;

      const item = await detail({
        offcourseId: Number(state.offcourseId),
      }).then((res) => {
        if (res.data.code === 200) return res.data.data;
      });
      state.lookCourseModal = true;
      item.attach = item.attach == "" ? [] : item.attach.split(",");
      state.faceDetailObj = item;
      console.log("获取查看信息", item);
    };
    // const handleTea = async () => {
    //   console.log("item22224444");
    //   // const item = await getMemberInfo({
    //   //   pageNo: state.pageSizeTea1,
    //   // }).then((res) => {
    //   //   if (res.data.code === 200) return res.data.data;
    //   //   console.log("item2222222");
    //   //   console.log(item);
    //   // });
    // };
    const handleDelete = (id) => {
      dialog({
        content: "确定删除该课程吗？",
        ok: async () => {
          message.success("删除成功");
          state.tableLoading = true;
          await handle({ offcourseId: id, type: -1 });
          getTableDate();
        },
      });
    };
    const handleCopy = async (id) => {
      console.log("复制Id", id);
      dialog({
        content: "确定复制该课程吗？",
        ok: async () => {
          message.success("复制成功");
          state.tableLoading = true;
          await copyCourse({ courseId: id });
          getTableDate();
        },
      });
    };
    const handleSubmit = (id, index) => {
      dialog({
        content: "确定提交审核吗？",
        ok: () => {
          message.success("提交成功");
          state.tableData1[index].auditStatus = 1;
          handle({ offcourseId: id, type: 1 });
        },
      });
    };
    const handlePush = (id, index) => {
      dialog({
        content: "确定发布该课程吗？",
        ok: () => {
          message.success("发布成功");
          state.tableData1[index].publishStatus = 1;
          handle({ offcourseId: id, type: 3 });
        },
      });
    };

    const handleCopyP = async (itm) => {
      console.log(itm);
      state.offcourseId = itm.offcourseId;
      state.offcoursePlanId = itm.id;

      state.delete_hs = true;
      state.copy_hs = true;
    };
    const handleStop = (record) => {
      dialog({
        content: "确定停用该课程吗？",
        ok: () => {
          message.success("停用成功");
          record.status = 0;
          handle({ offcourseId: record.id, type: -2 });
        },
      });
    };
    const handleOpen = (record) => {
      dialog({
        content: "确定启用该课程吗？",
        ok: () => {
          message.success("启用成功");
          record.status = 1;
          handle({ offcourseId: record.id, type: 2 });
        },
      });
    };
    const handleStart = (item, type) => {
      console.log(item);
      if (type === "1") {
        return;
      }
      state.offcourseId = item.id;
      state.newCourseName = item.name;
      state.permissions = item.permissions;
      getTableDate3(1);
      state.stm_hs = true;
    };

    const handelChangePage222 = (page, pageSize) => {
      state.currentPage222 = page;
      state.pageSize222 = pageSize;
      getCourseStudentList();
    };
    const handelChangePage22 = (page, pageSize) => {
      state.currentPage22 = page;
      state.pageSize22 = pageSize;
      // getTableDate33();
    };
    const handelChangePage2 = (page, pageSize) => {
      state.currentPage2 = page;
      state.pageSize2 = pageSize;
      getTableDate3(1);
    };
    const handleSearchTable = () => {
      console.log("handleSearchTable");
      console.log(state.kk_inputV1);
      console.log(state.kk_inputV2);
      console.log(state.selectTime);
      state.pageSize222 = 10
      state.currentPage1 = 1
      getTableDate();
      getTableDate3();
    };
    const handleRestTable = () => {
      state.kk_inputV0 = '';
      state.kk_inputV1 = "";
      state.kk_inputV2 = "";
      state.selectTime = "";
      state.currentPage2 = 1;
      state.tableDataTotal2 = [];
      state.pageSize222 = 10
      state.currentPage1 = 1
      getTableDate();
      getTableDate3();
    };

    const handelChangePage3 = (page, pageSize) => {
      state.currentPage3 = page;
      state.pageSize3 = pageSize;
      getTableDate2();
    };
    const handleSearchStu = () => {
      console.log(state.xygl_inputV1);
      getTableDate2();
    };
    const handleRestStu = () => {
      state.xygl_inputV1 = "";
      getTableDate2();
    };

    const beforeUpload3 = (file) => {
      const fileType = [
        "jpg",
        "jpeg",
        "png",
        "gif",
        "pdf",
        "ppt",
        "pptx",
        "doc",
        "docx",
        "xls",
        "xlsx",
        "zip",
      ];
      if (!fileType.includes(file.name.split(".")[1])) {
        message.error(
          "仅支持.pdf,.ppt,.pptx,.doc,.docx,.xls,.xlsx,.jpg,.jpeg,.png,.gif,.zip格式!"
        );
        return false;
      }

      const formData = new FormData();
      formData.append("file", file);
      console.log(file);
      fileUp(formData).then((res) => {
        if (res.data.code === 200) {
          // state.filesList.push({
          //   img: res.data.data,
          //   name: file.name,
          //   size: file.size,
          // });
          // console.log(state.filesList);
          console.log(res.data.data);
          state.filesList.push([res.data.data]);

          // state.hasImgName = res.data.data;
        }
      });
      return false;
    };

    // 管理开课
    const handleGuan22 = (item) => {
      console.log("点击面授课管理", item);
      // if (String(item.courseform) === "1") {
      //   return;
      // }
      // if (String(item.courseform) === ("1" || "线上")) {
      //   state.om_1 = true;
      //   state.ft_1 = false;
      // } else if (String(item.courseform) === ("2" || "面授")) {
      //   state.om_1 = true;
      //   state.ft_1 = true;
      // }
      state.om_1 = true;
      state.ft_1 = true;
      state.manageStuLoading = true;
      state.permissions = item.permissions;
      state.createId = item.createId;
      console.log(787666, item);
      state.faceClassification = item.contentTxt;
      state.faceStatus = item.status;
      state.currentFaceId = item.id;
      getCourseStudentList();
      state.newCourseName = item.name;
    };

    // 获取开课管理里的学员
    function getCourseStudentList() {
      console.log("开课管理学员搜索参数", {
        pageNo: state.currentPage222,
        pageSize: 10,
        status: state.gl_selectV2,
        studentName: state.gl_inputV2,
        id: state.currentFaceId,
      });
      apis
        .GetCourseStudent({
          pageNo: state.currentPage222,
          pageSize: 10,
          status: state.gl_selectV2,
          studentName: state.gl_inputV2,
          id: state.currentFaceId,
        })
        .then((res) => {
          console.log("获取开课管理学员信息", res);
          // tableData3 tableDataTotal222 currentPage222 handelChangePage222
          state.tableData3 = res.data.data.records;
          state.tableDataTotal222 = res.data.data.total;
          state.manageStuLoading = false;
        })
        .catch((err) => {
          console.log(err);
          state.manageStuLoading = false;
        });
    }

    const handlePostSure = (obj) => {
      console.log("处理后参数，直接解构使用");
      console.log(obj);

      addStudent({
        offcourseId: Number(state.offcourseId),
        offcoursePlanId: Number(state.offcoursePlanId),
        ...obj,
      }).then((res) => {
        console.log(res);
        if (res.data.code === 200) {
          state.viewpowervisible = false;
          getTableDate2();
        }
      });
    };

    const getdateToDateFn = (val) => {
      return getdateToDate(val * 1000);
    };
    const getdateToTimeFn = (val) => {
      return getdateToTime(val * 1000);
    };

    //提交审核
    const reviewClick = () => {
      console.log("ft_eidt", state.ft_eidt);
      // handlePush("review");
      /*
            if (state.ft_eidt) {
                //编辑面授课
                submitReview();
            }
            if (!state.ft_eidt) {
                //shouke
                handlePush("review");
            }
            */
    };
    const submitReview = (id) => {
      state.addLoading = true;

      if (id == "") {
        return message.error("请先完成保存");
      }
      let obj = {
        offcourseId: id ? id : state.offcourseId,
        type: 1,
      };
      console.log("提交审核参数", obj);
      handle(obj).then((res) => {
        console.log("提交审核成功", res.data);
        if (res.data.code === 200) {
          ft_exit_0();
          rest();
          getTableDate();
          state.addLoading = false;
        }
      });
    };

    //授权
    //权限名单
    const showPrower = (record) => {
      console.log("权限名单", record);
      state.selectCourseId = record.offcourseId;
      state.corpowerlistvisible = true;
    };
    //归属权
    const showOwnPrower = (record) => {
      console.log("归属权", record);
      state.selectCourseId = record.offcourseId;
      state.ownpowervisible = true;
    };
    //查看权
    const showViewPrower = (record) => {
      console.log("查看权", record);
      state.selectCourseId = record.offcourseId;
      state.authClassify = 1;
      state.viewpowervisible = true;
    };
    //管理权
    const showManagePrower = (record) => {
      console.log("管理权", record);
      state.selectCourseId = record.offcourseId;
      state.shipType = 1;
      state.authClassify = 2;
      state.viewpowervisible = true;
    };
    //添加权限
    watch(
      () => state.addAuthList,
      (res) => {
        console.log("res", res, state.addAuthList);
        if (state.authClassify === 1 || state.authClassify === 2) {
          let obj = {
            type: 3,
            tag:
              state.authClassify === 1
                ? 3
                : state.authClassify === 2
                ? 4
                : null,
            opt: 3,
            deptList: res[1],
            groupList: res[2],
            refId: state.selectCourseId,
            pageNo: 20,
            pageSize: 1,
            studentList: res[0],
            keyWord: "",
          };
          console.log("obj", obj);
          api1
            .optionAuthPerm(obj)
            .then((res) => {
              console.log("添加授权成功", res);
              message.success("添加授权成功");
            })
            .catch((err) => {
              console.log("添加授权失败", err);
            });
        }
      }
    );

    //添加学员
    watch(
      () => state.addAuthList,
      (res) => {
        console.log("res", res, state.addStudentList);
        if (state.authClassify === 3) {
          let obj = {
            deptList: res[1],
            groupList: res[2],
            offcourseId: state.offcourseId,
            offcoursePlanId: state.offcoursePlanId, //开课id
            studentList: res[0],
          };
          console.log("obj", obj);
          api1
            .addStudentCourse(obj)
            .then((res) => {
              console.log("添加学员成功", res);
              message.success("添加学员成功");
              getTableDate2();
            })
            .catch((err) => {
              console.log("添加学员失败", err);
            });
        }
      }
    );
    const range = (start, end) => {
      const result = [];

      for (let i = start; i < end; i++) {
        result.push(i);
      }

      return result;
    };
    const closeOnlineCoursevisible = () => {
      console.log("执行");
      getTableDate();
    };
    const disabledDate = (current) => {
      // current && current < dayjs(state.xjkkinputV3[0])
    };

    const disabledDateTime = () => {
      // const dateOnlyStart = new Date(state.xjkkinputV3[0].split(' ')[0]); 
      // const dateOnlyEnd = new Date(state.xjkkinputV3[1].split(' ')[0]); 
      // if(dateOnlyStart.getTime()==dateOnlyEnd.getTime()){
      //   const currentMinute = dayjs(state.xjkkinputV3[0]).minute();
      //     return {
      //       disabledHours: () => range(0, dayjs(state.xjkkinputV3[0]).hour()).splice(0, dayjs(state.xjkkinputV3[0]).hour()), 
      //       disabledMinutes: () => range(0, currentMinute+1).splice(0, currentMinute+1), 
      //     };
      // }
    };

    function auditStudent(record) {
      auditStudentStatus(record);
    }

    //二维码
    const qrcodeVisible = (record, type) => {
      // `${location.protocol}//${location.host}${import.meta.env.VUE_APP_BASE_API}/stu/project/redirectDetail?courseId=${record.id}`
      state.codevisible = true;
      let teacherNames = record.offteachers?.filter(teacher => teacher.teacherName !== null).map(teacher => teacher.teacherName);
      state.codeInfo = {
        title: type == 1 ? "【课程】二维码" : type == 2 ? "【签到】二维码" : "【评估】二维码",
        name: record.name ? record.name + type == 2 ?'签到' : '评估' : "",
        teacherName: teacherNames.length > 0 ? teacherNames.join(' ') : "",
        url:
          type == 1
            ? process.env.VUE_APP_BASE_API +
              `/stu/project/redirectDetail?courseId=${record.id}`
            : type == 2 ? process.env.VUE_APP_BASE_API +
              `/admin/student/studentSign?taskId=${
                record.id
              }&taskType=${2}&type=${3}&openCourseId=${
                record.id
              }` : `${location.protocol}//${location.host}/student-h5/investigatpage?id=${record.id}&type=3&infoId=${record.id}&courseId=${record.assessmentId}&chapterOrStageId=0&level=${record.name}`
      };
      console.log("codeInfo", state.codeInfo, record);
      state.codeIndex = 0;
      state.codeType = type;
    };
    return {
      ...toRefs(state),
      sysTypeOptions,
      findClassFullName,
      CourseModalRef,
      auditStudent,
      getdateToDateFn,
      moment,
      disabledDate,
      disabledDateTime,
      getdateToTimeFn,
      handlePostSure,
      handleDeleteKaike,
      handleDel2,
      handelEditStu,
      handelGuan,
      beforeUpload3,
      handleSearchStu,
      handleRestStu,
      handelChangePage2,
      handelChangePage22,
      handelChangePage222,
      handelChangePage3,
      handleSearchTable,
      handleRestTable,
      handleSearchTable2,
      handleSearchTable3,
      reseatSearchTable3,
      handleGuan22,
      handleStart,
      handleCopyP,
      handleCopy,
      handleSubmit,
      handlePush,
      handleStop,
      handleOpen,
      handleEdit,
      handleDelete,
      changevalue,
      moreLine,
      columns2,
      columns4,
      columns6,
      columns7,
      options1,
      options11,
      options2,
      options3,
      options4,
      optionsUrl,
      of_hShow,
      of_exit1,
      of_exit,
      hideShow,
      bs_hShow,
      expectOnline,
      createft,
      ft_exit,
      ft_exit_1,
      ft_exit_0,
      om_exit,
      ckxq_hs,
      durationText,
      nums,
      ftsr_exit,
      stm_exit,
      ft_exit_see,
      handleTagChange,
      handleTagClose,
      createkk,
      handleCancelStu,
      handleSureStu,
      sm_exit,
      clear_valueE1,
      clear_valueE2,
      clear_xjkkradioV1,
      clear_xjkkradioV2,
      clear_jyradioV1,
      qr_exit,
      rg_exit,
      graduate_exit,
      agreereject_exit,
      delete_exit1,
      handleRejectExit,
      handleAgreeTrue,
      handleJoin,
      handleJie,
      handleDeleteExit,
      onSelectChange,
      faceManageChange,
      openMessage,
      showStuAdd,
      showDrawerAddTest,
      showDrawerAddHomework,
      editorRef,
      valueHtml,
      mode: "simple", // 或 'simple'
      toolbarConfig,
      editorConfig,
      handleCreated,
      handelChangePage1,
      handleSearch1,
      handleRest1,
      showAssessment,
      removePG,
      getCheckedAss,
      beforeUpload,
      beforeUpload2,
      handleDel,
      checkPer,
      checkOwner,
      handleSucessStu,
      handleRejectStu,
      handleDeleteStu,
      handlJoinStu,
      handleOverStu,
      onSelectChange7,
      handleAllJion,
      handleAllover,
      handleAllSuc,
      handleAllReject,
      handleExportStu,
      handleChangeTea1,
      handelChangePageTea1,
      handleChangeTea2,
      handelChangePageTea2,
      submitReview,
      reviewClick,
      showPrower,
      showOwnPrower,
      showViewPrower,
      showManagePrower,
      closeOnlineCoursevisible,
      handlelookMs,
      handleLook,
      logW,
      logT,
      qrcodeVisible,
      // timeChange,
      editBeginClass,

      onDateSelect,
      onOkStart,
      openStart,
      onBlurStart,
      onFocusStart,
      // timeChangeEnd,
      onDateEnd,
      onOkEnd,
      onFocusEnd,
      openEnd,
      onBlurEnd,
      inputWeightChange,
      totalWeightSum,
      inputAdd,
      inputRemove,
      downStudent,
      downPin
    };
  },
});
</script>
<style lang="scss">
.ant-tooltip-inner{
  color: #000 !important;
}
.daochu {
  width: 14px;
  height: 14px;
  background: url("../../assets/images/coursewareManage/export.png") no-repeat;
  background-size: 100%;
  margin-left: 8px;
  cursor: pointer;
}
.ant-drawer-body{
  padding: 0;
}
.ant-table-cell-fix-right {
  width: 250px !important;
}

.addTimeBox {
  position: relative;
  display: flex;
  align-items: center;

  .addTime {
    position: absolute;
    z-index: 10;
    margin-left: 10px;
    color: rgba(0, 0, 0, 0.4);
  }

  .ant-picker {
    padding-left: 85px;
  }

  .ant-picker-range .ant-picker-active-bar {
    margin-left: 85px;
  }
}

.aeLoading {
  z-index: 100000;
}

.courseManage {
  width: 100%;
  height: 100%;
  display: flex;
  flex-direction: column;
  position: relative;

  .filter {
    margin-left: 35px;
    margin-right: 35px;
    margin-top: 30px;
    display: flex;
    justify-content: space-between;
    flex-wrap: wrap;

    .filterItems {
      display: flex;
      flex-wrap: wrap;

      .pathnameInp {
        margin-right: 20px;
        margin-bottom: 20px;
      }

      .select {
        margin-right: 20px;
        margin-bottom: 20px;
      }

      .addTimeBox {
        position: relative;
        display: flex;
        align-items: center;

        .addTime {
          position: absolute;
          z-index: 10;
          margin-left: 10px;
          color: rgba(0, 0, 0, 0.4);
        }

        .ant-picker {
          padding-left: 85px;
        }

        .ant-picker-range .ant-picker-active-bar {
          margin-left: 85px;
        }
      }

      .btn {
        padding: 0px 26px 0px 26px;
        height: 38px;
        background: #4ea6ff;
        border-radius: 8px;
        //border: 1px solid rgba(64, 158, 255, 1);
        display: flex;
        align-items: center;
        justify-content: center;
        margin-right: 14px;
        flex-shrink: 0;
        cursor: pointer;

        .search {
          background-size: 100%;
        }

        .btnText {
          font-size: 14px;
          font-weight: 400;
          color: #ffffff;
          line-height: 36px;
          margin-left: 5px;
        }
      }

      .btnn {
        padding: 0px 26px 0px 26px;
        height: 38px;
        background: #4ea6ff;
        border-radius: 8px;
        border: 1px solid rgba(64, 158, 255, 1);
        display: flex;
        align-items: center;
        justify-content: center;
        margin-right: 14px;
        flex-shrink: 0;
        cursor: pointer;

        .search {
          background-size: 100%;
        }

        .btnText {
          font-size: 14px;
          font-weight: 400;
          color: #fff;
          line-height: 36px;
          margin-left: 5px;
        }
      }

      .btn1 {
        .search {
          width: 15px;
          height: 17px;
          background-image: url("../../assets/images/courseManage/search0.png");
        }
      }
      .btn1:active {
        background: #0982ff;
      }
      .btn2:active {
        background: #0982ff;
      }
      .btn2 {
        .search {
          width: 16px;
          height: 18px;
          background-image: url("../../assets/images/courseManage/reset0.png");
        }

        .daochu {
          width: 16px;
          height: 18px;
          background-image: url("../../assets/images/coursewareManage/export1.png");
        }
      }

      .btn1 {
        .search {
          background-image: url("../../assets/images/courseManage/search0.png");
        }

        .btnText {
          color: #ffffff;
        }
      }

      /**
      .btn1:active {
        background: #0982ff;
      }

      .btn2 {
        background: rgba(64, 158, 255, 0.1);
      }

      .btn2:active {
        background: rgba(64, 158, 255, 0.2);
      }*/
    }

    .btns {
      display: flex;

      // flex-wrap: wrap;
      .btn {
        padding: 0px 26px 0px 26px;
        height: 38px;
        background: #4ea6ff;
        border-radius: 8px;
        //border: 1px solid rgba(64, 158, 255, 1);
        display: flex;
        align-items: center;
        justify-content: center;
        margin-right: 14px;
        flex-shrink: 0;
        cursor: pointer;

        .search {
          background-size: 100%;
        }

        .btnText {
          font-size: 14px;
          font-weight: 400;
          color: #ffffff;
          line-height: 36px;
          margin-left: 5px;
        }
      }
      .btn3:active {
        background: #0982ff;
      }
      .btn3 {
        .search {
          width: 17px;
          height: 18px;
          background-image: url("../../assets/images/courseManage/add0.png");
        }

        .btnText {
          color: #ffffff;
        }
      }
    }
  }

  .tableBox {
    margin: 20px 38px 30px;

    th {
      background-color: #eff4fc !important;
      text-align: center !important;
    }

    .ant-table-tbody
      > tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)
      > td {
      background: #f6f9fd;
    }

    .operation {
      display: flex;
      justify-content: right;

      .fb {
        display: flex;
        margin-right: 20px;

        .jc {
          color: #4ea6ff;
          font-size: 14px;
          margin-left: 20px;
          white-space: nowrap;
          cursor: pointer;
        }
      }
    }

    .ynuse {
      display: flex;
      justify-content: center;
      align-items: center;

      .use {
        cursor: pointer;
      }
    }
  }
}

.selectonlineface {
  z-index: 999;
  width: 679px;
  background: #ffffff;
  box-shadow: 0px 1px 35px 0px rgba(118, 136, 166, 0.21);
  position: absolute;
  left: 50%;
  top: -100%;
  transform: translate(-50%, -50%);

  .of_header {
    position: absolute;
    width: 100%;
    height: 40px;
    background: linear-gradient(
      rgba(78, 166, 255, 0.2) 0%,
      rgba(78, 166, 255, 0) 100%
    );
  }

  .of_main {
    width: 100%;
    position: relative;

    .ofm_header {
      display: flex;
      align-items: center;
      padding-top: 20px;
      padding-left: 26px;
      font-size: 16px;

      .add_icon {
        width: 16px;
        height: 16px;
        margin-right: 10px;
        background-image: url(@/assets/images/coursewareManage/add1.png);
        background-size: 100% 100%;
      }

      .close_exit {
        position: absolute;
        right: 42px;
        cursor: pointer;
        width: 20px;
        height: 20px;
        background-image: url(@/assets/images/coursewareManage/close.png);
        background-size: 100% 100%;
      }
    }

    .ofm_body {
      width: 80%;
      margin: 3px auto;

      .ofmb_items {
        display: flex;
        align-items: center;
        justify-content: end;
        margin: 14px auto;

        .signbox {
          width: 110px;
          display: flex;
          justify-content: end;

          .sign {
            width: 10px;
            height: 10px;
            margin-top: -3px;
            margin-right: 6px;
            background-size: 100% 100%;
          }
        }

        .b_input {
          flex: 1;
          position: relative;

          .inp_num {
            position: absolute;
            right: 10px;
            top: 10px;
          }
        }

        .bc_box {
          display: flex;
          width: 440px;
          flex: 1;

          .bc_boxl,
          .bc_boxr {
            display: flex;
            align-items: center;
          }
        }
      }

      .ol_checkbox {
        display: flex;
        align-items: center;
        justify-content: center;
        margin-left: 6px;
      }

      .b_sub {
        width: 440px;
        margin-left: 110px;

        .bs_header {
          display: flex;
          justify-content: space-between;

          .b_right {
            display: flex;
          }
        }
      }

      .bl_detail {
        top: 24px;
      }

      .b_footer {
        width: 100%;
        margin-left: 212px;
        margin-top: 25px;
        margin-bottom: 20px;
        display: flex;

        .btn {
          width: 100px;
          height: 40px;
          background: rgba(64, 158, 255, 0);
          border-radius: 8px;
          display: flex;
          align-items: center;
          justify-content: center;
          margin-right: 14px;
          flex-shrink: 0;
          cursor: pointer;

          .btnText {
            font-size: 14px;
            font-weight: 400;
            line-height: 40px;
          }
        }

        .btn5 {
          border: 1px solid rgba(64, 158, 255, 1);
          color: #4ea6ff;
        }

        .btn6 {
          background-color: #4ea6ff;
          color: #ffffff;
        }
      }
    }
  }
}

.createschooltime {
  z-index: 999;
  width: 879px;
  height: 740px;
  background: #ffffff;
  box-shadow: 0px 1px 35px 0px rgba(118, 136, 166, 0.21);
  position: absolute;
  left: 50%;
  top: -100%;
  transform: translate(-50%, -50%);

  .cst_header {
    position: absolute;
    width: 100%;
    height: 40px;
    background: linear-gradient(
      rgba(78, 166, 255, 0.2) 0%,
      rgba(78, 166, 255, 0) 100%
    );
  }

  .cst_main {
    width: 100%;
    max-height: 700px;
    overflow-y: auto;
    position: relative;

    .cstm_header {
      display: flex;
      align-items: center;
      padding-top: 20px;
      padding-left: 26px;
      font-size: 16px;

      .add_icon {
        width: 16px;
        height: 16px;
        margin-right: 10px;
        background-image: url(@/assets/images/coursewareManage/add1.png);
        background-size: 100% 100%;
      }

      .close_exit {
        position: absolute;
        right: 42px;
        cursor: pointer;
        width: 20px;
        height: 20px;
        background-image: url(@/assets/images/coursewareManage/close.png);
        background-size: 100% 100%;
      }
    }

    .cstm_title {
      margin: 10px auto 20px 51px;
      font-weight: bold;
    }

    .cstm_items {
      display: flex;
      width: 80%;
      margin: auto;
      align-items: center;
      margin-bottom: 23px;
      .teacher_input{
        .ant-input-number{
          width: 15%;
          height: 40px !important;
          border-radius: 8px !important;
          border: 1px solid #C7CBD2 !important;
          margin: 0 10px 0 10px;
          padding-top: 3px;
        }
        .btn-add{
          margin: 0 10px 0 10px;
        }
        .btn-circle{
          text-align: center;
          line-height: 100%;
          margin-top: 5px;
          .custom-icon{
            font-size: 20px;
            svg{
              margin: auto;
            }
          }
          span{
            width: 100%;
            height: 100%;
            font-size: 33px;
          }
        }
      }

      .signbox {
        display: flex;
        justify-content: end;
        width: 100px;
        margin-right: 6px;

        .sign {
          margin-top: -5px;
          margin-right: 4px;
        }
      }

      .b_input {
        flex: 1;
        position: relative;

        .upload_box {
          display: flex;
          cursor: pointer;

          .upload_icon {
            width: 16px;
            height: 16px;
            margin-right: 5px;
          }
        }

        .inp_num {
          position: absolute;
          top: 9px;
          right: 10px;
        }
      }
    }

    .items_fj {
      margin-bottom: 1px;

      .fujian {
        display: none;
      }

      .mbl_items12 {
        width: 440px;
        margin-right: 56px;

        .i12_box1 {
          display: flex;
          align-items: center;
          padding: 17px 0px 17px 21px;
          border: 1px solid #eff4fc;
          border-radius: 8px;
          margin-bottom: 10px;

          .file_img {
            width: 27px;
            height: 32px;
            background-image: url(@/assets/images/coursewareManage/imgs.png);
            margin-right: 22px;

            img {
              width: 100%;
              height: 100%;
            }
          }

          .file_detail {
            width: 250px;
            margin-right: 21px;

            .file_updata {
              display: flex;
              align-items: center;

              .updatabox {
                position: relative;
                width: 230px;
                height: 5px;
                background-color: rgba(192, 192, 192, 0.25);
                border-radius: 3px;

                .updatacolor {
                  position: absolute;
                  left: 0;
                  width: 100%;
                  height: 5px;
                  background-color: #57c887;
                  border-radius: 3px;
                }

                .updatacolor2 {
                  position: absolute;
                  left: 0;
                  width: 80%;
                  height: 5px;
                  background-color: #ff7474;
                  border-radius: 3px;
                }

                .updatacolor3 {
                  position: absolute;
                  left: 0;
                  width: 60%;
                  height: 5px;
                  background-color: #4ea6ff;
                  border-radius: 3px;
                }

                .updataxq {
                  position: absolute;
                  right: 2px;
                  top: -30px;
                  color: #57c887;
                }

                .updataxq2 {
                  position: absolute;
                  right: 2px;
                  top: -30px;
                  color: #ff7474;
                }

                .updataxq3 {
                  position: absolute;
                  right: 2px;
                  top: -30px;
                  color: #4ea6ff;
                }
              }
            }
          }

          .file_operation {
            display: flex;

            .fobox {
              margin-right: 5px;
              cursor: pointer;
            }
          }
        }
      }
    }

    .items_btn {
      display: flex;
      justify-content: center;
      margin-top: 20px;
      margin-bottom: 20px;

      .cstm_btn {
        width: 100px;
        height: 40px;
        background: rgba(64, 158, 255, 0);
        border-radius: 8px;
        display: flex;
        align-items: center;
        justify-content: center;
        margin-right: 14px;
        flex-shrink: 0;
        cursor: pointer;

        .btnText {
          font-size: 14px;
          font-weight: 400;
          line-height: 40px;
        }
      }

      .btn5 {
        border: 1px solid rgba(64, 158, 255, 1);
        color: #4ea6ff;
      }

      .btn6 {
        background-color: #4ea6ff;
        color: #ffffff;
      }
    }
  }
}

.QRModal {
  .ant-modal {
    .ant-modal-content {
      width: 479px !important;

      .ant-modal-body {
        .QR {
          z-index: 9999;
          width: 520px;
          background: #ffffff;
          box-shadow: 0px 1px 35px 0px rgba(118, 136, 166, 0.21);
          position: absolute;
          left: 50%;
          top: 10%;
          transform: translate(-50%, -50%);

          .qr_header {
            position: absolute;
            width: calc(100%);
            height: 40px;
            background: linear-gradient(
              rgba(78, 166, 255, 0.2) 0%,
              rgba(78, 166, 255, 0) 100%
            );
          }

          .qr_main {
            width: 100%;
            position: relative;

            .qrm_header {
              display: flex;
              align-items: center;
              padding-top: 20px;
              padding-left: 26px;
              font-size: 16px;

              .qr_icon {
                width: 16px;
                height: 16px;
                margin-right: 10px;
                background-image: url(@/assets/images/coursewareManage/QR.png);
                background-size: 100% 100%;
              }

              .close_exit {
                position: absolute;
                right: 42px;
                cursor: pointer;
                width: 20px;
                height: 20px;
                background-image: url(@/assets/images/coursewareManage/close.png);
                background-size: 100% 100%;
              }
            }

            .qrm_body {
              width: 100%;
              margin-top: 22px;
              margin-bottom: 32px;

              .QR_img {
                width: 176px;
                height: 176px;
                margin: 1px auto;
                background-image: url(@/assets/images/taskpage/QR.png);
                background-size: 100% 100%;
              }
            }

            .qrm_footer {
              display: flex;
              align-items: center;
              margin-bottom: 44px;

              .qrmbtn {
                width: 80px;
                height: 32px;
                display: flex;
                line-height: 32px;
                justify-content: center;
                border-radius: 4px;
                border: 1px solid #387df7;
                margin-left: 16px;
                cursor: pointer;

                .btntext {
                  color: #387df7;
                }
              }
            }
          }
        }
      }
    }
  }
}

.recgradeModal {
  .ant-modal {
    .ant-modal-content {
      // width:679px !important;
      .ant-modal-body {
        .recordgrade {
          z-index: 9999;
          width: 679px;
          background: #ffffff;
          box-shadow: 0px 1px 35px 0px rgba(118, 136, 166, 0.21);
          position: absolute;
          left: 50%;
          top: 10%;
          transform: translate(-50%, -50%);

          .rg_header {
            position: absolute;
            width: calc(100%);
            height: 40px;
            background: linear-gradient(
              rgba(78, 166, 255, 0.2) 0%,
              rgba(78, 166, 255, 0) 100%
            );
          }

          .rg_main {
            width: 100%;
            position: relative;

            .rgm_header {
              display: flex;
              align-items: center;
              padding-top: 20px;
              padding-left: 26px;
              font-size: 16px;

              .rg_icon {
                width: 16px;
                height: 16px;
                margin-right: 10px;
                background-image: url(@/assets/images/coursewareManage/grade.png);
                background-size: 100% 100%;
              }

              .close_exit {
                position: absolute;
                right: 42px;
                cursor: pointer;
                width: 20px;
                height: 20px;
                background-image: url(@/assets/images/coursewareManage/close.png);
                background-size: 100% 100%;
              }
            }

            .rgm_body {
              width: 100%;

              .rgmb_items {
                display: flex;
                justify-content: center;
                align-items: center;
                width: 80%;
                margin: 21px auto 10px auto;

                .items_left {
                  display: flex;
                  margin-right: 14px;

                  .sign {
                    margin-right: 7px;
                  }
                }
              }
            }

            .qrm_btnbox {
              display: flex;
              margin: 30px auto;
              justify-content: center;

              .qrm_btn {
                width: 100px;
                height: 40px;
                background: rgba(64, 158, 255, 0);
                border-radius: 8px;
                display: flex;
                align-items: center;
                justify-content: center;
                margin-right: 14px;
                flex-shrink: 0;
                cursor: pointer;

                .btnText {
                  font-size: 14px;
                  font-weight: 400;
                  line-height: 40px;
                }
              }

              .btn1 {
                border: 1px solid rgba(64, 158, 255, 1);
                color: #4ea6ff;
              }

              .btn2 {
                background-color: #ffffff;
                color: #4ea6ff;
              }

              .btn3 {
                border: 1px solid rgba(64, 158, 255, 1);
                color: #4ea6ff;
              }
            }
          }
        }
      }
    }
  }
}

.graModal {
  .ant-modal {
    .ant-modal-content {
      // width:679px !important;
      .ant-modal-body {
        .graduate {
          z-index: 9999;
          width: 679px;
          background: #ffffff;
          box-shadow: 0px 1px 35px 0px rgba(118, 136, 166, 0.21);
          position: absolute;
          left: 50%;
          top: 10%;
          transform: translate(-50%, -50%);

          .gra_header {
            position: absolute;
            width: calc(100%);
            height: 40px;
            background: linear-gradient(
              rgba(78, 166, 255, 0.2) 0%,
              rgba(78, 166, 255, 0) 100%
            );
          }

          .gra_main {
            width: 100%;
            position: relative;

            .gram_header {
              display: flex;
              align-items: center;
              padding-top: 20px;
              padding-left: 26px;
              font-size: 16px;

              .gra_icon {
                width: 16px;
                height: 16px;
                margin-right: 10px;
                background-image: url(@/assets/images/coursewareManage/graduate.png);
                background-size: 100% 100%;
              }

              .close_exit {
                position: absolute;
                right: 42px;
                cursor: pointer;
                width: 20px;
                height: 20px;
                background-image: url(@/assets/images/coursewareManage/close.png);
                background-size: 100% 100%;
              }
            }

            .gram_body {
              width: 100%;

              .gramb_items {
                display: flex;
                justify-content: center;
                align-items: center;
                width: 80%;
                margin: 21px auto 10px auto;

                .items_left {
                  display: flex;
                  margin-right: 14px;

                  .sign {
                    margin-right: 7px;
                  }
                }
              }

              .gramb_input {
                .bc_box {
                  display: flex;
                }
              }
            }

            .qrm_btnbox {
              display: flex;
              margin: 30px auto;
              justify-content: center;

              .qrm_btn {
                width: 100px;
                height: 40px;
                background: rgba(64, 158, 255, 0);
                border-radius: 8px;
                display: flex;
                align-items: center;
                justify-content: center;
                margin-right: 14px;
                flex-shrink: 0;
                cursor: pointer;

                .btnText {
                  font-size: 14px;
                  font-weight: 400;
                  line-height: 40px;
                }
              }

              .btn1 {
                border: 1px solid rgba(64, 158, 255, 1);
                color: #4ea6ff;
              }

              .btn2 {
                background-color: #4ea6ff;
                color: #ffffff;
              }
            }
          }
        }
      }
    }
  }
}

.agrstudyModal {
  .ant-modal {
    width: 429px !important;
    height: 258px !important;

    .ant-modal-content {
      width: 429px !important;
      height: 258px !important;

      .ant-modal-body {
        width: 429px !important;
        height: 258px !important;
        padding: 0px !important;

        .agreestudy {
          z-index: 9999;
          width: 429px;
          height: 258px;
          background: #ffffff;
          box-shadow: 0px 1px 35px 0px rgba(118, 136, 166, 0.21);

          .agree_header {
            position: absolute;
            width: 100%;
            height: 40px;
            background: linear-gradient(
              rgba(78, 166, 255, 0.2) 0%,
              rgba(78, 166, 255, 0) 100%
            );
          }

          .agree_main {
            width: 100%;
            position: relative;

            .agreem_header {
              display: flex;
              align-items: center;
              padding-top: 20px;
              padding-left: 26px;
              font-size: 16px;

              .agreem_icon {
                width: 16px;
                height: 16px;
                margin-right: 10px;
                background-image: url(@/assets/images/coursewareManage/notice.png);
                background-size: 100% 100%;
              }

              .close_exit {
                position: absolute;
                right: 42px;
                cursor: pointer;
                width: 20px;
                height: 20px;
                background-image: url(@/assets/images/coursewareManage/close.png);
                background-size: 100% 100%;
              }
            }

            .agreem_body {
              display: flex;
              justify-content: center;
              align-items: center;
              width: 100%;
              margin: 45px auto 62px auto;
            }

            .qrm_btnbox {
              display: flex;
              margin: 30px auto;
              justify-content: center;

              .qrm_btn {
                width: 100px;
                height: 40px;
                background: rgba(64, 158, 255, 0);
                border-radius: 8px;
                display: flex;
                align-items: center;
                justify-content: center;
                flex-shrink: 0;
                cursor: pointer;

                .btnText {
                  font-size: 14px;
                  font-weight: 400;
                  line-height: 40px;
                }
              }

              .btn1 {
                border: 1px solid rgba(64, 158, 255, 1);
                color: #4ea6ff;
                margin-right: 14px;
              }

              .btn2 {
                background-color: #4ea6ff;
                color: #ffffff;
              }
            }
          }
        }
      }
    }
  }
}

.onlmanageModal {
  .ant-modal {
    .ant-modal-content {
      // width:1358px !important;
      .ant-modal-body {
        .modalHeader {
          display: flex;
          align-items: center;
          justify-content: space-between;

          .headerLeft {
            margin-left: 27px;
            display: flex;
            align-items: center;

            .headerLeftText {
              font-size: 16px;
              font-weight: 400;
              color: #000000;
              line-height: 36px;
            }
          }
        }

        .onlinemanage {
          display: none;
          min-width: 1000px;
          background: #ffffff;

          .om_main {
            width: 100%;

            .om_body {
              margin-right: 50px;

              .b_title {
                color: #4f5156;
                font-weight: 500;
                margin-bottom: 19px;
              }

              .b_sub {
                display: flex;
                margin-bottom: 10px;

                .bs_type {
                  color: #999ba3;
                }

                .bs_left {
                  color: #999ba3;
                  margin-left: 35px;
                }

                .bs_right {
                  color: #4f5156;
                }
              }

              .b_menu {
                width: calc(100%);
              }

              .b_menunav {
                display: flex;
                margin-top: 20px;
                margin-bottom: 20px;

                .bm_select {
                  margin-right: 20px;
                }

                .bm_input {
                  margin-right: 20px;
                }

                .bm_btn {
                  display: flex;
                  cursor: pointer;

                  .btn {
                    padding: 0px 26px 0px 26px;
                    height: 40px;
                    background: rgba(64, 158, 255, 1);
                    border-radius: 8px;
                    border: 1px solid rgba(64, 158, 255, 1);
                    color: #fff;
                    display: flex;
                    align-items: center;
                    justify-content: center;
                    margin-right: 14px;
                    flex-shrink: 0;

                    .search {
                      background-size: 100%;
                    }

                    .btnText {
                      font-size: 14px;
                      font-weight: 400;
                      color: #fff;
                      line-height: 36px;
                      margin-left: 5px;
                    }
                  }

                  .btn1 {
                    .search {
                      width: 15px;
                      height: 17px;
                      background-image: url("@/assets/images/coursewareManage/search1.png");
                    }
                  }

                  .btn1 {
                    background: rgba(64, 158, 255, 1);

                    .search {
                      background-image: url("@/assets/images/coursewareManage/search0.png");
                    }

                    .btnText {
                      color: #ffffff;
                    }
                  }

                  .btn2 {
                    .search {
                      width: 16px;
                      height: 18px;
                      margin-right: 6px;
                      background-image: url("../../assets/images/courseManage/reset0.png");
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}

.facteachModal {
  .ant-modal {
    .ant-modal-content {
      // width:1358px !important;
      .ant-modal-body {
        .modalHeader {
          display: flex;
          align-items: center;
          justify-content: space-between;

          .headerLeft {
            margin-left: 27px;
            display: flex;
            align-items: center;

            .headerLeftText {
              font-size: 16px;
              font-weight: 400;
              color: #000000;
              line-height: 36px;
            }
          }
        }

        .modalMain {
          .m_title {
            margin-bottom: 20px;
          }

          .m_body {
            display: flex;
            flex-wrap: wrap;

            .mb_left {
              width: 50%;

              .mbl_items {
                display: flex;
                align-items: center;
                justify-content: flex-end;
                margin-bottom: 10px;

                .item_nam {
                  width: 100px;
                  display: flex;
                  align-items: center;
                  justify-content: flex-end;
                  white-space: nowrap;

                  .asterisk_icon {
                    width: 10px;
                    height: 10px;
                    margin-right: 5px;
                    margin-top: -15px;
                  }
                }

                .item_inp {
                  flex: 1;
                  position: relative;

                  .inp_num {
                    position: absolute;
                    left: 398px;
                    top: 10px;
                  }
                }
              }

              .mbl_items2 {
                display: flex;
                align-items: start;
                margin-top: 10px;
                margin-bottom: 10px;

                .item_nam {
                  width: 100px;
                  display: flex;
                  align-items: center;
                  justify-content: flex-end;
                  white-space: nowrap;

                  .asterisk_icon {
                    width: 10px;
                    height: 10px;
                    margin-right: 5px;
                    margin-top: -15px;
                  }
                }

                .item_inp {
                  flex: 1;

                  .i_upload_img {
                    margin-top: 10px;
                    width: 100px;
                    height: 100px;
                    border-radius: 8px;
                  }

                  .i_upload {
                    width: 100px;
                    height: 100px;
                    border: 1px solid #4ea6ff;
                    border-radius: 8px;
                    text-align: center;
                    align-items: center;
                    cursor: pointer;

                    .addimg {
                      position: relative;

                      .heng {
                        position: absolute;
                        top: 50px;
                        left: 25px;
                        width: 50px;
                        border: 1px solid #4ea6ff;
                      }

                      .shu {
                        position: absolute;
                        top: 25px;
                        left: 50px;
                        height: 50px;
                        border: 1px solid #4ea6ff;
                      }
                    }
                  }
                }
              }

              .i2_cz {
                width: 440px;
                margin-left: 100px;

                .i2_top {
                  display: flex;
                  justify-content: space-between;
                }
              }

              .i8_bottom {
                display: flex;
                width: 440px;
                margin-left: 100px;
              }
            }

            .mb_right {
              width: 50%;

              .mbl_items {
                display: flex;
                align-items: flex-start;
                justify-content: flex-end;
                margin-bottom: 10px;

                .item_nam {
                  width: 100px;
                  display: flex;
                  align-items: center;
                  justify-content: flex-end;
                  white-space: nowrap;

                  .asterisk_icon {
                    width: 10px;
                    height: 10px;
                    margin-top: -15px;
                    margin-right: 5px;
                  }
                }

                .item_inp {
                  flex: 1;
                }

                .accessory {
                  display: flex;
                  align-items: center;

                  .accessory_icon {
                    width: 16px;
                    height: 16px;
                    margin-top: -8px;
                    margin-right: 5px;
                  }
                }
              }

              .mbl_items2 {
                display: flex;
                align-items: start;
                margin-bottom: 10px;

                .item_nam {
                  width: 100px;
                  display: flex;
                  align-items: center;
                  justify-content: flex-end;
                  white-space: nowrap;

                  .asterisk_icon {
                    width: 10px;
                    height: 10px;
                    margin-right: 5px;
                    margin-top: -15px;
                  }
                }

                .item_inp {
                  flex: 1;
                  position: relative;

                  .inp_num {
                    position: absolute;
                    left: 395px;
                    bottom: 10px;
                  }
                }
              }
            }
          }

          .m_footer {
            display: flex;
            margin: 20px 0;

            .fotnam {
              width: 100px;
              display: flex;
              justify-content: end;
              padding-right: 15px;
            }

            .fotarea {
              width: calc(100% - 150px);
              position: relative;

              .fuwenben {
                width: 90%;
                height: 20px;
                background-color: rgb(95, 95, 95);
                position: absolute;
                left: 50%;
                transform: translate(-50%, 0);
                top: 3px;
                z-index: 9999;
              }
            }
          }

          .m_btn {
            width: 100%;
            margin-top: 25px;
            margin-bottom: 20px;
            display: flex;
            justify-content: center;
            align-content: center;

            .btn {
              width: 100px;
              height: 40px;
              background: rgba(64, 158, 255, 0);
              border-radius: 8px;
              display: flex;
              align-items: center;
              justify-content: center;
              margin-right: 14px;
              flex-shrink: 0;
              cursor: pointer;

              .btnText {
                font-size: 14px;
                font-weight: 400;
                line-height: 40px;
              }
            }

            .btn5 {
              border: 1px solid rgba(64, 158, 255, 1);
              color: #4ea6ff;
            }

            .btn6 {
              background-color: #4ea6ff;
              color: #ffffff;
            }
          }
        }
      }
    }
  }
}

.givpowerModal {
  .ant-modal {
    .ant-modal-content {
      // width:1358px !important;
      .ant-modal-body {
        .modalHeader {
          display: flex;
          align-items: center;
          justify-content: space-between;

          .headerLeft {
            margin-left: 27px;
            display: flex;
            align-items: center;

            .headerLeftText {
              font-size: 16px;
              font-weight: 400;
              color: #000000;
              line-height: 36px;
            }
          }
        }

        .givepower {
          min-width: 1000px;
          background: #ffffff;

          .gp_main {
            width: 100%;
            position: relative;

            .gpm_inputbtn {
              width: 90%;
              margin: 20px auto;
              display: flex;

              .gpm_btn {
                width: 100px;
                height: 40px;
                margin-right: 14px;
                background: #ffffff;
                border: 1px solid #4ea6ff;
                border-radius: 8px;
                display: flex;
                align-items: center;
                justify-content: center;
                flex-shrink: 0;
                cursor: pointer;

                .btnText {
                  color: #4ea6ff;
                  font-size: 14px;
                  font-weight: 400;
                  line-height: 40px;
                }
              }

              .btn1 {
                .search {
                  width: 15px;
                  height: 17px;
                  margin-right: 6px;
                  background-image: url("../../assets/images/courseManage/search1.png");
                }
              }

              .btn2 {
                .reset {
                  width: 16px;
                  height: 18px;
                  margin-right: 6px;
                  background-image: url("../../assets/images/courseManage/reset1.png");
                }
              }

              .btn1 {
                background: #4ea6ff;

                .search {
                  background-image: url("@/assets/images/coursewareManage/search0.png");
                }

                .btnText {
                  color: #ffffff;
                }
              }

              .btn2 {
                background: #4ea6ff;

                .reset {
                  background-image: url("@/assets/images/coursewareManage/reset0.png");
                }

                .btnText {
                  color: #ffffff;
                }
              }
            }

            .gpm_notice {
              display: flex;
              background: rgba(78, 166, 255, 0.25);
              border: 1px solid #4ea6ff;
              width: 90%;
              height: 62px;
              margin: 20px auto;
              align-items: center;
              line-height: 64px;

              .th_icon {
                width: 16px;
                height: 16px;
                background-image: url(@/assets/images/coursewareManage/gan.png);
                background-size: 100% 100%;
                margin: auto 13px auto 37px;
              }

              .textarea {
                margin-right: 33px;
              }
            }

            .gpm_table {
              width: 90%;
              margin: 30px auto;
              border: 1px solid #f0f4fe;
            }
          }
        }
      }
    }
  }
}

.schtimeModal {
  .modalHeader {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding-top: 10px;
    background: linear-gradient(180deg, rgba(103, 64, 255, 0.2) 0%, rgba(166, 168, 255, 0) 100%) !important;
    .headerLeft {
      margin-left: 27px;
      display: flex;
      align-items: center;

      .headerLeftText {
        font-size: 16px;
        font-weight: 400;
        color: #000000;
        line-height: 36px;
      }
    }
  }

  .schooltime {
    min-width: 1000px;
    background: #ffffff;

    .st_main {
      width: 100%;

      .tableBox {
        margin: 20px 38px 30px;

        th {
          background-color: #eff4fc !important;
          text-align: center !important;
        }

        .ant-table-tbody
          > tr:hover:not(.ant-table-expanded-row):not(
            .ant-table-row-selected
          )
          > td {
          background: #f6f9fd;
        }

        .operation {
          display: flex;
          justify-content: right;

          .fb {
            display: flex;
            margin-right: 20px;

            .jc {
              color: #4ea6ff;
              font-size: 14px;
              margin-left: 20px;
              white-space: nowrap;
              cursor: pointer;
            }
          }
        }

        .ynuse {
          display: flex;
          justify-content: center;
          align-items: center;

          .use {
            cursor: pointer;
          }
        }
      }

      .stm_inputbtn {
        display: flex;
        width: 90%;
        margin: 20px auto;

        .stm_btn {
          width: 100px;
          height: 40px;
          margin-right: 14px;
          background: #ffffff;
          border: 1px solid #4ea6ff;
          border-radius: 8px;
          display: flex;
          align-items: center;
          justify-content: center;
          flex-shrink: 0;
          cursor: pointer;

          .btnText {
            color: #4ea6ff;
            font-size: 14px;
            font-weight: 400;
            line-height: 40px;
          }
        }

        .btn {
          padding: 0px 26px 0px 26px;
          height: 38px;
          background: #4ea6ff;
          border-radius: 8px;
          //border: 1px solid rgba(64, 158, 255, 1);
          display: flex;
          align-items: center;
          justify-content: center;
          margin-right: 14px;
          flex-shrink: 0;
          cursor: pointer;

          .search {
            background-size: 100%;
          }

          .btnText {
            font-size: 14px;
            font-weight: 400;
            color: #ffffff;
            line-height: 36px;
            margin-left: 5px;
          }
        }

        .btnn {
          padding: 0px 26px 0px 26px;
          height: 38px;
          background: #4ea6ff;
          border-radius: 8px;
          border: 1px solid rgba(64, 158, 255, 1);
          color: #fff;
          display: flex;
          align-items: center;
          justify-content: center;
          margin-right: 14px;
          flex-shrink: 0;
          cursor: pointer;

          .search {
            background-size: 100%;
          }

          .btnText {
            font-size: 14px;
            font-weight: 400;
            color: #fff;
            line-height: 36px;
            margin-left: 5px;
          }
        }

        .btn1 {
          .search {
            width: 15px;
            height: 17px;
            background-image: url("../../assets/images/courseManage/search0.png");
          }
        }

        .btn2 {
          .search {
            width: 16px;
            height: 18px;
            background-image: url("../../assets/images/courseManage/reset0.png");
          }
        }

        .btn1 {
          .search {
            background-image: url("../../assets/images/courseManage/search0.png");
          }

          .btnText {
            color: #ffffff;
          }
        }

        .btns {
          display: flex;

          // flex-wrap: wrap;
          .btn {
            padding: 0px 21px 0px 21px;
            height: 38px;
            background: #4ea6ff;
            border-radius: 8px;
            //border: 1px solid rgba(64, 158, 255, 1);
            display: flex;
            align-items: center;
            justify-content: center;
            margin-right: 14px;
            flex-shrink: 0;
            cursor: pointer;

            .search {
              background-size: 100%;
            }

            .btnText {
              font-size: 14px;
              font-weight: 400;
              color: #ffffff;
              line-height: 36px;
              margin-left: 5px;
            }

            .btn2 {
              margin-right: 0px;

              .img2 {
                width: 17px;
                height: 18px;
                background-image: url(../../assets/images/coursewareManage/export1.png);
              }
            }
          }

          .btn3 {
            .search {
              width: 17px;
              height: 18px;
              background-image: url("../../assets/images/courseManage/add0.png");
            }

            .btnText {
              color: #ffffff;
            }
          }
        }
      }

      /**
      .btn3 {
        width: 130px;
        height: 40px;
        border: 1px solid #4ea6ff;
        background-color: #4ea6ff;
        border-radius: 8px;
        display: flex;
        align-items: center;
        justify-content: center;
        flex-shrink: 0;
        cursor: pointer;

        .btnText {
          font-size: 14px;
          font-weight: 400;
          line-height: 40px;
        }

        .btn3 {
          .add {
            width: 17px;
            height: 18px;
            background-image: url("@/assets/images/coursewareManage/add0.png");
            background-size: 100% 100%;
            margin-right: 6px;
          }
        }
      } */

      .notable {
        width: 100%;
        height: 100%;

        .notablebox {
          width: 412px;
          height: 212px;
          background: linear-gradient(180deg, #fef3dd 0%, #fffaf0 100%);
          border-radius: 10px;
          display: flex;
          justify-content: center;
          text-align: center;
          margin: 77px auto 109px auto;
          position: relative;

          .smallleft {
            position: absolute;
            top: 18px;
            left: 0px;
            width: 8px;
            height: 21px;
            border-radius: 0px 4px 4px 0px;
            background-color: #ffb64e;
          }

          .smallright {
            position: absolute;
            bottom: 18px;
            right: 0px;
            width: 8px;
            height: 21px;
            border-radius: 4px 0px 0px 4px;
            background-color: #ffb64e;
          }

          .boxbody {
            .boximg {
              width: 72px;
              height: 72px;
              margin: 32px auto 20px auto;
              background-image: url(@/assets/images/coursewareManage/nostate.png);
              background-size: 100% 100%;
            }

            .boxtitle {
              margin-bottom: 4px;
            }
          }
        }
      }

      .tableBox {
        position: relative;
        padding-bottom: 80px;

        .classify {
          margin-left: 10px !important;
          padding-left: 9px !important;
        }

        .ant-checkbox-wrapper {
          align-items: center;
          margin-top: -2px;
        }

        .ant-table-selection-column {
          padding: 0px !important;
          padding-left: 60px !important;
        }

        .ant-table-thead > tr > th {
          background-color: #eff4fc !important;
        }

        th.h {
          background-color: #eff4fc !important;
        }

        .ant-table-tbody
          > tr:hover:not(.ant-table-expanded-row):not(
            .ant-table-row-selected
          )
          > td {
          background: #f6f9fd;
        }

        .operation {
          display: flex;
          justify-content: right;

          .fb {
            display: flex;
            margin-right: 20px;

            .jc {
              color: #4ea6ff;
              font-size: 14px;
              margin-left: 20px;
              white-space: nowrap;
              cursor: pointer;
            }
          }
        }

        .tableBox {
          .pa {
            left: 0;
            width: 100%;
            // height: 20px;
            // background-color: red;
            display: flex;
            justify-content: center;
            position: absolute;
            bottom: 20px;
          }
        }
      }
    }
  }
}

.stusmanageModal {
  .ant-modal {
    max-width: 1800px;

    .ant-modal-content {
      // width:1358px !important;
      .ant-modal-body {
        .modalHeader {
          display: flex;
          align-items: center;
          justify-content: space-between;

          .headerLeft {
            margin-left: 27px;
            display: flex;
            align-items: center;

            .headerLeftText {
              font-size: 16px;
              font-weight: 400;
              color: #000000;
              line-height: 36px;
            }
          }
        }

        .studentsmanage {
          min-width: 1000px;
          background: #ffffff;

          .stm_main {
            width: 100%;

            .stmmitems {
              margin: auto 40px;

              .stmm_i1,
              .stmm_i2,
              .stmm_i3,
              .stmm_i4 {
                margin: 19px 0;
              }

              .stmm_i5 {
                display: flex;
                justify-content: space-between;
              }

              .stmm_i6 {
                position: relative;
                padding-top: 15px;
                padding-bottom: 80px;

                .classify {
                  margin-left: 10px !important;
                  padding-left: 9px !important;
                }

                .ant-checkbox-wrapper {
                  align-items: center;
                  margin-top: -2px;
                }

                .ant-table-selection-column {
                  padding: 0px !important;
                  padding-left: 60px !important;
                }

                .ant-table-thead > tr > th {
                  font-size: 14px;
                  font-weight: 400;
                  color: #999ba3;
                  line-height: 36px;
                  padding: 5px 16px;
                  background-color: #eff4fc !important;
                }

                th.h {
                  background-color: #eff4fc !important;
                }

                .ant-table-tbody
                  > tr:hover:not(.ant-table-expanded-row):not(
                    .ant-table-row-selected
                  )
                  > td {
                  background: #f6f9fd;
                }

                .operation,
                .nselect {
                  display: flex;
                  justify-content: center;
                  color: #4ea6ff;
                  font-size: 14px;

                  .ops1,
                  .ops2 {
                    margin-right: 10px;
                    cursor: pointer;
                  }
                }

                .tableBox {
                  .pa {
                    left: 0;
                    width: 100%;
                    // height: 20px;
                    // background-color: red;
                    display: flex;
                    justify-content: center;
                    position: absolute;
                    bottom: 20px;
                  }
                }
              }
            }
          }
        }
      }
    }
  }
  .tableShow2 {
    display: inline-block;
  }
  .tableHiddle2 {
    display: none;
  }
}

.tag-content {
  .ant-tag {
    margin-top: 10px;
  }
}

.coursewareDetail {
  .ant-modal {
    height: 320px;
    margin-top: 100px;

    .ant-modal-content {
      // width:1358px !important;
      .ant-modal-body {
        .modalHeader {
          display: flex;
          align-items: center;
          justify-content: space-between;

          .headerLeft {
            margin-left: 27px;
            display: flex;
            align-items: center;

            .headerLeftText {
              font-size: 16px;
              font-weight: 400;
              color: #000000;
              line-height: 36px;
            }
          }
        }

        .modalMain {
          .ftsturecord {
            min-width: 1000px;
            background: #ffffff;

            .ftsr_main {
              width: 100%;

              .ftsr_table {
                width: 90%;
                margin: 30px auto;
                border: 1px solid #f0f4fe;
              }

              .ftsr_btn {
                width: 100px;
                height: 40px;
                background: #ffffff;
                border: 1px solid #4ea6ff;
                border-radius: 8px;
                display: flex;
                align-items: center;
                justify-content: center;
                margin: 30px auto;
                flex-shrink: 0;
                cursor: pointer;

                .btnText {
                  color: #4ea6ff;
                  font-size: 14px;
                  font-weight: 400;
                  line-height: 40px;
                }
              }
            }
          }
        }
      }
    }
  }
}

// 选择评估
.main_item {
  display: flex;
  align-items: center;
  margin-top: 32px;
  margin-bottom: 32px;

  .signbox {
    width: 120px;
    display: flex;
    justify-content: end;
    align-items: center;

    .sign {
      margin-right: 5px;
    }
  }

  .btnbox {
    display: flex;
    flex: 1;
    align-items: center;

    .xkbtn {
      cursor: pointer;
      width: 130px;
      height: 40px;
      background: #4ea6ff;
      border-radius: 8px;
      border: 0;
      margin-right: 8px;
      color: #fff;
    }
  }
}

.DelModal {
  .ant-modal {
    .ant-modal-content {
      width: 424px !important;

      .ant-modal-body {
        .delete {
          width: 424px;
          background: #ffffff;
          box-shadow: 0px 1px 35px 0px rgba(118, 136, 166, 0.21);
          border-radius: 4px;
          position: absolute;
          left: 50%;
          top: 10%;
          transform: translate(-50%, -50%);

          .del_header {
            position: absolute;
            width: calc(100%);
            height: 40px;
            background: linear-gradient(
              rgba(78, 166, 255, 0.2) 0%,
              rgba(78, 166, 255, 0) 100%
            );
          }

          .del_main {
            width: 100%;
            position: relative;

            .header {
              display: flex;
              align-items: center;
              padding-top: 20px;
              padding-left: 26px;
              font-size: 16px;

              .del-icons {
                width: 16px;
                height: 16px;
                position: relative;
                margin-right: 10px;

                img {
                  width: 100%;
                  height: 100%;
                  position: absolute;
                  top: 0px;
                  left: 0px;
                  background-size: 100% 100%;
                }
              }

              .close_exit {
                position: absolute;
                right: 42px;
                cursor: pointer;
                width: 20px;
                height: 20px;
                background-image: url(@/assets/images/coursewareManage/close.png);
                background-size: 100% 100%;
              }
            }

            .body {
              width: 100%;
              margin: 34px auto 56px auto;
              display: flex;
              justify-content: center;
              align-items: center;
            }

            .del_btnbox {
              display: flex;
              margin: 30px auto;
              justify-content: center;

              .del_btn {
                width: 100px;
                height: 40px;
                background: rgba(64, 158, 255, 0);
                border-radius: 8px;
                display: flex;
                align-items: center;
                justify-content: center;
                margin-right: 14px;
                flex-shrink: 0;
                cursor: pointer;

                .btnText {
                  font-size: 14px;
                  font-weight: 400;
                  line-height: 40px;
                }
              }

              .btn1 {
                border: 1px solid rgba(64, 158, 255, 1);
                color: #4ea6ff;
              }

              .btn2 {
                background-color: #4ea6ff;
                color: #ffffff;
              }
            }
          }
        }
      }
    }
  }
}

.disabled {
  a {
    color: #999ba3;
    cursor: not-allowed;
  }
}

.pa {
  width: 100%;
  display: flex;
  justify-content: center;
  margin-bottom: 20px;

  .pagination {
    margin-bottom: 20px;
  }

  .ant-pagination-item-link,
  .ant-pagination-item,
  .ant-select-selector,
  .ant-pagination-options-quick-jumper input {
    border-radius: 8px;
  }
}

.ant-select-selector {
  height: 100%;
  border-radius: 8px;
}

.ant-upload.ant-upload-select-picture-card {
  border: none;
}

// statusJuJue
.statusJuJue {
  margin-bottom: 20px;
}

.tableSelect {
  position: relative;

  .hoverList {
    display: none;
  }

  &:hover {
    .hoverList {
      display: block;
      position: absolute;
      top: 20px;
      left: -20px;
      background: #fff;
      box-sizing: border-box;
      // padding: 20px;
      color: #000000;
    }
  }
}

// ::v-deep .w-e-toolbar {
//   .w-e-bar-item {
//     &:nth-child(23) {
//       display: none !important;
//     }
//   }
// }
</style>
