|
@@ -136,23 +136,16 @@
|
|
import {ref,watch,nextTick} from "vue";
|
|
import {ref,watch,nextTick} from "vue";
|
|
import notableform from '~src/assets/view/notableform.svg';
|
|
import notableform from '~src/assets/view/notableform.svg';
|
|
import {HTableForm} from "~src/plugins/HTableForm"
|
|
import {HTableForm} from "~src/plugins/HTableForm"
|
|
-import {utilsText, isType, toParse, formValidate} from "vue-utils-plus"
|
|
|
|
import wbsApi from "~api/data-fill/wbs"
|
|
import wbsApi from "~api/data-fill/wbs"
|
|
import HcUpload from "./HcUpload.vue"
|
|
import HcUpload from "./HcUpload.vue"
|
|
|
|
+import {utilsText, isType, toParse, formValidate,deepClone} from "vue-utils-plus"
|
|
|
|
+
|
|
//初始
|
|
//初始
|
|
const props = defineProps({
|
|
const props = defineProps({
|
|
datas: {
|
|
datas: {
|
|
type: Array,
|
|
type: Array,
|
|
default: () => ([])
|
|
default: () => ([])
|
|
},
|
|
},
|
|
- projectId: {
|
|
|
|
- type: [String,Number],
|
|
|
|
- default: ''
|
|
|
|
- },
|
|
|
|
- contractId: {
|
|
|
|
- type: [String,Number],
|
|
|
|
- default: ''
|
|
|
|
- },
|
|
|
|
classify: {
|
|
classify: {
|
|
type: [String,Number],
|
|
type: [String,Number],
|
|
default: ''
|
|
default: ''
|
|
@@ -164,8 +157,6 @@ const props = defineProps({
|
|
})
|
|
})
|
|
const {isString, getObjNullValue, getArrValue} = isType()
|
|
const {isString, getObjNullValue, getArrValue} = isType()
|
|
const {setPosInsert, setPosRange} = utilsText()
|
|
const {setPosInsert, setPosRange} = utilsText()
|
|
-const projectId = ref(props.projectId)
|
|
|
|
-const contractId = ref(props.contractId)
|
|
|
|
const listDatas = ref(props.datas)
|
|
const listDatas = ref(props.datas)
|
|
const classify = ref(props.classify)
|
|
const classify = ref(props.classify)
|
|
const isStatus = ref(props.status)
|
|
const isStatus = ref(props.status)
|
|
@@ -173,13 +164,9 @@ const isStatus = ref(props.status)
|
|
//监听
|
|
//监听
|
|
watch(() => [
|
|
watch(() => [
|
|
props.datas,
|
|
props.datas,
|
|
- props.projectId,
|
|
|
|
- props.contractId,
|
|
|
|
props.classify,
|
|
props.classify,
|
|
-], ([datas, pid, cid,classifyVal]) => {
|
|
|
|
|
|
+], ([datas, classifyVal]) => {
|
|
listDatas.value = datas
|
|
listDatas.value = datas
|
|
- projectId.value = pid
|
|
|
|
- contractId.value = cid
|
|
|
|
classify.value = classifyVal
|
|
classify.value = classifyVal
|
|
setFormDataNum(datas)
|
|
setFormDataNum(datas)
|
|
})
|
|
})
|
|
@@ -198,12 +185,12 @@ nextTick(() => {
|
|
})
|
|
})
|
|
|
|
|
|
//获取表单初始数据
|
|
//获取表单初始数据
|
|
-const getFormDataInit = (pkeyId) => {
|
|
|
|
|
|
+const getFormDataInit = (item, pkeyId) => {
|
|
return {
|
|
return {
|
|
- projectId: projectId.value,
|
|
|
|
- contractId: contractId.value,
|
|
|
|
|
|
+ projectId: item?.projectId,
|
|
|
|
+ contractId: item?.contractId,
|
|
classify: classify.value,
|
|
classify: classify.value,
|
|
- pkeyId: pkeyId + '',
|
|
|
|
|
|
+ pkeyId: pkeyId ? pkeyId + '' : '',
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -212,7 +199,7 @@ const formData = ref([])
|
|
const setFormDataNum = (datas) => {
|
|
const setFormDataNum = (datas) => {
|
|
let newArr = [];
|
|
let newArr = [];
|
|
for (let i = 0; i < datas.length; i++) {
|
|
for (let i = 0; i < datas.length; i++) {
|
|
- newArr.push(getFormDataInit(datas[i].pkeyId + ''))
|
|
|
|
|
|
+ newArr.push(getFormDataInit(datas[i], datas[i].pkeyId))
|
|
}
|
|
}
|
|
formData.value = newArr
|
|
formData.value = newArr
|
|
}
|
|
}
|
|
@@ -230,8 +217,7 @@ const CollapseChange = (name) => {
|
|
//渲染表单
|
|
//渲染表单
|
|
getExcelHtml(item,index)
|
|
getExcelHtml(item,index)
|
|
//获取已填写的数据
|
|
//获取已填写的数据
|
|
- const pkeyId = item.pkeyId || ''
|
|
|
|
- getBussDataInfo(pkeyId + '', index)
|
|
|
|
|
|
+ getBussDataInfo(item,item.pkeyId, index)
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|
|
getOffsetTop()
|
|
getOffsetTop()
|
|
@@ -240,9 +226,9 @@ const CollapseChange = (name) => {
|
|
|
|
|
|
//获取模板标签数据
|
|
//获取模板标签数据
|
|
const getExcelHtml = async (item,index) => {
|
|
const getExcelHtml = async (item,index) => {
|
|
- const pkeyId = item.pkeyId || ''
|
|
|
|
- if (pkeyId) {
|
|
|
|
- const {error, code, data} = await wbsApi.getExcelHtml({pkeyId: pkeyId + ''}, false)
|
|
|
|
|
|
+ const pkeyIds = item.pkeyId ? item.pkeyId + '' : ''
|
|
|
|
+ if (pkeyIds) {
|
|
|
|
+ const {error, code, data} = await wbsApi.getExcelHtml({pkeyId: pkeyIds}, false)
|
|
const resData = isString(data) ? data || '' : ''
|
|
const resData = isString(data) ? data || '' : ''
|
|
if (!error && code === 200 && resData) {
|
|
if (!error && code === 200 && resData) {
|
|
item.isTableForm = true
|
|
item.isTableForm = true
|
|
@@ -250,7 +236,7 @@ const getExcelHtml = async (item,index) => {
|
|
HTableForm({
|
|
HTableForm({
|
|
template: resData,
|
|
template: resData,
|
|
tableForm: formData.value[index],
|
|
tableForm: formData.value[index],
|
|
- appId: `#table-form-${pkeyId}`,
|
|
|
|
|
|
+ appId: `#table-form-${pkeyIds}`,
|
|
onRight: (event, KeyName) => {
|
|
onRight: (event, KeyName) => {
|
|
onRightClick(event, KeyName, index)
|
|
onRightClick(event, KeyName, index)
|
|
}
|
|
}
|
|
@@ -267,27 +253,32 @@ const getExcelHtml = async (item,index) => {
|
|
}
|
|
}
|
|
|
|
|
|
//获取已填写的数据
|
|
//获取已填写的数据
|
|
-const getBussDataInfo = async (pkeyId, index) => {
|
|
|
|
- const {error, code, data} = await wbsApi.getBussDataInfo({pkeyId: pkeyId}, false)
|
|
|
|
- const resData = getObjNullValue(data)
|
|
|
|
- if (!error && code === 200 && resData) {
|
|
|
|
- //处理日期范围数据
|
|
|
|
- const pickerKey = resData['pickerKey'] || ''
|
|
|
|
- const pickerKeys = pickerKey.split(',')
|
|
|
|
- for (let i = 0; i < pickerKeys.length; i++) {
|
|
|
|
- const val = resData[pickerKeys[i]] || ''
|
|
|
|
- if (val) {
|
|
|
|
- const data = val.replace(/'/g,'"');
|
|
|
|
- resData[pickerKeys[i]] = toParse(data) || []
|
|
|
|
- } else {
|
|
|
|
- resData[pickerKeys[i]] = []
|
|
|
|
|
|
+const getBussDataInfo = async (item,pkeyId, index) => {
|
|
|
|
+ const pkeyIds = pkeyId ? pkeyId + '' : ''
|
|
|
|
+ if (pkeyIds) {
|
|
|
|
+ const {error, code, data} = await wbsApi.getBussDataInfo({pkeyId: pkeyIds}, false)
|
|
|
|
+ const resData = getObjNullValue(data)
|
|
|
|
+ if (!error && code === 200 && resData) {
|
|
|
|
+ //处理日期范围数据
|
|
|
|
+ const pickerKey = resData['pickerKey'] || ''
|
|
|
|
+ const pickerKeys = pickerKey.split(',')
|
|
|
|
+ for (let i = 0; i < pickerKeys.length; i++) {
|
|
|
|
+ const val = resData[pickerKeys[i]] || ''
|
|
|
|
+ if (val) {
|
|
|
|
+ const data = val.replace(/'/g,'"');
|
|
|
|
+ resData[pickerKeys[i]] = toParse(data) || []
|
|
|
|
+ } else {
|
|
|
|
+ resData[pickerKeys[i]] = []
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
+ //有数据,关联数据
|
|
|
|
+ const InitObj = getFormDataInit(item, pkeyId)
|
|
|
|
+ formData.value[index] = { ...resData, ...InitObj}
|
|
|
|
+ } else {
|
|
|
|
+ formData.value[index] = getFormDataInit(item, pkeyId)
|
|
}
|
|
}
|
|
- //有数据,关联数据
|
|
|
|
- const InitObj = getFormDataInit(pkeyId)
|
|
|
|
- formData.value[index] = { ...InitObj, ...resData }
|
|
|
|
} else {
|
|
} else {
|
|
- formData.value[index] = getFormDataInit(pkeyId)
|
|
|
|
|
|
+ window?.$message?.warning('pkeyId为空')
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -306,10 +297,10 @@ const tableFormSaveClick = async (item,index) => {
|
|
|
|
|
|
//保存表单数据
|
|
//保存表单数据
|
|
const saveExcelBussData = async (item, index, showTip = true) => {
|
|
const saveExcelBussData = async (item, index, showTip = true) => {
|
|
|
|
+ const InitObj = getFormDataInit(item, item.pkeyId)
|
|
const {error, code, data} = await wbsApi.saveExcelBussData({
|
|
const {error, code, data} = await wbsApi.saveExcelBussData({
|
|
...formData.value[index],
|
|
...formData.value[index],
|
|
- pkeyId: item.pkeyId + '',
|
|
|
|
- classify: classify.value,
|
|
|
|
|
|
+ ...InitObj
|
|
}, false)
|
|
}, false)
|
|
//处理数据
|
|
//处理数据
|
|
if (!error && code === 200) {
|
|
if (!error && code === 200) {
|
|
@@ -323,70 +314,90 @@ const saveExcelBussData = async (item, index, showTip = true) => {
|
|
|
|
|
|
//预览PDF
|
|
//预览PDF
|
|
const getBussPdfInfo = async (item, showTip = true) => {
|
|
const getBussPdfInfo = async (item, showTip = true) => {
|
|
- const {error, code, data} = await wbsApi.getBussPdfInfo({
|
|
|
|
- pkeyId: item.pkeyId + ''
|
|
|
|
- },false)
|
|
|
|
- if (!error && code === 200) {
|
|
|
|
- if (data) {
|
|
|
|
- window.open(data, '_blank')
|
|
|
|
- } else if(showTip) {
|
|
|
|
- window?.$message?.warning('PDF错误')
|
|
|
|
|
|
+ const pkeyIds = item.pkeyId ? item.pkeyId + '' : ''
|
|
|
|
+ if (pkeyIds) {
|
|
|
|
+ const {error, code, data} = await wbsApi.getBussPdfInfo({
|
|
|
|
+ pkeyId: pkeyIds
|
|
|
|
+ },false)
|
|
|
|
+ if (!error && code === 200) {
|
|
|
|
+ if (data) {
|
|
|
|
+ window.open(data, '_blank')
|
|
|
|
+ } else if(showTip) {
|
|
|
|
+ window?.$message?.warning('PDF错误')
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ if(showTip) {
|
|
|
|
+ window?.$message?.warning(data.msg || '获取PDF失败')
|
|
|
|
+ }
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|
|
- if(showTip) {
|
|
|
|
- window?.$message?.warning(data.msg || '获取PDF失败')
|
|
|
|
- }
|
|
|
|
|
|
+ window?.$message?.warning('pkeyId为空')
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
//删除本表
|
|
//删除本表
|
|
const delClick = async (item) => {
|
|
const delClick = async (item) => {
|
|
- if (isStatus.value !== '3') {
|
|
|
|
- const {error, code} = await wbsApi.removeBussTabInfo({
|
|
|
|
- pkeyid: item.pkeyId + '',
|
|
|
|
- classify: classify.value,
|
|
|
|
- })
|
|
|
|
- if (!error && code === 200) {
|
|
|
|
- window?.$message?.warning('操作成功')
|
|
|
|
- renewData()
|
|
|
|
|
|
+ const pkeyIds = item.pkeyId ? item.pkeyId + '' : ''
|
|
|
|
+ if (pkeyIds) {
|
|
|
|
+ if (isStatus.value !== '3') {
|
|
|
|
+ const {error, code} = await wbsApi.removeBussTabInfo({
|
|
|
|
+ pkeyid: pkeyIds,
|
|
|
|
+ classify: classify.value,
|
|
|
|
+ })
|
|
|
|
+ if (!error && code === 200) {
|
|
|
|
+ window?.$message?.warning('操作成功')
|
|
|
|
+ renewData()
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ window?.$message?.warning('已上报的资料,不允许删除')
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|
|
- window?.$message?.warning('已上报的资料,不允许删除')
|
|
|
|
|
|
+ window?.$message?.warning('pkeyId为空')
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
//复制本表
|
|
//复制本表
|
|
const copyClick = async (item,index) => {
|
|
const copyClick = async (item,index) => {
|
|
- if (isStatus.value !== '3') {
|
|
|
|
- const res = await saveExcelBussData(item,index,false)
|
|
|
|
- if (res) {
|
|
|
|
- const {error, code} = await wbsApi.copeBussTab({pkeyId: item.pkeyId + ''})
|
|
|
|
- if (!error && code === 200) {
|
|
|
|
- window?.$message?.warning('操作成功')
|
|
|
|
- renewData()
|
|
|
|
|
|
+ const pkeyIds = item.pkeyId ? item.pkeyId + '' : ''
|
|
|
|
+ if (pkeyIds) {
|
|
|
|
+ if (isStatus.value !== '3') {
|
|
|
|
+ const res = await saveExcelBussData(item,index,false)
|
|
|
|
+ if (res) {
|
|
|
|
+ const {error, code} = await wbsApi.copeBussTab({pkeyId: pkeyIds})
|
|
|
|
+ if (!error && code === 200) {
|
|
|
|
+ window?.$message?.warning('操作成功')
|
|
|
|
+ renewData()
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ window?.$message?.warning('复制本表操作失败')
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|
|
- window?.$message?.warning('复制本表操作失败')
|
|
|
|
|
|
+ window?.$message?.warning('已上报的资料,不允许复制')
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|
|
- window?.$message?.warning('已上报的资料,不允许复制')
|
|
|
|
|
|
+ window?.$message?.warning('pkeyId为空')
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
//隐藏本表
|
|
//隐藏本表
|
|
const hideClick = async (item) => {
|
|
const hideClick = async (item) => {
|
|
- if (isStatus.value !== '3') {
|
|
|
|
- const isBussShow = item['isBussShow'] === 2 ? 1 : 2 //状态(1显示 2隐藏)
|
|
|
|
- const {error, code} = await wbsApi.showBussTab({
|
|
|
|
- pkeyId: item.pkeyId + '',
|
|
|
|
- status: isBussShow
|
|
|
|
- })
|
|
|
|
- if (!error && code === 200) {
|
|
|
|
- window?.$message?.warning('操作成功')
|
|
|
|
- renewData()
|
|
|
|
|
|
+ const pkeyIds = item.pkeyId ? item.pkeyId + '' : ''
|
|
|
|
+ if (pkeyIds) {
|
|
|
|
+ if (isStatus.value !== '3') {
|
|
|
|
+ const isBussShow = item['isBussShow'] === 2 ? 1 : 2 //状态(1显示 2隐藏)
|
|
|
|
+ const {error, code} = await wbsApi.showBussTab({
|
|
|
|
+ pkeyId: pkeyIds,
|
|
|
|
+ status: isBussShow
|
|
|
|
+ })
|
|
|
|
+ if (!error && code === 200) {
|
|
|
|
+ window?.$message?.warning('操作成功')
|
|
|
|
+ renewData()
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ window?.$message?.warning('已上报的资料,不允许隐藏')
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|
|
- window?.$message?.warning('已上报的资料,不允许隐藏')
|
|
|
|
|
|
+ window?.$message?.warning('pkeyId为空')
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -402,13 +413,18 @@ const uploadData = ref({})
|
|
|
|
|
|
//上传被点击
|
|
//上传被点击
|
|
const uploadClick = (item) => {
|
|
const uploadClick = (item) => {
|
|
- if (isStatus.value !== '3') {
|
|
|
|
- uploadModal.value = true
|
|
|
|
- uploadData.value = getFormDataInit(item.pkeyId + '')
|
|
|
|
- //获取文件列表
|
|
|
|
- getBussFileList(item.pkeyId + '')
|
|
|
|
|
|
+ const pkeyIds = item.pkeyId ? item.pkeyId + '' : ''
|
|
|
|
+ if (pkeyIds) {
|
|
|
|
+ if (isStatus.value !== '3') {
|
|
|
|
+ uploadModal.value = true
|
|
|
|
+ uploadData.value = getFormDataInit(item,pkeyIds)
|
|
|
|
+ //获取文件列表
|
|
|
|
+ getBussFileList(pkeyIds)
|
|
|
|
+ } else {
|
|
|
|
+ window?.$message?.warning('已上报的资料,不允许上传')
|
|
|
|
+ }
|
|
} else {
|
|
} else {
|
|
- window?.$message?.warning('已上报的资料,不允许上传')
|
|
|
|
|
|
+ window?.$message?.warning('pkeyId为空')
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -574,7 +590,10 @@ const renewData = () => {
|
|
|
|
|
|
//获取表单数据
|
|
//获取表单数据
|
|
const getFormData = () => {
|
|
const getFormData = () => {
|
|
- return formData.value
|
|
|
|
|
|
+ const formArr = deepClone(formData.value);
|
|
|
|
+ return formArr.filter((item) => {
|
|
|
|
+ return (item.pkeyId??'') !== '';
|
|
|
|
+ })
|
|
}
|
|
}
|
|
|
|
|
|
// 暴露出去
|
|
// 暴露出去
|