ZaiZai 9 bulan lalu
induk
melakukan
3ee59d31d4
2 mengubah file dengan 37 tambahan dan 8 penghapusan
  1. 10 3
      src/views/project/detail/detail.vue
  2. 27 5
      src/views/project/detail/info.vue

+ 10 - 3
src/views/project/detail/detail.vue

@@ -2,7 +2,7 @@
     <hc-drawer v-model="isShow" to-id="hc-project-list" is-close @close="drawerClose">
         <div class="hc-contract-info-drawer h-full">
             <hc-tab-card :scrollbar="tabsKey === '1'" :tabs="tabsData" :tab-key="tabsKey" is-action-btn @change="tabsChange">
-                <HcInfo v-if="tabsKey === '1'" :data="dataInfo" />
+                <HcInfo v-if="tabsKey === '1'" :data="dataInfo" @close="drawerClose" @next="dataInfoNext" />
             </hc-tab-card>
         </div>
     </hc-drawer>
@@ -29,9 +29,9 @@ const isShow = defineModel('modelValue', {
 })
 
 //监听数据
-const dataInfo = ref(props.data)
+const dataInfo = ref({})
 watch(() => props.data, (data) => {
-    dataInfo.value = data
+    dataInfo.value = getObjValue(data)
 }, { immediate: true, deep: true })
 
 //监听显示
@@ -59,6 +59,13 @@ const tabsChange = ({ key }) => {
     tabsKey.value = key
 }
 
+//下一步
+const dataInfoNext = async (data) => {
+    dataInfo.value = data
+    await getDataApi()
+    //tabsKey.value = '2'
+}
+
 //关闭抽屉
 const drawerClose = () => {
     isShow.value = false

+ 27 - 5
src/views/project/detail/info.vue

@@ -15,7 +15,7 @@
                     </el-col>
                     <el-col :span="6">
                         <el-form-item label="合同段类型:" prop="contractType">
-                            <el-select v-model="contractForm.contractType" placeholder="选择所属系统" filterable clearable block :disabled="!!contractForm.id" @change="treeAllConstruction">
+                            <el-select v-model="contractForm.contractType" placeholder="选择所属系统" clearable filterable block :disabled="!!contractForm.id" @change="treeAllConstruction">
                                 <el-option v-for="item in contractTypeList" :key="item.value" :label="item.label" :value="item.value" />
                             </el-select>
                         </el-form-item>
@@ -228,7 +228,7 @@
 
 <script setup>
 import { onMounted, ref, watch } from 'vue'
-import { getArrValue, getObjValue, isNullES } from 'js-fast-way'
+import { deepClone, formValidate, getArrValue, getObjValue, isNullES } from 'js-fast-way'
 import { getDictionaryData } from '~uti/tools'
 import HcMeterTable from './table.vue'
 
@@ -401,20 +401,42 @@ const getContractRelation = async () => {
 const saveAndExit = async () => {
     const isRes = await saveDataApi()
     if (!isRes) return
-    emit('close')
+    emit('close', dataInfo.value)
 }
 
 //保存并进入下一步
 const saveAndNextStep = async () => {
     const isRes = await saveDataApi()
     if (!isRes) return
-    emit('next')
+    emit('next', dataInfo.value)
 }
 
 //保存数据
 const submitLoading = ref(false)
 const saveDataApi = async () => {
-    console.log(contractForm.value)
+    const isForm = await formValidate(formRef.value)
+    if (!isForm) return false
+    submitLoading.value = true
+    const obj = deepClone(contractForm.value)
+    if (obj.contractType !== 1) {
+        const checkIds = contractCheckIds.value
+        delete obj.startStation
+        delete obj.endStation
+        delete obj.projectPlace
+        let idList = []
+        checkIds.forEach(val => {
+            idList.push({ contractId: val })
+        })
+        obj.idList = idList
+    }
+    const { code, data } = await mainApi.submit(obj)
+    submitLoading.value = false
+    if (code === 200) {
+        dataInfo.value.cid = data.id
+        window?.$message?.success('保存成功')
+        getDataApi().then()
+    }
+    return code === 200
 }
 </script>