升级第三方包

This commit is contained in:
2024-12-06 19:02:49 +08:00
parent 9cfecd7309
commit 05a117152c
8 changed files with 631 additions and 515 deletions

754
cdTMP/package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -13,10 +13,10 @@
"dependencies": { "dependencies": {
"@arco-design/color": "^0.4.0", "@arco-design/color": "^0.4.0",
"@arco-design/web-vue": "^2.56.3", "@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", "@tinymce/tinymce-vue": "^6.1.0",
"@vueuse/core": "^11.2.0", "@vueuse/core": "^12.0.0",
"axios": "^1.7.7", "axios": "^1.7.9",
"dayjs": "^1.11.13", "dayjs": "^1.11.13",
"echarts": "^5.5.1", "echarts": "^5.5.1",
"file2md5": "^1.3.0", "file2md5": "^1.3.0",
@@ -24,7 +24,7 @@
"mammoth": "^1.8.0", "mammoth": "^1.8.0",
"mitt": "^3.0.1", "mitt": "^3.0.1",
"nprogress": "^0.2.0", "nprogress": "^0.2.0",
"pinia": "^2.2.6", "pinia": "^2.3.0",
"pinyin-match": "^1.2.6", "pinyin-match": "^1.2.6",
"postcss-import": "^16.1.0", "postcss-import": "^16.1.0",
"qs": "^6.13.1", "qs": "^6.13.1",
@@ -33,29 +33,28 @@
"vue-clipboard3": "^2.0.0", "vue-clipboard3": "^2.0.0",
"vue-color-kit": "^1.0.6", "vue-color-kit": "^1.0.6",
"vue-echarts": "^7.0.3", "vue-echarts": "^7.0.3",
"vue-router": "^4.4.5", "vue-router": "^4.5.0",
"vuedraggable": "^2.24.3" "vuedraggable": "^2.24.3"
}, },
"devDependencies": { "devDependencies": {
"@types/lodash-es": "^4.17.12", "@types/lodash-es": "^4.17.12",
"@types/node": "^22.9.1", "@types/node": "^22.10.1",
"@types/nprogress": "^0.2.3", "@types/nprogress": "^0.2.3",
"@types/qs": "^6.9.17", "@types/qs": "^6.9.17",
"@vitejs/plugin-vue": "^5.2.0", "@vitejs/plugin-vue": "^5.2.1",
"@vitejs/plugin-vue-jsx": "^4.1.0", "@vitejs/plugin-vue-jsx": "^4.1.1",
"@vue/babel-plugin-jsx": "^1.2.5", "@vue/babel-plugin-jsx": "^1.2.5",
"autoprefixer": "^10.4.20", "autoprefixer": "^10.4.20",
"browserslist": "^4.24.2", "browserslist": "^4.24.2",
"caniuse-lite": "^1.0.30001680", "eslint": "^9.16.0",
"eslint": "^9.15.0", "eslint-plugin-vue": "^9.32.0",
"eslint-plugin-vue": "^9.31.0", "less": "^4.2.1",
"less": "^4.2.0",
"less-loader": "^12.2.0", "less-loader": "^12.2.0",
"postcss": "^8.4.49", "postcss": "^8.4.49",
"prettier": "^3.3.3", "prettier": "^3.4.2",
"rollup-plugin-visualizer": "^5.12.0", "rollup-plugin-visualizer": "^5.12.0",
"tailwindcss": "^3.4.15", "tailwindcss": "^3.4.16",
"typescript": "^5.6.3", "typescript": "^5.7.2",
"vite": "^5.4.11" "vite": "^6.0.3"
} }
} }

View File

@@ -112,11 +112,88 @@ export default {
}, },
/** /**
* *
* @returns 生成软硬件环境output_dir * @returns 生成-静态测试环境说明
*/ */
createEnvironment(params = {}) { createStaticEnvironment(params = {}) {
return request({ 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", method: "get",
params params
}) })

View File

