升级第三方包
This commit is contained in:
754
cdTMP/package-lock.json
generated
754
cdTMP/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -13,10 +13,10 @@
|
||||
"dependencies": {
|
||||
"@arco-design/color": "^0.4.0",
|
||||
"@arco-design/web-vue": "^2.56.3",
|
||||
"@tanstack/vue-query": "^5.60.6",
|
||||
"@tanstack/vue-query": "^5.62.2",
|
||||
"@tinymce/tinymce-vue": "^6.1.0",
|
||||
"@vueuse/core": "^11.2.0",
|
||||
"axios": "^1.7.7",
|
||||
"@vueuse/core": "^12.0.0",
|
||||
"axios": "^1.7.9",
|
||||
"dayjs": "^1.11.13",
|
||||
"echarts": "^5.5.1",
|
||||
"file2md5": "^1.3.0",
|
||||
@@ -24,7 +24,7 @@
|
||||
"mammoth": "^1.8.0",
|
||||
"mitt": "^3.0.1",
|
||||
"nprogress": "^0.2.0",
|
||||
"pinia": "^2.2.6",
|
||||
"pinia": "^2.3.0",
|
||||
"pinyin-match": "^1.2.6",
|
||||
"postcss-import": "^16.1.0",
|
||||
"qs": "^6.13.1",
|
||||
@@ -33,29 +33,28 @@
|
||||
"vue-clipboard3": "^2.0.0",
|
||||
"vue-color-kit": "^1.0.6",
|
||||
"vue-echarts": "^7.0.3",
|
||||
"vue-router": "^4.4.5",
|
||||
"vue-router": "^4.5.0",
|
||||
"vuedraggable": "^2.24.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/lodash-es": "^4.17.12",
|
||||
"@types/node": "^22.9.1",
|
||||
"@types/node": "^22.10.1",
|
||||
"@types/nprogress": "^0.2.3",
|
||||
"@types/qs": "^6.9.17",
|
||||
"@vitejs/plugin-vue": "^5.2.0",
|
||||
"@vitejs/plugin-vue-jsx": "^4.1.0",
|
||||
"@vitejs/plugin-vue": "^5.2.1",
|
||||
"@vitejs/plugin-vue-jsx": "^4.1.1",
|
||||
"@vue/babel-plugin-jsx": "^1.2.5",
|
||||
"autoprefixer": "^10.4.20",
|
||||
"browserslist": "^4.24.2",
|
||||
"caniuse-lite": "^1.0.30001680",
|
||||
"eslint": "^9.15.0",
|
||||
"eslint-plugin-vue": "^9.31.0",
|
||||
"less": "^4.2.0",
|
||||
"eslint": "^9.16.0",
|
||||
"eslint-plugin-vue": "^9.32.0",
|
||||
"less": "^4.2.1",
|
||||
"less-loader": "^12.2.0",
|
||||
"postcss": "^8.4.49",
|
||||
"prettier": "^3.3.3",
|
||||
"prettier": "^3.4.2",
|
||||
"rollup-plugin-visualizer": "^5.12.0",
|
||||
"tailwindcss": "^3.4.15",
|
||||
"typescript": "^5.6.3",
|
||||
"vite": "^5.4.11"
|
||||
"tailwindcss": "^3.4.16",
|
||||
"typescript": "^5.7.2",
|
||||
"vite": "^6.0.3"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -112,11 +112,88 @@ export default {
|
||||
},
|
||||
/**
|
||||
*
|
||||
* @returns 生成软硬件环境output_dir
|
||||
* @returns 生成-静态测试环境说明
|
||||
*/
|
||||
createEnvironment(params = {}) {
|
||||
createStaticEnvironment(params = {}) {
|
||||
return request({
|
||||
url: `/generate/create/environment`,
|
||||
url: `/generate/create/static_env`,
|
||||
method: "get",
|
||||
params
|
||||
})
|
||||
},
|
||||
/**
|
||||
*
|
||||
* @returns 生成-静态软件项文档片段
|
||||
*/
|
||||
createStaticSoft(params = {}) {
|
||||
return request({
|
||||
url: `/generate/create/static_soft`,
|
||||
method: "get",
|
||||
params
|
||||
})
|
||||
},
|
||||
/**
|
||||
*
|
||||
* @returns 生成-静态硬件和固件项
|
||||
*/
|
||||
createStaticHard(params = {}) {
|
||||
return request({
|
||||
url: `/generate/create/static_hard`,
|
||||
method: "get",
|
||||
params
|
||||
})
|
||||
},
|
||||
/**
|
||||
*
|
||||
* @returns 生成-动态测试环境说明
|
||||
*/
|
||||
createDynamicEnv(params = {}) {
|
||||
return request({
|
||||
url: `/generate/create/dynamic_env`,
|
||||
method: "get",
|
||||
params
|
||||
})
|
||||
},
|
||||
/**
|
||||
*
|
||||
* @returns 生成-动态软件项
|
||||
*/
|
||||
createDynamicSoft(params = {}) {
|
||||
return request({
|
||||
url: `/generate/create/dynamic_soft`,
|
||||
method: "get",
|
||||
params
|
||||
})
|
||||
},
|
||||
/**
|
||||
*
|
||||
* @returns 生成-动态硬件项
|
||||
*/
|
||||
createDynamicHard(params = {}) {
|
||||
return request({
|
||||
url: `/generate/create/dynamic_hard`,
|
||||
method: "get",
|
||||
params
|
||||
})
|
||||
},
|
||||
/**
|
||||
*
|
||||
* @returns 生成-测试数据
|
||||
*/
|
||||
createTestData(params = {}) {
|
||||
return request({
|
||||
url: `/generate/create/test_data`,
|
||||
method: "get",
|
||||
params
|
||||
})
|
||||
},
|
||||
/**
|
||||
*
|
||||
* @returns 生成-环境差异性分析
|
||||
*/
|
||||
createEnvDiff(params = {}) {
|
||||
return request({
|
||||
url: `/generate/create/env_diff`,
|
||||
method: "get",
|
||||
params
|
||||
})
|
||||
|
||||
@@ -1,74 +1,63 @@
|
||||
<template>
|
||||
<a-modal
|
||||
:width="prop.width"
|
||||
:fullscreen="isFull"
|
||||
v-model:visible="modal.visible"
|
||||
:on-before-ok="modal.submit"
|
||||
:unmount-on-close="true"
|
||||
@cancel="modal.cancel"
|
||||
>
|
||||
<template #title>
|
||||
{{ prop.title }}
|
||||
</template>
|
||||
<slot></slot>
|
||||
<slot name="body"></slot>
|
||||
<a-card
|
||||
class="mt-2"
|
||||
:hoverable="true"
|
||||
v-for="info in layout"
|
||||
<a-modal
|
||||
:width="prop.width"
|
||||
:fullscreen="isFull"
|
||||
v-model:visible="modal.visible"
|
||||
:on-before-ok="modal.submit"
|
||||
:unmount-on-close="true"
|
||||
@cancel="modal.cancel"
|
||||
>
|
||||
<ma-info
|
||||
v-if="isArray(info?.child)"
|
||||
:title="info.title"
|
||||
:columns="info.child"
|
||||
:data="infoData"
|
||||
ref="maInfoRefs"
|
||||
></ma-info>
|
||||
<a-descriptions
|
||||
:title="info.title"
|
||||
v-else
|
||||
>
|
||||
<component
|
||||
:data="infoData"
|
||||
:is="info?.component"
|
||||
<template #title>
|
||||
{{ prop.title }}
|
||||
</template>
|
||||
<slot></slot>
|
||||
<slot name="body"></slot>
|
||||
<a-card class="mt-2" :hoverable="true" v-for="info in layout">
|
||||
<ma-info
|
||||
v-if="isArray(info?.child)"
|
||||
:title="info.title"
|
||||
:columns="info.child"
|
||||
:data="infoData"
|
||||
ref="maInfoRefs"
|
||||
></ma-info>
|
||||
<a-descriptions :title="info.title" v-else>
|
||||
<component :data="infoData" :is="info?.component" />
|
||||
</a-descriptions>
|
||||
</a-card>
|
||||
<ma-form
|
||||
v-model="form"
|
||||
ref="maFormRef"
|
||||
v-if="prop.formColumns.length > 0"
|
||||
:columns="prop.formColumns"
|
||||
:options="{ showButtons: false, ...prop.formOptions }"
|
||||
/>
|
||||
</a-descriptions>
|
||||
|
||||
</a-card>
|
||||
<ma-form
|
||||
v-model="form"
|
||||
ref="maFormRef"
|
||||
v-if="prop.formColumns.length > 0"
|
||||
:columns="prop.formColumns"
|
||||
:options="{showButtons: false, ...prop.formOptions}"
|
||||
/>
|
||||
</a-modal>
|
||||
</a-modal>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import MaInfo from "../ma-info/index.vue";
|
||||
import {getCurrentInstance, reactive, ref, watch} from "vue";
|
||||
import {isArray, isFunction, isObject, isString} from "lodash-es";
|
||||
import {isComponent} from "@arco-design/web-vue/es/_utils/vue-utils";
|
||||
import {setModalSizeEvent} from "@/utils/common";
|
||||
const emit = defineEmits(["visible", "validateError", "open", "cancel", "close"]);
|
||||
import MaInfo from "../ma-info/index.vue"
|
||||
import { getCurrentInstance, reactive, ref, watch } from "vue"
|
||||
import { isArray, isFunction, isObject, isString } from "lodash-es"
|
||||
import { isComponent } from "@arco-design/web-vue/es/_utils/vue-utils"
|
||||
import { setModalSizeEvent } from "@/utils/common"
|
||||
const emit = defineEmits(["visible", "validateError", "open", "cancel", "close"])
|
||||
const app = getCurrentInstance().appContext.app
|
||||
const maFormRef = ref()
|
||||
const prop = defineProps({
|
||||
width: {type: Number, default: 1200}, // modal框大小
|
||||
isFull: { type: Boolean, default: false},
|
||||
title: { type: String, default: "" }, // 弹出框标题
|
||||
column: { type: Array, default: [] }, // ma-form字段
|
||||
default_visible: { type: Boolean, default: false}, // 默认隐藏
|
||||
options: { type: Object, default: {} }, // ma-form 属性
|
||||
submit: { type: Function, default: () => {} },
|
||||
layout: { type: Object, default:[]},
|
||||
formOptions: {type: Object, default: {}}, // ma-form-options
|
||||
formColumns: { type: Array, default: []}
|
||||
});
|
||||
width: { type: Number, default: 1200 }, // modal框大小
|
||||
isFull: { type: Boolean, default: false },
|
||||
title: { type: String, default: "" }, // 弹出框标题
|
||||
column: { type: Array, default: [] }, // ma-form字段
|
||||
default_visible: { type: Boolean, default: false }, // 默认隐藏
|
||||
options: { type: Object, default: {} }, // ma-form 属性
|
||||
submit: { type: Function, default: () => {} },
|
||||
layout: { type: Object, default: [] },
|
||||
formOptions: { type: Object, default: {} }, // ma-form-options
|
||||
formColumns: { type: Array, default: [] }
|
||||
})
|
||||
const isFull = ref(prop.isFull)
|
||||
setModalSizeEvent((config) => {
|
||||
isFull.value = config.isFull
|
||||
isFull.value = config.isFull
|
||||
})
|
||||
|
||||
const maInfoRefs = ref([])
|
||||
@@ -76,75 +65,77 @@ const layout = ref([])
|
||||
const infoData = ref({})
|
||||
const form = ref({})
|
||||
|
||||
watch(() => prop.layout, val => {
|
||||
layout.value = val
|
||||
},{
|
||||
immediate: true,
|
||||
})
|
||||
watch(
|
||||
() => prop.layout,
|
||||
(val) => {
|
||||
layout.value = val
|
||||
},
|
||||
{
|
||||
immediate: true
|
||||
}
|
||||
)
|
||||
|
||||
let columnMap = {}
|
||||
const init = async () => {
|
||||
let column = prop.column
|
||||
column.forEach(item => {
|
||||
columnMap[item.dataIndex] = item
|
||||
})
|
||||
if (layout.value.length > 0) {
|
||||
layout.value.forEach((item) => {
|
||||
if (item.component) {
|
||||
app.component(item.component, item.child)
|
||||
return;
|
||||
}
|
||||
item.child.forEach((child, index) => {
|
||||
if (isString(child)) {
|
||||
item.child[index] = columnMap[child]
|
||||
}
|
||||
})
|
||||
let column = prop.column
|
||||
column.forEach((item) => {
|
||||
columnMap[item.dataIndex] = item
|
||||
})
|
||||
}else{
|
||||
layout.value.push({
|
||||
title: "",
|
||||
child: column,
|
||||
})
|
||||
}
|
||||
if (layout.value.length > 0) {
|
||||
layout.value.forEach((item) => {
|
||||
if (item.component) {
|
||||
app.component(item.component, item.child)
|
||||
return
|
||||
}
|
||||
item.child.forEach((child, index) => {
|
||||
if (isString(child)) {
|
||||
item.child[index] = columnMap[child]
|
||||
}
|
||||
})
|
||||
})
|
||||
} else {
|
||||
layout.value.push({
|
||||
title: "",
|
||||
child: column
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
const modal = reactive({
|
||||
visible: prop.default_visible,
|
||||
open(data, formData = {}) {
|
||||
modal.visible = true;
|
||||
for (let [key, value] of Object.entries(data)) {
|
||||
infoData.value[key] = value;
|
||||
visible: prop.default_visible,
|
||||
open(data, formData = {}) {
|
||||
modal.visible = true
|
||||
for (let [key, value] of Object.entries(data)) {
|
||||
infoData.value[key] = value
|
||||
}
|
||||
for (let [key, value] of Object.entries(formData)) {
|
||||
form.value[key] = value
|
||||
}
|
||||
emit("open", infoData)
|
||||
},
|
||||
close() {
|
||||
modal.visible = false
|
||||
},
|
||||
async submit() {
|
||||
let validate = await maFormRef.value.validateForm()
|
||||
if (validate) {
|
||||
emit("validateError", validate)
|
||||
return false
|
||||
}
|
||||
return prop.submit(form._rawValue)
|
||||
},
|
||||
cancel() {
|
||||
emit("cancel")
|
||||
}
|
||||
for (let [key, value] of Object.entries(formData)) {
|
||||
form.value[key] = value;
|
||||
}
|
||||
emit("open", infoData);
|
||||
},
|
||||
close() {
|
||||
modal.visible = false;
|
||||
},
|
||||
async submit() {
|
||||
let validate = await maFormRef.value.validateForm()
|
||||
if (validate) {
|
||||
emit("validateError", validate)
|
||||
return false
|
||||
}
|
||||
return prop.submit(form._rawValue)
|
||||
},
|
||||
cancel() {
|
||||
emit("cancel");
|
||||
},
|
||||
});
|
||||
})
|
||||
|
||||
init()
|
||||
|
||||
defineExpose({
|
||||
open: modal.open,
|
||||
close: modal.close,
|
||||
data: infoData,
|
||||
});
|
||||
open: modal.open,
|
||||
close: modal.close,
|
||||
data: infoData
|
||||
})
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
<style scoped></style>
|
||||
|
||||
@@ -13,12 +13,12 @@ const props = defineProps({
|
||||
|
||||
const checkResult = (verifyCode) => {
|
||||
if (!verifyCode || verifyCode.length === 0) {
|
||||
props.showError && Message.error(t("sys.verifyCode.notice"))
|
||||
props.showError && Message.error("请输入验证码")
|
||||
return false
|
||||
}
|
||||
|
||||
if (verifyCode.toLowerCase() !== codeText.value.toLowerCase()) {
|
||||
props.showError && Message.error(t("sys.verifyCode.error"))
|
||||
props.showError && Message.error("验证码错误,请刷新后重试")
|
||||
generateCode()
|
||||
return false
|
||||
} else {
|
||||
|
||||
@@ -10,6 +10,7 @@ export default function useUser() {
|
||||
await userStore.logout()
|
||||
const currentRoute = router.currentRoute.value
|
||||
Message.success('登出成功')
|
||||
document.body.setAttribute("arco-theme", "light")
|
||||
router.push({
|
||||
name: logoutTo && typeof logoutTo === 'string' ? logoutTo : 'login',
|
||||
query: {
|
||||
|
||||
@@ -43,7 +43,16 @@ const useGenerateSecond = function () {
|
||||
dgGenerateApi.createBaseInformation({ id }), // 生成被测软件基本信息 - 和大纲重复 - 可能会删除
|
||||
dgGenerateApi.createYiju({ id }), // 生成标准类引用文档 - 和大纲重复 - 可能会删除
|
||||
smGenerateApi.createSMTechyiju({ id }), // 生成技术类引用文档列表 -> 在大纲基础上添加《测评大纲》
|
||||
dgGenerateApi.createEnvironment({ id }), // 生成软硬件环境(注意标题级别不一样,这个在最后处理)
|
||||
// 拆分软硬件环境
|
||||
dgGenerateApi.createStaticEnvironment({ id }), // 生成-静态测试环境说明
|
||||
dgGenerateApi.createStaticSoft({ id }), // 生成-静态软件项
|
||||
dgGenerateApi.createStaticHard({ id }), // 生成-静态硬件和固件项
|
||||
dgGenerateApi.createDynamicEnv({ id }), // 生成-动态测试环境说明
|
||||
dgGenerateApi.createDynamicSoft({ id }), // 生成-动态软件项
|
||||
dgGenerateApi.createDynamicHard({ id }), // 生成-动态硬件和固件项
|
||||
dgGenerateApi.createTestData({ id }), // 生成-测评数据
|
||||
dgGenerateApi.createEnvDiff({ id }), // 生成-环境差异性分析
|
||||
// ~~~
|
||||
smGenerateApi.createSMCaseList({ id }), // 生成用例全
|
||||
smGenerateApi.createSMCaseBreifList({ id }), // 生成用例列表-那个表格
|
||||
smGenerateApi.createSMTrack({ id }) // 生成说明追踪
|
||||
@@ -78,7 +87,16 @@ const useGenerateSecond = function () {
|
||||
dgGenerateApi.createXqComparison({ id }), // 生成-需求规格说明-测试项对照表
|
||||
dgGenerateApi.createFanXqComparison({ id }), // 生成-反向测试项-需求规格说明对照表
|
||||
dgGenerateApi.createCodeQuality({ id }), // 生成-代码质量度量分析表
|
||||
dgGenerateApi.createEnvironment({ id }), // 生成-软硬件环境
|
||||
// 新增拆分接口
|
||||
dgGenerateApi.createStaticEnvironment({ id }), // 生成-静态测试环境说明
|
||||
dgGenerateApi.createStaticSoft({ id }), // 生成-静态软件项
|
||||
dgGenerateApi.createStaticHard({ id }), // 生成-静态硬件和固件项
|
||||
dgGenerateApi.createDynamicEnv({ id }), // 生成-动态测试环境说明
|
||||
dgGenerateApi.createDynamicSoft({ id }), // 生成-动态软件项
|
||||
dgGenerateApi.createDynamicHard({ id }), // 生成-动态硬件和固件项
|
||||
dgGenerateApi.createTestData({ id }), // 生成-测评数据
|
||||
dgGenerateApi.createEnvDiff({ id }), // 生成-环境差异性分析
|
||||
// ~~~~~~~~~
|
||||
dgGenerateApi.createMainTech({ id }) // 生成-主要战技指标
|
||||
]).finally(() => {
|
||||
isGenerating.value = false
|
||||
@@ -105,7 +123,16 @@ const useGenerateSecond = function () {
|
||||
bgGenerateApi.createBgQualityEvaluate({ id }),
|
||||
bgGenerateApi.createBgEntire({ id }),
|
||||
bgGenerateApi.createBgYzxqTrack({ id }),
|
||||
bgGenerateApi.createBgProblemsSummary({ id })
|
||||
bgGenerateApi.createBgProblemsSummary({ id }),
|
||||
// 拆分软硬件环境
|
||||
dgGenerateApi.createStaticEnvironment({ id }), // 生成-静态测试环境说明
|
||||
dgGenerateApi.createStaticSoft({ id }), // 生成-静态软件项
|
||||
dgGenerateApi.createStaticHard({ id }), // 生成-静态硬件和固件项
|
||||
dgGenerateApi.createDynamicEnv({ id }), // 生成-动态测试环境说明
|
||||
dgGenerateApi.createDynamicSoft({ id }), // 生成-动态软件项
|
||||
dgGenerateApi.createDynamicHard({ id }), // 生成-动态硬件和固件项
|
||||
dgGenerateApi.createTestData({ id }), // 生成-测评数据
|
||||
dgGenerateApi.createEnvDiff({ id }) // 生成-环境差异性分析
|
||||
]).finally(() => {
|
||||
isGenerating.value = false
|
||||
isBgLoading.value = false
|
||||
@@ -126,7 +153,16 @@ const useGenerateSecond = function () {
|
||||
hsmGenerateApi.createHdemand({ id }),
|
||||
hsmGenerateApi.createCaseListDesc({ id }),
|
||||
hsmGenerateApi.createCaseList({ id }),
|
||||
hsmGenerateApi.createTrack({ id })
|
||||
hsmGenerateApi.createTrack({ id }),
|
||||
// 拆分大纲软硬件环境
|
||||
dgGenerateApi.createStaticEnvironment({ id }), // 生成-静态测试环境说明
|
||||
dgGenerateApi.createStaticSoft({ id }), // 生成-静态软件项
|
||||
dgGenerateApi.createStaticHard({ id }), // 生成-静态硬件和固件项
|
||||
dgGenerateApi.createDynamicEnv({ id }), // 生成-动态测试环境说明
|
||||
dgGenerateApi.createDynamicSoft({ id }), // 生成-动态软件项
|
||||
dgGenerateApi.createDynamicHard({ id }), // 生成-动态硬件和固件项
|
||||
dgGenerateApi.createTestData({ id }), // 生成-测评数据
|
||||
dgGenerateApi.createEnvDiff({ id }) // 生成-环境差异性分析
|
||||
]).finally(() => {
|
||||
isGenerating.value = false
|
||||
ishsmLoading.value = false
|
||||
|
||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user