Compare commits
8 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 7f779e021d | |||
| 32a7e34e64 | |||
| f1cdf878ab | |||
| 4c0f6fb246 | |||
| 3d7f1bbe7e | |||
| 4cbb38b339 | |||
| 8697bc9bcd | |||
| 6d3448e542 |
@@ -17,8 +17,8 @@ VITE_API_STATIC_FILE=http://192.168.65.161:3000/static
|
|||||||
VITE_API_IMAGE_PREVIEW_URL=http://192.168.65.161:3000/imagePreview
|
VITE_API_IMAGE_PREVIEW_URL=http://192.168.65.161:3000/imagePreview
|
||||||
# 文件预览地址
|
# 文件预览地址
|
||||||
VITE_API_FILE_PREVIEW_URL=http://192.168.65.161:3000/preview/onlinePreview
|
VITE_API_FILE_PREVIEW_URL=http://192.168.65.161:3000/preview/onlinePreview
|
||||||
# 文件下载地址(暂未使用)
|
# 文件下载地址
|
||||||
VITE_API_FILE_URL=http://192.168.65.161:7104
|
VITE_API_DOWNLOAD_URL=http://192.168.65.161:9000
|
||||||
# onlyOffice服务
|
# onlyOffice服务
|
||||||
VITE_API_ONLYOFFICE_URL=http://192.168.65.161:18888
|
VITE_API_ONLYOFFICE_URL=http://192.168.65.161:18888
|
||||||
# onlyOffice回调服务
|
# onlyOffice回调服务
|
||||||
|
|||||||
40
.env.eontec
Normal file
40
.env.eontec
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
# 测试环境
|
||||||
|
NODE_ENV=test
|
||||||
|
VITE_APP_ENV=test
|
||||||
|
# 租户
|
||||||
|
VITE_API_TENANT_NAME = eontec
|
||||||
|
# http请求的baseUrl,/api为代理字段
|
||||||
|
VITE_API_BASE_URL=/api/simulation
|
||||||
|
# 本地环境http地址,线上通过nginx转发/api到指定服务地址
|
||||||
|
VITE_API_HTTP_URL=http://192.168.65.161:7100
|
||||||
|
# ws请求的baseUrl,/wsApi为代理字段
|
||||||
|
VITE_API_WS_BASE_URL=/wsApi/simulation
|
||||||
|
# 本地环境ws地址,线上通过nginx转发/wsApi到指定服务地址
|
||||||
|
VITE_API_WS_URL=ws://192.168.65.161:7100
|
||||||
|
# 静态资源/usr/local/nginx/html/static
|
||||||
|
VITE_API_STATIC_FILE=http://192.168.65.161:3000/static
|
||||||
|
# 图片预览地址
|
||||||
|
VITE_API_IMAGE_PREVIEW_URL=http://cidweb.eon.com.cn:3000/imagePreview
|
||||||
|
# 文件预览地址
|
||||||
|
VITE_API_FILE_PREVIEW_URL=http://cidweb.eon.com.cn:3000/preview/onlinePreview
|
||||||
|
# 文件下载地址
|
||||||
|
VITE_API_DOWNLOAD_URL=http://cidweb.eon.com.cn:3000
|
||||||
|
# onlyOffice服务
|
||||||
|
VITE_API_ONLYOFFICE_URL=http://192.168.65.161:18888
|
||||||
|
# onlyOffice回调服务
|
||||||
|
VITE_API_ONLYOFFICE_CALLBACK=http://192.168.65.161:3000/api/simulation/data/data/onlyOfficeCallback
|
||||||
|
# 基线地址,用于onlyOffice预览
|
||||||
|
VITE_API_SPDM_URL=http://192.168.65.161:3000/spdm
|
||||||
|
# CID地址
|
||||||
|
VITE_API_CID_URL=http://192.168.65.161:3001
|
||||||
|
|
||||||
|
VITE_API_PREFIX_APPROVE=/approve/
|
||||||
|
VITE_API_PREFIX_CAPABILITY=/capability/
|
||||||
|
VITE_API_PREFIX_DATA=/data/
|
||||||
|
VITE_API_PREFIX_PBS=/pbs/
|
||||||
|
VITE_API_PREFIX_PERFORMANCE=/performance/
|
||||||
|
VITE_API_PREFIX_PROJECT=/project/
|
||||||
|
VITE_API_PREFIX_SYSTEM=/system/
|
||||||
|
VITE_API_PREFIX_TASK=/task/
|
||||||
|
VITE_API_PREFIX_APPLICATION=/application/
|
||||||
|
VITE_API_PREFIX_FLOWABLE=/flowable/
|
||||||
@@ -17,8 +17,8 @@ VITE_API_STATIC_FILE=http://192.168.30.147:7115/static
|
|||||||
VITE_API_IMAGE_PREVIEW_URL=http://192.168.30.147:7115/imagePreview
|
VITE_API_IMAGE_PREVIEW_URL=http://192.168.30.147:7115/imagePreview
|
||||||
# 文件预览地址
|
# 文件预览地址
|
||||||
VITE_API_FILE_PREVIEW_URL=http://192.168.30.147:7115/preview/onlinePreview
|
VITE_API_FILE_PREVIEW_URL=http://192.168.30.147:7115/preview/onlinePreview
|
||||||
# 文件下载地址(暂未使用)
|
# 文件下载地址
|
||||||
VITE_API_FILE_URL=http://192.168.30.148:7104
|
VITE_API_DOWNLOAD_URL=http://192.168.30.146:9000
|
||||||
# onlyOffice服务
|
# onlyOffice服务
|
||||||
VITE_API_ONLYOFFICE_URL=http://192.168.30.148:18888
|
VITE_API_ONLYOFFICE_URL=http://192.168.30.148:18888
|
||||||
# onlyOffice回调服务
|
# onlyOffice回调服务
|
||||||
|
|||||||
@@ -17,8 +17,8 @@ VITE_API_STATIC_FILE=http://192.168.190.161:3000/static
|
|||||||
VITE_API_IMAGE_PREVIEW_URL=http://192.168.190.161:3000/imagePreview
|
VITE_API_IMAGE_PREVIEW_URL=http://192.168.190.161:3000/imagePreview
|
||||||
# 文件预览地址
|
# 文件预览地址
|
||||||
VITE_API_FILE_PREVIEW_URL=http://192.168.190.161:3000/preview/onlinePreview
|
VITE_API_FILE_PREVIEW_URL=http://192.168.190.161:3000/preview/onlinePreview
|
||||||
# 文件下载地址(暂未使用)
|
# 文件下载地址
|
||||||
VITE_API_FILE_URL=http://192.168.190.161:7104
|
VITE_API_DOWNLOAD_URL=http://192.168.190.161:9000
|
||||||
# onlyOffice服务
|
# onlyOffice服务
|
||||||
VITE_API_ONLYOFFICE_URL=http://192.168.65.161:18888
|
VITE_API_ONLYOFFICE_URL=http://192.168.65.161:18888
|
||||||
# onlyOffice回调服务
|
# onlyOffice回调服务
|
||||||
|
|||||||
@@ -17,8 +17,8 @@ VITE_API_STATIC_FILE=http://192.168.65.161:3000/static
|
|||||||
VITE_API_IMAGE_PREVIEW_URL=http://192.168.65.161:3000/imagePreview
|
VITE_API_IMAGE_PREVIEW_URL=http://192.168.65.161:3000/imagePreview
|
||||||
# 文件预览地址
|
# 文件预览地址
|
||||||
VITE_API_FILE_PREVIEW_URL=http://192.168.65.161:3000/preview/onlinePreview
|
VITE_API_FILE_PREVIEW_URL=http://192.168.65.161:3000/preview/onlinePreview
|
||||||
# 文件下载地址(暂未使用)
|
# 文件下载地址
|
||||||
VITE_API_FILE_URL=http://192.168.65.161:7104
|
VITE_API_DOWNLOAD_URL=http://192.168.65.161:9000
|
||||||
# onlyOffice服务
|
# onlyOffice服务
|
||||||
VITE_API_ONLYOFFICE_URL=http://192.168.65.161:18888
|
VITE_API_ONLYOFFICE_URL=http://192.168.65.161:18888
|
||||||
# onlyOffice回调服务
|
# onlyOffice回调服务
|
||||||
|
|||||||
@@ -10,6 +10,7 @@
|
|||||||
"dev": "vite --mode development",
|
"dev": "vite --mode development",
|
||||||
"build:dev": "vite build --mode development",
|
"build:dev": "vite build --mode development",
|
||||||
"build:lyric": "vite build --mode lyric",
|
"build:lyric": "vite build --mode lyric",
|
||||||
|
"build:eontec": "vite build --mode eontec",
|
||||||
"build:test": "vite build --mode test",
|
"build:test": "vite build --mode test",
|
||||||
"build:prod": "vite build --mode production",
|
"build:prod": "vite build --mode production",
|
||||||
"build": "run-p type-check \"build-only {@}\" --",
|
"build": "run-p type-check \"build-only {@}\" --",
|
||||||
|
|||||||
@@ -105,7 +105,7 @@ const initFun = () => {
|
|||||||
modeType.value = 'csv';
|
modeType.value = 'csv';
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (enableConfigByTenant([TENANT_ENUM.LYRIC])) {
|
if (enableConfigByTenant([TENANT_ENUM.LYRIC, TENANT_ENUM.EONTEC])) {
|
||||||
modeType.value = 'kkFile';
|
modeType.value = 'kkFile';
|
||||||
diaVisible.value = true;
|
diaVisible.value = true;
|
||||||
return;
|
return;
|
||||||
@@ -134,11 +134,14 @@ const getCsvDataFun = () => {
|
|||||||
current: 1,
|
current: 1,
|
||||||
size: 1,
|
size: 1,
|
||||||
};
|
};
|
||||||
listSimulationKeyResultApi(params).then((res: any) => {
|
listSimulationKeyResultApi(params)
|
||||||
|
.then((res: any) => {
|
||||||
if (res.code === 200) {
|
if (res.code === 200) {
|
||||||
csvData.value = res.data?.data[0] || {};
|
csvData.value = res.data?.data[0] || {};
|
||||||
diaVisible.value = true;
|
|
||||||
}
|
}
|
||||||
|
})
|
||||||
|
.finally(() => {
|
||||||
|
diaVisible.value = true;
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -146,12 +149,15 @@ const getOnlyOfficeFun = () => {
|
|||||||
const params = {
|
const params = {
|
||||||
fileId: props.fileId,
|
fileId: props.fileId,
|
||||||
};
|
};
|
||||||
downloadFileForEditApi(params).then((res: any) => {
|
downloadFileForEditApi(params)
|
||||||
|
.then((res: any) => {
|
||||||
if (res.code === 200) {
|
if (res.code === 200) {
|
||||||
fileData.value = JSON.stringify(res.data);
|
fileData.value = JSON.stringify(res.data);
|
||||||
fileKey.value = `${props.fileId}_${getUserId()}`;
|
fileKey.value = `${props.fileId}_${getUserId()}`;
|
||||||
diaVisible.value = true;
|
|
||||||
}
|
}
|
||||||
|
})
|
||||||
|
.finally(() => {
|
||||||
|
diaVisible.value = true;
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -606,7 +606,6 @@ defineExpose({
|
|||||||
setSearchParamsFun,
|
setSearchParamsFun,
|
||||||
setSearchParamByKeyFun,
|
setSearchParamByKeyFun,
|
||||||
setOptionsFun,
|
setOptionsFun,
|
||||||
getTableDataFun,
|
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|||||||
@@ -93,6 +93,7 @@ watch(
|
|||||||
expStatus: localDetail.value.expStatus ? '1' : '0',
|
expStatus: localDetail.value.expStatus ? '1' : '0',
|
||||||
eMemberList: getMemberListIds(localDetail.value.eMemberList),
|
eMemberList: getMemberListIds(localDetail.value.eMemberList),
|
||||||
pMemberList: getMemberListIds(localDetail.value.pMemberList),
|
pMemberList: getMemberListIds(localDetail.value.pMemberList),
|
||||||
|
planTime: [localDetail.value.beginTime, localDetail.value.endTime],
|
||||||
});
|
});
|
||||||
standard.value = localDetail.value.standard;
|
standard.value = localDetail.value.standard;
|
||||||
if (localDetail.value.flowTemplate) {
|
if (localDetail.value.flowTemplate) {
|
||||||
|
|||||||
@@ -20,16 +20,19 @@
|
|||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<el-dropdown class="options-dropdown" :teleported="false">
|
<el-dropdown
|
||||||
|
class="options-dropdown"
|
||||||
|
:class="{ 'is-visible': isDropdownVisible }"
|
||||||
|
@command="handleCommand"
|
||||||
|
@visible-change="handleVisibleChange"
|
||||||
|
>
|
||||||
<div class="options-btn" @click.stop>
|
<div class="options-btn" @click.stop>
|
||||||
<el-icon :size="18"><MoreFilled /></el-icon>
|
<el-icon :size="18"><MoreFilled /></el-icon>
|
||||||
</div>
|
</div>
|
||||||
<template #dropdown>
|
<template #dropdown>
|
||||||
<el-dropdown-menu @click.stop>
|
<el-dropdown-menu>
|
||||||
<el-dropdown-item v-for="(action, aIndex) in actionList" :key="aIndex">
|
<el-dropdown-item v-for="(action, aIndex) in actionList" :key="aIndex" :command="action">
|
||||||
<el-link :type="action.type" @click.stop="actionClickFun(action)">
|
<el-link :type="action.type">{{ action.title }}</el-link>
|
||||||
{{ action.title }}
|
|
||||||
</el-link>
|
|
||||||
</el-dropdown-item>
|
</el-dropdown-item>
|
||||||
</el-dropdown-menu>
|
</el-dropdown-menu>
|
||||||
</template>
|
</template>
|
||||||
@@ -38,7 +41,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { computed } from 'vue';
|
import { computed, ref } from 'vue';
|
||||||
import { MoreFilled } from '@element-plus/icons-vue';
|
import { MoreFilled } from '@element-plus/icons-vue';
|
||||||
import { useDict } from '@/utils/useDict';
|
import { useDict } from '@/utils/useDict';
|
||||||
import { PROJECT_EXE_STATUS_CODE } from '@/utils/enum/project';
|
import { PROJECT_EXE_STATUS_CODE } from '@/utils/enum/project';
|
||||||
@@ -79,8 +82,15 @@ const cardClickFun = () => {
|
|||||||
emit('cardClick', props.project);
|
emit('cardClick', props.project);
|
||||||
};
|
};
|
||||||
|
|
||||||
const actionClickFun = (action: any) => {
|
// const actionClickFun = (action: any) => {
|
||||||
emit('actionClick', props.project, action);
|
// emit('actionClick', props.project, action);
|
||||||
|
// };
|
||||||
|
const handleCommand = (command: any) => {
|
||||||
|
emit('actionClick', props.project, command);
|
||||||
|
};
|
||||||
|
const isDropdownVisible = ref(false);
|
||||||
|
const handleVisibleChange = (visible: boolean) => {
|
||||||
|
isDropdownVisible.value = visible;
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@@ -101,6 +111,10 @@ const actionClickFun = (action: any) => {
|
|||||||
transform: scale(1.1);
|
transform: scale(1.1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
&:hover .options-dropdown,
|
||||||
|
.options-dropdown.is-visible {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
.cover-img {
|
.cover-img {
|
||||||
transition: transform 0.6s cubic-bezier(0.165, 0.84, 0.44, 1);
|
transition: transform 0.6s cubic-bezier(0.165, 0.84, 0.44, 1);
|
||||||
|
|||||||
@@ -223,7 +223,7 @@ export const exportFile = (api: any, tableName: string, fileName: string, params
|
|||||||
export const downloadFileById = async (fileId: number) => {
|
export const downloadFileById = async (fileId: number) => {
|
||||||
// 1.点击事件下载
|
// 1.点击事件下载
|
||||||
// const link = document.createElement('a');
|
// const link = document.createElement('a');
|
||||||
// link.href = `${env.VITE_API_FILE_URL}/data/downloadFile?fileId=${fileId}`;
|
// link.href = `${env.VITE_API_DOWNLOAD_URL}/data/downloadFile?fileId=${fileId}`;
|
||||||
// document.body.appendChild(link);
|
// document.body.appendChild(link);
|
||||||
// link.click();
|
// link.click();
|
||||||
// document.body.removeChild(link);
|
// document.body.removeChild(link);
|
||||||
@@ -232,7 +232,8 @@ export const downloadFileById = async (fileId: number) => {
|
|||||||
// 3.浏览器下载
|
// 3.浏览器下载
|
||||||
getMinioPresignedUrlApi({ fileId }).then((res: any) => {
|
getMinioPresignedUrlApi({ fileId }).then((res: any) => {
|
||||||
if (res.code === 200) {
|
if (res.code === 200) {
|
||||||
const downloadUrl = res.data.minioDownloadUrl;
|
const { minioDownloadUrl } = res.data;
|
||||||
|
const downloadUrl = env.VITE_API_DOWNLOAD_URL + minioDownloadUrl.split(':9000')[1];
|
||||||
window.open(downloadUrl, '_blank');
|
window.open(downloadUrl, '_blank');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -979,7 +979,7 @@ const updatePerformanceFun = async (data: any) => {
|
|||||||
const res: any = await editPerformanceApi(data);
|
const res: any = await editPerformanceApi(data);
|
||||||
if (res && res.code === 200) {
|
if (res && res.code === 200) {
|
||||||
ElMessage.success('操作成功');
|
ElMessage.success('操作成功');
|
||||||
tableRef.value.getTableDataFun();
|
tableRef.value.resetFun();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -22,7 +22,13 @@
|
|||||||
<div class="select-content">
|
<div class="select-content">
|
||||||
<div class="select-content-head">
|
<div class="select-content-head">
|
||||||
<el-space>
|
<el-space>
|
||||||
<el-button type="primary" @click="addSelectLevelFun">添加层级</el-button>
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
@click="addSelectLevelFun"
|
||||||
|
:disabled="selectLevelFormData.selectLevelList.length >= 10"
|
||||||
|
>
|
||||||
|
添加层级
|
||||||
|
</el-button>
|
||||||
<el-button type="primary" @click="saveSelectLevelFun">保存</el-button>
|
<el-button type="primary" @click="saveSelectLevelFun">保存</el-button>
|
||||||
<el-button type="primary" @click="editFun">编辑</el-button>
|
<el-button type="primary" @click="editFun">编辑</el-button>
|
||||||
</el-space>
|
</el-space>
|
||||||
@@ -384,6 +390,7 @@ watch(
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
flex: 1;
|
flex: 1;
|
||||||
padding: var(--padding-normal) 0;
|
padding: var(--padding-normal) 0;
|
||||||
|
overflow-y: auto;
|
||||||
.select-level-box {
|
.select-level-box {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|||||||
@@ -755,6 +755,9 @@ const goDetailFun = (data: any) => {
|
|||||||
|
|
||||||
const mergeCurrentData = ref<any>({});
|
const mergeCurrentData = ref<any>({});
|
||||||
const choseNodeFun = (mergeData: any) => {
|
const choseNodeFun = (mergeData: any) => {
|
||||||
|
if (isSearching.value) {
|
||||||
|
isSearching.value = false;
|
||||||
|
}
|
||||||
mergeCurrentData.value = mergeData;
|
mergeCurrentData.value = mergeData;
|
||||||
chosenData.value = [];
|
chosenData.value = [];
|
||||||
let data: any = {};
|
let data: any = {};
|
||||||
|
|||||||
@@ -44,7 +44,7 @@
|
|||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref } from 'vue';
|
import { ref } from 'vue';
|
||||||
import BaseTable from '@/components/common/table/baseTable.vue';
|
// import BaseTable from '@/components/common/table/baseTable.vue';
|
||||||
import FileTable from '@/components/common/fileTable/index.vue';
|
import FileTable from '@/components/common/fileTable/index.vue';
|
||||||
import { formatFileSize } from '@/utils/file';
|
import { formatFileSize } from '@/utils/file';
|
||||||
import {
|
import {
|
||||||
@@ -108,7 +108,7 @@ const clickDeleteFun = () => {
|
|||||||
// 清空回收站
|
// 清空回收站
|
||||||
const deleteAllLoading = ref(false);
|
const deleteAllLoading = ref(false);
|
||||||
const clearAll = () => {
|
const clearAll = () => {
|
||||||
ElMessageBox.confirm('是否确认清空回收站?', '提示', {
|
ElMessageBox.confirm('该操作会删除回收站中所有文件,是否继续?', '提示', {
|
||||||
confirmButtonText: '确认',
|
confirmButtonText: '确认',
|
||||||
cancelButtonText: '取消',
|
cancelButtonText: '取消',
|
||||||
type: 'warning',
|
type: 'warning',
|
||||||
|
|||||||
@@ -1,13 +1,18 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="project-card" @click="cardClickFun">
|
<div class="project-card" @click="cardClickFun">
|
||||||
<el-dropdown class="options-dropdown" :teleported="false">
|
<el-dropdown
|
||||||
|
class="options-dropdown"
|
||||||
|
:class="{ 'is-visible': isDropdownVisible }"
|
||||||
|
@command="handleCommand"
|
||||||
|
@visible-change="handleVisibleChange"
|
||||||
|
>
|
||||||
<div class="options-btn" @click.stop>
|
<div class="options-btn" @click.stop>
|
||||||
<el-icon :size="18"><MoreFilled /></el-icon>
|
<el-icon :size="18"><MoreFilled /></el-icon>
|
||||||
</div>
|
</div>
|
||||||
<template #dropdown>
|
<template #dropdown>
|
||||||
<el-dropdown-menu>
|
<el-dropdown-menu>
|
||||||
<el-dropdown-item v-for="(action, aIndex) in actionList" :key="aIndex">
|
<el-dropdown-item v-for="(action, aIndex) in actionList" :key="aIndex" :command="action">
|
||||||
<el-link :type="action.type" @click.stop="actionClickFun(action)">
|
<el-link :type="action.type">
|
||||||
{{ action.title }}
|
{{ action.title }}
|
||||||
</el-link>
|
</el-link>
|
||||||
</el-dropdown-item>
|
</el-dropdown-item>
|
||||||
@@ -15,7 +20,11 @@
|
|||||||
</template>
|
</template>
|
||||||
</el-dropdown>
|
</el-dropdown>
|
||||||
|
|
||||||
<img class="gl-pointer-class cover-img" :src="coverImgMap[project.detailImgUrl ? 'custom' : (index % 2 !== 0 ? 'blue' : 'green')]" alt="" />
|
<img
|
||||||
|
class="gl-pointer-class cover-img"
|
||||||
|
:src="coverImgMap[project.detailImgUrl ? 'custom' : index % 2 !== 0 ? 'blue' : 'green']"
|
||||||
|
alt=""
|
||||||
|
/>
|
||||||
|
|
||||||
<div class="bottom-box">
|
<div class="bottom-box">
|
||||||
<span class="gl-text-ellipsis gl-pointer-class" :title="project.nodeName">
|
<span class="gl-text-ellipsis gl-pointer-class" :title="project.nodeName">
|
||||||
@@ -29,7 +38,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { computed } from 'vue';
|
import { computed, ref } from 'vue';
|
||||||
import { MoreFilled } from '@element-plus/icons-vue';
|
import { MoreFilled } from '@element-plus/icons-vue';
|
||||||
import { useDict } from '@/utils/useDict';
|
import { useDict } from '@/utils/useDict';
|
||||||
import { PROJECT_EXE_STATUS_CODE } from '@/utils/enum/project';
|
import { PROJECT_EXE_STATUS_CODE } from '@/utils/enum/project';
|
||||||
@@ -70,8 +79,15 @@ const cardClickFun = () => {
|
|||||||
emit('cardClick', props.project);
|
emit('cardClick', props.project);
|
||||||
};
|
};
|
||||||
|
|
||||||
const actionClickFun = (action: any) => {
|
// const actionClickFun = (action: any) => {
|
||||||
emit('actionClick', props.project, action);
|
// emit('actionClick', props.project, action);
|
||||||
|
// };
|
||||||
|
const handleCommand = (command: any) => {
|
||||||
|
emit('actionClick', props.project, command);
|
||||||
|
};
|
||||||
|
const isDropdownVisible = ref(false);
|
||||||
|
const handleVisibleChange = (visible: boolean) => {
|
||||||
|
isDropdownVisible.value = visible;
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@@ -80,5 +96,9 @@ const actionClickFun = (action: any) => {
|
|||||||
|
|
||||||
.project-card {
|
.project-card {
|
||||||
@extend .project-card-base;
|
@extend .project-card-base;
|
||||||
|
&:hover .options-dropdown,
|
||||||
|
.options-dropdown.is-visible {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
Reference in New Issue
Block a user