提交代码

main
姜玉琦 2024-07-23 16:29:35 +08:00
parent e3c367de3f
commit 97e9012556
7 changed files with 120 additions and 55 deletions

View File

@ -1,3 +1,8 @@
# 代理前缀 # 代理前缀
VITE_APP_BASE_API = '/mk/ai/api/' # VITE_APP_BASE_API = '/mk/ai/api/'
VITE_APP_BASE_API = '/api'
# 线上接口地址
# VITE_APP_API_URL = http://10.5.1.137:8800

View File

@ -1,57 +1,65 @@
import request from "@/utils/request"; import request from "@/utils/request";
//获取算子列表 //获取算子列表
const list=(data)=>{ const list = (data) => {
return request({ return request({
url: `/operators`, url: `/operators`,
method: "get", method: "get",
params:data params: data
}); });
} }
//新增算子 //新增算子
const add=(data)=>{ const add = (data) => {
return request({ return request({
url: `/operators`, url: `/operators`,
method: "post", method: "post",
data:data data: data
}); });
} }
//获取算子程序列表 //获取算子程序列表
const getPrograms=(data)=>{ const getPrograms = (data) => {
return request({ return request({
url: `/operators/programs`, url: `/operators/programs`,
method: "get", method: "get",
params:data params: data
}); });
} }
//新增算子程序文件 //新增算子程序文件
const addPrograms=(data)=>{ const addPrograms = (data) => {
return request({ return request({
url: `/operators/programs`, url: `/operators/programs`,
method: "post", method: "post",
data:data data: data
}); });
} }
//删除算子程序文件 //删除算子程序文件
const deletePrograms=(id)=>{ const deletePrograms = (id) => {
return request({ return request({
url: `/operators/programs/${id}`, url: `/operators/programs/${id}`,
method: "delete" method: "delete"
}); });
} }
//删除算子 //删除算子
const deleteOperator=(id)=>{ const deleteOperator = (id) => {
return request({ return request({
url: `/operators/${id}`, url: `/operators/${id}`,
method: "delete" method: "delete"
}); });
} }
//获取算子详情 //获取算子详情
const findOne=(id)=>{ const findOne = (id) => {
return request({ return request({
url: `/operators/${id}`, url: `/operators/${id}`,
method: "get" method: "get"
}); });
} }
//获取算子详情
const uploadProgramsFile = (data) => {
return request({
url: `/operators/programs/upload`,
method: "post"
});
}
export default { export default {
list, list,
@ -60,5 +68,6 @@ export default {
addPrograms, addPrograms,
deletePrograms, deletePrograms,
deleteOperator, deleteOperator,
findOne findOne,
uploadProgramsFile
} }

View File

@ -34,17 +34,22 @@ service.interceptors.response.use(
) { ) {
return response; return response;
} }
// if(true){
if(true){ // return response;
return response; // }
}
const { code, data, msg } = response.data; const { code, data, msg } = response.data;
if (code === ResultEnum.SUCCESS) { if (code === ResultEnum.SUCCESS) {
return data; return response;
} }else if (code === ResultEnum.TOKEN_INVALID) {
ElMessage.warning("登录状态已过期,请重新登录");
ElMessage.error(msg || "系统出错"); const userStore = useUserStoreHook();
return Promise.reject(new Error(msg || "Error")); userStore.resetToken().then(() => {
location.href = '#/login';
});
}else{
ElMessage.error(msg || "系统出错");
return Promise.reject(new Error(msg || "Error"));
}
}, },
(error: any) => { (error: any) => {
// 异常处理 // 异常处理

View File

@ -52,7 +52,7 @@
<!-- 账号密码提示 --> <!-- 账号密码提示 -->
<div class="mt-10 text-sm"> <div class="mt-10 text-sm">
<span>{{ $t("login.username") }}: admin</span> <span>{{ $t("login.username") }}: admin</span>
<span class="ml-4"> {{ $t("login.password") }}: 123456</span> <span class="ml-4"> {{ $t("login.password") }}: 12345678</span>
</div> </div>
</el-form> </el-form>
</el-card> </el-card>
@ -159,7 +159,6 @@ function handleLogin() {
}, },
{} {}
); );
router.push({ path: redirect, query: otherQueryParams }); router.push({ path: redirect, query: otherQueryParams });
}) })
.catch((e) => { .catch((e) => {

View File

@ -10,7 +10,12 @@
<el-col :lg="12" :xs="24"> <el-col :lg="12" :xs="24">
<el-form ref="formRef" :model="formData" :rules="rules" label-width="80px"> <el-form ref="formRef" :model="formData" :rules="rules" label-width="80px">
<el-form-item label="算子名称" prop="operator_name"> <el-form-item label="算子名称" prop="operator_name">
<el-input v-model="formData.operator_name" placeholder="请输入算子名称" /> <el-input
v-model="formData.operator_name"
maxlength="64"
show-word-limit
placeholder="请输入算子名称"
/>
</el-form-item> </el-form-item>
<el-form-item label="算子类型" prop="oper_sub_type"> <el-form-item label="算子类型" prop="oper_sub_type">
<el-row style="width: 100%"> <el-row style="width: 100%">
@ -107,8 +112,8 @@
<script setup lang="ts"> <script setup lang="ts">
import ConstApi from "@/api/const"; import ConstApi from "@/api/const";
import { useUserStore } from "@/store";
import OperatorApi from "@/api/operator"; import OperatorApi from "@/api/operator";
const router = useRouter(); const router = useRouter();
const formRef = ref(ElForm); // const formRef = ref(ElForm); //
const loading = ref(false); // const loading = ref(false); //
@ -121,7 +126,6 @@ const uploadRef = ref<UploadInstance>();
const formData = reactive({ const formData = reactive({
status: 1, status: 1,
}); });
const userStore = useUserStore();
// //
let listOpt = reactive({ let listOpt = reactive({
@ -132,9 +136,9 @@ let listOpt = reactive({
// //
const rules = reactive({ const rules = reactive({
operator_name: [{ required: true, message: "算子名称不能为空", trigger: "blur" }], operator_name: [{ required: true, message: "算子名称不能为空", trigger: "blur" }],
oper_main_type: [{ required: true, message: "算子类型不能为空", trigger: "blur" }], oper_main_type: [{ required: true, message: "算子类型不能为空", trigger: "change" }],
oper_sub_type: [{ required: true, message: "算子类型不能为空", trigger: "blur" }], oper_sub_type: [{ required: true, message: "算子类型不能为空", trigger: "change" }],
operator_desc: [{ required: true, message: "算子说明不能为空", trigger: "blur" }], operator_desc: [{ required: false, message: "算子说明不能为空", trigger: "blur" }],
parameters: [{ required: true, message: "算子文件不能为空", trigger: "blur" }], parameters: [{ required: true, message: "算子文件不能为空", trigger: "blur" }],
}); });
@ -149,8 +153,6 @@ const handleSubmit = useThrottleFn(() => {
formRef.value.validate((valid: any) => { formRef.value.validate((valid: any) => {
if (valid) { if (valid) {
loading.value = true; loading.value = true;
formData.user_id = userStore.user?.id;
formData.create_time = new Date();
OperatorApi.add(formData) OperatorApi.add(formData)
.then((res) => { .then((res) => {
if (res.data.code == 0) { if (res.data.code == 0) {
@ -172,7 +174,7 @@ function closeBack() {
/** 算子主类型改变 */ /** 算子主类型改变 */
function handleChange() { function handleChange() {
router.pushpeList.forEach((item) => { listOpt.operTypeList.forEach((item) => {
if (item.oper_main_type == formData.oper_main_type) { if (item.oper_main_type == formData.oper_main_type) {
listOpt.operSubTypeList = item.oper_sub_type_list; listOpt.operSubTypeList = item.oper_sub_type_list;
} }

View File

@ -115,7 +115,7 @@
<el-card class="card-footer"> <el-card class="card-footer">
<el-button @click="closeBack"><i-ep-close /> </el-button> <el-button @click="closeBack"><i-ep-close /> </el-button>
</el-card> </el-card>
<paramDialog ref="paramDialogRef"></paramDialog> <paramDialog ref="paramDialogRef" @myQuery="handleQuery"></paramDialog>
</div> </div>
</template> </template>

View File

@ -33,18 +33,23 @@
placeholder="请输入程序版本" placeholder="请输入程序版本"
/> />
</el-form-item> </el-form-item>
<!--整数@input="filterInput"-->
<el-form-item label="程序文件" prop="program_file_name"> <el-form-item label="程序文件" prop="program_file_name">
<el-upload <el-upload
v-model:file-list="fileList"
action="https://run.mocky.io/v3/9d059bf9-4660-45f2-925d-ce80ad6c4d15"
ref="uploadRef" ref="uploadRef"
:action="uploadUrl"
:headers="headersObject"
v-model:file-list="fileList"
class="upload-demo" class="upload-demo"
:data="uploadData"
:on-exceed="handleFileExceed" :on-exceed="handleFileExceed"
:on-change="handleFileChange" :before-upload="beforeUpload"
:auto-upload="false" :on-success="uploadsuccess"
:auto-upload="true"
:limit="1" :limit="1"
accept="application/x-tar" accept="application/x-gzip"
> >
<!--el-upload-accept 多个以逗号隔开application/x-tar-->
<el-button type="primary" <el-button type="primary"
><el-icon class="el-icon--upload"> <i-ep-upload-filled /> </el-icon ><el-icon class="el-icon--upload"> <i-ep-upload-filled /> </el-icon
>选择文件</el-button >选择文件</el-button
@ -70,6 +75,7 @@
<script setup name="calculateParam"> <script setup name="calculateParam">
import ConstApi from "@/api/const"; import ConstApi from "@/api/const";
import OperatorApi from "@/api/operator"; import OperatorApi from "@/api/operator";
import { TOKEN_KEY } from "@/enums/CacheEnum";
const open = ref(false); // const open = ref(false); //
const form = ref({}); // const form = ref({}); //
@ -78,6 +84,16 @@ const formRef = ref(ElForm); // 表单
const loading = ref(false); // const loading = ref(false); //
const fileList = ref([]); // const fileList = ref([]); //
const uploadRef = ref(""); // const uploadRef = ref(""); //
const uploadUrl = ref(import.meta.env.VITE_APP_BASE_API + "/operators/programs/upload"); //
const uploadData = reactive({
program_file_name: null,
file_content: null,
});
//
const headersObject = reactive({
Authorization: localStorage.getItem(TOKEN_KEY),
});
// //
let listOpt = ref([]); let listOpt = ref([]);
@ -91,14 +107,17 @@ const rules = reactive({
program_file_name: [{ required: true, message: "程序文件不能为空", trigger: "blur" }], program_file_name: [{ required: true, message: "程序文件不能为空", trigger: "blur" }],
}); });
const emit = defineEmits(["myQuery"]);
/** 表单提交 */ /** 表单提交 */
const handleSubmit = useThrottleFn(() => { const handleSubmit = useThrottleFn(() => {
formRef.value.validate((valid) => { formRef.value.validate((valid) => {
if (valid) { if (valid) {
loading.value = true; loading.value = true;
OperatorApi.addPrograms(form) OperatorApi.addPrograms(form.value)
.then((res) => { .then((res) => {
if (res.data.code == 0) { if (res.data.code == 0) {
emit('myQuery');
ElMessage.success("保存成功"); ElMessage.success("保存成功");
cancel(); cancel();
} }
@ -110,9 +129,10 @@ const handleSubmit = useThrottleFn(() => {
}); });
}, 3000); }, 3000);
// //
function handleFileChange(file) { function beforeUpload(file) {
formRef.value.validateField("program_file_name"); uploadData.program_file_name = file.name;
uploadData.file_content = file;
} }
// //
@ -120,6 +140,17 @@ function handleFileExceed() {
ElMessage.warning("已达到上传文件限制,请删除后继续上传!"); ElMessage.warning("已达到上传文件限制,请删除后继续上传!");
} }
//
function uploadsuccess(res,file){
form.value.program_file_name = res.data.program_file_name;
formRef.value.validateField("program_file_name");
}
function filterInput(event) {
// 使
form.value.program_version = event.replace(/\D/g, '');
}
/** 返回默认页面 */ /** 返回默认页面 */
function cancel() { function cancel() {
open.value = false; open.value = false;
@ -132,13 +163,27 @@ const initPageData = () => {
}); });
}; };
//
function resetForm() {
form.value.operator_id = null;
form.value.operator_name = null;
form.value.oper_main_type_name = null;
form.value.oper_sub_type_name = null;
form.value.cmpt_hardware_type = null;
form.value.program_version = null;
fileList.value = [];
}
/** 页面初始化 */ /** 页面初始化 */
function show(data) { function show(data) {
initPageData(); if (form.value.operator_id != data.operator_id) {
form.value.operator_id = data.operator_id; resetForm();
form.value.operator_name = data.operator_name; initPageData();
form.value.oper_main_type_name = data.oper_main_type_name; form.value.operator_id = data.operator_id;
form.value.oper_sub_type_name = data.oper_sub_type_name; form.value.operator_name = data.operator_name;
form.value.oper_main_type_name = data.oper_main_type_name;
form.value.oper_sub_type_name = data.oper_sub_type_name;
}
open.value = true; open.value = true;
} }