From b3950b71def7ced271171626c4c883f66fa036e3 Mon Sep 17 00:00:00 2001 From: odc.xiaohui <xiaohui@Q1> Date: 星期四, 09 十一月 2023 10:03:45 +0800 Subject: [PATCH] 修改视频专网 --- src/views/system/oss/index.vue | 236 +++++++++++++++++++++++++++++++++++----------------------- 1 files changed, 141 insertions(+), 95 deletions(-) diff --git a/src/views/system/oss/index.vue b/src/views/system/oss/index.vue index d8f17ef..b6ea088 100644 --- a/src/views/system/oss/index.vue +++ b/src/views/system/oss/index.vue @@ -4,29 +4,11 @@ <div class="mb-[10px]" v-show="showSearch"> <el-card shadow="hover"> <el-form :model="queryParams" ref="queryFormRef" :inline="true" label-width="68px"> -<!-- <el-form-item label="鏂囦欢鍚�" prop="fileName">--> -<!-- <el-input v-model="queryParams.fileName" placeholder="璇疯緭鍏ユ枃浠跺悕" clearable style="width: 200px" @keyup.enter="handleQuery" />--> -<!-- </el-form-item>--> + <el-form-item label="鍘熷悕" prop="originalName"> <el-input v-model="queryParams.originalName" placeholder="璇疯緭鍏ュ師鍚�" clearable style="width: 200px" @keyup.enter="handleQuery" /> </el-form-item> - <el-form-item label="鏂囦欢鍚庣紑" prop="fileSuffix"> - <el-input v-model="queryParams.fileSuffix" placeholder="璇疯緭鍏ユ枃浠跺悗缂�" clearable style="width: 200px" @keyup.enter="handleQuery" /> - </el-form-item> -<!-- <el-form-item label="鍒涘缓鏃堕棿">--> -<!-- <el-date-picker--> -<!-- v-model="dateRangeCreateTime"--> -<!-- value-format="YYYY-MM-DD HH:mm:ss"--> -<!-- type="daterange"--> -<!-- range-separator="-"--> -<!-- start-placeholder="寮�濮嬫棩鏈�"--> -<!-- end-placeholder="缁撴潫鏃ユ湡"--> -<!-- :default-time="[new Date(2000, 1, 1, 0, 0, 0), new Date(2000, 1, 1, 23, 59, 59)]"--> -<!-- ></el-date-picker>--> -<!-- </el-form-item>--> -<!-- <el-form-item label="鏈嶅姟鍟�" prop="service">--> -<!-- <el-input v-model="queryParams.service" placeholder="璇疯緭鍏ユ湇鍔″晢" clearable style="width: 200px" @keyup.enter="handleQuery" />--> -<!-- </el-form-item>--> + <el-form-item> <el-button type="primary" icon="search" @click="handleQuery">鎼滅储</el-button> <el-button icon="Refresh" @click="resetQuery">閲嶇疆</el-button> @@ -40,37 +22,17 @@ <template #header> <el-row :gutter="10" class="mb8"> <el-col :span="1.5"> - <el-button type="primary" plain icon="Upload" @click="handleFile" v-hasPermi="['system:oss:upload']">涓婁紶鏂囦欢</el-button> + <el-button type="primary" plain icon="Upload" @click="handleFile" v-if="isContains(useUserStore().permissions, 'system:oss:upload')">涓婁紶鏂囦欢</el-button> </el-col> + <el-col :span="1.5"> - <el-button type="primary" plain icon="Upload" @click="handleImage" v-hasPermi="['system:oss:upload']">涓婁紶鍥剧墖</el-button> - </el-col> - <el-col :span="1.5"> - <el-button type="primary" plain icon="Upload" @click="handleVideo" v-hasPermi="['system:oss:upload']">涓婁紶瑙嗛</el-button> - </el-col> - <el-col :span="1.5"> - <el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()" v-hasPermi="['system:oss:remove']"> + <el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()" v-if="isContains(useUserStore().permissions, 'system:oss:remove')"> 鍒犻櫎 </el-button> - </el-col> -<!-- <el-col :span="1.5">--> -<!-- <el-button--> -<!-- :type="previewListResource ? 'danger' : 'warning'"--> -<!-- plain--> -<!-- @click="handlePreviewListResource(!previewListResource)"--> -<!-- v-hasPermi="['system:oss:edit']"--> -<!-- >棰勮寮�鍏� :--> -<!-- {{--> -<!-- previewListResource ? "绂佺敤" : "鍚敤" }}</el-button--> -<!-- >--> -<!-- </el-col>--> - <el-col :span="1.5"> - <el-button type="info" plain icon="Operation" @click="handleOssConfig" v-hasPermi="['system:oss:lists']">閰嶇疆绠$悊</el-button> </el-col> <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar> </el-row> </template> - <el-table v-loading="loading" :data="ossList" @@ -80,39 +42,18 @@ v-if="showTable" > <el-table-column type="selection" width="55" align="center" /> -<!-- <el-table-column label="瀵硅薄瀛樺偍涓婚敭" align="center" prop="ossId" v-if="true" />--> -<!-- <el-table-column label="鏂囦欢鍚�" align="center" prop="fileName" />--> <el-table-column label="鍘熷悕" align="center" prop="originalName" /> - <el-table-column label="鏂囦欢鍚庣紑" align="center" prop="fileSuffix" /> -<!-- <el-table-column label="鏂囦欢灞曠ず" align="center" prop="url">--> -<!-- <template #default="scope">--> -<!-- <ImagePreview--> -<!-- v-if="previewListResource && checkFileSuffix(scope.row.fileSuffix)"--> -<!-- :width="100"--> -<!-- :height="100"--> -<!-- :src="scope.row.url"--> -<!-- :preview-src-list="[scope.row.url]"--> -<!-- />--> -<!-- <span v-text="scope.row.url" v-if="!checkFileSuffix(scope.row.fileSuffix) || !previewListResource" />--> -<!-- </template>--> -<!-- </el-table-column>--> - <el-table-column label="鍒涘缓鏃堕棿" align="center" prop="createTime" width="180" sortable="custom"> - <template #default="scope"> - <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span> - </template> - </el-table-column> <el-table-column label="涓婁紶浜�" align="center" prop="createByName" /> -<!-- <el-table-column label="鏈嶅姟鍟�" align="center" prop="service" sortable="custom" />--> <el-table-column label="鎿嶄綔" align="center" class-name="small-padding fixed-width"> <template #default="scope"> <el-tooltip content="鏌ョ湅鎻愬彇鐮�" placement="top"> - <el-button link type="primary" icon="Search" @click="handleCode(scope.row)" v-hasPermi="['system:oss:decode']"></el-button> + <el-button link type="primary" icon="Search" @click="handleCode(scope.row)" v-if="isContains(useUserStore().permissions, 'system:oss:view')"></el-button> </el-tooltip> <el-tooltip content="涓嬭浇" placement="top"> - <el-button link type="primary" icon="Download" @click="handleDownload(scope.row)" v-hasPermi="['system:oss:download']"></el-button> + <el-button link type="primary" icon="Download" @click="handleDownload(scope.row)" v-if="isContains(useUserStore().permissions, 'system:oss:download')"></el-button> </el-tooltip> <el-tooltip content="鍒犻櫎" placement="top"> - <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['system:oss:remove']"></el-button> + <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-if="isContains(useUserStore().permissions, 'system:oss:remove')"></el-button> </el-tooltip> </template> </el-table-column> @@ -124,7 +65,7 @@ <el-dialog :title="dialog.title" v-model="dialog.visible" width="500px" append-to-body> <el-form ref="ossFormRef" :model="form" :rules="rules" label-width="80px"> <el-form-item label="鏂囦欢鍚�"> - <fileUpload v-model="form.file" v-if="type === 0" /> + <fileUpload ref="childFile" @closePopup="getList()" v-model="form.file" v-if="type === 0" /> <imageUpload v-model="form.file" v-if="type === 1" /> <video-upload v-model="form.file" v-if="type === 2" />" </el-form-item> @@ -136,8 +77,10 @@ </div> </template> </el-dialog> - <el-dialog title="鏌ョ湅鎻愬彇鐮�" v-model="visibleCode" width="500px" append-to-body> - <span>qw15rw</span> + <el-dialog :title="titleDownload" v-model="visibleCode" width="500px" append-to-body> + <span v-show="titleDownload=='鏌ョ湅鎻愬彇鐮�'">{{testtxt}}</span> + <el-input style="margin: 10px 0" ref="inputRef" :style="inputSty" v-show="titleDownload!='鏌ョ湅鎻愬彇鐮�'" v-model="pasTxt" v-if="isContains(useUserStore().permissions, 'system:oss:download')" placeholder="璇疯緭鍏ユ枃浠舵彁鍙栫爜"></el-input> + <el-button link type="primary" v-show="titleDownload!='鏌ョ湅鎻愬彇鐮�'" icon="Download" @click="handleDownloadFile()" v-if="isContains(useUserStore().permissions, 'system:oss:download')">涓嬭浇</el-button> <template #footer> <div class="dialog-footer"> <el-button type="primary" @click="visibleCode = false">纭� 瀹�</el-button> @@ -149,11 +92,14 @@ </template> <script setup name="Oss" lang="ts"> -import { listOss, delOss } from "@/api/system/oss"; -import ImagePreview from "@/components/ImagePreview/index.vue"; +import { listOss, delOss, createUser, examineIds } from "@/api/system/oss"; import { OssForm, OssQuery, OssVO } from "@/api/system/oss/types"; - -const router = useRouter(); +import { to as tos } from "await-to-js"; +import useUserStore from "@/store/modules/user"; +import { setToken } from "@/utils/auth"; +import usePermissionStore from "@/store/modules/permission"; +import { isHttp } from "@/utils/validate"; +import router from '@/router'; const { proxy } = getCurrentInstance() as ComponentInternalInstance; const ossList = ref<OssVO[]>([]); @@ -173,7 +119,14 @@ visible: false, title: '' }); - +const testtxt = ref<any>() +const pasTxt = ref<any>() +const titleDownload = ref<any>() +const downIds = ref<any>() +const inputRef = ref<any>() +const inputSty =ref<any>() +const currentIp = ref('') +const childFile = ref<any>() // 榛樿鎺掑簭 const defaultSort = ref({ prop: 'createTime', order: 'ascending' }); @@ -205,9 +158,12 @@ }); const { queryParams, form, rules } = toRefs(data); - +const sure = () => { + testtxt.value += 1 +} /** 鏌ヨOSS瀵硅薄瀛樺偍鍒楄〃 */ const getList = async () => { + loading.value = true; const res = await proxy?.getConfigKey("sys.oss.previewListResource"); previewListResource.value = res?.data === undefined ? true : res.data === 'true'; @@ -299,9 +255,6 @@ getList(); } /** 浠诲姟鏃ュ織鍒楄〃鏌ヨ */ -const handleOssConfig = () => { - router.push('/system/oss-config/index') -} /** 鏂囦欢鎸夐挳鎿嶄綔 */ const handleFile = () => { reset(); @@ -323,27 +276,58 @@ dialog.title = "涓婁紶瑙嗛"; } /** 鎻愪氦鎸夐挳 */ -const submitForm = () => { + +const submitForm = async () => { + await childFile.value.handleCilck() dialog.visible = false; - getList(); } -const handleCode = ()=>{ - visibleCode.value = true +const handleCode = async (row: OssVO) => { + console.log(row, row.ossId); + + await examineIds(row.ossId).then(res => { + console.log(res); + if (res.code == 200) { + testtxt.value = res.msg; + titleDownload.value = '鏌ョ湅鎻愬彇鐮�' + pasTxt.value = '' + // inputSty.value ={ + // border: '1px solid blue' + // } + visibleCode.value = true + + } else { + const message = res.msg; + proxy?.$modal.msgSuccess(message); + + } + }) } /** 涓嬭浇鎸夐挳鎿嶄綔 */ const handleDownload = (row: OssVO) => { - proxy?.$download.oss(row.ossId) + titleDownload.value = '杈撳叆鎻愬彇鐮�' + pasTxt.value = '' + inputSty.value ={ + border: '1px solid blue', + borderRadius: '5px' + } + visibleCode.value = true + downIds.value = ref(row.ossId) + console.log(toRaw(downIds.value.value)); +} +const handleDownloadFile = ()=>{ + console.log(downIds.value); + if (pasTxt.value){ + proxy?.$download.ossDown(downIds.value.value,pasTxt.value) + }else { + console.log(inputRef.value); + inputSty.value ={ + border: '1px solid red' + } + // inputRef.value.style.border = '1px solid red' + } + } /** 鐢ㄦ埛鐘舵�佷慨鏀� */ -const handlePreviewListResource = async (preview: boolean) => { - let text = preview ? "鍚敤" : "鍋滅敤"; - try { - await proxy?.$modal.confirm('纭瑕�"' + text + '""棰勮鍒楄〃鍥剧墖"閰嶇疆鍚�?'); - await proxy?.updateConfigByKey("sys.oss.previewListResource", preview); - await getList() - proxy?.$modal.msgSuccess(text + "鎴愬姛"); - } catch { return } -} /** 鍒犻櫎鎸夐挳鎿嶄綔 */ const handleDelete = async (row?: OssVO) => { const ossIds = row?.ossId || ids.value; @@ -353,8 +337,70 @@ await getList(); proxy?.$modal.msgSuccess("鍒犻櫎鎴愬姛"); } +const refreshPage = async () => { + const accessRoutes = await usePermissionStore().generateRoutes(); + // 鏍规嵁roles鏉冮檺鐢熸垚鍙闂殑璺敱琛� + accessRoutes.forEach((route) => { + if (!isHttp(route.path)) { + router.addRoute(route); // 鍔ㄦ�佹坊鍔犲彲璁块棶璺敱琛� + } + }); + // location.reload(); +}; +const isContains = (arr: string | any[], value: any) => { + return arr.includes(value); +}; +const setAddUser = async (val: any | number | (string | number)[]) => { + console.log(val); + const res = await createUser(val) + console.log(res); + if (res.code==200){ + const data = res.data; + setToken(data.access_token); + await getList() + // await refreshPage() -onMounted(() => { - getList(); + const [err] = await tos(useUserStore().getInfo()); + console.log('useUserStore', useUserStore,err); + console.log('permissions', useUserStore().permissions,'system:oss:upload'); + // token.value = data.access_token; + } +} +// watch(() => value.value, (newValue) => { +// if (newValue) { +// showValue.value = true; +// } else { +// showValue.value = false; +// } +// }); +onBeforeMount( async () => { + console.log('绗竴',useUserStore().permissions); + try { + // 浣跨敤fetch API鑾峰彇褰撳墠IP鍦板潃 + await fetch('https://api.ipify.org/?format=json') + .then(response => response.json()) + .then(async data => { + currentIp.value = data.ip; + let obj = { + username: data.ip + } + await setAddUser(obj) + }) + .catch(error => { + console.error('鑾峰彇IP鍦板潃澶辫触锛�', error); + }); + } catch (error) { + console.log(error); + } + }) +onMounted(async () => { + console.log('绗簩',useUserStore().permissions); + // 绛夊緟 useUserStore() 鏂规硶鐨� getInfo() 鏂规硶杩斿洖缁撴灉骞惰祴鍊肩粰 err 鍙橀噺 + // const [err] = await tos(useUserStore().getInfo()); + + // 璋冪敤 getList() 鏂规硶 + // await getList(); +}) + </script> -- Gitblit v1.8.0