存储空间和项目管理,试验任务管理关联

This commit is contained in:
wangxk 2025-06-18 09:22:05 +08:00
parent 7bcfe180ad
commit f722ecea6e
2 changed files with 54 additions and 15 deletions

View File

@ -9,6 +9,7 @@ import { onMounted, ref } from "vue";
import { ElMessage, ElMessageBox } from 'element-plus' import { ElMessage, ElMessageBox } from 'element-plus'
import Page from '@/components/Pagination/page.vue' import Page from '@/components/Pagination/page.vue'
import { projectPage, addSdproject, updateSdproject, deleteSdprojectById, deleteSdprojectByIds } from "@/api/project"; import { projectPage, addSdproject, updateSdproject, deleteSdprojectById, deleteSdprojectByIds } from "@/api/project";
import { storagesBytype } from "@/api/storage";
import { getDict } from '@/api/dict' import { getDict } from '@/api/dict'
import { id } from "element-plus/es/locale"; import { id } from "element-plus/es/locale";
// //
@ -47,10 +48,14 @@ function getdata() {
} }
// //
const dictType = ref([]) const dictType = ref([])
const storagesarr = ref([])
function getDictOne() { function getDictOne() {
getDict({ dictcode: 'zxxmlx' }).then((res: any) => { getDict({ dictcode: 'zxxmlx' }).then((res: any) => {
dictType.value = res.data dictType.value = res.data
}) })
storagesBytype({type:'local'}).then((res: any) => {
storagesarr.value = res.data
})
} }
// //
const title = ref("") const title = ref("")
@ -67,7 +72,7 @@ function addproject() {
projectProps: "",// projectProps: "",//
projectTime: "",// projectTime: "",//
projectType: ""// projectType: ""//
, localStorageId: "1" , localStorageId: ""
} }
formitemarr.value.length = 0 formitemarr.value.length = 0
} }
@ -155,7 +160,7 @@ const projectForme: any = ref({
projectProps: "",// projectProps: "",//
projectTime: "",// projectTime: "",//
projectType: ""// projectType: ""//
, localStorageId: "1" , localStorageId: ""
}) })
// //
async function submitForm(formEl: any) { async function submitForm(formEl: any) {
@ -192,9 +197,10 @@ async function submitForm(formEl: any) {
// //
const moderules = ref({ const moderules = ref({
projectCode: [{ required: true, message: "请输入项目编号", trigger: "blur" }], projectCode: [{ required: true, message: "请输入项目编号", trigger: "blur" }],
projectType: [{ required: true, message: "请输入项目类型", trigger: "blur" }], projectType: [{ required: true, message: "请选择项目类型", trigger: "change" }],
projectName: [{ required: true, message: "请输入项目名称", trigger: "blur" }], projectName: [{ required: true, message: "请输入项目名称", trigger: "blur" }],
projectTime: [{ type: 'date', required: true, message: "请选择项目启动时间", trigger: "change" }], projectTime: [{ type: 'date', required: true, message: "请选择项目启动时间", trigger: "change" }],
localStorageId:[{ required: true, message: "请选择存储空间", trigger: "change" }]
}); });
onMounted(() => { onMounted(() => {
getdata() getdata()
@ -378,6 +384,12 @@ function attributeclose(){
format="YYYY-MM-DD HH:mm:ss" style="width:100%;" value-format="YYYY-MM-DD HH:mm:ss" /> format="YYYY-MM-DD HH:mm:ss" style="width:100%;" value-format="YYYY-MM-DD HH:mm:ss" />
</el-form-item> </el-form-item>
</div> </div>
<el-form-item label="存储空间绑定" prop="localStorageId" >
<el-select v-model="projectForme.localStorageId" clearable placeholder=" " :disabled="projectForme.id">
<el-option v-for="item in storagesarr" :key="item.id" :label="item.name"
:value="item.id" />
</el-select>
</el-form-item>
<el-form-item label=" 项目描述"> <el-form-item label=" 项目描述">
<el-input v-model="projectForme.description" :rows="25" type="textarea" show-word-limit /> <el-input v-model="projectForme.description" :rows="25" type="textarea" show-word-limit />
</el-form-item> </el-form-item>

View File

@ -9,6 +9,7 @@ import { onMounted, ref } from "vue";
import { ElMessage, ElMessageBox } from 'element-plus' import { ElMessage, ElMessageBox } from 'element-plus'
import Page from '@/components/Pagination/page.vue' import Page from '@/components/Pagination/page.vue'
import { tstaskPage, addtsTask, updatetsTask, deleteTsTaskById, deleteTsTaskByIds, confirmDeleteTask } from "@/api/testtask"; import { tstaskPage, addtsTask, updatetsTask, deleteTsTaskById, deleteTsTaskByIds, confirmDeleteTask } from "@/api/testtask";
import { storagesBytype } from "@/api/storage";
import { getDict } from '@/api/dict' import { getDict } from '@/api/dict'
// //
const tableData: any = ref([]); const tableData: any = ref([]);
@ -93,8 +94,8 @@ function addproject() {
testDescribe: "",// testDescribe: "",//
sensorDescribe: "",// sensorDescribe: "",//
taskProps: "",// taskProps: "",//
localStorageId: '1', localStorageId: '',
backupStorageId: '2' backupStorageId: ''
} }
formitemarr.value.length = 0 formitemarr.value.length = 0
} }
@ -200,8 +201,8 @@ const projectForme: any = ref({
testDescribe: "",// testDescribe: "",//
sensorDescribe: "",// sensorDescribe: "",//
taskProps: "",// taskProps: "",//
localStorageId: '1', localStorageId: '',
backupStorageId: '2' backupStorageId: ''
}) })
// //
async function submitForm(formEl: any) { async function submitForm(formEl: any) {
@ -246,6 +247,8 @@ const moderules = ref({
taskType: [{ required: true, message: "请选择任务类型", trigger: "change" }], taskType: [{ required: true, message: "请选择任务类型", trigger: "change" }],
taskDate: [{ required: true, message: "请选择任务时间", trigger: "change" }], taskDate: [{ required: true, message: "请选择任务时间", trigger: "change" }],
taskPlace: [{ required: true, message: "请输入任务地点", trigger: "blur" }], taskPlace: [{ required: true, message: "请输入任务地点", trigger: "blur" }],
localStorageId: [{ required: true, message: "请选择本地存储空间", trigger: "change" }],
backupStorageId: [{ required: true, message: "请选择minio存储空间", trigger: "change" }],
}); });
onMounted(() => { onMounted(() => {
getdata() getdata()
@ -253,10 +256,18 @@ onMounted(() => {
}); });
// //
const dictType = ref([]) const dictType = ref([])
const localarr = ref([])
const minioarr = ref([])
function getDictOne() { function getDictOne() {
getDict({ dictcode: 'taskType' }).then((res: any) => { getDict({ dictcode: 'taskType' }).then((res: any) => {
dictType.value = res.data dictType.value = res.data
}) })
storagesBytype({ type: 'local' }).then((res: any) => {
localarr.value = res.data
})
storagesBytype({ type: 'minio' }).then((res: any) => {
minioarr.value = res.data
})
} }
// //
function typeName(arr: any, itemCode: any) { function typeName(arr: any, itemCode: any) {
@ -456,7 +467,7 @@ function attributeclose() {
</div> </div>
<div style="width: 100%;display: flex;justify-content: space-between;align-items: center;"> <div style="width: 100%;display: flex;justify-content: space-between;align-items: center;">
<el-form-item label="任务类型" prop="taskType" style="width: 50%;"> <el-form-item label="任务类型" prop="taskType" style="width: 50%;">
<el-select v-model="projectForme.taskType" clearable placeholder=" " @change="getdata()"> <el-select v-model="projectForme.taskType" clearable placeholder=" ">
<el-option v-for="item in dictType" :key="item.itemcode" :label="item.dictname" <el-option v-for="item in dictType" :key="item.itemcode" :label="item.dictname"
:value="item.itemcode" /> :value="item.itemcode" />
</el-select> </el-select>
@ -467,6 +478,22 @@ function attributeclose() {
value-format="YYYY-MM-DD" /> value-format="YYYY-MM-DD" />
</el-form-item> </el-form-item>
</div> </div>
<div style="width: 100%;display: flex;justify-content: space-between;align-items: center;">
<el-form-item label="本地存储空间" prop="localStorageId" style="width: 50%;">
<el-select v-model="projectForme.localStorageId" clearable placeholder=" "
:disabled="projectForme.id">
<el-option v-for="item in localarr" :key="item.id" :label="item.name"
:value="item.id" />
</el-select>
</el-form-item>
<el-form-item label="minio存储空间" prop="backupStorageId" style="width: 50%;margin-left: 15px;">
<el-select v-model="projectForme.backupStorageId" clearable placeholder=" "
:disabled="projectForme.id">
<el-option v-for="item in minioarr" :key="item.id" :label="item.name"
:value="item.id" />
</el-select>
</el-form-item>
</div>
<div style="width: 100%;display: flex;justify-content: space-between;align-items: center;"> <div style="width: 100%;display: flex;justify-content: space-between;align-items: center;">
<el-form-item label="任务地点" prop="taskPlace" style="width: 50%;"> <el-form-item label="任务地点" prop="taskPlace" style="width: 50%;">
<el-input v-model="projectForme.taskPlace" maxlength="500" show-word-limit /> <el-input v-model="projectForme.taskPlace" maxlength="500" show-word-limit />
@ -502,16 +529,16 @@ function attributeclose() {
<el-button type="primary" @click="dellable(index)">删除</el-button> <el-button type="primary" @click="dellable(index)">删除</el-button>
</div> </div>
</el-form-item> </el-form-item>
</el-scrollbar> </el-scrollbar>
<el-form-item> <el-form-item>
<div style="width: 100%;display: flex;justify-content: end;"> <div style="width: 100%;display: flex;justify-content: end;">
<el-button type="primary" @click="addformItem">添加属性</el-button> <el-button type="primary" @click="addformItem">添加属性</el-button>
<el-button type="primary" @click="submitForm(ruleFormRef)">确定</el-button> <el-button type="primary" @click="submitForm(ruleFormRef)">确定</el-button>
<el-button @click="handleClose(ruleFormRef)">取消</el-button> <el-button @click="handleClose(ruleFormRef)">取消</el-button>
</div> </div>
</el-form-item> </el-form-item>
</el-form> </el-form>
</el-dialog> </el-dialog>