提交 9309bb85 authored 作者: lihuihui's avatar lihuihui

修改bug

上级 bd8030d0
<script setup lang="ts"> <script setup lang="ts">
import { Files } from '@element-plus/icons-vue' import { Files } from '@element-plus/icons-vue'
const props: any = defineProps<{ data: object, path: string, permission?: { edit: string, view: string } }>() const props: any = defineProps<{ data: object; path: string; permission?: { edit: string; view: string } }>()
const fileType = ['doc', 'docx', 'xls', 'xlsx', 'pdf', 'ppt', 'pptx', 'mp3', 'mp4', 'png', 'jpeg', 'jpg']
</script> </script>
<template> <template>
<div class="card-item"> <div class="card-item">
...@@ -15,7 +16,8 @@ const props: any = defineProps<{ data: object, path: string, permission?: { edit ...@@ -15,7 +16,8 @@ const props: any = defineProps<{ data: object, path: string, permission?: { edit
<div class="info">关联次数:{{ props.data.relation_count }}</div> <div class="info">关联次数:{{ props.data.relation_count }}</div>
<div class="info">学习人次:{{ props.data.learn_count }}人次</div> <div class="info">学习人次:{{ props.data.learn_count }}人次</div>
</div> </div>
<el-icon class="item-info-icon"> <img :src="`https://webapp-pub.oss-cn-beijing.aliyuncs.com/center_resource/${props.data.type}.png`" v-if="fileType.includes(props.data.type)">
<el-icon class="item-info-icon" v-else>
<Files /> <Files />
</el-icon> </el-icon>
<div class="tool-pop-btn"> <div class="tool-pop-btn">
...@@ -75,9 +77,7 @@ const props: any = defineProps<{ data: object, path: string, permission?: { edit ...@@ -75,9 +77,7 @@ const props: any = defineProps<{ data: object, path: string, permission?: { edit
color: #aa1941; color: #aa1941;
} }
img { img {
width: 100%; width: 40px;
height: 100%;
display: block;
} }
.title { .title {
position: absolute; position: absolute;
......
...@@ -3,10 +3,13 @@ export default { name: 'AppMain' } ...@@ -3,10 +3,13 @@ export default { name: 'AppMain' }
</script> </script>
<script setup lang="ts"> <script setup lang="ts">
import PreviewFiles from '@/components/base/PreviewFiles.vue'
import AppBreadcrumb from './Breadcrumb.vue' import AppBreadcrumb from './Breadcrumb.vue'
withDefaults(defineProps<{ hasBreadcrumb?: boolean }>(), { withDefaults(defineProps<{ hasBreadcrumb?: boolean }>(), {
hasBreadcrumb: true hasBreadcrumb: true
}) })
const dialogVisible = ref(false)
</script> </script>
<template> <template>
...@@ -20,9 +23,29 @@ withDefaults(defineProps<{ hasBreadcrumb?: boolean }>(), { ...@@ -20,9 +23,29 @@ withDefaults(defineProps<{ hasBreadcrumb?: boolean }>(), {
</div> </div>
</div> </div>
</section> </section>
<div class="manual-btn" @click="dialogVisible = true">
<img src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/center_resource/course.png" />
</div>
<el-dialog v-model="dialogVisible" title="使用手册" width="852px">
<PreviewFiles url="https://webapp-pub.ezijing.com/upload/admin/05e3fa93d5760e6909a1a0244f545133.doc"></PreviewFiles>
</el-dialog>
</template> </template>
<style> <style>
.manual-btn {
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
position: fixed;
top: 50%;
right: 0;
width: 60px;
height: 60px;
background: rgba(255, 255, 255, 1);
box-shadow: 1px 3px 12px rgba(0, 0, 0, 0.11);
border-radius: 50%;
}
.app-main { .app-main {
position: relative; position: relative;
flex: 1; flex: 1;
......
...@@ -21,7 +21,7 @@ const defaultProps = { ...@@ -21,7 +21,7 @@ const defaultProps = {
const appList = ref() const appList = ref()
// 列表切换 // 列表切换
const isCard = ref(true) const isCard = $ref(true)
// 资源出处 tab触发 // 资源出处 tab触发
const tabValue = ref('1') const tabValue = ref('1')
......
...@@ -51,9 +51,12 @@ let form: any = $ref({ ...@@ -51,9 +51,12 @@ let form: any = $ref({
}) })
// 监听文件上传 // 监听文件上传
watch(() => form.file, value => { watch(
form.name = value[0]?.name || '' () => form.file,
}) value => {
form.name = value[0]?.name || ''
}
)
// 表单验证 // 表单验证
const rules = { const rules = {
...@@ -65,15 +68,16 @@ const rules = { ...@@ -65,15 +68,16 @@ const rules = {
const ruleFormRef = ref<FormInstance>() const ruleFormRef = ref<FormInstance>()
const submitForm = async (formEl: FormInstance | undefined) => { const submitForm = async (formEl: FormInstance | undefined) => {
if (!formEl) return if (!formEl) return
await formEl.validate((valid) => { await formEl.validate(valid => {
if (valid) { if (valid) {
if (!protocol.value) { if (!protocol.value) {
ElMessage('请勾选用户协议') ElMessage('请勾选用户协议')
return return
} }
const { url, type, size } = form.file[0] const { url, size } = form.file[0]
const findString = url.lastIndexOf('.') + 1
form.url = url form.url = url
form.type = type form.type = url.substring(findString, url.length)
form.size = size form.size = size
const params = Object.assign({}, form) const params = Object.assign({}, form)
delete params.file delete params.file
...@@ -148,7 +152,13 @@ const protocol = ref(false) ...@@ -148,7 +152,13 @@ const protocol = ref(false)
/> />
</el-form-item> </el-form-item>
<el-form-item label="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;知识点:"> <el-form-item label="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;知识点:">
<el-input placeholder="请输入该视频相关知识点,多个知识点请使用“,”分隔" maxlength="100" v-model="form.knowledge_points" :rows="2" type="textarea" /> <el-input
placeholder="请输入该视频相关知识点,多个知识点请使用“,”分隔"
maxlength="100"
v-model="form.knowledge_points"
:rows="2"
type="textarea"
/>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div class="protocol-box"> <div class="protocol-box">
...@@ -165,7 +175,7 @@ const protocol = ref(false) ...@@ -165,7 +175,7 @@ const protocol = ref(false)
<style lang="scss"> <style lang="scss">
.upload-box { .upload-box {
// min-width: 400px; // min-width: 400px;
.el-progress__text{ .el-progress__text {
transform: translate(20px, -5px); transform: translate(20px, -5px);
} }
position: relative; position: relative;
......
...@@ -10,7 +10,7 @@ const store = useMapStore() ...@@ -10,7 +10,7 @@ const store = useMapStore()
const appList = ref() const appList = ref()
const isCard = ref(true) const isCard = $ref(true)
// 筛选部门列表 // 筛选部门列表
const departmentList: any = useProjectList().departmentList const departmentList: any = useProjectList().departmentList
...@@ -93,17 +93,26 @@ const typeFilter = () => { ...@@ -93,17 +93,26 @@ const typeFilter = () => {
<AppList v-bind="listOptions" ref="appList"> <AppList v-bind="listOptions" ref="appList">
<template #header-aside></template> <template #header-aside></template>
<template #filter-type="{ params }"> <template #filter-type="{ params }">
<el-tree-select @change="typeFilter" clearable :props="defaultProps" v-model="params.classification" :data="selectTree" /> <el-tree-select
@change="typeFilter"
clearable
:props="defaultProps"
v-model="params.classification"
:data="selectTree"
/>
</template> </template>
<template v-if="tabValue == '3'" #filter-department="{ params }"> <template v-if="tabValue == '3'" #filter-department="{ params }">
<div class="name" style="font-size:14px;color:#606266;padding-right: 12px;">部门</div> <div class="name" style="font-size: 14px; color: #606266; padding-right: 12px">部门</div>
<el-select @change="typeFilter" clearable v-model="params.authorized"> <el-select @change="typeFilter" clearable v-model="params.authorized">
<el-option v-for="item in departmentList" :key="item.id" :label="item.name" :value="item.id" /> <el-option v-for="item in departmentList" :key="item.id" :label="item.name" :value="item.id" />
</el-select> </el-select>
</template> </template>
<template #table-operate="{ row }"> <template #table-operate="{ row }">
<el-space> <el-space>
<router-link v-permission="'v1-resource-lesson-plan-update'" :to="`/resource/lessonplan/update/?id=${row.id}`"> <router-link
v-permission="'v1-resource-lesson-plan-update'"
:to="`/resource/lessonplan/update/?id=${row.id}`"
>
<el-button plain>编辑</el-button> <el-button plain>编辑</el-button>
</router-link> </router-link>
<router-link v-permission="'v1-resource-lesson-plan-view'" :to="`/resource/lessonplan/view?id=${row.id}`"> <router-link v-permission="'v1-resource-lesson-plan-view'" :to="`/resource/lessonplan/view?id=${row.id}`">
...@@ -115,7 +124,13 @@ const typeFilter = () => { ...@@ -115,7 +124,13 @@ const typeFilter = () => {
<!-- 卡片 --> <!-- 卡片 -->
<template #body="{ data }" v-if="isCard"> <template #body="{ data }" v-if="isCard">
<div class="card-list" v-if="data.length"> <div class="card-list" v-if="data.length">
<CardListItem :permission="{ edit: 'v1-resource-lesson-plan-update', view: 'v1-resource-lesson-plan-view' }" path="/resource/lessonplan" v-for="(item, index) in data" :data="item" :key="index"></CardListItem> <CardListItem
:permission="{ edit: 'v1-resource-lesson-plan-update', view: 'v1-resource-lesson-plan-view' }"
path="/resource/lessonplan"
v-for="(item, index) in data"
:data="item"
:key="index"
></CardListItem>
</div> </div>
<el-empty v-else description="暂无数据" /> <el-empty v-else description="暂无数据" />
</template> </template>
......
...@@ -51,9 +51,12 @@ let form: any = $ref({ ...@@ -51,9 +51,12 @@ let form: any = $ref({
}) })
// 监听文件上传 // 监听文件上传
watch(() => form.file, value => { watch(
form.name = value[0]?.name || '' () => form.file,
}) value => {
form.name = value[0]?.name || ''
}
)
// 表单验证 // 表单验证
const rules = { const rules = {
...@@ -65,15 +68,16 @@ const rules = { ...@@ -65,15 +68,16 @@ const rules = {
const ruleFormRef = ref<FormInstance>() const ruleFormRef = ref<FormInstance>()
const submitForm = async (formEl: FormInstance | undefined) => { const submitForm = async (formEl: FormInstance | undefined) => {
if (!formEl) return if (!formEl) return
await formEl.validate((valid) => { await formEl.validate(valid => {
if (valid) { if (valid) {
if (!protocol.value) { if (!protocol.value) {
ElMessage('请勾选用户协议') ElMessage('请勾选用户协议')
return return
} }
const { url, type, size } = form.file[0] const { url, size } = form.file[0]
const findString = url.lastIndexOf('.') + 1
form.url = url form.url = url
form.type = type form.type = url.substring(findString, url.length)
form.size = size form.size = size
const params = Object.assign({}, form) const params = Object.assign({}, form)
delete params.file delete params.file
...@@ -142,7 +146,13 @@ const protocol = ref(false) ...@@ -142,7 +146,13 @@ const protocol = ref(false)
<el-tree-select :props="defaultProps" style="width: 100%" v-model="form.classification" :data="selectTree" /> <el-tree-select :props="defaultProps" style="width: 100%" v-model="form.classification" :data="selectTree" />
</el-form-item> </el-form-item>
<el-form-item label="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;知识点:"> <el-form-item label="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;知识点:">
<el-input placeholder="请输入该视频相关知识点,多个知识点请使用“,”分隔" maxlength="100" v-model="form.knowledge_points" :rows="2" type="textarea" /> <el-input
placeholder="请输入该视频相关知识点,多个知识点请使用“,”分隔"
maxlength="100"
v-model="form.knowledge_points"
:rows="2"
type="textarea"
/>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div class="protocol-box"> <div class="protocol-box">
...@@ -159,7 +169,7 @@ const protocol = ref(false) ...@@ -159,7 +169,7 @@ const protocol = ref(false)
<style lang="scss"> <style lang="scss">
.upload-box { .upload-box {
position: relative; position: relative;
.el-progress__text{ .el-progress__text {
transform: translate(20px, -5px); transform: translate(20px, -5px);
} }
.app-upload-btn { .app-upload-btn {
......
...@@ -11,7 +11,7 @@ const store = useMapStore() ...@@ -11,7 +11,7 @@ const store = useMapStore()
const appList = ref() const appList = ref()
// 列表切换 // 列表切换
const isCard = ref(true) const isCard = $ref(true)
// 资源出处 tab触发 // 资源出处 tab触发
const tabValue = ref('1') const tabValue = ref('1')
...@@ -103,7 +103,7 @@ const typeFilter = () => { ...@@ -103,7 +103,7 @@ const typeFilter = () => {
/> />
</template> </template>
<template v-if="tabValue == '3'" #filter-department="{ params }"> <template v-if="tabValue == '3'" #filter-department="{ params }">
<div class="name" style="font-size:14px;color:#606266;padding-right: 12px;">部门</div> <div class="name" style="font-size: 14px; color: #606266; padding-right: 12px">部门</div>
<el-select @change="typeFilter" clearable v-model="params.authorized"> <el-select @change="typeFilter" clearable v-model="params.authorized">
<el-option v-for="item in departmentList" :key="item.id" :label="item.name" :value="item.id" /> <el-option v-for="item in departmentList" :key="item.id" :label="item.name" :value="item.id" />
</el-select> </el-select>
......
...@@ -71,9 +71,10 @@ const submitForm = async (formEl: FormInstance | undefined) => { ...@@ -71,9 +71,10 @@ const submitForm = async (formEl: FormInstance | undefined) => {
ElMessage('请勾选用户协议') ElMessage('请勾选用户协议')
return return
} }
const { url, type, size } = form.file[0] const { url, size } = form.file[0]
const findString = url.lastIndexOf('.') + 1
form.url = url form.url = url
form.type = type form.type = url.substring(findString, url.length)
form.size = size form.size = size
const params = Object.assign({}, form) const params = Object.assign({}, form)
delete params.file delete params.file
......
...@@ -27,7 +27,7 @@ const tabChange = () => { ...@@ -27,7 +27,7 @@ const tabChange = () => {
} }
// 列表切换 // 列表切换
const isCard = ref(true) const isCard = $ref(true)
// table 数据 // table 数据
const listOptions = $computed(() => { const listOptions = $computed(() => {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论