@@ -12,11 +12,7 @@
</template> </template>
<slot></slot> <slot></slot>
<slot name="body"></slot> <slot name="body"></slot>
<a-card <a-card class="mt-2" :hoverable="true" v-for="info in layout">
class="mt-2"
:hoverable="true"
v-for="info in layout"
>
<ma-info <ma-info
v-if="isArray(info?.child)" v-if="isArray(info?.child)"
:title="info.title" :title="info.title"
@@ -24,16 +20,9 @@
:data="infoData" :data="infoData"
ref="maInfoRefs" ref="maInfoRefs"
></ma-info> ></ma-info>
<a-descriptions <a-descriptions :title="info.title" v-else>
:title="info.title" <component :data="infoData" :is="info?.component" />
v-else
>
<component
:data="infoData"
:is="info?.component"
/>
</a-descriptions> </a-descriptions>
</a-card> </a-card>
<ma-form <ma-form
v-model="form" v-model="form"
@@ -46,12 +35,12 @@
</template> </template>
<script setup> <script setup>
import MaInfo from "../ma-info/index.vue"; import MaInfo from "../ma-info/index.vue"
import {getCurrentInstance, reactive, ref, watch} from "vue"; import { getCurrentInstance, reactive, ref, watch } from "vue"
import {isArray, isFunction, isObject, isString} from "lodash-es"; import { isArray, isFunction, isObject, isString } from "lodash-es"
import {isComponent} from "@arco-design/web-vue/es/_utils/vue-utils"; import { isComponent } from "@arco-design/web-vue/es/_utils/vue-utils"
import {setModalSizeEvent} from "@/utils/common"; import { setModalSizeEvent } from "@/utils/common"
const emit = defineEmits(["visible", "validateError", "open", "cancel", "close"]); const emit = defineEmits(["visible", "validateError", "open", "cancel", "close"])
const app = getCurrentInstance().appContext.app const app = getCurrentInstance().appContext.app
const maFormRef = ref() const maFormRef = ref()
const prop = defineProps({ const prop = defineProps({
@@ -65,7 +54,7 @@ const prop = defineProps({
layout: { type: Object, default: [] }, layout: { type: Object, default: [] },
formOptions: { type: Object, default: {} }, // ma-form-options formOptions: { type: Object, default: {} }, // ma-form-options
formColumns: { type: Array, default: [] } formColumns: { type: Array, default: [] }
}); })
const isFull = ref(prop.isFull) const isFull = ref(prop.isFull)
setModalSizeEvent((config) => { setModalSizeEvent((config) => {
isFull.value = config.isFull isFull.value = config.isFull
@@ -76,23 +65,27 @@ const layout = ref([])
const infoData = ref({}) const infoData = ref({})
const form = ref({}) const form = ref({})
watch(() => prop.layout, val => { watch(
() => prop.layout,
(val) => {
layout.value = val layout.value = val
},{ },
immediate: true, {
}) immediate: true
}
)
let columnMap = {} let columnMap = {}
const init = async () => { const init = async () => {
let column = prop.column let column = prop.column
column.forEach(item => { column.forEach((item) => {
columnMap[item.dataIndex] = item columnMap[item.dataIndex] = item
}) })
if (layout.value.length > 0) { if (layout.value.length > 0) {
layout.value.forEach((item) => { layout.value.forEach((item) => {
if (item.component) { if (item.component) {
app.component(item.component, item.child) app.component(item.component, item.child)
return; return
} }
item.child.forEach((child, index) => { item.child.forEach((child, index) => {
if (isString(child)) { if (isString(child)) {
@@ -103,7 +96,7 @@ const init = async () => {
} else { } else {
layout.value.push({ layout.value.push({
title: "", title: "",
child: column, child: column
}) })
} }
} }
@@ -111,17 +104,17 @@ const init = async () => {
const modal = reactive({ const modal = reactive({
visible: prop.default_visible, visible: prop.default_visible,
open(data, formData = {}) { open(data, formData = {}) {
modal.visible = true; modal.visible = true
for (let [key, value] of Object.entries(data)) { for (let [key, value] of Object.entries(data)) {
infoData.value[key] = value; infoData.value[key] = value
} }
for (let [key, value] of Object.entries(formData)) { for (let [key, value] of Object.entries(formData)) {
form.value[key] = value; form.value[key] = value
} }
emit("open", infoData); emit("open", infoData)
}, },
close() { close() {
modal.visible = false; modal.visible = false
}, },
async submit() { async submit() {
let validate = await maFormRef.value.validateForm() let validate = await maFormRef.value.validateForm()
@@ -132,19 +125,17 @@ const modal = reactive({
return prop.submit(form._rawValue) return prop.submit(form._rawValue)
}, },
cancel() { cancel() {
emit("cancel"); emit("cancel")
}, }
}); })
init() init()
defineExpose({ defineExpose({
open: modal.open, open: modal.open,
close: modal.close, close: modal.close,
data: infoData, data: infoData
}); })
</script> </script>
<style scoped> <style scoped></style>
</style>

View File

@@ -13,12 +13,12 @@ const props = defineProps({
const checkResult = (verifyCode) => { const checkResult = (verifyCode) => {
if (!verifyCode || verifyCode.length === 0) { if (!verifyCode || verifyCode.length === 0) {
props.showError && Message.error(t("sys.verifyCode.notice")) props.showError && Message.error("请输入验证码")
return false return false
} }
if (verifyCode.toLowerCase() !== codeText.value.toLowerCase()) { if (verifyCode.toLowerCase() !== codeText.value.toLowerCase()) {
props.showError && Message.error(t("sys.verifyCode.error")) props.showError && Message.error("验证码错误,请刷新后重试")
generateCode() generateCode()
return false return false
} else { } else {

View File

@@ -10,6 +10,7 @@ export default function useUser() {
await userStore.logout() await userStore.logout()
const currentRoute = router.currentRoute.value const currentRoute = router.currentRoute.value
Message.success('登出成功') Message.success('登出成功')
document.body.setAttribute("arco-theme", "light")
router.push({ router.push({
name: logoutTo && typeof logoutTo === 'string' ? logoutTo : 'login', name: logoutTo && typeof logoutTo === 'string' ? logoutTo : 'login',
query: { query: {

View File

@@ -43,7 +43,16 @@ const useGenerateSecond = function () {
dgGenerateApi.createBaseInformation({ id }), // 生成被测软件基本信息 - 和大纲重复 - 可能会删除 dgGenerateApi.createBaseInformation({ id }), // 生成被测软件基本信息 - 和大纲重复 - 可能会删除
dgGenerateApi.createYiju({ id }), // 生成标准类引用文档 - 和大纲重复 - 可能会删除 dgGenerateApi.createYiju({ id }), // 生成标准类引用文档 - 和大纲重复 - 可能会删除
smGenerateApi.createSMTechyiju({ 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.createSMCaseList({ id }), // 生成用例全
smGenerateApi.createSMCaseBreifList({ id }), // 生成用例列表-那个表格 smGenerateApi.createSMCaseBreifList({ id }), // 生成用例列表-那个表格
smGenerateApi.createSMTrack({ id }) // 生成说明追踪 smGenerateApi.createSMTrack({ id }) // 生成说明追踪
@@ -78,7 +87,16 @@ const useGenerateSecond = function () {
dgGenerateApi.createXqComparison({ id }), // 生成-需求规格说明-测试项对照表 dgGenerateApi.createXqComparison({ id }), // 生成-需求规格说明-测试项对照表
dgGenerateApi.createFanXqComparison({ id }), // 生成-反向测试项-需求规格说明对照表 dgGenerateApi.createFanXqComparison({ id }), // 生成-反向测试项-需求规格说明对照表
dgGenerateApi.createCodeQuality({ 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 }) // 生成-主要战技指标 dgGenerateApi.createMainTech({ id }) // 生成-主要战技指标
]).finally(() => { ]).finally(() => {
isGenerating.value = false isGenerating.value = false
@@ -105,7 +123,16 @@ const useGenerateSecond = function () {
bgGenerateApi.createBgQualityEvaluate({ id }), bgGenerateApi.createBgQualityEvaluate({ id }),
bgGenerateApi.createBgEntire({ id }), bgGenerateApi.createBgEntire({ id }),
bgGenerateApi.createBgYzxqTrack({ 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(() => { ]).finally(() => {
isGenerating.value = false isGenerating.value = false
isBgLoading.value = false isBgLoading.value = false
@@ -126,7 +153,16 @@ const useGenerateSecond = function () {
hsmGenerateApi.createHdemand({ id }), hsmGenerateApi.createHdemand({ id }),
hsmGenerateApi.createCaseListDesc({ id }), hsmGenerateApi.createCaseListDesc({ id }),
hsmGenerateApi.createCaseList({ 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(() => { ]).finally(() => {
isGenerating.value = false isGenerating.value = false
ishsmLoading.value = false ishsmLoading.value = false

File diff suppressed because one or more lines are too long