提交 7f55cfea authored 作者: lihuihui's avatar lihuihui

update

上级 4ce86113
{
"globals": {
"$": true,
"$$": true,
"$computed": true,
"$customRef": true,
"$ref": true,
"$shallowRef": true,
"$toRef": true,
"EffectScope": true,
"asyncComputed": true,
"autoResetRef": true,
"computed": true,
"computedAsync": true,
"computedEager": true,
"computedInject": true,
"computedWithControl": true,
"controlledComputed": true,
"controlledRef": true,
"createApp": true,
"createEventHook": true,
"createGlobalState": true,
"createInjectionState": true,
"createReactiveFn": true,
"createSharedComposable": true,
"createUnrefFn": true,
"customRef": true,
"debouncedRef": true,
"debouncedWatch": true,
"defineAsyncComponent": true,
"defineComponent": true,
"eagerComputed": true,
"effectScope": true,
"extendRef": true,
"getCurrentInstance": true,
"getCurrentScope": true,
"h": true,
"ignorableWatch": true,
"inject": true,
"isDefined": true,
"isProxy": true,
"isReactive": true,
"isReadonly": true,
"isRef": true,
"logicAnd": true,
"logicNot": true,
"logicOr": true,
"makeDestructurable": true,
"markRaw": true,
"nextTick": true,
"onActivated": true,
"onBeforeMount": true,
"onBeforeUnmount": true,
"onBeforeUpdate": true,
"onClickOutside": true,
"onDeactivated": true,
"onErrorCaptured": true,
"onKeyStroke": true,
"onLongPress": true,
"onMounted": true,
"onRenderTracked": true,
"onRenderTriggered": true,
"onScopeDispose": true,
"onServerPrefetch": true,
"onStartTyping": true,
"onUnmounted": true,
"onUpdated": true,
"pausableWatch": true,
"provide": true,
"reactify": true,
"reactifyObject": true,
"reactive": true,
"reactiveComputed": true,
"reactiveOmit": true,
"reactivePick": true,
"readonly": true,
"ref": true,
"refAutoReset": true,
"refDebounced": true,
"refDefault": true,
"refThrottled": true,
"refWithControl": true,
"resolveComponent": true,
"shallowReactive": true,
"shallowReadonly": true,
"shallowRef": true,
"syncRef": true,
"syncRefs": true,
"templateRef": true,
"throttledRef": true,
"throttledWatch": true,
"toRaw": true,
"toReactive": true,
"toRef": true,
"toRefs": true,
"triggerRef": true,
"tryOnBeforeMount": true,
"tryOnBeforeUnmount": true,
"tryOnMounted": true,
"tryOnScopeDispose": true,
"tryOnUnmounted": true,
"unref": true,
"unrefElement": true,
"until": true,
"useActiveElement": true,
"useAsyncQueue": true,
"useAsyncState": true,
"useAttrs": true,
"useBase64": true,
"useBattery": true,
"useBreakpoints": true,
"useBroadcastChannel": true,
"useBrowserLocation": true,
"useCached": true,
"useClamp": true,
"useClipboard": true,
"useColorMode": true,
"useConfirmDialog": true,
"useCounter": true,
"useCssModule": true,
"useCssVar": true,
"useCssVars": true,
"useCurrentElement": true,
"useCycleList": true,
"useDark": true,
"useDateFormat": true,
"useDebounce": true,
"useDebounceFn": true,
"useDebouncedRefHistory": true,
"useDeviceMotion": true,
"useDeviceOrientation": true,
"useDevicePixelRatio": true,
"useDevicesList": true,
"useDisplayMedia": true,
"useDocumentVisibility": true,
"useDraggable": true,
"useElementBounding": true,
"useElementByPoint": true,
"useElementHover": true,
"useElementSize": true,
"useElementVisibility": true,
"useEventBus": true,
"useEventListener": true,
"useEventSource": true,
"useEyeDropper": true,
"useFavicon": true,
"useFetch": true,
"useFileSystemAccess": true,
"useFocus": true,
"useFocusWithin": true,
"useFps": true,
"useFullscreen": true,
"useGamepad": true,
"useGeolocation": true,
"useIdle": true,
"useInfiniteScroll": true,
"useIntersectionObserver": true,
"useInterval": true,
"useIntervalFn": true,
"useKeyModifier": true,
"useLastChanged": true,
"useLocalStorage": true,
"useMagicKeys": true,
"useManualRefHistory": true,
"useMediaControls": true,
"useMediaQuery": true,
"useMemoize": true,
"useMemory": true,
"useMounted": true,
"useMouse": true,
"useMouseInElement": true,
"useMousePressed": true,
"useMutationObserver": true,
"useNavigatorLanguage": true,
"useNetwork": true,
"useNow": true,
"useOffsetPagination": true,
"useOnline": true,
"usePageLeave": true,
"useParallax": true,
"usePermission": true,
"usePointer": true,
"usePointerSwipe": true,
"usePreferredColorScheme": true,
"usePreferredDark": true,
"usePreferredLanguages": true,
"useRafFn": true,
"useRefHistory": true,
"useResizeObserver": true,
"useRoute": true,
"useRouter": true,
"useScreenOrientation": true,
"useScreenSafeArea": true,
"useScriptTag": true,
"useScroll": true,
"useScrollLock": true,
"useSessionStorage": true,
"useShare": true,
"useSlots": true,
"useSpeechRecognition": true,
"useSpeechSynthesis": true,
"useStorage": true,
"useStorageAsync": true,
"useStyleTag": true,
"useSwipe": true,
"useTemplateRefsList": true,
"useTextSelection": true,
"useThrottle": true,
"useThrottleFn": true,
"useThrottledRefHistory": true,
"useTimeAgo": true,
"useTimeout": true,
"useTimeoutFn": true,
"useTimeoutPoll": true,
"useTimestamp": true,
"useTitle": true,
"useToggle": true,
"useTransition": true,
"useUrlSearchParams": true,
"useUserMedia": true,
"useVModel": true,
"useVModels": true,
"useVibrate": true,
"useVirtualList": true,
"useWakeLock": true,
"useWebNotification": true,
"useWebSocket": true,
"useWebWorker": true,
"useWebWorkerFn": true,
"useWindowFocus": true,
"useWindowScroll": true,
"useWindowSize": true,
"watch": true,
"watchAtMost": true,
"watchDebounced": true,
"watchEffect": true,
"watchIgnorable": true,
"watchOnce": true,
"watchPausable": true,
"watchPostEffect": true,
"watchSyncEffect": true,
"watchThrottled": true,
"watchWithFilter": true,
"whenever": true
}
}
\ No newline at end of file
差异被折叠。
...@@ -20,17 +20,17 @@ export function getCoverList() { ...@@ -20,17 +20,17 @@ export function getCoverList() {
return httpRequest.get('/api/resource/v1/util/get-cover-list') return httpRequest.get('/api/resource/v1/util/get-cover-list')
} }
// 更新视频
export function updateVideo(data: { id: string; course_name: string; cover_page: string; type: string; weight?: string }) {
return httpRequest.post('/api/resource/backend/video/update', data)
}
// 获取视频详情 // 获取视频详情
export function getVideo(params: { id: string }) { export function getVideoDetails(params: { id: string }) {
return httpRequest.get('/api/resource/backend/video/view', { params }) return httpRequest.get('/api/resource/v1/resource/video/view', { params })
} }
// 获取项目列表 // 获取项目列表
export function getProjectList(params: { organization_id: string }) { export function getProjectList(params: { organization_id: string }) {
return httpRequest.get('/api/resource/v1/util/members', { params }) return httpRequest.get('/api/resource/v1/util/members', { params })
} }
// 更新视频
export function updateVideo(data: { id: string; name: string; classification: string; knowledge_points?: string; cover?: string }) {
return httpRequest.post('/api/resource/v1/resource/video/update', data)
}
...@@ -9,7 +9,7 @@ const props:any = defineProps<{ data: object }>() ...@@ -9,7 +9,7 @@ const props:any = defineProps<{ data: object }>()
<!-- <img :src="props.data.cover" /> --> <!-- <img :src="props.data.cover" /> -->
<div class="cover-img" :style="`background-image:url(${props.data.cover})`"></div> <div class="cover-img" :style="`background-image:url(${props.data.cover})`"></div>
<div class="tool-pop-btn"> <div class="tool-pop-btn">
<router-link to="/resource/video/update"> <router-link :to="`/resource/video/update?id=${props.data.id}`">
<div class="edit-btn">编辑</div> <div class="edit-btn">编辑</div>
</router-link> </router-link>
<router-link to="/resource/video/view"> <router-link to="/resource/video/view">
......
...@@ -2,9 +2,6 @@ ...@@ -2,9 +2,6 @@
import { getVideoList, getProjectList, getCategoryList } from '../api' import { getVideoList, getProjectList, getCategoryList } from '../api'
import CardListItem from '../components/CardListItem.vue' import CardListItem from '../components/CardListItem.vue'
import { Expand, Search } from '@element-plus/icons-vue' import { Expand, Search } from '@element-plus/icons-vue'
// import { useMapStore } from '@/stores/map'
// const store= useMapStore()
// console.log(store, 'store')
// 筛选项目列表 // 筛选项目列表
let projectList: any = $ref([]) let projectList: any = $ref([])
...@@ -12,7 +9,7 @@ getProjectList({ organization_id: '' }).then(res => { ...@@ -12,7 +9,7 @@ getProjectList({ organization_id: '' }).then(res => {
projectList = res.data.departments projectList = res.data.departments
}) })
// tab触发 // 资源出处 tab触发
const tabValue = ref('1') const tabValue = ref('1')
const tabChange = () => { const tabChange = () => {
appList.value.refetch() appList.value.refetch()
...@@ -23,6 +20,7 @@ const appList = ref() ...@@ -23,6 +20,7 @@ const appList = ref()
// 列表切换 // 列表切换
const isCard = ref(false) const isCard = ref(false)
// table 数据
const listOptions = $computed(() => { const listOptions = $computed(() => {
return { return {
remote: { remote: {
...@@ -46,7 +44,6 @@ const listOptions = $computed(() => { ...@@ -46,7 +44,6 @@ const listOptions = $computed(() => {
{ type: 'select', prop: 'authorized', label: '项目', options: projectList, labelKey: 'name', valueKey: 'id' }, { type: 'select', prop: 'authorized', label: '项目', options: projectList, labelKey: 'name', valueKey: 'id' },
{ prop: 'classification', label: '类别', slots: 'filter-type' }, { prop: 'classification', label: '类别', slots: 'filter-type' },
{ prop: 'title', slots: 'filter-search' } { prop: 'title', slots: 'filter-search' }
// { type: 'input', prop: 'category_id', prefixIcon: 'Search' }
], ],
columns: [ columns: [
{ label: '视频标题', prop: 'name', align: 'center' }, { label: '视频标题', prop: 'name', align: 'center' },
...@@ -63,16 +60,16 @@ const listOptions = $computed(() => { ...@@ -63,16 +60,16 @@ const listOptions = $computed(() => {
} }
}) })
// 下拉选择tree 视频分类 // 下拉选择tree 视频分类
let selectTree = $ref([]) let selectTree = $ref([])
getCategoryList({ type: 'tree' }).then((res) => { getCategoryList({ type: 'tree' }).then((res) => {
selectTree = res.data selectTree = res.data
}) })
const defaultProps = { const defaultProps = {
children: 'children', children: 'children',
label: 'category_name', label: 'category_name',
value: 'id' value: 'id'
} }
</script> </script>
<template> <template>
...@@ -118,7 +115,6 @@ const listOptions = $computed(() => { ...@@ -118,7 +115,6 @@ const listOptions = $computed(() => {
<CardListItem v-for="(item, index) in data" :data="item" :key="index"></CardListItem> <CardListItem v-for="(item, index) in data" :data="item" :key="index"></CardListItem>
</div> </div>
<el-empty v-else description="description" /> <el-empty v-else description="description" />
<!-- <div class="resource-video-item" v-for="item in data" :key="item.id">{{ item.title }}</div> -->
</template> </template>
</AppList> </AppList>
</AppCard> </AppCard>
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
import Upload from '../components/Upload.vue' import Upload from '../components/Upload.vue'
import UploadAuth from '@/components/base/UploadAuth.vue' import UploadAuth from '@/components/base/UploadAuth.vue'
// import { useMapStore } from '@/stores/map' // import { useMapStore } from '@/stores/map'
import { getCategoryList, getCoverList, createVideo } from '../api' import { getCategoryList, getCoverList, createVideo, getVideoDetails, updateVideo } from '../api'
// const store= useMapStore() // const store= useMapStore()
// console.log(store) // console.log(store)
// const statusList = store.mapList.filter((item: any) => item.key === 'system_status')[0].values // const statusList = store.mapList.filter((item: any) => item.key === 'system_status')[0].values
...@@ -14,15 +14,15 @@ ...@@ -14,15 +14,15 @@
const router = useRouter() const router = useRouter()
// 下拉选择tree 视频分类 // 下拉选择tree 视频分类
let selectTree = $ref([])
getCategoryList({ type: 'tree' }).then((res) => {
selectTree = res.data
})
const defaultProps = { const defaultProps = {
children: 'children', children: 'children',
label: 'category_name', label: 'category_name',
value: 'id' value: 'id'
} }
let selectTree = $ref([])
getCategoryList({ type: 'tree' }).then((res) => {
selectTree = res.data
})
// 视频封面图轮播 // 视频封面图轮播
let swiperCovers: [{ id: string, url: string }[]] = $ref([[]]) let swiperCovers: [{ id: string, url: string }[]] = $ref([[]])
...@@ -71,6 +71,20 @@ ...@@ -71,6 +71,20 @@
ElMessage('请勾选用户协议') ElMessage('请勾选用户协议')
return return
} }
const id = router.currentRoute.value.query.id as string
if (id !== '' && id) {
const params = Object.assign({ id: id }, form)
updateVideo(params).then((res: any) => {
if (res.code === 0) {
ElMessage({ message: '更新成功', type: 'success' })
setTimeout(() => {
router.push({
path: '/resource/video'
})
}, 1000)
}
})
} else {
createVideo(form).then((res:any) => { createVideo(form).then((res:any) => {
if (res.code === 0) { if (res.code === 0) {
ElMessage({ message: '创建成功', type: 'success' }) ElMessage({ message: '创建成功', type: 'success' })
...@@ -81,6 +95,8 @@ ...@@ -81,6 +95,8 @@
}, 1000) }, 1000)
} }
}) })
}
} else { } else {
ElMessage('请完善信息') ElMessage('请完善信息')
console.log('error submit!', fields) console.log('error submit!', fields)
...@@ -103,6 +119,18 @@ ...@@ -103,6 +119,18 @@
videoUpload.progress = 0 videoUpload.progress = 0
form.source_id = videoId form.source_id = videoId
} }
// 判断编辑还是新建
const id = router.currentRoute.value.query.id as string
console.log(id)
if (id !== '' && id) {
getVideoDetails({ id: id }).then(res => {
const key = ['name', 'classification', 'knowledge_points', 'cover', 'source_id']
key.forEach(item => {
form[item] = res.data[item]
})
})
}
</script> </script>
<template> <template>
...@@ -114,7 +142,7 @@ ...@@ -114,7 +142,7 @@
<div class="btn-item">更改负责人</div> <div class="btn-item">更改负责人</div>
</div> </div>
<el-form ref="ruleFormRef" :model="form" :rules="rules" style="width: 70%"> <el-form ref="ruleFormRef" :model="form" :rules="rules" style="width: 70%">
<el-form-item label="视频文件:" prop="source_id"> <el-form-item label="视频文件:" prop="source_id" v-if="id == '' || id == undefined">
<div> <div>
<div class="upload-video"> <div class="upload-video">
<div class="upload-btn"> <div class="upload-btn">
......
...@@ -26,13 +26,7 @@ export default defineConfig(({ mode }) => ({ ...@@ -26,13 +26,7 @@ export default defineConfig(({ mode }) => ({
cert: fs.readFileSync(path.join(__dirname, './https/dev.ezijing.com.pem')) cert: fs.readFileSync(path.join(__dirname, './https/dev.ezijing.com.pem'))
}, },
proxy: { proxy: {
'/api/resource': { '/api': 'https://resource-center.ezijing.com'
// target: 'http://localhost-activity-frontend.ezijing.com',
target: 'http://localhost-resource-backend.ezijing.com',
changeOrigin: true,
rewrite: path => path.replace(/^\/api\/resource/, '')
},
'/api': 'https://learn-api.ezijing.com'
} }
}, },
resolve: { resolve: {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论