|
@@ -0,0 +1,108 @@
|
|
|
+import useOptions from '@/hooks/useOptions'
|
|
|
+import { omit } from 'lodash-es'
|
|
|
+import useForm from '@/hooks/useForm'
|
|
|
+
|
|
|
+import { reactive, computed, watch } from 'vue'
|
|
|
+const useCompareFilter = () => {
|
|
|
+ const { subjectList, mainQuestionList, groupListWithAll, changeModelValue, dataModel, onOptionInit } = useOptions([
|
|
|
+ 'subject',
|
|
|
+ 'question',
|
|
|
+ 'group',
|
|
|
+ ])
|
|
|
+ const model = reactive({
|
|
|
+ subjectCode: dataModel.subject || '',
|
|
|
+ questionMainNumber: dataModel.question,
|
|
|
+ markingGroupNumbers: dataModel.group,
|
|
|
+ time: [],
|
|
|
+ })
|
|
|
+ const fetchModel = computed(() => {
|
|
|
+ return Object.assign(omit(model, 'time'), {
|
|
|
+ startTime: model.time?.[0],
|
|
|
+ endTime: model.time?.[1],
|
|
|
+ markingGroupNumbers:
|
|
|
+ typeof model.markingGroupNumbers === 'number' ? [model.markingGroupNumbers] : model.markingGroupNumbers,
|
|
|
+ })
|
|
|
+ })
|
|
|
+ const { formRef, elFormRef, defineColumn, _ } = useForm()
|
|
|
+ watch(dataModel, () => {
|
|
|
+ model.subjectCode = dataModel.subject || ''
|
|
|
+ model.questionMainNumber = dataModel.question
|
|
|
+ model.markingGroupNumbers = dataModel.group
|
|
|
+ })
|
|
|
+
|
|
|
+ const rows = reactive({
|
|
|
+ 'row-1': {},
|
|
|
+ })
|
|
|
+ const OneRowSpan4 = defineColumn(_, 'row-1', { span: 4 })
|
|
|
+ const OneRowSpan3 = defineColumn(_, 'row-1', { span: 3 })
|
|
|
+ const OneRowSpan2 = defineColumn(_, 'row-1', { span: 2 })
|
|
|
+
|
|
|
+ const items = computed(() => [
|
|
|
+ OneRowSpan4({
|
|
|
+ labelWidth: '52px',
|
|
|
+ label: '科目',
|
|
|
+ prop: 'subjectCode',
|
|
|
+ slotType: 'select',
|
|
|
+ slot: {
|
|
|
+ options: subjectList.value,
|
|
|
+ onChange: changeModelValue('subject'),
|
|
|
+ disabled: true,
|
|
|
+ },
|
|
|
+ }),
|
|
|
+ OneRowSpan4({
|
|
|
+ prop: 'questionMainNumber',
|
|
|
+ label: '大题',
|
|
|
+ slotType: 'select',
|
|
|
+ slot: {
|
|
|
+ options: mainQuestionList.value,
|
|
|
+ onChange: changeModelValue('question'),
|
|
|
+ disabled: true,
|
|
|
+ },
|
|
|
+ }),
|
|
|
+ OneRowSpan4({
|
|
|
+ prop: 'markingGroupNumbers',
|
|
|
+ label: '小组',
|
|
|
+ slotType: 'select',
|
|
|
+ slot: {
|
|
|
+ options: groupListWithAll.value,
|
|
|
+ onChange: changeModelValue('group'),
|
|
|
+ },
|
|
|
+ }),
|
|
|
+
|
|
|
+ OneRowSpan4({
|
|
|
+ labelWidth: '52px',
|
|
|
+ label: '时间',
|
|
|
+ slotType: 'dateTime',
|
|
|
+ prop: 'time',
|
|
|
+ slot: {
|
|
|
+ type: 'datetimerange',
|
|
|
+ valueFormat: 'YYYYMMDDHHmmss',
|
|
|
+ startPlaceholder: '开始时间',
|
|
|
+ endPlaceholder: '结束时间',
|
|
|
+ },
|
|
|
+ }),
|
|
|
+ OneRowSpan3({
|
|
|
+ prop: 'expand',
|
|
|
+ label: '',
|
|
|
+ slotType: 'checkbox',
|
|
|
+ slot: {
|
|
|
+ options: [{ label: '历史对比' }],
|
|
|
+ },
|
|
|
+ }),
|
|
|
+ OneRowSpan3({
|
|
|
+ labelWidth: '20px',
|
|
|
+ slotName: 'button-group',
|
|
|
+ }),
|
|
|
+ ])
|
|
|
+
|
|
|
+ return {
|
|
|
+ formRef,
|
|
|
+ elFormRef,
|
|
|
+ model,
|
|
|
+ fetchModel,
|
|
|
+ items,
|
|
|
+ rows,
|
|
|
+ onOptionInit,
|
|
|
+ }
|
|
|
+}
|
|
|
+export default useCompareFilter
|