Quellcode durchsuchen

feat: 统一时间格式显示并添加知识点选择功能

- 在多个视图组件中引入dayjs并统一时间格式为'YYYY-MM-DD HH:mm:ss'
- 在添加课时组件中新增知识点多选功能
- 修复部分表单字段验证和重置逻辑
tanshanming vor 6 Monaten
Ursprung
Commit
c1b7f709c4

+ 9 - 1
src/views/course/major/index.vue

@@ -38,6 +38,7 @@
 <script setup name="major">
 	import Form from './form.vue'
 	import majorApi from '@/api/course/majorApi'
+	import dayjs from 'dayjs'
 	const table = ref()
 	const formRef = ref()
 	const toolConfig = { refresh: true, height: true, columnSetting: true, striped: false }
@@ -52,7 +53,14 @@
 		},
 		{
 			title: '学院',
-			dataIndex: 'collegeId'
+			dataIndex: 'majorName'
+		},
+		{
+			title: '创建时间',
+			dataIndex: 'createTime',
+			customRender: ({ text }) => {
+				return dayjs(text).format('YYYY-MM-DD HH:mm:ss')
+			}
 		},
 		{
 			title: '操作',

+ 20 - 3
src/views/courseAdd/components/courseProduction/addClassHours.vue

@@ -3,7 +3,16 @@
 		<a-form-item label="课时名称:" name="title" required>
 			<a-input v-model:value="form.title" placeholder="输入内容"/>
 		</a-form-item>
-		<a-form-item label="选择视频:" required name="video">
+		<a-form-item label="知识点" name="knowledgeIds">
+			<a-select   mode="multiple" v-model:value="form.knowledgeIds" placeholder="请选择知识点"
+						style="width: 220px; ">
+				<a-select-option v-for="(item, index) in knowledgeOptions" :key="index" :value="item.value">{{
+						item.label
+					}}
+				</a-select-option>
+			</a-select>
+		</a-form-item>
+		<a-form-item label="选择资源:" required name="video">
 			<div class="video-select-row">
 				<a-button type="primary" @click="()=>{emit('handlerSelect')}">选择资源</a-button>
 				<a-button type="primary" @click="()=>{emit('handlerUpSelect')}">新上传资源</a-button>
@@ -36,12 +45,13 @@ import UpLoadDoc from '@/components/UpLoadDoc/index.vue'
 import UpLoadSrt from '@/components/UpLoadSrt/index.vue'
 import FileName from './fileName.vue'
 import {add, detail} from '@/api/hour/index'
+import tool from "@/utils/tool";
 
 const props = defineProps({
 	visible: Boolean
 })
 const emit = defineEmits(['update:visible', 'ok', 'handlerUpSelect', 'handlerNewSelect','handlerEx','handlerExs'])
-
+const knowledgeOptions = tool.dictList('knowledge')
 const fileNameRef = ref(null)
 const upLoadImgRef = ref(null)
 const upLoadDocRef = ref(null)
@@ -57,7 +67,8 @@ const form = reactive({
 	video: '',
 	coverUrl: '',
 	docUrl: '',
-	srtUrl: ''
+	srtUrl: '',
+	knowledgeIds : []
 })
 
 const rules = {
@@ -66,6 +77,7 @@ const rules = {
 	coverUrl: [{required: true, message: '请上传封面'}],
 	docUrl: [{required: true, message: '请上传讲义'}],
 	srtUrl: [{required: true, message: '请上传字幕'}],
+	knowledgeIds: [{required: true, message: '请选择知识点', trigger: 'blur'}],
 }
 
 
@@ -96,6 +108,7 @@ const getData = (callBack) => {
 		let data = {}
 
 		data.name = form.title
+		data.knowledgeIds = form.knowledgeIds
 		data.courseRelates = []
 		//todo :0封面 1视频资源,2讲义,3字幕,4作业,5测验
 		data.courseRelates.push({funcType: 0, relateId: form.coverUrl})
@@ -143,6 +156,7 @@ const reset = () => {
 		form.coverUrl = ''
 		form.docUrl = ''
 		form.srtUrl = ''
+		form.courseRelates = []
 
 		upLoadImgRef.value.setData({id: "", url: ""})
 		fileNameRef.value.setData({id: "", name: ""})
@@ -169,6 +183,9 @@ const edit = (item) => {
 			if (res.code == 200) {
 				let data = res.data
 				form.title = data.name
+				form.knowledgeIds = data.knowledgeIds
+
+
 				for (let i = 0; i < data.courseRelates.length; i++) {
 					let itemi = data.courseRelates[i]
 					console.log('每条数据', itemi)

+ 5 - 1
src/views/dev/log/oplog/index.vue

@@ -67,6 +67,7 @@
 	import columnChart from './columnChart.vue'
 	import pieChart from './pieChart.vue'
 	import detail from './detail.vue'
+	import dayjs from 'dayjs'
 	let searchFormState = reactive({})
 	const formRef = ref()
 	const table = ref()
@@ -106,7 +107,10 @@
 		{
 			title: '操作时间',
 			dataIndex: 'opTime',
-			sorter: true
+			sorter: true,
+			customRender: ({ text }) => {
+				return dayjs(text).format('YYYY-MM-DD HH:mm:ss')
+			}
 		},
 		{
 			title: '用户',

+ 5 - 1
src/views/dev/log/vislog/index.vue

@@ -57,6 +57,7 @@
 	import lineChart from './lineChart.vue'
 	import pieChart from './pieChart.vue'
 	import detail from './detail.vue'
+	import dayjs from 'dayjs'
 	let searchFormState = reactive({})
 	const formRef = ref()
 	const table = ref()
@@ -99,7 +100,10 @@
 		{
 			title: '时间',
 			dataIndex: 'opTime',
-			sorter: true
+			sorter: true,
+			customRender: ({ text }) => {
+				return dayjs(text).format('YYYY-MM-DD HH:mm:ss')
+			}
 		},
 		{
 			title: '用户',

+ 8 - 1
src/views/index/components/opLog.vue

@@ -4,7 +4,7 @@
 		<div class="timeline-div">
 			<a-timeline>
 				<a-timeline-item :key="opLog.id" v-for="opLog in opLogList" :color="getTimelineColor(opLog.exeStatus)"
-					>{{ opLog.opTime }} {{ opLog.name }}
+					>{{ formatTime(opLog.opTime) }} {{ opLog.name }}
 				</a-timeline-item>
 			</a-timeline>
 		</div>
@@ -18,6 +18,7 @@
 	import tool from '@/utils/tool'
 	const userInfo = tool.data.get('USER_INFO')
 	const opLogList = ref([])
+	import dayjs from 'dayjs'
 	onMounted(() => {
 		// 进来后执行查询
 		seleOpLogList()
@@ -45,6 +46,12 @@
 			return 'red'
 		}
 	}
+	// 格式化时间
+	const formatTime = (time) => {
+		if (time) {
+			return dayjs(time).format('YYYY-MM-DD HH:mm:ss')
+		}
+	}
 </script>
 <style scoped>
 	.ant-timeline-item {

+ 8 - 1
src/views/index/components/visLog.vue

@@ -4,7 +4,7 @@
 		<div class="timeline-div">
 			<a-timeline>
 				<a-timeline-item :key="visLog.id" v-for="visLog in visLogList" :color="getTimelineColor(visLog.category)"
-					>{{ visLog.opTime }} {{ visLog.name }}
+					>{{ formatTime(visLog.opTime) }} {{ visLog.name }}
 					<p class="timeline-item-p">{{ visLog.opIp }} {{ visLog.opAddress }}</p>
 				</a-timeline-item>
 			</a-timeline>
@@ -19,6 +19,7 @@
 	import tool from '@/utils/tool'
 	const userInfo = tool.data.get('USER_INFO')
 	const visLogList = ref([])
+	import dayjs from 'dayjs'
 	onMounted(() => {
 		// 进来后执行查询
 		seleVisLogList()
@@ -48,6 +49,12 @@
 			return 'gray'
 		}
 	}
+	// 格式化时间
+	const formatTime = (time) => {
+		if (time) {
+			return dayjs(time).format('YYYY-MM-DD HH:mm:ss')
+		}
+	}
 </script>
 <style scoped>
 	.ant-timeline-item {

+ 8 - 2
src/views/sys/user/userTab/userMessage.vue

@@ -9,7 +9,14 @@
 		</a-col>
 		<a-col :span="20">
 			<div style="margin-top: -16px">
-				<s-table ref="table" :columns="columns" :data="loadData" bordered :row-key="(record) => record.id">
+				<s-table
+					ref="table"
+					:columns="columns"
+					:data="loadData"
+					bordered
+					:row-key="(record) => record.id"
+					scroll="{ x: auto }"
+				>
 					<template #bodyCell="{ column, record }">
 						<template v-if="column.dataIndex === 'subject'">
 							<ellipsis :length="40" tooltip>
@@ -52,7 +59,6 @@
 		{
 			title: '发送时间',
 			dataIndex: 'createTime',
-			sorter: true,
 			customRender: ({ text }) => {
 				return dayjs(text).format('YYYY-MM-DD HH:mm:ss')
 			}