diff --git a/src/api/base/kccyApi.ts b/src/api/base/kccyApi.ts new file mode 100644 index 0000000..3f9d186 --- /dev/null +++ b/src/api/base/kccyApi.ts @@ -0,0 +1,57 @@ +import { get, post } from "@/utils/request"; + +/** + * 分页查询课程成员 + */ +export function kccyFindPageApi(params: any) { + return get('/api/kccy/findPage', params); +} + +/** + * 根据ID查询课程成员详情 + */ +export function kccyFindByIdApi(params: any) { + return get('/api/kccy/findById', params); +} + +/** + * 新增/修改课程成员 + */ +export function kccySaveApi(params: any) { + return post('/api/kccy/save', params); +} + +/** + * 逻辑删除课程成员 + */ +export function kccyLogicDeleteApi(params: any) { + return post('/api/kccy/logicDelete', params); +} + +/** + * 根据课程建班ID查询成员列表 + */ +export function kccyFindByKcjbIdApi(params: any) { + return get('/api/kccy/findByKcjbId', params); +} + +/** + * 导出字段选择 + */ +export function kccyExportFieldChooseApi(params: any) { + return get('/api/kccy/exportFieldChoose', params); +} + +/** + * 导出课程成员数据 + */ +export function kccyExportFileApi(params: any) { + return post('/api/kccy/export', params); +} + +/** + * 导入课程成员数据 + */ +export function kccyImportDataApi(params: any) { + return post('/api/kccy/importData', params); +} \ No newline at end of file diff --git a/src/api/base/kcjbApi.ts b/src/api/base/kcjbApi.ts new file mode 100644 index 0000000..3092adf --- /dev/null +++ b/src/api/base/kcjbApi.ts @@ -0,0 +1,29 @@ +import { get, post } from "@/utils/request"; + +/** + * 获取课程建班列表 + */ +export function kcjbFindPageApi(params: any) { + return get('/api/kcjb/findPage', params); +} + +/** + * 获取课程建班详情 + */ +export function kcjbFindByIdApi(params: any) { + return get('/api/kcjb/findById', params); +} + +/** + * 报名课程 + */ +export function kcjbRegisterApi(params: any) { + return post('/api/kcjb/register', params); +} + +/** + * 获取轮播图数据 + */ +export function kcjbBannerApi() { + return get('/api/kcjb/banner'); +} diff --git a/src/api/base/rwApi.ts b/src/api/base/rwApi.ts new file mode 100644 index 0000000..3367e96 --- /dev/null +++ b/src/api/base/rwApi.ts @@ -0,0 +1,79 @@ +import { get, post } from "@/utils/request"; + +/** + * 分页查询 + */ +export function rwFindPageApi(params: any) { + return get('/api/rw/findPage', params); +} + +export function rwFindPageSummaryApi(params: any) { + return get('/api/rw/findPageSummary', params); +} + +export function rwCompletionSummaryApi() { + return get('/api/rw/completionSummary'); +} + +/** + * 新增/修改 + */ +export function rwSaveApi(params: any) { + return post('/api/rw/save', params); +} + +/** + * 删除 + */ +export function rwLogicDeleteApi(params: any) { + return post('/api/rw/logicDelete', params); +} + +/** + * 根据id查询 + */ +export function rwFindByIdApi(params: any) { + return get('/api/rw/findById', params); +} + +/** + * 查询全部 + */ +export function rwFindAllApi() { + return get('/api/rw/findAll'); +} + +/** + * 导出字段选择 + */ +export function rwExportFieldChooseApi(params: any) { + return get('/api/rw/exportFieldChoose', params); +} + +/** + * 导出 + */ +export function rwExportFileApi(params: any) { + return post('/api/rw/export', params); +} + +/** + * 导入 + */ +export function rwImportDataApi(params: any) { + return post('/api/rw/importData', params); +} + +/** + * 强删除活动 + */ +export function rwDelApi(params: any) { + return post('/api/rw/delete', params); +} + +/** + * 推送教师 + */ +export function rwPushJsApi(params: any) { + return post('/api/rw/pushJs', params); +} \ No newline at end of file diff --git a/src/api/base/rwzxApi.ts b/src/api/base/rwzxApi.ts new file mode 100644 index 0000000..1bb4cc1 --- /dev/null +++ b/src/api/base/rwzxApi.ts @@ -0,0 +1,113 @@ +import { get, post } from "@/utils/request"; + +/** + * 分页查询任务执行 + */ +export function rwzxFindPageApi(params: any) { + return get('/api/rwzx/findPage', params); +} + +/** + * 根据任务ID查询执行情况 + */ +export function rwzxFindByRwIdApi(params: any) { + return get('/api/rwzx/findByRwId', params); +} + +/** + * 根据任务ID查询已执行信息 + */ +export function executedInfoByRwIdApi(params: any) { + return get('/api/rwzx/executedInfoByRwId', params); +} + +/** + * 根据任务ID查询未执行教师信息 + */ +export function noxecuteJsbyRwIdApi(params: any) { + return get('/api/rwzx/noxecuteJsbyRwId', params); +} + +/** + * 新增/修改任务执行 + */ +export function rwzxSaveApi(params: any) { + return post('/api/rwzx/save', params); +} + +/** + * 删除任务执行 + */ +export function rwzxLogicDeleteApi(params: any) { + return post('/api/rwzx/logicDelete', params); +} + +/** + * 根据id查询任务执行 + */ +export function rwzxFindByIdApi(params: any) { + return get('/api/rwzx/findById', params); +} + +/** + * 查询全部任务执行 + */ +export function rwzxFindAllApi() { + return get('/api/rwzx/findAll'); +} + +/** + * 任务执行统计 + */ +export function rwzxCompletionSummaryApi(params: any) { + return get('/api/rwzx/completionSummary', params); +} + +/** + * 导出字段选择 + */ +export function rwzxExportFieldChooseApi(params: any) { + return get('/api/rwzx/exportFieldChoose', params); +} + +/** + * 导出任务执行数据 + */ +export function rwzxExportFileApi(params: any) { + return post('/api/rwzx/export', params); +} + +/** + * 导入任务执行数据 + */ +export function rwzxImportDataApi(params: any) { + return post('/api/rwzx/importData', params); +} + +/** + * 强删除任务执行记录 + */ +export function rwzxDelApi(params: any) { + return post('/api/rwzx/delete', params); +} + +/** + * 查询任务未执行教师 + */ +export function rwzxNoxecuteJsbyRwIdApi(params: any) { + return get('/api/rwzx/noxecuteJsbyRwId', params); +} + +/** + * 查询任务已执行信息 + */ +export function rwzxExecutedInfoByRwIdApi(params: any) { + return get('/api/rwzx/executedInfoByRwId', params); +} + +/** + * 批量创建任务执行记录 + */ +export function rwzxBatchCreateApi(params: any) { + return post('/api/rwzx/batchCreate', params); +} \ No newline at end of file diff --git a/src/components/BasicJsPicker/Picker.vue b/src/components/BasicJsPicker/Picker.vue index 89933c2..08177e7 100644 --- a/src/components/BasicJsPicker/Picker.vue +++ b/src/components/BasicJsPicker/Picker.vue @@ -13,7 +13,7 @@ - + 取消 diff --git a/src/components/ImageVideoUpload/ImageVideoUpload.vue b/src/components/ImageVideoUpload/ImageVideoUpload.vue index b1553ce..03657bd 100644 --- a/src/components/ImageVideoUpload/ImageVideoUpload.vue +++ b/src/components/ImageVideoUpload/ImageVideoUpload.vue @@ -87,11 +87,56 @@ + + + + + 文件 + ({{ fileList.length }}/{{ maxFileCount }}) + + + + + + + + + + {{ file.name }} + {{ formatFileSize(file.size) }} + {{ file.extension?.toUpperCase() || 'FILE' }} + + + + + + + + + + + + 添加文件 + + + @@ -842,4 +1093,84 @@ defineExpose({ color: #999; margin-top: 8rpx; } + +/* 文件相关样式 */ +.file-list { + display: flex; + flex-direction: column; + gap: 12rpx; +} + +.file-item { + display: flex; + align-items: center; + background: #f8f9fa; + border-radius: 8rpx; + padding: 16rpx; + border: 1rpx solid #e9ecef; + position: relative; +} + +.file-preview { + display: flex; + align-items: center; + flex: 1; + cursor: pointer; +} + +.file-icon { + width: 60rpx; + height: 60rpx; + background: white; + border-radius: 8rpx; + display: flex; + align-items: center; + justify-content: center; + margin-right: 16rpx; + border: 1rpx solid #dee2e6; +} + +.file-info { + flex: 1; + min-width: 0; +} + +.file-name { + font-size: 28rpx; + color: #333; + display: block; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + margin-bottom: 4rpx; +} + +.file-size { + font-size: 24rpx; + color: #999; + display: block; + margin-bottom: 2rpx; +} + +.file-type { + font-size: 20rpx; + color: #666; + display: block; +} + +.file-actions { + position: absolute; + top: 8rpx; + right: 8rpx; +} + +.file-actions .delete-btn { + width: 32rpx; + height: 32rpx; + background: rgba(255, 59, 48, 0.8); + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; +} diff --git a/src/components/ImageVideoUpload/types.ts b/src/components/ImageVideoUpload/types.ts index 44cf045..0096844 100644 --- a/src/components/ImageVideoUpload/types.ts +++ b/src/components/ImageVideoUpload/types.ts @@ -17,6 +17,17 @@ export interface VideoItem { thumbnail?: string // 缩略图路径 } +// 文件项接口 +export interface FileItem { + tempPath?: string // 临时路径(用于预览) + url?: string // 服务器路径(上传成功后) + name?: string // 文件名 + type?: string // 文件类型(image/video/audio/document等) + size?: number // 文件大小(字节) + extension?: string // 文件扩展名 + mimeType?: string // MIME类型 +} + // 压缩配置接口 export interface CompressConfig { image: { @@ -45,6 +56,12 @@ export interface ImageVideoUploadProps { maxVideoCount?: number videoList?: VideoItem[] + // 文件相关 + enableFile?: boolean + maxFileCount?: number + fileList?: FileItem[] + allowedFileTypes?: string[] // 允许的文件类型,如 ['pdf', 'doc', 'docx', 'mp3', 'wav'] + // 压缩配置 compressConfig?: CompressConfig @@ -57,11 +74,14 @@ export interface ImageVideoUploadProps { export interface ImageVideoUploadEmits { 'update:imageList': [images: ImageItem[]] 'update:videoList': [videos: VideoItem[]] + 'update:fileList': [files: FileItem[]] 'image-upload-success': [image: ImageItem, index: number] 'image-upload-error': [error: any, index: number] 'video-upload-success': [video: VideoItem, index: number] 'video-upload-error': [error: any, index: number] - 'upload-progress': [type: 'image' | 'video', current: number, total: number] + 'file-upload-success': [file: FileItem, index: number] + 'file-upload-error': [error: any, index: number] + 'upload-progress': [type: 'image' | 'video' | 'file', current: number, total: number] } // 默认压缩配置 diff --git a/src/pages.json b/src/pages.json index 1c23ea3..9a369bd 100644 --- a/src/pages.json +++ b/src/pages.json @@ -136,6 +136,48 @@ "enablePullDownRefresh": false } }, + { + "path": "pages/view/routine/yishiyice/addkcrw", + "style": { + "navigationBarTitleText": "新增任务", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/view/routine/yishiyice/editkcrw", + "style": { + "navigationBarTitleText": "修改任务", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/view/routine/yishiyice/detail", + "style": { + "navigationBarTitleText": "任务列表", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/view/routine/yishiyice/push", + "style": { + "navigationBarTitleText": "任务推送", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/view/routine/yishiyice/kcrwzx", + "style": { + "navigationBarTitleText": "任务执行", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/view/routine/yishiyice/kcrwzxtj", + "style": { + "navigationBarTitleText": "提交任务", + "enablePullDownRefresh": false + } + }, { "path": "pages/view/routine/yishiyice/success", "style": { @@ -143,6 +185,20 @@ "enablePullDownRefresh": false } }, + { + "path": "pages/view/rw/index", + "style": { + "navigationBarTitleText": "任务执行", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/view/rw/detail", + "style": { + "navigationBarTitleText": "任务详情", + "enablePullDownRefresh": false + } + }, { "path": "pages/view/routine/JiaoXueZiYuan/index", "style": { diff --git a/src/pages/base/message/detail.vue b/src/pages/base/message/detail.vue index 43f1baa..41f2bd3 100644 --- a/src/pages/base/message/detail.vue +++ b/src/pages/base/message/detail.vue @@ -95,7 +95,7 @@ onLoad(async (options) => { rwflx.value = result.rwlxes; rw.value = result; for (let i = 0; i < rwflx.value.length; i++) { - if (rwflx.value[i].rwfl == "sctp" || rwflx.value[i].rwfl == "scsp" || rwflx.value[i].rwfl == "scwd") { + if (rwflx.value[i].rwfl == "sczy") { schema.push({ field: `${rwflx.value[i].id}`, label: `${rwflx.value[i].rwbt}`, diff --git a/src/pages/base/service/index.vue b/src/pages/base/service/index.vue index 7dd7070..02528fa 100644 --- a/src/pages/base/service/index.vue +++ b/src/pages/base/service/index.vue @@ -263,7 +263,23 @@ const sections = reactive([ permissionKey: "routine-yrcg", // 一日常规权限编码 path: "/pages/view/quantitativeAssessment/index/index", }, - + { + id: "r14", + icon: "ysyc", + text: "一师一策", + show: true, + permissionKey: "routine-ysyc", // 一日一策权限编码 + path: "/pages/view/routine/yishiyice/index", + }, + { + id: "r15", + icon: "rwzx", + text: "任务执行", + show: true, + permissionKey: "routine-ysyc", // 一日一策权限编码 + path: "/pages/view/rw/index", + }, +//path: "/pages/view/routine/yishiyice/index"rw/index, ], }, { diff --git a/src/pages/view/routine/yishiyice/addkcrw.vue b/src/pages/view/routine/yishiyice/addkcrw.vue new file mode 100644 index 0000000..cd4b7a8 --- /dev/null +++ b/src/pages/view/routine/yishiyice/addkcrw.vue @@ -0,0 +1,1190 @@ +