Commit a5753907 authored by 何远江's avatar 何远江

标注添加是否填充,拆分优化,bug修改

parent 085fed5d
......@@ -12,10 +12,12 @@
"format": "prettier --write src/"
},
"dependencies": {
"@originjs/vite-plugin-commonjs": "^1.0.3",
"axios": "^1.6.1",
"element-plus": "^2.4.2",
"exceljs": "^4.4.0",
"file-saver": "^2.0.5",
"json-editor-vue3": "^1.1.1",
"loadsh": "^0.0.4",
"luckyexcel": "^1.0.1",
"pinia": "^2.1.7",
......
......@@ -50,9 +50,6 @@ export const deleteExcelScripts = (ids: any) => {
* @param params
* @returns
*/
export const testExcelScripts = (params: any) => {
return axios.get('/api/exlScript/testScript', {
params,
headers: formHeader
})
export const testExcelScripts = (data: any) => {
return axios.post('/api/exlScript/testScript', data)
}
......@@ -128,7 +128,17 @@
{{ getRangetxt(row.row, row.row, row.colum, row.colum) }}
</template>
</vxe-column>
<vxe-column title="是否数量" field="numFlag" width="70">
<vxe-column title="是否填充" width="70">
<template #default="{ row }">
<el-checkbox
size="small"
true-label="Y"
false-label="N"
v-model="row.fillFlag"
></el-checkbox>
</template>
</vxe-column>
<vxe-column title="是否拆分" field="numFlag" width="70">
<template #default="{ row }">
<el-checkbox
size="small"
......@@ -214,7 +224,7 @@
{{ getRangetxt(row.row, row.row, row.colum, row.colum) }}
</template>
</vxe-column>
<vxe-column title="是否数量" field="numFlag" width="70">
<vxe-column title="是否拆分" field="numFlag" width="70">
<template #default="{ row }">
<el-checkbox
size="small"
......
......@@ -118,10 +118,12 @@
</el-col>
<el-col style="margin-top: 10px">
<el-form-item label-width="0">
<el-button type="primary" @click="setAreaMark('data')">标记数据区</el-button>
<el-button type="primary" @click="setCaptionArea">标记说明区</el-button>
<el-button type="primary" @click="setExcludeArea">标记排除区</el-button>
<el-button type="success" @click="nextStep">下一步</el-button>
<el-button-group>
<el-button type="primary" @click="setAreaMark('data')">标记数据区</el-button>
<el-button type="primary" @click="setCaptionArea">标记说明区</el-button>
<el-button type="primary" @click="setExcludeArea">标记排除区</el-button>
<el-button type="success" @click="nextStep">下一步</el-button>
</el-button-group>
</el-form-item>
</el-col>
</el-row>
......@@ -158,7 +160,9 @@ watch(
() => formState.excelAreaType,
(val) => {
if (val) {
formState.excelAreaNicname = areaTypeSelectOption.value.find((v: any) => v.value == val).label + (props.areaTypeLen[val] || '')
formState.excelAreaNicname =
areaTypeSelectOption.value.find((v: any) => v.value == val).label +
(props.areaTypeLen[val] || '')
}
}
)
......@@ -232,7 +236,7 @@ const setExcludeArea = () => {
const delCaptionAndExclude = (row: any, index: number, type = 1) => {
;(type == 1 ? captionArea : excludeArea).value.splice(index, 1)
setRangeBackground(row, areaMarksColor[type == 1 ? 'default': 'data'])
setRangeBackground(row, areaMarksColor[type == 1 ? 'default' : 'data'])
}
// 获取有值的单元格
const getRangeCellValue = (type: 'caption' | 'exclude') => {
......
......@@ -9,7 +9,7 @@
height="200"
:edit-config="{ trigger: 'click', mode: 'cell' }"
>
<vxe-column title="title" field="title" :edit-render="{}">
<vxe-column title="title" field="title" :edit-render="{}" width="150">
<template #edit="{ row }">
<el-input v-model="row.title" size="small"></el-input>
</template>
......@@ -19,6 +19,16 @@
{{ getRangetxt(row.row, row.row, row.colum, row.colum) }}
</template>
</vxe-column>
<vxe-column title="是否填充" width="70">
<template #default="{ row }">
<el-checkbox
size="small"
true-label="Y"
false-label="N"
v-model="row.fillFlag"
></el-checkbox>
</template>
</vxe-column>
<vxe-column title="是否拆分" field="numFlag" width="70">
<template #default="{ row }">
<el-checkbox
......@@ -43,11 +53,32 @@
</template>
</vxe-column>
</vxe-table>
<el-button size="small" type="primary" @click="setAreaTitle">标记标题</el-button>
<el-button size="small" type="primary" @click="setNumFlag">设置拆分</el-button>
<el-button size="small" type="primary" @click="resetAreaTitle">重置</el-button>
<el-button size="small" type="success" @click="nextStep()">下一步</el-button>
<el-button size="small" type="success" @click="save">保存</el-button>
<el-button-group>
<el-button size="small" type="primary" @click="setAreaTitle">标记标题</el-button>
<el-button size="small" type="primary" @click="numFlagModalVisible = true"
>设置拆分</el-button
>
<el-button size="small" type="primary" @click="setFill">设置填充</el-button>
<el-button size="small" type="primary" @click="resetAreaTitle">重置</el-button>
<el-button size="small" type="success" @click="nextStep()">下一步</el-button>
<el-button size="small" type="success" @click="save">保存</el-button>
</el-button-group>
<vxe-modal title="设置拆分" v-model="numFlagModalVisible" size="small">
<el-form size="small" :model="numFlagForm" label-width="80px">
<el-form-item label="特性名称">
<el-input v-model="numFlagForm.numTitle"></el-input>
</el-form-item>
<el-form-item label="是否唯一">
<el-checkbox false-label="N" true-label="Y" v-model="numFlagForm.isOnly"></el-checkbox>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="setNumFlag">确定</el-button>
<el-button @click="numFlagModalVisible = false">取消</el-button>
</el-form-item>
</el-form>
</vxe-modal>
</div>
</template>
......@@ -69,6 +100,12 @@ const emits = defineEmits(['next'])
const excelAreaTitle = ref<Recordable[]>([])
const titleArea = ref<Recordable[]>([])
const numFlagModalVisible = ref(false)
const numFlagForm = reactive({
numTitle: '尺码',
isOnly: 'N'
})
/**设置拆分 */
const setNumFlag = () => {
if (!excelAreaTitle.value.length) return
......@@ -84,7 +121,27 @@ const setNumFlag = () => {
if (!cell) return
Reflect.set(cell, 'numFlag', 'Y')
!cell.numTitle && Reflect.set(cell, 'numTitle', '尺码')
Reflect.set(cell, 'isOnly', numFlagForm.isOnly)
!cell.numTitle && Reflect.set(cell, 'numTitle', numFlagForm.numTitle)
}
numFlagModalVisible.value = false
}
/**设置填充 */
const setFill = () => {
if (!excelAreaTitle.value.length) return
const rangeData = luckysheet.getRangeValue()
const titles = handleRangeTitle(rangeData)
// 匹配到的第一个单元格下标
const idx = excelAreaTitle.value.findIndex((item) => {
return compareSameCell(item, titles[0])
})
if (idx == -1) return
for (let i = 0; i <= titles.length - 1; i++) {
const cell = excelAreaTitle.value[i + idx]
if (!cell) return
Reflect.set(cell, 'fillFlag', 'Y')
}
}
......@@ -103,6 +160,8 @@ const setAreaTitle = () => {
: handleRangeTitle(rangeData).map((item) => {
Reflect.set(item, 'numTitle', '')
Reflect.set(item, 'numFlag', 'N')
Reflect.set(item, 'fillFlag', 'N')
Reflect.set(item, 'isOnly', 'N')
return item
})
......
......@@ -26,7 +26,6 @@
size="small"
min-height="460"
border
show-overflow="tooltip"
:loading="loading"
:data="tableData"
>
......@@ -34,9 +33,13 @@
<vxe-column field="customerId_dictText" title="客户名称" width="120"></vxe-column>
<vxe-column title="原始文件地址">
<template #default="{ row }">
<el-link target="_blank" :href="'/preview-excel?filePath=' + row.filePath">{{
row.filePath
}}</el-link>
<el-link
v-for="item in row.filePath.split(';')"
:key="item"
target="_blank"
:href="'/preview-excel?filePath=' + item"
>{{ item }}</el-link
>
</template>
</vxe-column>
<vxe-column title="标注文件地址">
......
......@@ -95,7 +95,10 @@
placeholder="请输入测试内容"
></el-input>
</el-col>
<el-col :span="16" v-if="!!testResult.title">
<el-col :span="8">
<JsonEditorValue v-model="jsonStr" :options="editorOptions" />
</el-col>
<el-col :span="8" v-if="!!testResult.title">
<el-alert v-bind="testResult" show-icon :closable="false" />
</el-col>
</el-row>
......@@ -115,6 +118,7 @@
</template>
<script lang="ts" setup>
import JsonEditorValue from 'json-editor-vue3'
import { onMounted, reactive, ref } from 'vue'
import {
getExcelScripts,
......@@ -150,8 +154,17 @@ const formEdit = reactive<Record<string, any>>({
title: '',
content: '',
cellValue: '',
mark: ''
mark: '',
orders: []
})
const editorOptions = reactive({
mode: 'code',
history: false,
search: false,
mainMenuBar: false,
navigationBar: false
})
const jsonStr = ref([{}])
const tableData = ref([])
const onHide = () => {
......@@ -193,6 +206,7 @@ const testResult = reactive<any>({
const sendTest = async () => {
try {
await formRef.value?.validateField(['content', 'cellValue'])
formEdit.orders = jsonStr.value instanceof Array ? jsonStr.value : [jsonStr.value]
const res = await testExcelScripts(formEdit)
if (res.data?.success) {
// 创建一个测试成功的消息
......
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment