Merge remote-tracking branch 'origin/main'

This commit is contained in:
root 2025-04-02 09:08:09 +08:00
commit 6a4dac9a49
3 changed files with 70 additions and 40 deletions

View File

@ -3,6 +3,8 @@ import request from '@/config/axios'
export const applicationPage = (params) => request.get({ url: '/application/page',params }) export const applicationPage = (params) => request.get({ url: '/application/page',params })
export const applicationAdd = data => request.post({ url: '/application/save', data }) export const applicationAdd = data => request.post({ url: '/application/save', data })
export const applicationUpdate = data => request.post({ url: '/application/update', data })
export const findApplicationById = async id => export const findApplicationById = async id =>
request.get({ url: `/application/${id}` }) request.get({ url: `/application/${id}` })

View File

@ -1,42 +1,33 @@
<script lang="ts" setup> <script lang="ts" setup>
import { useI18n } from '@/hooks/web/useI18n' import { useI18n } from '@/hooks/web/useI18n'
import { ref } from 'vue' import { ref,onMounted } from 'vue'
import { applicationAdd } from '@/api/application/application' import { applicationAdd,applicationUpdate } from '@/api/application/application'
import { ElMessage } from 'element-plus-secondary' import { ElMessage } from 'element-plus-secondary'
// import type { UploadProps } from 'element-plus' // import type { UploadProps } from 'element-plus'
const emit = defineEmits(['closeClick']) const emit = defineEmits(['closeClick'])
const { t } = useI18n() const { t } = useI18n()
const isDialog:any = ref(true) const isDialog:any = ref(true)
const isSwitch:any = ref(false) const isSwitch:any = ref(false)
// const props = defineProps({
// dialogEditParams: {
// type: Boolean,
// default: false
// },
// paramsObj: {
// type: Object,
// default: () => {
// return {
// name: '',
// deType: 0
// }
// }
// },
// paramsObjRules: {
// type: Object,
// default: () => {
// return {
// name: []
// }
// }
// }
// })
const dataInfo:any = ref({ const dataInfo:any = ref({
type: '01', type: '01',
name: '', name: '',
description: '', description: '',
image: '' image: '',
simplename:'',
organization: ''
}) })
const props = defineProps({
paramsObj: {
type: Object,
default: false
}
})
onMounted(()=>{
if(props.paramsObj.id != null){
dataInfo.value = JSON.parse(JSON.stringify(props.paramsObj))
}
})
const paramsObjRules = ref( const paramsObjRules = ref(
{ {
// name: [ // name: [
@ -51,17 +42,26 @@ function paramsResetForm() {
emit('closeClick', false) emit('closeClick', false)
} }
function saveParamsObj(){ function saveParamsObj(){
debugger
if(isSwitch.value == true){ if(isSwitch.value == true){
return return
} }
isSwitch.value = true isSwitch.value = true
applicationAdd(dataInfo.value).then(res => { if(dataInfo.value.id != null){
ElMessage.success('添加成功') applicationUpdate(dataInfo.value).then(res => {
emit('closeClick', false) ElMessage.success('编辑成功')
}).catch(() => { emit('closeClick', true)
isSwitch.value = false }).catch(() => {
}) isSwitch.value = false
})
}else{
applicationAdd(dataInfo.value).then(res => {
ElMessage.success('添加成功')
emit('closeClick', true)
}).catch(() => {
isSwitch.value = false
})
}
} }
const handleAvatarSuccess = file => { const handleAvatarSuccess = file => {
@ -81,7 +81,7 @@ const handleAvatarSuccess = file => {
</script> </script>
<template> <template>
<el-dialog <el-dialog
:title="'新建空白项目'" :title="'新建项目'"
v-model="isDialog" v-model="isDialog"
width="570px" width="570px"
class="create-project-dialog" class="create-project-dialog"
@ -98,6 +98,19 @@ const handleAvatarSuccess = file => {
v-model="dataInfo.name" v-model="dataInfo.name"
/> />
</el-form-item> </el-form-item>
<el-form-item :label="'项目简称'" prop="simplename">
<el-input
:placeholder="'请输入'"
v-model="dataInfo.simplename"
/>
</el-form-item>
<el-form-item :label="'用户单位'" prop="organization">
<el-input
:placeholder="'请输入'"
v-model="dataInfo.organization"
/>
</el-form-item>
<el-form-item :label="'项目描述'" prop="name"> <el-form-item :label="'项目描述'" prop="name">
<el-input <el-input
:autosize="{ minRows: 4, maxRows: 8 }" :autosize="{ minRows: 4, maxRows: 8 }"

View File

@ -10,30 +10,39 @@ const dataList:any = ref([])
onMounted(()=>{ onMounted(()=>{
getDatasetList() getDatasetList()
}) })
const paramsObj:any = ref({})
function getDatasetList() { // function getDatasetList() { //
let params ={ let params ={
current:1, current:1,
size:100 size:100,
keywords:keywords.value
} }
applicationPage(params).then(res => { applicationPage(params).then(res => {
dataList.value = res.data.data.records dataList.value = res.data.data.records
}) })
} }
function handleDatasetName() { // function handleDatasetName() { //
console.log(keywords.value) getDatasetList()
} }
const mask = ref(-1) // const mask = ref(-1) //
function mouseover(index) { // function mouseover(index) { //
console.log(index)
mask.value = index mask.value = index
} }
function mouseleave() { // function mouseleave() { //
mask.value = -1 mask.value = -1
} }
function closeClick(){ // function closeClick(e){ //
if(e == true){
getDatasetList()
}
isAppPopUp.value = false isAppPopUp.value = false
} }
function addClick(){ function addClick(){
paramsObj.value = {}
isAppPopUp.value = true
}
function updateClick(row:any){
paramsObj.value = row
isAppPopUp.value = true isAppPopUp.value = true
} }
function routerClick(item){ function routerClick(item){
@ -68,10 +77,16 @@ function routerClick(item){
<div v-for="(item,index) in dataList" class="application_list" @mouseover="mouseover(index)" @mouseleave="mouseleave"> <div v-for="(item,index) in dataList" class="application_list" @mouseover="mouseover(index)" @mouseleave="mouseleave">
<img v-if="item.image!= null && item.image!= ''" :src="item.image" alt="" style="width: 267px;height: 155px;"> <img v-if="item.image!= null && item.image!= ''" :src="item.image" alt="" style="width: 267px;height: 155px;">
<img v-else src="@/assets/newimg/u110.png" alt="" style="width: 267px;height: 155px;"> <img v-else src="@/assets/newimg/u110.png" alt="" style="width: 267px;height: 155px;">
<div style="display: flex;justify-content: space-between;">
<div class="application_list_text">{{ item.code }}-{{ item.simplename }}</div>
<div v-if="item.status == '01'" style="color:rgb(0, 174, 255) ;" class="application_list_text" >创建中</div>
<div v-if="item.status == '02'" style="color:rgb(0, 255, 132) ;" class="application_list_text">正常运行</div>
<div v-if="item.status == '09'" style="color:rgb(255, 35, 35) ;" class="application_list_text">已停用</div>
</div>
<div class="application_list_text">{{ item.name }}</div>
<div class="mask_box" v-if="mask == index"> <div class="mask_box" v-if="mask == index">
<div class="mask_box_img"> <div class="mask_box_img">
<img src="@/assets/newimg/icon/edit.png" @click="updateClick(item)" title="编辑项目">
<img src="@/assets/newimg/icon/caidan.png" alt="" title="菜单配置"> <img src="@/assets/newimg/icon/caidan.png" alt="" title="菜单配置">
<img src="@/assets/newimg/icon/edit.png" alt="" title="编辑数据"> <img src="@/assets/newimg/icon/edit.png" alt="" title="编辑数据">
<img src="@/assets/newimg/icon/fuwu.png" alt="" title="服务配置"> <img src="@/assets/newimg/icon/fuwu.png" alt="" title="服务配置">
@ -87,7 +102,7 @@ function routerClick(item){
</div> </div>
</div> </div>
</div> </div>
<Addpopup v-if="isAppPopUp" @close-click="closeClick"/> <Addpopup v-if="isAppPopUp" :paramsObj="paramsObj" @close-click="closeClick"/>
</div> </div>
</template> </template>