【新增】 WPS相关提交

This commit is contained in:
DESKTOP-932OMT8\REN
2025-06-23 14:24:37 +08:00
committed by 陆光LG
parent bd9d131643
commit ab5035bab3
6 changed files with 166 additions and 187 deletions

View File

@@ -2,54 +2,52 @@ import request from '@/config/axios'
export interface PptxVO {
id?: number
nodeName: string
parentId: number
status: number
sort: number
toChinese: string
nodeFunction: string
createTime: Date
}
// 查询Pptx节点精简)列表
export const getSimplePptxList = async (): Promise<PptxVO[]> => {
return await request.get({ url: '/wps/pptx/simple-list' })
return await request.get({ url: '/exam/pptx/simple-list' })
}
// 查询Pptx节点列表
export const getPptxPage = async (params: PageParam) => {
return await request.get({ url: '/wps/pptx/list', params })
return await request.get({ url: '/exam/pptx/list', params })
}
// 查询Pptx节点详情
export const getPptx = async (id: number) => {
return await request.get({ url: '/wps/pptx/get?id=' + id })
return await request.get({ url: '/exam/pptx/get?id=' + id })
}
// 新增Pptx节点
export const createPptx = async (data: PptxVO) => {
return await request.post({ url: '/wps/pptx/create', data: data })
return await request.post({ url: '/exam/pptx/create', data: data })
}
// 修改Pptx节点
export const updatePptx = async (params: PptxVO) => {
return await request.put({ url: '/wps/pptx/update', data: params })
return await request.put({ url: '/exam/pptx/update', data: params })
}
// 删除Pptx节点
export const deletePptx = async (id: number) => {
return await request.delete({ url: '/wps/pptx/delete?id=' + id })
return await request.delete({ url: '/exam/pptx/delete?id=' + id })
}
// 获取Word考点大类
// // 获取Word考点大类
export const getPptxInfo = async (path: String) => {
return await request.get({ url: '/tool/wps/runWpsPptx?path=' + path })
}
// 查询Word节点列表(小类)
export const getPptxInfos = async (params: any) => {
return await request.get({ url: '/wps/pptx/listInfo', params })
// 查询Word节点列表(小类) 根据title查询出来下面所有的数据
export const getPptxInfos = async (title: string) => {
console.log(title)
return await request.get({ url: '/exam/pptx/getByNameList?title=' + title })
}
// 获取Pptx考点
// // 获取Pptx考点
export const getPptxListInfos = async (data: any) => {
return await request.post({ url: '/tool/wps/runWpsPptxInfo' , data })
return await request.post({ url: '/tool/wps/runTestpptx' , data })
}

View File

@@ -117,10 +117,12 @@ export enum DICT_TYPE {
WORD_BELONG_TO = "word_belong_to",
WORD_ISBOO = "word_isboo",
WPS_PPTX = "wps_pptx",
PPTX_BELONG_TO = "pptx_belong_to",
PPTX_ISBOO = "pptx_isboo",
PPTX_TITLE_TYPE ="pptx_title_type",
PPTX_ISTEXT = "pptx_isText",
PPTX_ISPARAMETER = "pptx_isParameter",
PPTX_ISTRUE = "pptx_isTrue",
PPTX_TITLETYPE = "pptx_titleType",
PPTX_DATATYPE = "pptx_dataType",
WPS_UNIT ="wps_unit",

View File

@@ -18,7 +18,11 @@
</el-col>
<el-col :span="12">
<el-form-item label="章节名称" prop="chapteridDictText">
<el-input v-model="formData.chapteridDictTextVo" placeholder="请输入章节名称" disabled />
<el-input
v-model="formData.chapteridDictTextVo"
placeholder="请输入章节名称"
disabled
/>
</el-form-item>
</el-col>
</el-row>
@@ -30,11 +34,7 @@
</el-col>
<el-col :span="12">
<el-form-item label="题型难度" prop="quLevel">
<el-select
v-model="formData.quLevel"
placeholder="请选择题型难度"
clearable
>
<el-select v-model="formData.quLevel" placeholder="请选择题型难度" clearable>
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.EXAM_QUE_DIFF)"
:key="dict.value"
@@ -140,8 +140,8 @@
@selection-change="handleSelectionChange"
>
<!-- <el-table-column type="selection" width="55" /> -->
<el-table-column label="考点" align="center" prop="contentIn" width="360px"/>
<el-table-column label="权值" align="center" prop="scoreRate" width="100px"/>
<el-table-column label="考点" align="center" prop="contentIn" width="360px" />
<el-table-column label="权值" align="center" prop="scoreRate" width="100px" />
<el-table-column label="操作" align="center" width="100px">
<template #default="scope">
<el-button type="primary" link @click="handleDelete(scope.row)">
@@ -324,8 +324,8 @@ const dialogTitle = ref('') // 弹窗的标题
const formLoading = ref(false) // 表单的加载中1修改时的数据加载2提交的按钮禁用
const formType = ref('') // 表单的类型create - 新增update - 修改
const formData = ref({
pointNamesVo:'',
chapteridDictTextVo:'',
pointNamesVo: '',
chapteridDictTextVo: '',
content: '',
specialtyName: '',
courseName: '',
@@ -371,16 +371,19 @@ const pptxPointsFun = ref({
chineseName: '',
function: ''
})
const pptxPoints = ref({
name: '',
englishName: '',
filePath: '',
fileNama: '',
chineseName: '',
paragraph: '',
title: '',
valueList: '',
type: '',
belongTo: '',
isboo: '',
function: '',
unit: ''
isText: '',
isTrue: '',
isParameter: ''
})
let pptxPointsInfosList: (typeof pptxPoints)[] = []
const handleDelete = (row) => {
@@ -435,14 +438,15 @@ const pptxData = reactive({
const handleCheckChange = (data: Tree, checked: boolean, indeterminate: boolean) => {
if (data.titleType == '2') {
pptxPoints.value.name = chineseName.value + data.toChinese
pptxPoints.value.filePath = filePath.value
pptxPoints.value.function = nodeFunctions.value + data.nodeFunction
pptxPoints.value.englishName = englishNames.value
pptxPoints.value.belongTo = data.belongTo
pptxPoints.value.isboo = data.isboo
pptxPoints.value.type = data.type
pptxPoints.value.unit = data.unit
pptxPoints.value.chineseName = chineseName.value + data.chineseName
pptxPoints.value.fileNama = englishNames.value
pptxPoints.value.paragraph = paragraph.value
pptxPoints.value.title = data.title
pptxPoints.value.valueList = data.valueList
pptxPoints.value.type = data.dataType
pptxPoints.value.isText = data.isText
pptxPoints.value.isTrue = data.isTrue
pptxPoints.value.isParameter = data.isParameter
pptxPointsInfosList.push(cloneDeep(pptxPoints.value))
}
console.log(data, checked, indeterminate)
@@ -466,9 +470,6 @@ const addPptxInfo = async () => {
}
dialogFormVisiblePptxInfo.value = true
}
const queryParams = reactive({
nodeFunction: undefined
})
const handleSpecialtyNodeClick = async (row: any) => {
titles.value = row.name
englishName.value = row.englishName
@@ -477,15 +478,15 @@ const handleSpecialtyNodeClick = async (row: any) => {
dialogFormVisiblePptxInfos.value = true
}
const chineseName = ref('')
const nodeFunctions = ref('')
const paragraph = ref('')
const englishNames = ref('')
const handleNodelClick = async (row: any) => {
queryParams.nodeFunction = row.selectName
chineseName.value = '【' + row.name + '】'
filePath.value = row.filePath
nodeFunctions.value = row.selectName
paragraph.value = row.selectName
englishNames.value = row.englishName
const res = await PptxApi.getPptxInfos(queryParams)
const res = await PptxApi.getPptxInfos(row.title)
pptxPointsInfoList.value = []
pptxPointsInfoList.value.push(...handleTree(res))
dialogFormVisiblePptxInfos.value = true
@@ -495,14 +496,17 @@ const submitPptxPoints = async () => {
pptxPointsInfosList = []
console.log(list.value)
var indexFlag = false
let index = 0
for (let i = 0; i < res.length; i++) {
for (let x = 0; x < list.value.length; x++) {
if (res[i].content == list.value[x].content) {
if (res[i].contentIn == list.value[x].contentIn) {
// 如果存在相同的数据话 不进入
indexFlag = true
}
}
if (!indexFlag) {
index += 1;
res[i].sort = index;
list.value.push(res[i])
}
}
@@ -709,12 +713,11 @@ const resetForm = () => {
formRef.value?.resetFields()
}
const dialogVisiblePoints = ref(false)
// 添加层级信息
const handleTreeWithLevel = (list, level = 1) => {
return list.map(item => {
return list.map((item) => {
const node = { ...item, level }
if (item.children && item.children.length > 0) {
node.children = handleTreeWithLevel(item.children, level + 1)
@@ -745,8 +748,6 @@ const handleNodeClick = (data, node) => {
}
}
const deptList = ref<Tree[]>([]) // 树形结构
/** 获得部门树 */
const getTree = async () => {
@@ -754,14 +755,11 @@ const getTree = async () => {
const tree = handleTree(res)
deptList.value = []
deptList.value = handleTreeWithLevel(tree)
}
const openPoints = async () => {
await getTree();
dialogVisiblePoints.value = true;
await getTree()
dialogVisiblePoints.value = true
}
</script>
<style lang="scss" scoped>
.edit-dialog {

View File

@@ -519,6 +519,7 @@ const submitWordPoints = async () => {
unit: '',
isExam: ''
}
let index = 0
wordPointsInfosList = []
for (let i = 0; i < res.length; i++) {
var indexFlag = false
@@ -529,6 +530,8 @@ const submitWordPoints = async () => {
}
}
if (!indexFlag) {
index += 1;
res[i].sort = index;
list.value.push(res[i])
}
}

View File

@@ -5,7 +5,7 @@
v-loading="formLoading"
:model="formData"
:rules="formRules"
label-width="120px"
label-width="160px"
>
<el-form-item label="上级节点" prop="parentId">
<el-tree-select
@@ -13,21 +13,82 @@
:data="wordTree"
:props="defaultProps"
check-strictly
default-expand-all
placeholder="请选择上级Pptx节点"
/>
</el-form-item>
<el-form-item label="Pptx节点名称" prop="name">
<el-input v-model="formData.name" placeholder="请输入Pptx节点名称" />
<el-form-item label="名称" prop="name">
<el-input v-model="formData.name" placeholder="请输入名称" />
</el-form-item>
<el-form-item label="显示排序" prop="sort">
<el-input-number v-model="formData.sort" :min="0" controls-position="right" />
<el-form-item label="标签名称" prop="title">
<el-input v-model="formData.title" placeholder="请输入标签名称" />
</el-form-item>
<el-form-item label="节点方法" prop="nodeFunction">
<el-input v-model="formData.nodeFunction" placeholder="请输入节点方法" />
<el-form-item label="值参数" prop="valueList">
<el-input v-model="formData.valueList" maxlength="50" placeholder="请输入值参数(多值判断#分隔) 当查询数据类型为文本是填入null" />
</el-form-item>
<el-form-item label="转中文" prop="toChinese">
<el-input v-model="formData.toChinese" maxlength="50" placeholder="请输入转中文" />
<el-form-item label="查询数据类型" prop="isText">
<el-select
v-model="formData.isText"
clearable
placeholder="请输入查找的是文本还是参数0参数1文本"
>
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.PPTX_ISTEXT)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="中文考点名称" prop="chineseName">
<el-input v-model="formData.chineseName" maxlength="50" placeholder="请输入中文考点名称" />
</el-form-item>
<el-form-item label="返回数据类型" prop="isTrue">
<el-select
v-model="formData.isTrue"
clearable
placeholder="请选择对结果的判断0:否 返回值1:是 返回 是否)"
>
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.PPTX_ISTRUE)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="参数归属" prop="isParameter">
<el-select
v-model="formData.isParameter"
clearable
placeholder="请选择0:内参数1外参数2内外参数方法使用#继续分割)"
>
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.PPTX_ISPARAMETER)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="考点级别" prop="titleType">
<el-select v-model="formData.titleType" clearable placeholder="请选择考点级别">
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.PPTX_TITLETYPE)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="值转换类型" prop="dataType">
<el-select v-model="formData.dataType" clearable placeholder="请选择值转换类型">
<el-option
v-for="dict in getStrDictOptions(DICT_TYPE.PPTX_DATATYPE)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="状态" prop="status">
<el-select v-model="formData.status" clearable placeholder="请选择状态">
@@ -39,55 +100,8 @@
/>
</el-select>
</el-form-item>
<el-form-item label="类型" prop="type">
<el-select v-model="formData.type" clearable placeholder="请选择状态">
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.WPS_PPTX)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="归属" prop="belongTo">
<el-select v-model="formData.belongTo" clearable placeholder="请选择归属">
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.PPTX_BELONG_TO)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="值类型" prop="isboo">
<el-select v-model="formData.isboo" clearable placeholder="请选择值类型">
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.PPTX_ISBOO)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="级别" prop="titleType">
<el-select v-model="formData.titleType" clearable placeholder="请选择级别">
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.PPTX_TITLE_TYPE)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="数据类型" prop="unit">
<el-select v-model="formData.unit" clearable placeholder="请选择数据类型">
<el-option
v-for="dict in getStrDictOptions(DICT_TYPE.WPS_UNIT)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
<el-form-item label="显示排序" prop="sort">
<el-input-number v-model="formData.sort" :min="0" controls-position="right" />
</el-form-item>
</el-form>
<template #footer>
@@ -114,21 +128,21 @@ const formLoading = ref(false) // 表单的加载中1修改时的数据加
const formType = ref('') // 表单的类型create - 新增update - 修改
const formData = ref({
id: undefined,
title: '',
parentId: undefined,
name: undefined,
sort: undefined,
nodeFunction: undefined,
toChinese: undefined,
title: undefined,
valueList: undefined,
chineseName: undefined,
status: CommonStatusEnum.ENABLE,
type: CommonStatusEnum.ENABLE,
belongTo: CommonStatusEnum.ENABLE,
isboo: CommonStatusEnum.ENABLE,
dataType: CommonStatusEnum.ENABLE,
isText: CommonStatusEnum.ENABLE,
isTrue: CommonStatusEnum.ENABLE,
titleType: CommonStatusEnum.ENABLE,
unit: CommonStatusEnum.ENABLE
isParameter: CommonStatusEnum.ENABLE
})
const formRules = reactive<FormRules>({
parentId: [{ required: true, message: '上级Pptx节点不能为空', trigger: 'blur' }],
parentId: [{ required: true, message: '上级Word节点不能为空', trigger: 'blur' }],
name: [{ required: true, message: '节点名称不能为空', trigger: 'blur' }],
sort: [{ required: true, message: '显示排序不能为空', trigger: 'blur' }],
status: [{ required: true, message: '状态不能为空', trigger: 'blur' }]
@@ -186,27 +200,27 @@ const submitForm = async () => {
const resetForm = () => {
formData.value = {
id: undefined,
title: '',
parentId: undefined,
name: undefined,
sort: undefined,
nodeFunction: undefined,
toChinese: undefined,
title: undefined,
valueList: undefined,
chineseName: undefined,
status: CommonStatusEnum.ENABLE,
type: CommonStatusEnum.ENABLE,
belongTo: CommonStatusEnum.ENABLE,
isboo: CommonStatusEnum.ENABLE,
dataType: CommonStatusEnum.ENABLE,
isText: CommonStatusEnum.ENABLE,
isTrue: CommonStatusEnum.ENABLE,
titleType: CommonStatusEnum.ENABLE,
unit: CommonStatusEnum.ENABLE
isParameter: CommonStatusEnum.ENABLE
}
formRef.value?.resetFields()
}
/** 获得Word树 */
/** 获得树 */
const getTree = async () => {
wordTree.value = []
const data = await PptxApi.getSimplePptxList()
let word: Tree = { id: 0, name: '顶级Pptx节点', children: [] }
let word: Tree = { id: 0, name: '顶级Word节点', children: [] }
word.children = handleTree(data)
wordTree.value.push(word)
}

View File

@@ -8,33 +8,7 @@
:inline="true"
label-width="110px"
>
<el-form-item label="Pptx节点名称" prop="name">
<el-input
v-model="queryParams.name"
placeholder="请输入Pptx节点名称"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="Pptx节点状态" prop="status">
<el-select
v-model="queryParams.status"
placeholder="请选择Pptx节点状态"
clearable
class="!w-240px"
>
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.COMMON_STATUS)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item>
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
<el-button
type="primary"
plain
@@ -58,37 +32,27 @@
:default-expand-all="isExpandAll"
v-if="refreshTable"
>
<el-table-column prop="name" label="Pptx节点名称" />
<el-table-column prop="nodeFunction" label="节点方法" />
<el-table-column prop="toChinese" label="转中文" />
<el-table-column prop="belongTo" label="归属" width="100">
<el-table-column prop="name" label="名称" />
<el-table-column prop="title" label="标签名称" />
<el-table-column prop="valueList" label="值参数(多值判断#分隔)" />
<el-table-column prop="isText" label="查询数据类型">
<template #default="scope">
<dict-tag :type="DICT_TYPE.PPTX_BELONG_TO" :value="scope.row.belongTo" />
<dict-tag :type="DICT_TYPE.PPTX_ISTEXT" :value="scope.row.isText" />
</template>
</el-table-column>
<el-table-column prop="type" label="类型" width="100">
<el-table-column prop="isTrue" label="返回数据类型">
<template #default="scope">
<dict-tag :type="DICT_TYPE.WPS_PPTX" :value="scope.row.type" />
<dict-tag :type="DICT_TYPE.PPTX_ISTRUE" :value="scope.row.isTrue" />
</template>
</el-table-column>
<el-table-column prop="isboo" label="值类型" width="100">
<el-table-column prop="dataType" label="值转换类型">
<template #default="scope">
<dict-tag :type="DICT_TYPE.PPTX_ISBOO" :value="scope.row.isboo" />
<dict-tag :type="DICT_TYPE.PPTX_DATATYPE" :value="scope.row.dataType" />
</template>
</el-table-column>
<el-table-column prop="titleType" label="级别" width="100">
<el-table-column prop="isParameter" label="参数归属">
<template #default="scope">
<dict-tag :type="DICT_TYPE.PPTX_TITLE_TYPE" :value="scope.row.titleType" />
</template>
</el-table-column>
<el-table-column prop="unit" label="数据类型" width="100">
<template #default="scope">
<dict-tag :type="DICT_TYPE.WPS_UNIT" :value="scope.row.unit" />
</template>
</el-table-column>
<el-table-column prop="status" label="状态" width="100">
<template #default="scope">
<dict-tag :type="DICT_TYPE.COMMON_STATUS" :value="scope.row.status" />
<dict-tag :type="DICT_TYPE.PPTX_ISPARAMETER" :value="scope.row.isParameter" />
</template>
</el-table-column>
<el-table-column label="操作" align="center" width="150">