|
@@ -1,8 +1,8 @@
|
|
|
<template>
|
|
|
<div class="data-fill-list-box">
|
|
|
<el-collapse v-model="ActiveKey" accordion @change="CollapseChange">
|
|
|
- <template v-for="(item,index) in listDatas" :key="item?.pkeyId">
|
|
|
- <el-collapse-item :name="`item-${index}-${item?.pkeyId}`" :disabled="item['isBussShow'] === 2" :id="`item-${index}-${item?.pkeyId}`">
|
|
|
+ <template v-for="(item,index) in listDatas" :key="item?.pKeyId">
|
|
|
+ <el-collapse-item :name="`item-${index}-${item?.pKeyId}`" :disabled="item['isBussShow'] === 2" :id="`item-${index}-${item?.pKeyId}`">
|
|
|
<template #title>
|
|
|
<div class="hc-collapse-item-header">
|
|
|
<div class="text-lg truncate item-title">{{item.nodeName}}</div>
|
|
@@ -34,7 +34,7 @@
|
|
|
</template>
|
|
|
<div class="data-fill-list-item-content">
|
|
|
<div class="data-fill-table-form-box">
|
|
|
- <div class="hc-excel-table-form-view" :id="`table-form-${item?.pkeyId}`"/>
|
|
|
+ <div class="hc-excel-table-form-view" :id="`table-form-${item?.pKeyId}`"/>
|
|
|
<div class="hc-no-table-form" v-if="item?.isTableForm === false">
|
|
|
<div class="table-form-no">
|
|
|
<img :src="notableform" alt=""/>
|
|
@@ -137,10 +137,11 @@
|
|
|
|
|
|
<script setup>
|
|
|
import {ref,watch,nextTick} from "vue";
|
|
|
-import notableform from '~src/assets/view/notableform.svg';
|
|
|
-import HTableForm from "~src/plugins/HTableForm"
|
|
|
import wbsApi from "~api/data-fill/wbs"
|
|
|
import HcUpload from "./HcUpload.vue"
|
|
|
+import HTableForm from "~src/plugins/HTableForm"
|
|
|
+import dataApi from "~api/tentative/detect/test";
|
|
|
+import notableform from '~src/assets/view/notableform.svg';
|
|
|
import {utilsText, isType, formValidate, deepClone} from "vue-utils-plus"
|
|
|
|
|
|
//初始
|
|
@@ -149,51 +150,38 @@ const props = defineProps({
|
|
|
type: Array,
|
|
|
default: () => ([])
|
|
|
},
|
|
|
- classify: {
|
|
|
- type: [String,Number],
|
|
|
- default: ''
|
|
|
- },
|
|
|
status: {
|
|
|
type: [String,Number],
|
|
|
default: ''
|
|
|
},
|
|
|
- primaryKeyId: {
|
|
|
- type: [String,Number],
|
|
|
- default: ''
|
|
|
- },
|
|
|
- contractId: {
|
|
|
- type: [String,Number],
|
|
|
- default: ''
|
|
|
+ baseData: {
|
|
|
+ type: Object,
|
|
|
+ default: () => ({})
|
|
|
},
|
|
|
})
|
|
|
+
|
|
|
const {isString, getObjNullValue, getArrValue} = isType()
|
|
|
const {setPosInsert, setPosRange} = utilsText()
|
|
|
const listDatas = ref(props.datas)
|
|
|
-const classify = ref(props.classify)
|
|
|
const isStatus = ref(props.status)
|
|
|
-const isPrimaryKeyId = ref(props.primaryKeyId)
|
|
|
-const contractId = ref(props.contractId)
|
|
|
+const baseData = ref(props.baseData)
|
|
|
|
|
|
//监听
|
|
|
watch(() => [
|
|
|
props.datas,
|
|
|
- props.classify,
|
|
|
- props.primaryKeyId,
|
|
|
- props.contractId,
|
|
|
-], ([datas, classifyVal, primaryKeyId, cid]) => {
|
|
|
+], ([datas]) => {
|
|
|
listDatas.value = datas
|
|
|
- classify.value = classifyVal
|
|
|
- isPrimaryKeyId.value = primaryKeyId
|
|
|
- contractId.value = cid
|
|
|
setFormDataNum(datas)
|
|
|
})
|
|
|
|
|
|
//监听
|
|
|
watch(() => [
|
|
|
- props.status
|
|
|
-], ([val]) => {
|
|
|
+ props.status,
|
|
|
+ props.baseData,
|
|
|
+], ([val, base]) => {
|
|
|
//1 未填报,2待上报,3已上报
|
|
|
isStatus.value = val
|
|
|
+ baseData.value = base
|
|
|
})
|
|
|
|
|
|
//渲染完成
|
|
@@ -201,14 +189,19 @@ nextTick(() => {
|
|
|
setFormDataNum(props.datas)
|
|
|
})
|
|
|
|
|
|
+//获取pKeyId
|
|
|
+const getValString = (val) => {
|
|
|
+ return val ? val + '' : ''
|
|
|
+}
|
|
|
+
|
|
|
//获取表单初始数据
|
|
|
-const getFormDataInit = (item, pkeyId) => {
|
|
|
+const getFormDataInit = ({projectId, contractId, pKeyId}) => {
|
|
|
+ const { nodeId } = baseData.value
|
|
|
return {
|
|
|
- projectId: item?.projectId,
|
|
|
- contractId: item?.contractId,
|
|
|
- classify: classify.value,
|
|
|
- pkeyId: pkeyId ? pkeyId + '' : '',
|
|
|
- nodeId: isPrimaryKeyId.value
|
|
|
+ projectId: projectId,
|
|
|
+ contractId: contractId,
|
|
|
+ pkeyId: getValString(pKeyId),
|
|
|
+ nodeId: nodeId
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -219,7 +212,7 @@ const setFormDataNum = (datas) => {
|
|
|
let newArr = [];
|
|
|
for (let i = 0; i < datas.length; i++) {
|
|
|
newArr.push({
|
|
|
- ...getFormDataInit(datas[i], datas[i].pkeyId),
|
|
|
+ ...getFormDataInit(datas[i]),
|
|
|
isCollapseLoad: false,
|
|
|
})
|
|
|
}
|
|
@@ -236,10 +229,10 @@ const CollapseChange = async (name) => {
|
|
|
getOffsetTop(name)
|
|
|
const index = names[1]
|
|
|
const item = listDatas.value[index]
|
|
|
- formKeyIds.value = item.pkeyId ? item.pkeyId + '' : ''
|
|
|
+ formKeyIds.value = getValString(item.pKeyId)
|
|
|
if (!item.isTableFormRender) {
|
|
|
//获取已填写的数据
|
|
|
- await getBussDataInfo(item,item.pkeyId, index)
|
|
|
+ await getBussDataInfo(item, index)
|
|
|
//渲染表单
|
|
|
await getExcelHtml(item,index)
|
|
|
}
|
|
@@ -252,10 +245,12 @@ const CollapseChange = async (name) => {
|
|
|
//获取模板标签数据
|
|
|
const formRegExpJson = ref({})
|
|
|
const getExcelHtml = async (item,index) => {
|
|
|
- const pkeyIds = item.pkeyId ? item.pkeyId + '' : ''
|
|
|
+ const pkeyIds = getValString(item.pKeyId)
|
|
|
if (pkeyIds) {
|
|
|
- const {error, code, data} = await wbsApi.getExcelHtml({pkeyId: pkeyIds}, false)
|
|
|
- const resData = isString(data) ? data || '' : ''
|
|
|
+ const {error, code, data} = await dataApi.getExcelHtml({
|
|
|
+ primaryKeyId: pkeyIds
|
|
|
+ }, false)
|
|
|
+ const resData = isString(data.data) ? data.data || '' : ''
|
|
|
if (!error && code === 200 && resData) {
|
|
|
item.isTableForm = true
|
|
|
//渲染表单
|
|
@@ -296,7 +291,7 @@ const setTableFormBlurReg = (pkeyId, event, key, reg, val, msg, item, index) =>
|
|
|
delete formRegExpJson.value[pkeyId]
|
|
|
dom.style = ''
|
|
|
} else {
|
|
|
- formRegExpJson.value[pkeyId] = {key, reg, val, msg, state, nodeName: item.nodeName, itemId: `item-${index}-${item?.pkeyId}`}
|
|
|
+ formRegExpJson.value[pkeyId] = {key, reg, val, msg, state, nodeName: item.nodeName, itemId: `item-${index}-${item?.pKeyId}`}
|
|
|
dom.style = '--el-input-border-color: #fe0000; box-shadow: 0 0 0 2px #fe0000 inset;'
|
|
|
window?.$message?.warning(msg)
|
|
|
}
|
|
@@ -308,19 +303,25 @@ const setTableFormBlurReg = (pkeyId, event, key, reg, val, msg, item, index) =>
|
|
|
}
|
|
|
|
|
|
//获取已填写的数据
|
|
|
-const getBussDataInfo = async (item, pkeyId, index) => {
|
|
|
- const pkeyIds = pkeyId ? pkeyId + '' : ''
|
|
|
+const getBussDataInfo = async (item, index) => {
|
|
|
+ const pkeyIds = getValString(item.pKeyId)
|
|
|
if (pkeyIds) {
|
|
|
- const {error, code, data} = await wbsApi.getBussDataInfo({
|
|
|
+ const {error, code, data} = await dataApi.getBussDataInfo({
|
|
|
pkeyId: pkeyIds
|
|
|
}, false)
|
|
|
const resData = getObjNullValue(data)
|
|
|
if (!error && code === 200 && resData) {
|
|
|
HTableForm.setPickerKey(resData)
|
|
|
- const InitObj = getFormDataInit(item, pkeyId) //有数据,关联数据
|
|
|
- formData.value[index] = {...resData, ...InitObj, isCollapseLoad: true}
|
|
|
+ const InitObj = getFormDataInit(item) //有数据,关联数据
|
|
|
+ formData.value[index] = {
|
|
|
+ ...resData, ...InitObj,
|
|
|
+ isCollapseLoad: true
|
|
|
+ }
|
|
|
} else {
|
|
|
- formData.value[index] = {...getFormDataInit(item, pkeyId), isCollapseLoad: true}
|
|
|
+ formData.value[index] = {
|
|
|
+ ...getFormDataInit(item),
|
|
|
+ isCollapseLoad: true
|
|
|
+ }
|
|
|
}
|
|
|
} else {
|
|
|
window?.$message?.warning('pkeyId为空')
|
|
@@ -333,7 +334,7 @@ const tableFormSaveClick = async (item,index) => {
|
|
|
if (isStatus.value !== '3') {
|
|
|
const res = await saveExcelBussData(item,index)
|
|
|
if (res) {
|
|
|
- await getBussPdfInfo(item)
|
|
|
+ //await getBussPdfInfo(item)
|
|
|
renewData()
|
|
|
}
|
|
|
} else {
|
|
@@ -345,10 +346,12 @@ const tableFormSaveClick = async (item,index) => {
|
|
|
const saveExcelBussData = async (item, index, showTip = true) => {
|
|
|
if (!getObjNullValue(formRegExpJson.value)) {
|
|
|
tableFormSaveLoading.value = true
|
|
|
- const InitObj = getFormDataInit(item, item.pkeyId)
|
|
|
- const {error, code, data} = await wbsApi.saveExcelBussData({
|
|
|
- ...formData.value[index],
|
|
|
- ...InitObj
|
|
|
+ const InitObj = getFormDataInit(item)
|
|
|
+ const {error, code} = await dataApi.saveExcelBussData({
|
|
|
+ ...baseData.value,
|
|
|
+ dataInfo: {
|
|
|
+ orderList: [{...formData.value[index], ...InitObj}]
|
|
|
+ }
|
|
|
})
|
|
|
//处理数据
|
|
|
tableFormSaveLoading.value = false
|
|
@@ -366,7 +369,7 @@ const saveExcelBussData = async (item, index, showTip = true) => {
|
|
|
|
|
|
//预览PDF
|
|
|
const getBussPdfInfo = async (item, showTip = true) => {
|
|
|
- const pkeyIds = item.pkeyId ? item.pkeyId + '' : ''
|
|
|
+ const pkeyIds = item.pKeyId ? item.pKeyId + '' : ''
|
|
|
if (pkeyIds) {
|
|
|
const {error, code, data} = await wbsApi.getBussPdfInfo({
|
|
|
pkeyId: pkeyIds
|
|
@@ -389,7 +392,7 @@ const getBussPdfInfo = async (item, showTip = true) => {
|
|
|
|
|
|
//删除本表
|
|
|
const delClick = async (item) => {
|
|
|
- const pkeyIds = item.pkeyId ? item.pkeyId + '' : ''
|
|
|
+ const pkeyIds = item.pKeyId ? item.pKeyId + '' : ''
|
|
|
if (pkeyIds) {
|
|
|
if (isStatus.value !== '3') {
|
|
|
const {error, code} = await wbsApi.removeBussTabInfo({
|
|
@@ -410,7 +413,7 @@ const delClick = async (item) => {
|
|
|
|
|
|
//复制本表
|
|
|
const copyClick = async (item,index) => {
|
|
|
- const pkeyIds = item.pkeyId ? item.pkeyId + '' : ''
|
|
|
+ const pkeyIds = item.pKeyId ? item.pKeyId + '' : ''
|
|
|
if (pkeyIds) {
|
|
|
if (isStatus.value !== '3') {
|
|
|
if (!item.isRenderTableForm) {
|
|
@@ -448,7 +451,7 @@ const copeBussTab = async (pkeyIds) => {
|
|
|
|
|
|
//隐藏本表
|
|
|
const hideClick = async (item) => {
|
|
|
- const pkeyIds = item.pkeyId ? item.pkeyId + '' : ''
|
|
|
+ const pkeyIds = item.pKeyId ? item.pKeyId + '' : ''
|
|
|
if (pkeyIds) {
|
|
|
if (isStatus.value !== '3') {
|
|
|
const isBussShow = item['isBussShow'] === 2 ? 1 : 2 //状态(1显示 2隐藏)
|
|
@@ -480,7 +483,7 @@ const uploadData = ref({})
|
|
|
|
|
|
//上传被点击
|
|
|
const uploadClick = (item,index) => {
|
|
|
- const pkeyIds = item.pkeyId ? item.pkeyId + '' : ''
|
|
|
+ const pkeyIds = item.pKeyId ? item.pKeyId + '' : ''
|
|
|
const keyName = `item-${index}-${pkeyIds}`
|
|
|
if (pkeyIds) {
|
|
|
if (isStatus.value !== '3' && item.isTableForm) {
|
|
@@ -733,7 +736,7 @@ defineExpose({
|
|
|
.data-fill-list-item-content {
|
|
|
position: relative;
|
|
|
display: flex;
|
|
|
- height: calc(100vh - 386px);
|
|
|
+ height: calc(100vh - 428px);
|
|
|
.data-fill-table-form-box {
|
|
|
position: relative;
|
|
|
padding: 24px 20px;
|