|
@@ -8,16 +8,29 @@
|
|
<div class="hac-card-project-box">
|
|
<div class="hac-card-project-box">
|
|
<div class="left-box">
|
|
<div class="left-box">
|
|
<el-scrollbar>
|
|
<el-scrollbar>
|
|
- <el-form ref="formRef" :model="formModel" :rules="formRules" label-width="auto" size="large" :disabled="dataType === 'view'">
|
|
|
|
|
|
+ <el-form
|
|
|
|
+ ref="formRef" :model="formModel" :rules="formRules" label-width="auto" size="large"
|
|
|
|
+ :disabled="dataType === 'view'"
|
|
|
|
+ >
|
|
<div class="project-form-top">
|
|
<div class="project-form-top">
|
|
<el-form-item label="出差事由:" prop="tripDesc">
|
|
<el-form-item label="出差事由:" prop="tripDesc">
|
|
<el-input v-model="formModel.tripDesc" />
|
|
<el-input v-model="formModel.tripDesc" />
|
|
</el-form-item>
|
|
</el-form-item>
|
|
- <HcCardItem v-for="(item, index) in formModel.journeyList" :title="`行程${Number(index + 1)}` " class="hc-card-item-box mt-2" ui="hac-bg-grey">
|
|
|
|
- <el-form :ref="(el) => setFormItemRefs(el, index)" :model="item" :rules="formItemRules" label-position="left" size="large">
|
|
|
|
|
|
+ <HcCardItem
|
|
|
|
+ v-for="(item, index) in formModel.journeyList"
|
|
|
|
+ :title="`行程${Number(index + 1)}` " class="hc-card-item-box mt-2"
|
|
|
|
+ ui="hac-bg-grey"
|
|
|
|
+ >
|
|
|
|
+ <el-form
|
|
|
|
+ :ref="(el) => setFormItemRefs(el, index)" :model="item" :rules="formItemRules"
|
|
|
|
+ label-position="left" size="large"
|
|
|
|
+ >
|
|
<el-form-item label="交通工具" prop="trafficType">
|
|
<el-form-item label="交通工具" prop="trafficType">
|
|
<el-select v-model="item.trafficType" clearable block placeholder="请选择">
|
|
<el-select v-model="item.trafficType" clearable block placeholder="请选择">
|
|
- <el-option v-for="item in trafficTypeData" :label="item.dictName" :value="item.dictValue" />
|
|
|
|
|
|
+ <el-option
|
|
|
|
+ v-for="item in trafficTypeData" :label="item.dictName"
|
|
|
|
+ :value="item.dictValue"
|
|
|
|
+ />
|
|
</el-select>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
<el-form-item label="单程往返" prop="isSingletonType">
|
|
<el-form-item label="单程往返" prop="isSingletonType">
|
|
@@ -102,7 +115,10 @@
|
|
</el-form-item>
|
|
</el-form-item>
|
|
<el-form-item label="所属项目" prop="projectId">
|
|
<el-form-item label="所属项目" prop="projectId">
|
|
<el-select v-model="formModel.projectId" clearable block placeholder="请选择">
|
|
<el-select v-model="formModel.projectId" clearable block placeholder="请选择">
|
|
- <el-option v-for="item in projectType" :label="item.projectName" :value="item.projectId" />
|
|
|
|
|
|
+ <el-option
|
|
|
|
+ v-for="item in projectType" :label="item.projectName"
|
|
|
|
+ :value="item.projectId"
|
|
|
|
+ />
|
|
</el-select>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
<el-form-item label="关联预算计划" prop="key">
|
|
<el-form-item label="关联预算计划" prop="key">
|
|
@@ -148,10 +164,15 @@
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<!-- 关联预算计划 -->
|
|
<!-- 关联预算计划 -->
|
|
- <HcDialog v-model="budgetModal" is-table title="关联预算计划" widths="80%" save-text="保存" @close="budgetCloseClick" @save="budgetSaveClick">
|
|
|
|
|
|
+ <HcDialog
|
|
|
|
+ v-model="budgetModal" is-table title="关联预算计划" widths="80%" save-text="保存"
|
|
|
|
+ @close="budgetCloseClick" @save="budgetSaveClick"
|
|
|
|
+ >
|
|
<HcTable :column="tableBudgetColumn" :datas="tableBudgetData" :loading="tableBudgetLoading">
|
|
<HcTable :column="tableBudgetColumn" :datas="tableBudgetData" :loading="tableBudgetLoading">
|
|
<template #action="{ row }">
|
|
<template #action="{ row }">
|
|
- <el-button v-if="row.isRelevance" size="small" type="danger" @click="rowDisassociate(row)">取消关联</el-button>
|
|
|
|
|
|
+ <el-button v-if="row.isRelevance" size="small" type="danger" @click="rowDisassociate(row)">
|
|
|
|
+ 取消关联
|
|
|
|
+ </el-button>
|
|
<el-button v-else size="small" type="primary" @click="rowRelevance(row)">关联</el-button>
|
|
<el-button v-else size="small" type="primary" @click="rowRelevance(row)">关联</el-button>
|
|
</template>
|
|
</template>
|
|
</HcTable>
|
|
</HcTable>
|
|
@@ -163,11 +184,12 @@
|
|
import { onActivated, ref, watch } from 'vue'
|
|
import { onActivated, ref, watch } from 'vue'
|
|
import { useRoute, useRouter } from 'vue-router'
|
|
import { useRoute, useRouter } from 'vue-router'
|
|
import { getDictInfo, getProjectList, getuserList } from '~api/other'
|
|
import { getDictInfo, getProjectList, getuserList } from '~api/other'
|
|
-import { arrIndex, deepClone, formValidate, getArrValue } from 'js-fast-way'
|
|
|
|
|
|
+import { arrIndex, deepClone, formValidate, getArrValue, getObjValue } from 'js-fast-way'
|
|
import { getApprovesList } from '~api/other'
|
|
import { getApprovesList } from '~api/other'
|
|
import businessApi from '~api/attendance/business-trip.js'
|
|
import businessApi from '~api/attendance/business-trip.js'
|
|
import { getDiffDay } from '~uti/tools'
|
|
import { getDiffDay } from '~uti/tools'
|
|
import { useAppStore } from '~src/store'
|
|
import { useAppStore } from '~src/store'
|
|
|
|
+
|
|
const store = useAppStore()
|
|
const store = useAppStore()
|
|
|
|
|
|
const router = useRouter()
|
|
const router = useRouter()
|
|
@@ -179,14 +201,15 @@ const dataId = ref(useRoutes?.query?.id ?? '')
|
|
|
|
|
|
//缓存页面被激活时
|
|
//缓存页面被激活时
|
|
onActivated(() => {
|
|
onActivated(() => {
|
|
- dataType.value = useRoutes?.query?.type ?? 'view'
|
|
|
|
- dataId.value = useRoutes?.query?.id ?? ''
|
|
|
|
- getTrafficType()
|
|
|
|
- getProjectData()
|
|
|
|
- getDetailsData()
|
|
|
|
- getUserDict()
|
|
|
|
- getApprovesListData()
|
|
|
|
|
|
+ dataType.value = useRoutes?.query?.type ?? 'view'
|
|
|
|
+ dataId.value = useRoutes?.query?.id ?? ''
|
|
|
|
+ getTrafficType()
|
|
|
|
+ getProjectData()
|
|
|
|
+ getDetailsData()
|
|
|
|
+ getUserDict()
|
|
|
|
+ getApprovesListData()
|
|
})
|
|
})
|
|
|
|
+const detailsData = ref({})
|
|
const getDetailsData = async () => {
|
|
const getDetailsData = async () => {
|
|
if (dataType.value === 'view') {
|
|
if (dataType.value === 'view') {
|
|
//预览详情
|
|
//预览详情
|
|
@@ -212,8 +235,6 @@ const getDetailsData = async () => {
|
|
} else {
|
|
} else {
|
|
newDetails = detailsObj
|
|
newDetails = detailsObj
|
|
newDetails.details = [detailsObj1]
|
|
newDetails.details = [detailsObj1]
|
|
-
|
|
|
|
- window.$message?.error(msg)
|
|
|
|
}
|
|
}
|
|
detailsData.value = newDetails
|
|
detailsData.value = newDetails
|
|
} else if (dataType.value === 'draft') {
|
|
} else if (dataType.value === 'draft') {
|
|
@@ -246,14 +267,12 @@ const getDetailsData = async () => {
|
|
console.log(formModel.value, 'formModel.value')
|
|
console.log(formModel.value, 'formModel.value')
|
|
formModel.value = newDetails
|
|
formModel.value = newDetails
|
|
} else {
|
|
} else {
|
|
-
|
|
|
|
formModel.value = {
|
|
formModel.value = {
|
|
...detailsObj,
|
|
...detailsObj,
|
|
details: [detailsObj1],
|
|
details: [detailsObj1],
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|
|
-
|
|
|
|
formModel.value = {
|
|
formModel.value = {
|
|
...detailsObj,
|
|
...detailsObj,
|
|
details: [detailsObj1],
|
|
details: [detailsObj1],
|
|
@@ -261,12 +280,12 @@ const getDetailsData = async () => {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
//获取间隔天数
|
|
//获取间隔天数
|
|
-const getDiffDaydata = (item)=>{
|
|
|
|
- let time = getDiffDay(item.startDate, item.endDate)
|
|
|
|
|
|
+const getDiffDaydata = (item) => {
|
|
|
|
+ let time = getDiffDay(item.startDate, item.endDate)
|
|
|
|
|
|
- item.duration = time || 0
|
|
|
|
|
|
+ item.duration = time || 0
|
|
}
|
|
}
|
|
-const getwarin = (item)=>{
|
|
|
|
|
|
+const getwarin = (item) => {
|
|
if (item.endDate < item.startDate) {
|
|
if (item.endDate < item.startDate) {
|
|
window.$message.warning('结束时间不能小于开始时间')
|
|
window.$message.warning('结束时间不能小于开始时间')
|
|
|
|
|
|
@@ -275,45 +294,45 @@ const getwarin = (item)=>{
|
|
//行程表单
|
|
//行程表单
|
|
const formItemRules = {
|
|
const formItemRules = {
|
|
isSingletonType: {
|
|
isSingletonType: {
|
|
- required: true,
|
|
|
|
- trigger: 'blur',
|
|
|
|
- message: '请选择单程往返',
|
|
|
|
- },
|
|
|
|
- trafficType: {
|
|
|
|
- required: true,
|
|
|
|
- trigger: 'blur',
|
|
|
|
- message: '请选择交通工具',
|
|
|
|
- },
|
|
|
|
- startCity: {
|
|
|
|
- required: true,
|
|
|
|
- trigger: 'blur',
|
|
|
|
- message: '请选择出发城市',
|
|
|
|
- },
|
|
|
|
- endCity: {
|
|
|
|
- required: true,
|
|
|
|
- trigger: 'blur',
|
|
|
|
- message: '请选择目的城市',
|
|
|
|
- },
|
|
|
|
- startDate: {
|
|
|
|
- required: true,
|
|
|
|
- trigger: 'blur',
|
|
|
|
- message: '请选择开始时间',
|
|
|
|
- },
|
|
|
|
- endDate: {
|
|
|
|
- required: true,
|
|
|
|
- trigger: 'blur',
|
|
|
|
- message: '请选择结束时间',
|
|
|
|
- },
|
|
|
|
- duration: {
|
|
|
|
- required: true,
|
|
|
|
- trigger: 'blur',
|
|
|
|
- message: '请输入时长',
|
|
|
|
- },
|
|
|
|
- durationAll:{
|
|
|
|
- required: true,
|
|
|
|
- trigger: 'blur',
|
|
|
|
- message: '请输入天数',
|
|
|
|
- },
|
|
|
|
|
|
+ required: true,
|
|
|
|
+ trigger: 'blur',
|
|
|
|
+ message: '请选择单程往返',
|
|
|
|
+ },
|
|
|
|
+ trafficType: {
|
|
|
|
+ required: true,
|
|
|
|
+ trigger: 'blur',
|
|
|
|
+ message: '请选择交通工具',
|
|
|
|
+ },
|
|
|
|
+ startCity: {
|
|
|
|
+ required: true,
|
|
|
|
+ trigger: 'blur',
|
|
|
|
+ message: '请选择出发城市',
|
|
|
|
+ },
|
|
|
|
+ endCity: {
|
|
|
|
+ required: true,
|
|
|
|
+ trigger: 'blur',
|
|
|
|
+ message: '请选择目的城市',
|
|
|
|
+ },
|
|
|
|
+ startDate: {
|
|
|
|
+ required: true,
|
|
|
|
+ trigger: 'blur',
|
|
|
|
+ message: '请选择开始时间',
|
|
|
|
+ },
|
|
|
|
+ endDate: {
|
|
|
|
+ required: true,
|
|
|
|
+ trigger: 'blur',
|
|
|
|
+ message: '请选择结束时间',
|
|
|
|
+ },
|
|
|
|
+ duration: {
|
|
|
|
+ required: true,
|
|
|
|
+ trigger: 'blur',
|
|
|
|
+ message: '请输入时长',
|
|
|
|
+ },
|
|
|
|
+ durationAll: {
|
|
|
|
+ required: true,
|
|
|
|
+ trigger: 'blur',
|
|
|
|
+ message: '请输入天数',
|
|
|
|
+ },
|
|
}
|
|
}
|
|
const formRefs = ref([])
|
|
const formRefs = ref([])
|
|
const setFormItemRefs = (el, index) => {
|
|
const setFormItemRefs = (el, index) => {
|
|
@@ -334,23 +353,21 @@ const getFormRef = async (index) => {
|
|
}
|
|
}
|
|
|
|
|
|
//增加行程addJourney
|
|
//增加行程addJourney
|
|
-const addJourney = (item, index)=>{
|
|
|
|
- formModel.value?.journeyList.push({})
|
|
|
|
|
|
+const addJourney = (item, index) => {
|
|
|
|
+ formModel.value?.journeyList.push({})
|
|
}
|
|
}
|
|
-const delJourney = (item, index)=>{
|
|
|
|
|
|
+const delJourney = (item, index) => {
|
|
console.log(index, 'index')
|
|
console.log(index, 'index')
|
|
formModel?.value.journeyList.splice(index, 1)
|
|
formModel?.value.journeyList.splice(index, 1)
|
|
}
|
|
}
|
|
//单程往返
|
|
//单程往返
|
|
const wayType = ref([
|
|
const wayType = ref([
|
|
- { name: '单程', key: 1 },
|
|
|
|
- { name: '往返', key: 2 },
|
|
|
|
|
|
+ { name: '单程', key: 1 },
|
|
|
|
+ { name: '往返', key: 2 },
|
|
|
|
|
|
])
|
|
])
|
|
//交通工具
|
|
//交通工具
|
|
-const trafficTypeData = ref([
|
|
|
|
-
|
|
|
|
-])
|
|
|
|
|
|
+const trafficTypeData = ref([])
|
|
//交通类型字典
|
|
//交通类型字典
|
|
const getTrafficType = async () => {
|
|
const getTrafficType = async () => {
|
|
const { error, code, data } = await getDictInfo('traffic_type')
|
|
const { error, code, data } = await getDictInfo('traffic_type')
|
|
@@ -363,15 +380,13 @@ const getTrafficType = async () => {
|
|
}
|
|
}
|
|
//出发城市cityType
|
|
//出发城市cityType
|
|
const cityType = ref([
|
|
const cityType = ref([
|
|
- { name: '北京', key: '1' },
|
|
|
|
- { name: '上海', key: '2' },
|
|
|
|
- { name: '深圳', key: '3' },
|
|
|
|
- { name: '成都', key: '4' },
|
|
|
|
|
|
+ { name: '北京', key: '1' },
|
|
|
|
+ { name: '上海', key: '2' },
|
|
|
|
+ { name: '深圳', key: '3' },
|
|
|
|
+ { name: '成都', key: '4' },
|
|
])
|
|
])
|
|
//项目类型
|
|
//项目类型
|
|
-const projectType = ref([
|
|
|
|
-
|
|
|
|
-])
|
|
|
|
|
|
+const projectType = ref([])
|
|
|
|
|
|
//获取项目数据
|
|
//获取项目数据
|
|
|
|
|
|
@@ -388,54 +403,53 @@ const getProjectData = async () => {
|
|
|
|
|
|
const partneroptions = ref([])
|
|
const partneroptions = ref([])
|
|
|
|
|
|
-const getUserDict = async ()=>{
|
|
|
|
- const { error, code, data } = await getuserList({ tenantId:store.tenantId })
|
|
|
|
|
|
+const getUserDict = async () => {
|
|
|
|
+ const { error, code, data } = await getuserList({ tenantId: store.tenantId })
|
|
if (!error && code === 200) {
|
|
if (!error && code === 200) {
|
|
- partneroptions.value = getArrValue(data)
|
|
|
|
|
|
+ partneroptions.value = getArrValue(data)
|
|
|
|
|
|
} else {
|
|
} else {
|
|
- partneroptions.value = []
|
|
|
|
|
|
+ partneroptions.value = []
|
|
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
//合同类型
|
|
//合同类型
|
|
const contractType = ref([
|
|
const contractType = ref([
|
|
- { name: '咨询服务+软件', key: '1' },
|
|
|
|
- { name: '软件', key: '2' },
|
|
|
|
- { name: '咨询服务', key: '3' },
|
|
|
|
- { name: '后期服务+软件', key: '4' },
|
|
|
|
- { name: '数字化扫描+软件', key: '5' },
|
|
|
|
|
|
+ { name: '咨询服务+软件', key: '1' },
|
|
|
|
+ { name: '软件', key: '2' },
|
|
|
|
+ { name: '咨询服务', key: '3' },
|
|
|
|
+ { name: '后期服务+软件', key: '4' },
|
|
|
|
+ { name: '数字化扫描+软件', key: '5' },
|
|
])
|
|
])
|
|
|
|
|
|
|
|
|
|
-
|
|
|
|
//顶部表单数据
|
|
//顶部表单数据
|
|
const formRef = ref(null)
|
|
const formRef = ref(null)
|
|
const formModel = ref({
|
|
const formModel = ref({
|
|
- journeyList:[{}],
|
|
|
|
|
|
+ journeyList: [{}],
|
|
})
|
|
})
|
|
//深度监听
|
|
//深度监听
|
|
watch(() => [
|
|
watch(() => [
|
|
formModel.value.journeyList,
|
|
formModel.value.journeyList,
|
|
], ([datas]) => {
|
|
], ([datas]) => {
|
|
- let timeall = 0
|
|
|
|
- formModel.value.journeyList.forEach((ele)=>{
|
|
|
|
- timeall = ele.duration + timeall
|
|
|
|
- })
|
|
|
|
- formModel.value.durationAll = timeall//计算总时长
|
|
|
|
|
|
+ let timeall = 0
|
|
|
|
+ formModel.value.journeyList.forEach((ele) => {
|
|
|
|
+ timeall = ele.duration + timeall
|
|
|
|
+ })
|
|
|
|
+ formModel.value.durationAll = timeall//计算总时长
|
|
}, { deep: true })
|
|
}, { deep: true })
|
|
const formRules = {
|
|
const formRules = {
|
|
tripDesc: {
|
|
tripDesc: {
|
|
- required: true,
|
|
|
|
- trigger: 'blur',
|
|
|
|
- message: '请输入项出差事由',
|
|
|
|
- },
|
|
|
|
|
|
+ required: true,
|
|
|
|
+ trigger: 'blur',
|
|
|
|
+ message: '请输入项出差事由',
|
|
|
|
+ },
|
|
|
|
|
|
- projectId: {
|
|
|
|
- required: true,
|
|
|
|
- trigger: 'blur',
|
|
|
|
- message: '请选择项目',
|
|
|
|
- },
|
|
|
|
|
|
+ projectId: {
|
|
|
|
+ required: true,
|
|
|
|
+ trigger: 'blur',
|
|
|
|
+ message: '请选择项目',
|
|
|
|
+ },
|
|
|
|
|
|
|
|
|
|
}
|
|
}
|
|
@@ -444,8 +458,8 @@ const formRules = {
|
|
//日期时间被选择
|
|
//日期时间被选择
|
|
const betweenTime = ref(null)
|
|
const betweenTime = ref(null)
|
|
const betweenTimeUpdate = ({ arr, query }) => {
|
|
const betweenTimeUpdate = ({ arr, query }) => {
|
|
- betweenTime.value = arr
|
|
|
|
- //formModel.value.betweenTime = query
|
|
|
|
|
|
+ betweenTime.value = arr
|
|
|
|
+ //formModel.value.betweenTime = query
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -454,20 +468,19 @@ const timeLineData = ref([
|
|
{ title: '审批人', section: '' },
|
|
{ title: '审批人', section: '' },
|
|
|
|
|
|
|
|
|
|
-
|
|
|
|
])
|
|
])
|
|
const timeData = ref([])
|
|
const timeData = ref([])
|
|
-const getApprovesListData = async ()=>{
|
|
|
|
- timeLineData.value = [ { title: '审批人', section: '' }]
|
|
|
|
|
|
+const getApprovesListData = async () => {
|
|
|
|
+ timeLineData.value = [{ title: '审批人', section: '' }]
|
|
const { error, code, data } = await getApprovesList()
|
|
const { error, code, data } = await getApprovesList()
|
|
if (!error && code === 200) {
|
|
if (!error && code === 200) {
|
|
- timeData.value = data['出差管理流程']
|
|
|
|
- let approveArr = timeData.value['审批人']
|
|
|
|
- let copyArr = timeData.value['抄送人']
|
|
|
|
- approveArr.forEach((ele)=>{
|
|
|
|
- timeLineData.value.push({ title:'', section:ele })
|
|
|
|
- })
|
|
|
|
- timeLineData.value.push({ title:'抄送人', section:copyArr.join(',') })
|
|
|
|
|
|
+ timeData.value = data['出差管理流程']
|
|
|
|
+ let approveArr = timeData.value['审批人']
|
|
|
|
+ let copyArr = timeData.value['抄送人']
|
|
|
|
+ approveArr.forEach((ele) => {
|
|
|
|
+ timeLineData.value.push({ title: '', section: ele })
|
|
|
|
+ })
|
|
|
|
+ timeLineData.value.push({ title: '抄送人', section: copyArr.join(',') })
|
|
} else {
|
|
} else {
|
|
timeLineData.value = []
|
|
timeLineData.value = []
|
|
}
|
|
}
|
|
@@ -497,7 +510,7 @@ const budgetSaveClick = () => {
|
|
formModel.value.budgetPlanIds = ids
|
|
formModel.value.budgetPlanIds = ids
|
|
window.$message.success('操作成功')
|
|
window.$message.success('操作成功')
|
|
budgetModal.value = false
|
|
budgetModal.value = false
|
|
- console.log( formModel.value, ' formModel.value.value.details')
|
|
|
|
|
|
+ console.log(formModel.value, ' formModel.value.value.details')
|
|
}
|
|
}
|
|
|
|
|
|
//关联预算计划表格
|
|
//关联预算计划表格
|
|
@@ -549,7 +562,7 @@ const rowDisassociate = (row) => {
|
|
|
|
|
|
//关联
|
|
//关联
|
|
const rowRelevance = (row) => {
|
|
const rowRelevance = (row) => {
|
|
- tableBudgetData.value.forEach((ele)=>{
|
|
|
|
|
|
+ tableBudgetData.value.forEach((ele) => {
|
|
ele.isRelevance = false
|
|
ele.isRelevance = false
|
|
rowDisassociate(ele)
|
|
rowDisassociate(ele)
|
|
})
|
|
})
|
|
@@ -581,7 +594,7 @@ const detailsObj = {
|
|
projectId: '', // 所属项目
|
|
projectId: '', // 所属项目
|
|
submitStatus: null, // 审提交状态 1=暂存 2=提交审批
|
|
submitStatus: null, // 审提交状态 1=暂存 2=提交审批
|
|
journeyList: [detailsObj1],
|
|
journeyList: [detailsObj1],
|
|
- budgetPlanIds:null, //预算计划ID
|
|
|
|
|
|
+ budgetPlanIds: null, //预算计划ID
|
|
}
|
|
}
|
|
const fellowTravelerUserIds = ref([])
|
|
const fellowTravelerUserIds = ref([])
|
|
//处理表单数据
|
|
//处理表单数据
|
|
@@ -608,7 +621,7 @@ const getFormData = (submitStatus = 1) => {
|
|
return newFormData
|
|
return newFormData
|
|
}
|
|
}
|
|
const saveLoading = ref(false)
|
|
const saveLoading = ref(false)
|
|
-const saveClick = async ()=>{
|
|
|
|
|
|
+const saveClick = async () => {
|
|
const res = await formValidate(formRef.value)
|
|
const res = await formValidate(formRef.value)
|
|
if (!res) return false
|
|
if (!res) return false
|
|
//处理明细表单效验
|
|
//处理明细表单效验
|
|
@@ -643,91 +656,87 @@ const tempLoading = ref(false)
|
|
const tempDraftData = async () => {
|
|
const tempDraftData = async () => {
|
|
tempLoading.value = true
|
|
tempLoading.value = true
|
|
const form = getFormData(1)
|
|
const form = getFormData(1)
|
|
- form.forEach((ele)=>{
|
|
|
|
|
|
+ form.forEach((ele) => {
|
|
ele.fellowTravelerUserIds = fellowTravelerUserIds.value.join(',')
|
|
ele.fellowTravelerUserIds = fellowTravelerUserIds.value.join(',')
|
|
})
|
|
})
|
|
console.log(form, 'form')
|
|
console.log(form, 'form')
|
|
- const { error, code, msg } = await businessApi.submit(form)
|
|
|
|
-
|
|
|
|
-
|
|
|
|
|
|
+ const { error, code } = await businessApi.submit(form)
|
|
//判断状态
|
|
//判断状态
|
|
tempLoading.value = false
|
|
tempLoading.value = false
|
|
if (!error && code === 200) {
|
|
if (!error && code === 200) {
|
|
window.$message?.success('暂存成功')
|
|
window.$message?.success('暂存成功')
|
|
- } else {
|
|
|
|
- window.$message?.error(msg)
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
</script>
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
<style lang="scss" scoped>
|
|
.hac-card-project-box {
|
|
.hac-card-project-box {
|
|
- position: relative;
|
|
|
|
- height: 100%;
|
|
|
|
- display: flex;
|
|
|
|
- .left-box, .right-box {
|
|
|
|
- // flex: 1;
|
|
|
|
- position: relative;
|
|
|
|
- height: 100%;
|
|
|
|
- }
|
|
|
|
- .left-box {
|
|
|
|
- flex: 2;
|
|
|
|
- .project-form-top {
|
|
|
|
- margin-bottom: 24px;
|
|
|
|
- padding-right: 24px;
|
|
|
|
- }
|
|
|
|
- .project-form-bottom {
|
|
|
|
- padding-top: 24px;
|
|
|
|
- padding-right: 24px;
|
|
|
|
- border-top: 1px solid #e9e9e9;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- .right-box {
|
|
|
|
- // flex: 1;
|
|
|
|
- padding-left: 24px;
|
|
|
|
- // border-left: 1px solid #e9e9e9;
|
|
|
|
-
|
|
|
|
- .record-flow-box {
|
|
|
|
|
|
+ position: relative;
|
|
|
|
+ height: 100%;
|
|
|
|
+ display: flex;
|
|
|
|
+ .left-box, .right-box {
|
|
|
|
+ // flex: 1;
|
|
position: relative;
|
|
position: relative;
|
|
height: 100%;
|
|
height: 100%;
|
|
- width: 380px;
|
|
|
|
- padding-left: 24px;
|
|
|
|
- border-left: 1px solid #e9e9e9;
|
|
|
|
- .title {
|
|
|
|
- position: relative;
|
|
|
|
- font-size: 20px;
|
|
|
|
- color: #101010;
|
|
|
|
- font-weight: bold;
|
|
|
|
- margin-bottom: 20px;
|
|
|
|
|
|
+ }
|
|
|
|
+ .left-box {
|
|
|
|
+ flex: 2;
|
|
|
|
+ .project-form-top {
|
|
|
|
+ margin-bottom: 24px;
|
|
|
|
+ padding-right: 24px;
|
|
|
|
+ }
|
|
|
|
+ .project-form-bottom {
|
|
|
|
+ padding-top: 24px;
|
|
|
|
+ padding-right: 24px;
|
|
|
|
+ border-top: 1px solid #e9e9e9;
|
|
}
|
|
}
|
|
- .content {
|
|
|
|
|
|
+ }
|
|
|
|
+ .right-box {
|
|
|
|
+ // flex: 1;
|
|
|
|
+ padding-left: 24px;
|
|
|
|
+ // border-left: 1px solid #e9e9e9;
|
|
|
|
+
|
|
|
|
+ .record-flow-box {
|
|
position: relative;
|
|
position: relative;
|
|
- height: calc(100% - 60px - 43px);
|
|
|
|
- .timeline-title {
|
|
|
|
|
|
+ height: 100%;
|
|
|
|
+ width: 380px;
|
|
|
|
+ padding-left: 24px;
|
|
|
|
+ border-left: 1px solid #e9e9e9;
|
|
|
|
+ .title {
|
|
|
|
+ position: relative;
|
|
font-size: 20px;
|
|
font-size: 20px;
|
|
color: #101010;
|
|
color: #101010;
|
|
|
|
+ font-weight: bold;
|
|
|
|
+ margin-bottom: 20px;
|
|
}
|
|
}
|
|
- .timeline-section {
|
|
|
|
- margin-top: 10px;
|
|
|
|
- color: #1784FC;
|
|
|
|
- font-size: 16px;
|
|
|
|
|
|
+ .content {
|
|
|
|
+ position: relative;
|
|
|
|
+ height: calc(100% - 60px - 43px);
|
|
|
|
+ .timeline-title {
|
|
|
|
+ font-size: 20px;
|
|
|
|
+ color: #101010;
|
|
|
|
+ }
|
|
|
|
+ .timeline-section {
|
|
|
|
+ margin-top: 10px;
|
|
|
|
+ color: #1784FC;
|
|
|
|
+ font-size: 16px;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ .action {
|
|
|
|
+ position: relative;
|
|
|
|
+ padding: 10px 0;
|
|
|
|
+ display: flex;
|
|
|
|
+ justify-content: space-around;
|
|
}
|
|
}
|
|
- }
|
|
|
|
- .action {
|
|
|
|
- position: relative;
|
|
|
|
- padding: 10px 0;
|
|
|
|
- display: flex;
|
|
|
|
- justify-content: space-around;
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- }
|
|
|
|
}
|
|
}
|
|
-.tip{
|
|
|
|
|
|
+.tip {
|
|
color: gray;
|
|
color: gray;
|
|
|
|
|
|
font-size: 14px;
|
|
font-size: 14px;
|
|
}
|
|
}
|
|
-.right-box-title{
|
|
|
|
|
|
+.right-box-title {
|
|
font-size: 24px;
|
|
font-size: 24px;
|
|
font-weight: bold;
|
|
font-weight: bold;
|
|
margin-bottom: 40px;
|
|
margin-bottom: 40px;
|