|  | @@ -1,328 +1,328 @@
 | 
	
		
			
				|  |  | -import { defineComponent, onMounted, reactive, ref, watch } from 'vue';
 | 
	
		
			
				|  |  | -import styles from '../index.module.less';
 | 
	
		
			
				|  |  | -import {
 | 
	
		
			
				|  |  | -  NButton,
 | 
	
		
			
				|  |  | -  NDataTable,
 | 
	
		
			
				|  |  | -  NForm,
 | 
	
		
			
				|  |  | -  NFormItem,
 | 
	
		
			
				|  |  | -  NImage,
 | 
	
		
			
				|  |  | -  NModal,
 | 
	
		
			
				|  |  | -  NSelect,
 | 
	
		
			
				|  |  | -  NSpace
 | 
	
		
			
				|  |  | -} from 'naive-ui';
 | 
	
		
			
				|  |  | -import CSelect from '@/components/CSelect';
 | 
	
		
			
				|  |  | -import Pagination from '@/components/pagination';
 | 
	
		
			
				|  |  | -import { classGroupDetail, getTrainingList } from '../api';
 | 
	
		
			
				|  |  | -import add from './images/add.png';
 | 
	
		
			
				|  |  | -import { useRoute, useRouter } from 'vue-router';
 | 
	
		
			
				|  |  | -import CDatePicker from '/src/components/CDatePicker';
 | 
	
		
			
				|  |  | -import ClassTrainingDetails from '../modals/classTrainingDetails';
 | 
	
		
			
				|  |  | -import {
 | 
	
		
			
				|  |  | -  getNowDateAndMonday,
 | 
	
		
			
				|  |  | -  getNowDateAndSunday,
 | 
	
		
			
				|  |  | -  getTimes
 | 
	
		
			
				|  |  | -} from '@/utils/dateFormat';
 | 
	
		
			
				|  |  | -import TrainSettings from '../../attend-class/model/train-settings';
 | 
	
		
			
				|  |  | -import TheEmpty from '/src/components/TheEmpty';
 | 
	
		
			
				|  |  | -import { initCache, setCache } from '/src/hooks/use-async';
 | 
	
		
			
				|  |  | -import StudentTraomomhDetails from '../../studentList/modals/studentTraomomhDetails';
 | 
	
		
			
				|  |  | -export default defineComponent({
 | 
	
		
			
				|  |  | -  name: 'afterWork',
 | 
	
		
			
				|  |  | -  props: {
 | 
	
		
			
				|  |  | -    upgradeFlag: {
 | 
	
		
			
				|  |  | -      type: Number
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -  },
 | 
	
		
			
				|  |  | -  setup(props) {
 | 
	
		
			
				|  |  | -    const router = useRouter();
 | 
	
		
			
				|  |  | -    const route = useRoute();
 | 
	
		
			
				|  |  | -    const state = reactive({
 | 
	
		
			
				|  |  | -      upgradeFlag: props.upgradeFlag == 0 ? true : false, // 是否为历史班
 | 
	
		
			
				|  |  | -      searchForm: {
 | 
	
		
			
				|  |  | -        status: '' as any,
 | 
	
		
			
				|  |  | -        timer: [
 | 
	
		
			
				|  |  | -          getNowDateAndMonday(new Date().getTime()),
 | 
	
		
			
				|  |  | -          getNowDateAndSunday(new Date().getTime())
 | 
	
		
			
				|  |  | -        ] as any
 | 
	
		
			
				|  |  | -      },
 | 
	
		
			
				|  |  | -      loading: false,
 | 
	
		
			
				|  |  | -      pagination: {
 | 
	
		
			
				|  |  | -        page: 1,
 | 
	
		
			
				|  |  | -        rows: 10,
 | 
	
		
			
				|  |  | -        pageTotal: 4
 | 
	
		
			
				|  |  | -      },
 | 
	
		
			
				|  |  | -      tableList: [] as any,
 | 
	
		
			
				|  |  | -      addWorkVisible: false,
 | 
	
		
			
				|  |  | -      activeRow: null as any,
 | 
	
		
			
				|  |  | -      detailVisiable: false
 | 
	
		
			
				|  |  | -    });
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    watch(
 | 
	
		
			
				|  |  | -      () => props.upgradeFlag,
 | 
	
		
			
				|  |  | -      () => {
 | 
	
		
			
				|  |  | -        state.upgradeFlag = props.upgradeFlag == 0 ? true : false;
 | 
	
		
			
				|  |  | -      }
 | 
	
		
			
				|  |  | -    );
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    const search = () => {
 | 
	
		
			
				|  |  | -      state.pagination.page = 1;
 | 
	
		
			
				|  |  | -      getList();
 | 
	
		
			
				|  |  | -      setCache({ current: state.searchForm, saveKey: 'classDetailAfterWork' });
 | 
	
		
			
				|  |  | -    };
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    const onReset = () => {
 | 
	
		
			
				|  |  | -      state.searchForm = {
 | 
	
		
			
				|  |  | -        status: '' as any,
 | 
	
		
			
				|  |  | -        timer: [
 | 
	
		
			
				|  |  | -          getNowDateAndMonday(new Date().getTime()),
 | 
	
		
			
				|  |  | -          getNowDateAndSunday(new Date().getTime())
 | 
	
		
			
				|  |  | -        ]
 | 
	
		
			
				|  |  | -      };
 | 
	
		
			
				|  |  | -      search();
 | 
	
		
			
				|  |  | -      setCache({ current: state.searchForm, saveKey: 'classDetailAfterWork' });
 | 
	
		
			
				|  |  | -    };
 | 
	
		
			
				|  |  | -    initCache({
 | 
	
		
			
				|  |  | -      current: state.searchForm,
 | 
	
		
			
				|  |  | -      saveKey: 'classDetailAfterWork',
 | 
	
		
			
				|  |  | -      callBack: (active: any) => {
 | 
	
		
			
				|  |  | -        state.searchForm = active;
 | 
	
		
			
				|  |  | -      }
 | 
	
		
			
				|  |  | -    });
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    const getList = async () => {
 | 
	
		
			
				|  |  | -      state.loading = true;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -      try {
 | 
	
		
			
				|  |  | -        const { timer, ...more } = state.searchForm;
 | 
	
		
			
				|  |  | -        const res = await getTrainingList({
 | 
	
		
			
				|  |  | -          classGroupId: route.query.id,
 | 
	
		
			
				|  |  | -          ...more,
 | 
	
		
			
				|  |  | -          ...state.pagination,
 | 
	
		
			
				|  |  | -          ...getTimes(timer, ['startTime', 'endTime'], 'YYYY-MM-DD')
 | 
	
		
			
				|  |  | -        });
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        state.tableList = res.data.rows;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        state.pagination.pageTotal = res.data.total;
 | 
	
		
			
				|  |  | -        state.loading = false;
 | 
	
		
			
				|  |  | -      } catch (e) {
 | 
	
		
			
				|  |  | -        state.loading = false;
 | 
	
		
			
				|  |  | -        console.log(e);
 | 
	
		
			
				|  |  | -      }
 | 
	
		
			
				|  |  | -    };
 | 
	
		
			
				|  |  | -    onMounted(() => {
 | 
	
		
			
				|  |  | -      getList();
 | 
	
		
			
				|  |  | -    });
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    const columns = () => {
 | 
	
		
			
				|  |  | -      return [
 | 
	
		
			
				|  |  | -        {
 | 
	
		
			
				|  |  | -          title: '布置老师',
 | 
	
		
			
				|  |  | -          key: 'teacherName'
 | 
	
		
			
				|  |  | -        },
 | 
	
		
			
				|  |  | -        {
 | 
	
		
			
				|  |  | -          title: '布置时间',
 | 
	
		
			
				|  |  | -          key: 'createTime',
 | 
	
		
			
				|  |  | -          render(row: any) {
 | 
	
		
			
				|  |  | -            return <>{row.createTime}</>;
 | 
	
		
			
				|  |  | -          }
 | 
	
		
			
				|  |  | -        },
 | 
	
		
			
				|  |  | -        {
 | 
	
		
			
				|  |  | -          title: '截止时间',
 | 
	
		
			
				|  |  | -          key: 'expireDate',
 | 
	
		
			
				|  |  | -          render(row: any) {
 | 
	
		
			
				|  |  | -            return <>{row.expireDate}</>;
 | 
	
		
			
				|  |  | -          }
 | 
	
		
			
				|  |  | -        },
 | 
	
		
			
				|  |  | -        {
 | 
	
		
			
				|  |  | -          title: '作业状态',
 | 
	
		
			
				|  |  | -          key: 'status',
 | 
	
		
			
				|  |  | -          render(row: any) {
 | 
	
		
			
				|  |  | -            return !row.status ? (
 | 
	
		
			
				|  |  | -              <div class={styles.indDot}>
 | 
	
		
			
				|  |  | -                <span></span> 进行中
 | 
	
		
			
				|  |  | -              </div>
 | 
	
		
			
				|  |  | -            ) : (
 | 
	
		
			
				|  |  | -              <div class={styles.endDot}>
 | 
	
		
			
				|  |  | -                <span></span>已结束
 | 
	
		
			
				|  |  | -              </div>
 | 
	
		
			
				|  |  | -            );
 | 
	
		
			
				|  |  | -          }
 | 
	
		
			
				|  |  | -        },
 | 
	
		
			
				|  |  | -        {
 | 
	
		
			
				|  |  | -          title: '布置人数',
 | 
	
		
			
				|  |  | -          key: 'expectNum'
 | 
	
		
			
				|  |  | -        },
 | 
	
		
			
				|  |  | -        {
 | 
	
		
			
				|  |  | -          title: '提交人数',
 | 
	
		
			
				|  |  | -          key: 'trainingNum'
 | 
	
		
			
				|  |  | -        },
 | 
	
		
			
				|  |  | -        {
 | 
	
		
			
				|  |  | -          title: '合格人数',
 | 
	
		
			
				|  |  | -          key: 'standardNum'
 | 
	
		
			
				|  |  | -        },
 | 
	
		
			
				|  |  | -        {
 | 
	
		
			
				|  |  | -          title: '提交率',
 | 
	
		
			
				|  |  | -          key: 'trainingRate',
 | 
	
		
			
				|  |  | -          render(row: any) {
 | 
	
		
			
				|  |  | -            return <>{row.trainingRate}%</>;
 | 
	
		
			
				|  |  | -          }
 | 
	
		
			
				|  |  | -        },
 | 
	
		
			
				|  |  | -        {
 | 
	
		
			
				|  |  | -          title: '合格率',
 | 
	
		
			
				|  |  | -          key: 'qualifiedRate',
 | 
	
		
			
				|  |  | -          render(row: any) {
 | 
	
		
			
				|  |  | -            return <>{row.qualifiedRate}%</>;
 | 
	
		
			
				|  |  | -          }
 | 
	
		
			
				|  |  | -        },
 | 
	
		
			
				|  |  | -        // {
 | 
	
		
			
				|  |  | -        //   title: '',
 | 
	
		
			
				|  |  | -        //   key: 'sex',
 | 
	
		
			
				|  |  | -        //   render(row: any) {
 | 
	
		
			
				|  |  | -        //     return <>{row.sex == '0' ? '女' : '男'}</>;
 | 
	
		
			
				|  |  | -        //   }
 | 
	
		
			
				|  |  | -        // },
 | 
	
		
			
				|  |  | -        {
 | 
	
		
			
				|  |  | -          title: '操作',
 | 
	
		
			
				|  |  | -          key: 'id',
 | 
	
		
			
				|  |  | -          render(row: any) {
 | 
	
		
			
				|  |  | -            return (
 | 
	
		
			
				|  |  | -              <NSpace>
 | 
	
		
			
				|  |  | -                <NButton
 | 
	
		
			
				|  |  | -                  text
 | 
	
		
			
				|  |  | -                  type="primary"
 | 
	
		
			
				|  |  | -                  onClick={() => gotoWorkDetail(row)}>
 | 
	
		
			
				|  |  | -                  详情
 | 
	
		
			
				|  |  | -                </NButton>
 | 
	
		
			
				|  |  | -                <NButton
 | 
	
		
			
				|  |  | -                  text
 | 
	
		
			
				|  |  | -                  type="primary"
 | 
	
		
			
				|  |  | -                  onClick={() => lookWorkDetail(row)}>
 | 
	
		
			
				|  |  | -                  作业详情
 | 
	
		
			
				|  |  | -                </NButton>
 | 
	
		
			
				|  |  | -              </NSpace>
 | 
	
		
			
				|  |  | -            );
 | 
	
		
			
				|  |  | -          }
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -      ];
 | 
	
		
			
				|  |  | -    };
 | 
	
		
			
				|  |  | -    const gotoWorkDetail = (row: any) => {
 | 
	
		
			
				|  |  | -      router.push({
 | 
	
		
			
				|  |  | -        path: '/afterWorkDetail',
 | 
	
		
			
				|  |  | -        query: {
 | 
	
		
			
				|  |  | -          ...route.query,
 | 
	
		
			
				|  |  | -          classGroupId: route.query.id,
 | 
	
		
			
				|  |  | -          teacherName: row.teacherName,
 | 
	
		
			
				|  |  | -          trainingId: row.id
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -      });
 | 
	
		
			
				|  |  | -    };
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    const lookWorkDetail = (row: any) => {
 | 
	
		
			
				|  |  | -      state.activeRow = row;
 | 
	
		
			
				|  |  | -      state.detailVisiable = true;
 | 
	
		
			
				|  |  | -    };
 | 
	
		
			
				|  |  | -    return () => (
 | 
	
		
			
				|  |  | -      <div>
 | 
	
		
			
				|  |  | -        <div class={styles.searchList}>
 | 
	
		
			
				|  |  | -          <NForm label-placement="left" inline>
 | 
	
		
			
				|  |  | -            <NFormItem>
 | 
	
		
			
				|  |  | -              <CDatePicker
 | 
	
		
			
				|  |  | -                v-model:value={state.searchForm.timer}
 | 
	
		
			
				|  |  | -                separator={'至'}
 | 
	
		
			
				|  |  | -                type="daterange"
 | 
	
		
			
				|  |  | -                timerValue={state.searchForm.timer}></CDatePicker>
 | 
	
		
			
				|  |  | -            </NFormItem>
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -            <NFormItem>
 | 
	
		
			
				|  |  | -              <CSelect
 | 
	
		
			
				|  |  | -                {...({
 | 
	
		
			
				|  |  | -                  options: [
 | 
	
		
			
				|  |  | -                    {
 | 
	
		
			
				|  |  | -                      label: '全部状态',
 | 
	
		
			
				|  |  | -                      value: ''
 | 
	
		
			
				|  |  | -                    },
 | 
	
		
			
				|  |  | -                    {
 | 
	
		
			
				|  |  | -                      label: '已结束',
 | 
	
		
			
				|  |  | -                      value: 1
 | 
	
		
			
				|  |  | -                    },
 | 
	
		
			
				|  |  | -                    {
 | 
	
		
			
				|  |  | -                      label: '进行中',
 | 
	
		
			
				|  |  | -                      value: 0
 | 
	
		
			
				|  |  | -                    }
 | 
	
		
			
				|  |  | -                  ],
 | 
	
		
			
				|  |  | -                  placeholder: '作业状态',
 | 
	
		
			
				|  |  | -                  clearable: true,
 | 
	
		
			
				|  |  | -                  inline: true
 | 
	
		
			
				|  |  | -                } as any)}
 | 
	
		
			
				|  |  | -                v-model:value={state.searchForm.status}></CSelect>
 | 
	
		
			
				|  |  | -            </NFormItem>
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -            <NFormItem>
 | 
	
		
			
				|  |  | -              <NSpace justify="end">
 | 
	
		
			
				|  |  | -                <NButton type="primary" class="searchBtn" onClick={search}>
 | 
	
		
			
				|  |  | -                  搜索
 | 
	
		
			
				|  |  | -                </NButton>
 | 
	
		
			
				|  |  | -                <NButton
 | 
	
		
			
				|  |  | -                  type="primary"
 | 
	
		
			
				|  |  | -                  ghost
 | 
	
		
			
				|  |  | -                  class="resetBtn"
 | 
	
		
			
				|  |  | -                  onClick={onReset}>
 | 
	
		
			
				|  |  | -                  重置
 | 
	
		
			
				|  |  | -                </NButton>
 | 
	
		
			
				|  |  | -              </NSpace>
 | 
	
		
			
				|  |  | -            </NFormItem>
 | 
	
		
			
				|  |  | -          </NForm>
 | 
	
		
			
				|  |  | -        </div>
 | 
	
		
			
				|  |  | -        {/* {!state.upgradeFlag && (
 | 
	
		
			
				|  |  | -          <NButton
 | 
	
		
			
				|  |  | -            class={styles.addBtn}
 | 
	
		
			
				|  |  | -            type="primary"
 | 
	
		
			
				|  |  | -            onClick={() => (state.addWorkVisible = true)}>
 | 
	
		
			
				|  |  | -            布置作业
 | 
	
		
			
				|  |  | -          </NButton>
 | 
	
		
			
				|  |  | -        )} */}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        <div class={styles.tableWrap}>
 | 
	
		
			
				|  |  | -          <NDataTable
 | 
	
		
			
				|  |  | -            v-slots={{
 | 
	
		
			
				|  |  | -              empty: () => <TheEmpty></TheEmpty>
 | 
	
		
			
				|  |  | -            }}
 | 
	
		
			
				|  |  | -            class={styles.classTable}
 | 
	
		
			
				|  |  | -            loading={state.loading}
 | 
	
		
			
				|  |  | -            columns={columns()}
 | 
	
		
			
				|  |  | -            data={state.tableList}></NDataTable>
 | 
	
		
			
				|  |  | -          <Pagination
 | 
	
		
			
				|  |  | -            v-model:page={state.pagination.page}
 | 
	
		
			
				|  |  | -            v-model:pageSize={state.pagination.rows}
 | 
	
		
			
				|  |  | -            v-model:pageTotal={state.pagination.pageTotal}
 | 
	
		
			
				|  |  | -            onList={getList}
 | 
	
		
			
				|  |  | -            sync
 | 
	
		
			
				|  |  | -          />
 | 
	
		
			
				|  |  | -        </div>
 | 
	
		
			
				|  |  | -        <NModal
 | 
	
		
			
				|  |  | -          v-model:show={state.addWorkVisible}
 | 
	
		
			
				|  |  | -          preset="card"
 | 
	
		
			
				|  |  | -          class={[styles.attendClassModal, styles.trainClassModal]}
 | 
	
		
			
				|  |  | -          title={'作业设置'}>
 | 
	
		
			
				|  |  | -          <TrainSettings
 | 
	
		
			
				|  |  | -            classGroupId={route.query.id as string}
 | 
	
		
			
				|  |  | -            onClose={() => {
 | 
	
		
			
				|  |  | -              getList();
 | 
	
		
			
				|  |  | -              state.addWorkVisible = false;
 | 
	
		
			
				|  |  | -            }}
 | 
	
		
			
				|  |  | -          />
 | 
	
		
			
				|  |  | -        </NModal>
 | 
	
		
			
				|  |  | -        <NModal
 | 
	
		
			
				|  |  | -          v-model:show={state.detailVisiable}
 | 
	
		
			
				|  |  | -          preset="card"
 | 
	
		
			
				|  |  | -          class={['modalTitle background', styles.wordDetailModel]}
 | 
	
		
			
				|  |  | -          title={'作业详情'}>
 | 
	
		
			
				|  |  | -          <ClassTrainingDetails
 | 
	
		
			
				|  |  | -            onClose={() => (state.detailVisiable = false)}
 | 
	
		
			
				|  |  | -            activeRow={state.activeRow}></ClassTrainingDetails>
 | 
	
		
			
				|  |  | -        </NModal>
 | 
	
		
			
				|  |  | -      </div>
 | 
	
		
			
				|  |  | -    );
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | -});
 | 
	
		
			
				|  |  | +import { defineComponent, onMounted, reactive, ref, watch } from 'vue';
 | 
	
		
			
				|  |  | +import styles from '../index.module.less';
 | 
	
		
			
				|  |  | +import {
 | 
	
		
			
				|  |  | +  NButton,
 | 
	
		
			
				|  |  | +  NDataTable,
 | 
	
		
			
				|  |  | +  NForm,
 | 
	
		
			
				|  |  | +  NFormItem,
 | 
	
		
			
				|  |  | +  NImage,
 | 
	
		
			
				|  |  | +  NModal,
 | 
	
		
			
				|  |  | +  NSelect,
 | 
	
		
			
				|  |  | +  NSpace
 | 
	
		
			
				|  |  | +} from 'naive-ui';
 | 
	
		
			
				|  |  | +import CSelect from '@/components/CSelect';
 | 
	
		
			
				|  |  | +import Pagination from '@/components/pagination';
 | 
	
		
			
				|  |  | +import { classGroupDetail, getTrainingList } from '../api';
 | 
	
		
			
				|  |  | +import add from './images/add.png';
 | 
	
		
			
				|  |  | +import { useRoute, useRouter } from 'vue-router';
 | 
	
		
			
				|  |  | +import CDatePicker from '/src/components/CDatePicker';
 | 
	
		
			
				|  |  | +import ClassTrainingDetails from '../modals/classTrainingDetails';
 | 
	
		
			
				|  |  | +import {
 | 
	
		
			
				|  |  | +  getNowDateAndMonday,
 | 
	
		
			
				|  |  | +  getNowDateAndSunday,
 | 
	
		
			
				|  |  | +  getTimes
 | 
	
		
			
				|  |  | +} from '@/utils/dateFormat';
 | 
	
		
			
				|  |  | +import TrainSettings from '../../attend-class/model/train-settings';
 | 
	
		
			
				|  |  | +import TheEmpty from '/src/components/TheEmpty';
 | 
	
		
			
				|  |  | +import { initCache, setCache } from '/src/hooks/use-async';
 | 
	
		
			
				|  |  | +import StudentTraomomhDetails from '../../studentList/modals/studentTraomomhDetails';
 | 
	
		
			
				|  |  | +export default defineComponent({
 | 
	
		
			
				|  |  | +  name: 'afterWork',
 | 
	
		
			
				|  |  | +  props: {
 | 
	
		
			
				|  |  | +    upgradeFlag: {
 | 
	
		
			
				|  |  | +      type: Number
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +  setup(props) {
 | 
	
		
			
				|  |  | +    const router = useRouter();
 | 
	
		
			
				|  |  | +    const route = useRoute();
 | 
	
		
			
				|  |  | +    const state = reactive({
 | 
	
		
			
				|  |  | +      upgradeFlag: props.upgradeFlag == 0 ? true : false, // 是否为历史班
 | 
	
		
			
				|  |  | +      searchForm: {
 | 
	
		
			
				|  |  | +        status: '' as any,
 | 
	
		
			
				|  |  | +        timer: [
 | 
	
		
			
				|  |  | +          getNowDateAndMonday(new Date().getTime()),
 | 
	
		
			
				|  |  | +          getNowDateAndSunday(new Date().getTime())
 | 
	
		
			
				|  |  | +        ] as any
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +      loading: false,
 | 
	
		
			
				|  |  | +      pagination: {
 | 
	
		
			
				|  |  | +        page: 1,
 | 
	
		
			
				|  |  | +        rows: 10,
 | 
	
		
			
				|  |  | +        pageTotal: 4
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +      tableList: [] as any,
 | 
	
		
			
				|  |  | +      addWorkVisible: false,
 | 
	
		
			
				|  |  | +      activeRow: null as any,
 | 
	
		
			
				|  |  | +      detailVisiable: false
 | 
	
		
			
				|  |  | +    });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    watch(
 | 
	
		
			
				|  |  | +      () => props.upgradeFlag,
 | 
	
		
			
				|  |  | +      () => {
 | 
	
		
			
				|  |  | +        state.upgradeFlag = props.upgradeFlag == 0 ? true : false;
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    );
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    const search = () => {
 | 
	
		
			
				|  |  | +      state.pagination.page = 1;
 | 
	
		
			
				|  |  | +      getList();
 | 
	
		
			
				|  |  | +      setCache({ current: state.searchForm, saveKey: 'classDetailAfterWork' });
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    const onReset = () => {
 | 
	
		
			
				|  |  | +      state.searchForm = {
 | 
	
		
			
				|  |  | +        status: '' as any,
 | 
	
		
			
				|  |  | +        timer: [
 | 
	
		
			
				|  |  | +          getNowDateAndMonday(new Date().getTime()),
 | 
	
		
			
				|  |  | +          getNowDateAndSunday(new Date().getTime())
 | 
	
		
			
				|  |  | +        ]
 | 
	
		
			
				|  |  | +      };
 | 
	
		
			
				|  |  | +      search();
 | 
	
		
			
				|  |  | +      setCache({ current: state.searchForm, saveKey: 'classDetailAfterWork' });
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  | +    initCache({
 | 
	
		
			
				|  |  | +      current: state.searchForm,
 | 
	
		
			
				|  |  | +      saveKey: 'classDetailAfterWork',
 | 
	
		
			
				|  |  | +      callBack: (active: any) => {
 | 
	
		
			
				|  |  | +        state.searchForm = active;
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    const getList = async () => {
 | 
	
		
			
				|  |  | +      state.loading = true;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      try {
 | 
	
		
			
				|  |  | +        const { timer, ...more } = state.searchForm;
 | 
	
		
			
				|  |  | +        const res = await getTrainingList({
 | 
	
		
			
				|  |  | +          classGroupId: route.query.id,
 | 
	
		
			
				|  |  | +          ...more,
 | 
	
		
			
				|  |  | +          ...state.pagination,
 | 
	
		
			
				|  |  | +          ...getTimes(timer, ['startTime', 'endTime'], 'YYYY-MM-DD')
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        state.tableList = res.data.rows;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        state.pagination.pageTotal = res.data.total;
 | 
	
		
			
				|  |  | +        state.loading = false;
 | 
	
		
			
				|  |  | +      } catch (e) {
 | 
	
		
			
				|  |  | +        state.loading = false;
 | 
	
		
			
				|  |  | +        console.log(e);
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  | +    onMounted(() => {
 | 
	
		
			
				|  |  | +      getList();
 | 
	
		
			
				|  |  | +    });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    const columns = () => {
 | 
	
		
			
				|  |  | +      return [
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +          title: '布置老师',
 | 
	
		
			
				|  |  | +          key: 'teacherName'
 | 
	
		
			
				|  |  | +        },
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +          title: '布置时间',
 | 
	
		
			
				|  |  | +          key: 'createTime',
 | 
	
		
			
				|  |  | +          render(row: any) {
 | 
	
		
			
				|  |  | +            return <>{row.createTime}</>;
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +        },
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +          title: '截止时间',
 | 
	
		
			
				|  |  | +          key: 'expireDate',
 | 
	
		
			
				|  |  | +          render(row: any) {
 | 
	
		
			
				|  |  | +            return <>{row.expireDate}</>;
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +        },
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +          title: '作业状态',
 | 
	
		
			
				|  |  | +          key: 'status',
 | 
	
		
			
				|  |  | +          render(row: any) {
 | 
	
		
			
				|  |  | +            return !row.status ? (
 | 
	
		
			
				|  |  | +              <div class={styles.indDot}>
 | 
	
		
			
				|  |  | +                <span></span> 进行中
 | 
	
		
			
				|  |  | +              </div>
 | 
	
		
			
				|  |  | +            ) : (
 | 
	
		
			
				|  |  | +              <div class={styles.endDot}>
 | 
	
		
			
				|  |  | +                <span></span>已结束
 | 
	
		
			
				|  |  | +              </div>
 | 
	
		
			
				|  |  | +            );
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +        },
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +          title: '布置人数',
 | 
	
		
			
				|  |  | +          key: 'expectNum'
 | 
	
		
			
				|  |  | +        },
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +          title: '提交人数',
 | 
	
		
			
				|  |  | +          key: 'trainingNum'
 | 
	
		
			
				|  |  | +        },
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +          title: '合格人数',
 | 
	
		
			
				|  |  | +          key: 'standardNum'
 | 
	
		
			
				|  |  | +        },
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +          title: '提交率',
 | 
	
		
			
				|  |  | +          key: 'trainingRate',
 | 
	
		
			
				|  |  | +          render(row: any) {
 | 
	
		
			
				|  |  | +            return <>{row.trainingRate}%</>;
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +        },
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +          title: '合格率',
 | 
	
		
			
				|  |  | +          key: 'qualifiedRate',
 | 
	
		
			
				|  |  | +          render(row: any) {
 | 
	
		
			
				|  |  | +            return <>{row.qualifiedRate}%</>;
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +        },
 | 
	
		
			
				|  |  | +        // {
 | 
	
		
			
				|  |  | +        //   title: '',
 | 
	
		
			
				|  |  | +        //   key: 'sex',
 | 
	
		
			
				|  |  | +        //   render(row: any) {
 | 
	
		
			
				|  |  | +        //     return <>{row.sex == '0' ? '女' : '男'}</>;
 | 
	
		
			
				|  |  | +        //   }
 | 
	
		
			
				|  |  | +        // },
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +          title: '操作',
 | 
	
		
			
				|  |  | +          key: 'id',
 | 
	
		
			
				|  |  | +          render(row: any) {
 | 
	
		
			
				|  |  | +            return (
 | 
	
		
			
				|  |  | +              <NSpace>
 | 
	
		
			
				|  |  | +                <NButton
 | 
	
		
			
				|  |  | +                  text
 | 
	
		
			
				|  |  | +                  type="primary"
 | 
	
		
			
				|  |  | +                  onClick={() => gotoWorkDetail(row)}>
 | 
	
		
			
				|  |  | +                  详情
 | 
	
		
			
				|  |  | +                </NButton>
 | 
	
		
			
				|  |  | +                {/* <NButton
 | 
	
		
			
				|  |  | +                  text
 | 
	
		
			
				|  |  | +                  type="primary"
 | 
	
		
			
				|  |  | +                  onClick={() => lookWorkDetail(row)}>
 | 
	
		
			
				|  |  | +                  作业详情
 | 
	
		
			
				|  |  | +                </NButton> */}
 | 
	
		
			
				|  |  | +              </NSpace>
 | 
	
		
			
				|  |  | +            );
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      ];
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  | +    const gotoWorkDetail = (row: any) => {
 | 
	
		
			
				|  |  | +      router.push({
 | 
	
		
			
				|  |  | +        path: '/afterWorkDetail',
 | 
	
		
			
				|  |  | +        query: {
 | 
	
		
			
				|  |  | +          ...route.query,
 | 
	
		
			
				|  |  | +          classGroupId: route.query.id,
 | 
	
		
			
				|  |  | +          teacherName: row.teacherName,
 | 
	
		
			
				|  |  | +          trainingId: row.id
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      });
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    const lookWorkDetail = (row: any) => {
 | 
	
		
			
				|  |  | +      state.activeRow = row;
 | 
	
		
			
				|  |  | +      state.detailVisiable = true;
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  | +    return () => (
 | 
	
		
			
				|  |  | +      <div>
 | 
	
		
			
				|  |  | +        <div class={styles.searchList}>
 | 
	
		
			
				|  |  | +          <NForm label-placement="left" inline>
 | 
	
		
			
				|  |  | +            <NFormItem>
 | 
	
		
			
				|  |  | +              <CDatePicker
 | 
	
		
			
				|  |  | +                v-model:value={state.searchForm.timer}
 | 
	
		
			
				|  |  | +                separator={'至'}
 | 
	
		
			
				|  |  | +                type="daterange"
 | 
	
		
			
				|  |  | +                timerValue={state.searchForm.timer}></CDatePicker>
 | 
	
		
			
				|  |  | +            </NFormItem>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            <NFormItem>
 | 
	
		
			
				|  |  | +              <CSelect
 | 
	
		
			
				|  |  | +                {...({
 | 
	
		
			
				|  |  | +                  options: [
 | 
	
		
			
				|  |  | +                    {
 | 
	
		
			
				|  |  | +                      label: '全部状态',
 | 
	
		
			
				|  |  | +                      value: ''
 | 
	
		
			
				|  |  | +                    },
 | 
	
		
			
				|  |  | +                    {
 | 
	
		
			
				|  |  | +                      label: '已结束',
 | 
	
		
			
				|  |  | +                      value: 1
 | 
	
		
			
				|  |  | +                    },
 | 
	
		
			
				|  |  | +                    {
 | 
	
		
			
				|  |  | +                      label: '进行中',
 | 
	
		
			
				|  |  | +                      value: 0
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                  ],
 | 
	
		
			
				|  |  | +                  placeholder: '作业状态',
 | 
	
		
			
				|  |  | +                  clearable: true,
 | 
	
		
			
				|  |  | +                  inline: true
 | 
	
		
			
				|  |  | +                } as any)}
 | 
	
		
			
				|  |  | +                v-model:value={state.searchForm.status}></CSelect>
 | 
	
		
			
				|  |  | +            </NFormItem>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            <NFormItem>
 | 
	
		
			
				|  |  | +              <NSpace justify="end">
 | 
	
		
			
				|  |  | +                <NButton type="primary" class="searchBtn" onClick={search}>
 | 
	
		
			
				|  |  | +                  搜索
 | 
	
		
			
				|  |  | +                </NButton>
 | 
	
		
			
				|  |  | +                <NButton
 | 
	
		
			
				|  |  | +                  type="primary"
 | 
	
		
			
				|  |  | +                  ghost
 | 
	
		
			
				|  |  | +                  class="resetBtn"
 | 
	
		
			
				|  |  | +                  onClick={onReset}>
 | 
	
		
			
				|  |  | +                  重置
 | 
	
		
			
				|  |  | +                </NButton>
 | 
	
		
			
				|  |  | +              </NSpace>
 | 
	
		
			
				|  |  | +            </NFormItem>
 | 
	
		
			
				|  |  | +          </NForm>
 | 
	
		
			
				|  |  | +        </div>
 | 
	
		
			
				|  |  | +        {/* {!state.upgradeFlag && (
 | 
	
		
			
				|  |  | +          <NButton
 | 
	
		
			
				|  |  | +            class={styles.addBtn}
 | 
	
		
			
				|  |  | +            type="primary"
 | 
	
		
			
				|  |  | +            onClick={() => (state.addWorkVisible = true)}>
 | 
	
		
			
				|  |  | +            布置作业
 | 
	
		
			
				|  |  | +          </NButton>
 | 
	
		
			
				|  |  | +        )} */}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        <div class={styles.tableWrap}>
 | 
	
		
			
				|  |  | +          <NDataTable
 | 
	
		
			
				|  |  | +            v-slots={{
 | 
	
		
			
				|  |  | +              empty: () => <TheEmpty></TheEmpty>
 | 
	
		
			
				|  |  | +            }}
 | 
	
		
			
				|  |  | +            class={styles.classTable}
 | 
	
		
			
				|  |  | +            loading={state.loading}
 | 
	
		
			
				|  |  | +            columns={columns()}
 | 
	
		
			
				|  |  | +            data={state.tableList}></NDataTable>
 | 
	
		
			
				|  |  | +          <Pagination
 | 
	
		
			
				|  |  | +            v-model:page={state.pagination.page}
 | 
	
		
			
				|  |  | +            v-model:pageSize={state.pagination.rows}
 | 
	
		
			
				|  |  | +            v-model:pageTotal={state.pagination.pageTotal}
 | 
	
		
			
				|  |  | +            onList={getList}
 | 
	
		
			
				|  |  | +            sync
 | 
	
		
			
				|  |  | +          />
 | 
	
		
			
				|  |  | +        </div>
 | 
	
		
			
				|  |  | +        <NModal
 | 
	
		
			
				|  |  | +          v-model:show={state.addWorkVisible}
 | 
	
		
			
				|  |  | +          preset="card"
 | 
	
		
			
				|  |  | +          class={[styles.attendClassModal, styles.trainClassModal]}
 | 
	
		
			
				|  |  | +          title={'作业设置'}>
 | 
	
		
			
				|  |  | +          <TrainSettings
 | 
	
		
			
				|  |  | +            classGroupId={route.query.id as string}
 | 
	
		
			
				|  |  | +            onClose={() => {
 | 
	
		
			
				|  |  | +              getList();
 | 
	
		
			
				|  |  | +              state.addWorkVisible = false;
 | 
	
		
			
				|  |  | +            }}
 | 
	
		
			
				|  |  | +          />
 | 
	
		
			
				|  |  | +        </NModal>
 | 
	
		
			
				|  |  | +        <NModal
 | 
	
		
			
				|  |  | +          v-model:show={state.detailVisiable}
 | 
	
		
			
				|  |  | +          preset="card"
 | 
	
		
			
				|  |  | +          class={['modalTitle background', styles.wordDetailModel]}
 | 
	
		
			
				|  |  | +          title={'作业详情'}>
 | 
	
		
			
				|  |  | +          <ClassTrainingDetails
 | 
	
		
			
				|  |  | +            onClose={() => (state.detailVisiable = false)}
 | 
	
		
			
				|  |  | +            activeRow={state.activeRow}></ClassTrainingDetails>
 | 
	
		
			
				|  |  | +        </NModal>
 | 
	
		
			
				|  |  | +      </div>
 | 
	
		
			
				|  |  | +    );
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +});
 |