From 1b5738ca9f50c29c7a7fadfbdda4bd2484c67a3f Mon Sep 17 00:00:00 2001
From: huababa1 <2037205722@qq.com>
Date: Wed, 13 Aug 2025 20:38:21 +0800
Subject: [PATCH] =?UTF-8?q?=E3=80=90=E4=BF=AE=E6=94=B9=E3=80=91excel?=
=?UTF-8?q?=E9=A1=B5=E9=9D=A2?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/views/paper/question/WpsXlsxForm.vue | 114 ++++++++++++++++++++++-
1 file changed, 110 insertions(+), 4 deletions(-)
diff --git a/src/views/paper/question/WpsXlsxForm.vue b/src/views/paper/question/WpsXlsxForm.vue
index f1e0172..08a29b2 100644
--- a/src/views/paper/question/WpsXlsxForm.vue
+++ b/src/views/paper/question/WpsXlsxForm.vue
@@ -331,6 +331,41 @@
show-checkbox
@check-change="handleCheckChange"
/>
+
+
+
+
+
+
+
+ 确定
+
+
+
+
+
+
+
+
+
+ 删除选中
+
+
+
确 定
取 消
@@ -351,6 +386,44 @@ defineOptions({ name: 'WpsXlsxFrom' })
const xlsxPointsList = ref([]) // 树形结构
const xlsxPointsInfoList = ref([]) // 树形结构
+const isCellType = ref(false) // 是否单元格
+const cellInputValue = ref('') // 上方输入框值
+const cellValues = ref<{ value: string }[]>([]) // 存储所有添加的数据
+const selectedRows = ref<{ value: string }[]>([]) // 多选的行
+
+
+// 添加到列表(带重复判断)
+const addCellValue = () => {
+ const value = cellInputValue.value.trim()
+ if (!value) return
+
+ // 判断是否重复
+ const exists = cellValues.value.some(item => item.value === value)
+ if (exists) {
+ ElMessage.warning('请勿重复添加')
+ return
+ }
+
+ cellValues.value.push({ value })
+
+}
+
+
+// 表格多选事件
+const handleSelectionChanges = (rows: any[]) => {
+ selectedRows.value = rows
+}
+
+// 删除选中项
+const deleteSelected = () => {
+ cellValues.value = cellValues.value.filter(
+ item => !selectedRows.value.includes(item)
+ )
+ selectedRows.value = []
+}
+
+
+
const list = ref([]) // 列表的数
const { t } = useI18n() // 国际化
const message = useMessage() // 消息弹窗
@@ -440,7 +513,7 @@ const titles = ref('')
const filePath = ref('')
const handleCheckChange = (data: Tree, checked: boolean, indeterminate: boolean) => {
- console.log(data)
+ console.log(data+"handleCheckChange")
const xlsxPoints = {
firstName: '',
index: '',
@@ -467,7 +540,7 @@ const getXlsxDataInfo = async () => {
const res = await XlsxApi.getXlsxDataInfo({ file: file.value })
xlsxPointsList.value = []
xlsxPointsList.value.push(...handleTree(res.data))
- }
+ }
}
// 打开考点窗口
@@ -476,17 +549,48 @@ const addXlsxForm = async () => {
}
const chineseName = ref('')
const textIndex = ref()
+const selectedType = ref('cell') // 初始值随便设
// 打开
const handleNodelClick = async (row: any) => {
// 获取名称
chineseName.value = '【' + row.name + '】'
+ // 判断是否是单元格
+ isCellType.value = row.type === 'cell'||row.type === 'range'||row.type === 'row'||row.type === 'col'
+ if (isCellType.value) {
+ selectedType.value = row.type // 点击节点时更新
+ cellInputValue.value ="";
+ cellValues.value = [] // 新的 cell 节点清空数据
+ }
+
+console.log(row.index+"row.indexrow.index")
textIndex.value = row.index
- const res = await XlsxApi.getXlsxByNameList(row.type)
+ const res = await XlsxApi.getSlideByNameList(row.type)
xlsxPointsInfoList.value = []
xlsxPointsInfoList.value.push(...handleTree(res))
dialogFormVisibleXlsxInfos.value = true
}
+
+const getPlaceholder = (type) => {
+ console.log(type+"typetypetype")
+ switch (type) {
+ case 'cell':
+ return '请输入单元格(如 A1)';
+ case 'range':
+ return '请输入范围(如 A1:B5)';
+ case 'row':
+ return '请输入行号(如 3)';
+ case 'col':
+ return '请输入列号(如 B)';
+ default:
+ return '请输入值';
+ }
+}
+
+
+
+
+
const handleDelete = (row) => {
console.log(row)
for (let i = 0; i < list.value.length; i++) {
@@ -497,10 +601,12 @@ const handleDelete = (row) => {
}
const submitXlsxPoints = async () => {
+ console.log('单元格输入内容:', cellValues.value)
console.log(xlsxPointsInfosList)
const res = await XlsxApi.getXlsxMaster({
data: JSON.stringify(xlsxPointsInfosList),
- file: file.value
+ file: file.value,
+ cell: cellValues.value.map(item => item.value) // 提取值数组
})
xlsxPointsInfosList = []
console.log(res)