duy 1 year ago
parent
commit
b6d211ebce
1 changed files with 109 additions and 79 deletions
  1. 109 79
      src/views/project/admin/create.vue

+ 109 - 79
src/views/project/admin/create.vue

@@ -6,15 +6,15 @@
         <el-form :model="baseForm" label-width="auto" :rules="baseFormRules" size="large" label-position="left">
             <el-row :gutter="20">
                 <el-col :span="12">
-                    <el-form-item label="项目名称:" prop="key1" class="with-auto">
-                        <el-input v-model="baseForm.key1" placeholder="请输入" clearable />
+                    <el-form-item label="项目名称:" prop="name">
+                        <el-input v-model="baseForm.name" placeholder="请输入" clearable />
                     </el-form-item>
                 </el-col>
                 <el-col :span="12">
-                    <el-form-item label="建设规模:" prop="key2" class="with-auto">
-                        <el-input v-model="baseForm.key2" placeholder="请输入" clearable>
+                    <el-form-item label="建设规模:" prop="buildScale">
+                        <el-input v-model="baseForm.buildScale" placeholder="请输入" clearable>
                             <template #append>
-                                <el-select v-model="unitSelect" placeholder="单位" style="width: 80px">
+                                <el-select v-model="baseForm.buildScaleUnit" placeholder="单位" style="width: 80px">
                                     <el-option label="公里" value="1" />
                                     <el-option label="无" value="2" />
                                 </el-select>
@@ -23,23 +23,23 @@
                     </el-form-item>
                 </el-col>
                 <el-col :span="6">
-                    <el-form-item label="项目阶段:" prop="key3" class="with-auto">
-                        <el-select v-model="baseForm.key3" placeholder="请选择">
+                    <el-form-item label="项目阶段:" prop="projectStage">
+                        <el-select v-model="baseForm.projectStage" placeholder="请选择">
                             <el-option v-for="item in stateOptions" :key="item.id" :label="item.dictValue" :value="item.id" />
                         </el-select>
                     </el-form-item>
                 </el-col>
                 <el-col :span="6">
-                    <el-form-item label="项目类型:" prop="key4" class="with-auto">
-                        <el-select v-model="baseForm.key4" placeholder="请选择">
+                    <el-form-item label="项目类型:" prop="projectType">
+                        <el-select v-model="baseForm.projectType" placeholder="请选择">
                             <el-option v-for="item in typeOptions" :key="item.id" :label="item.dictValue" :value="item.id" />
                         </el-select>
                     </el-form-item>
                 </el-col>
                 <el-col :span="6">
-                    <el-form-item label="总投资:" prop="key111" class="with-auto">
+                    <el-form-item label="总投资:" prop="allInvest">
                         <el-input
-                            v-model="yearForm.key111" placeholder="请输入" clearable
+                            v-model="yearForm.allInvest" placeholder="请输入" clearable
                             :formatter="formatInput"
                         >
                             <template #append>亿元</template>
@@ -47,9 +47,9 @@
                     </el-form-item>
                 </el-col>
                 <el-col :span="6">
-                    <el-form-item label="十四五计划投资:" prop="key112" class="with-auto">
+                    <el-form-item label="十四五计划投资:" prop="fourteenFiveInvest">
                         <el-input
-                            v-model="yearForm.key112" placeholder="请输入" clearable
+                            v-model="yearForm.fourteenFiveInvest" placeholder="请输入" clearable
                             :formatter="formatInput"
                         >
                             <template #append>亿元</template>
@@ -57,42 +57,44 @@
                     </el-form-item>
                 </el-col>
                 <el-col :span="6">
-                    <el-form-item label="开工年:" prop="key5" class="with-auto">
-                        <el-date-picker ref="startYearRef" v-model="baseForm.key5" class="block" type="year" placeholder="请选择" value-format="YYYY" @change="startYearChange" />
+                    <el-form-item label="开工年:" prop="startYear">
+                        <el-date-picker ref="startYearRef" v-model="baseForm.startYear" class="block" type="year" placeholder="请选择" value-format="YYYY" @change="startYearChange" />
                     </el-form-item>
                 </el-col>
                 <el-col :span="6">
-                    <el-form-item label="完工年:" prop="key6" class="with-auto">
-                        <el-date-picker ref="endYearRef" v-model="baseForm.key6" class="block" type="year" placeholder="请选择" value-format="YYYY" @change="endYearChange" @blur="endYearBlur" />
+                    <el-form-item label="完工年:" prop="endYear">
+                        <el-date-picker ref="endYearRef" v-model="baseForm.endYear" class="block" type="year" placeholder="请选择" value-format="YYYY" @change="endYearChange" @blur="endYearBlur" />
                     </el-form-item>
                 </el-col>
                 <el-col :span="6">
-                    <el-form-item label="市级重点项目:" prop="kekey33" class="with-auto">
-                        <el-select v-model="baseForm.key33" placeholder="请选择">
-                            <el-option v-for="item in stateOptions" :key="item.id" :label="item.dictValue" :value="item.id" />
+                    <el-form-item label="市级重点项目:" prop="isFocusProject">
+                        <el-select v-model="baseForm.isFocusProject" placeholder="请选择">
+                            <el-option label="是" value="1" />
+                            <el-option label="否" value="0" />
                         </el-select>
                     </el-form-item>
                 </el-col>
                 <el-col :span="6">
-                    <el-form-item label="交通强国建设试点任务:" prop="key44" class="with-auto">
-                        <el-select v-model="baseForm.key44" placeholder="请选择">
-                            <el-option v-for="item in typeOptions" :key="item.id" :label="item.dictValue" :value="item.id" />
+                    <el-form-item label="交通强国建设试点任务:" prop="isPilotPlan">
+                        <el-select v-model="baseForm.isPilotPlan" placeholder="请选择">
+                            <el-option label="是" value="1" />
+                            <el-option label="否" value="0" />
                         </el-select>
                     </el-form-item>
                 </el-col>
                 <el-col :span="8">
-                    <el-form-item label="牵头单位:" prop="key7" class="with-auto">
-                        <el-input v-model="baseForm.key7" placeholder="请输入" clearable type="textarea" />
+                    <el-form-item label="牵头单位:" prop="leaderUnit">
+                        <el-input v-model="baseForm.leaderUnit" placeholder="请输入" clearable type="textarea" />
                     </el-form-item>
                 </el-col>
                 <el-col :span="8">
-                    <el-form-item label="配合单位:" prop="key8" class="with-auto">
-                        <el-input v-model="baseForm.key7" placeholder="请输入" clearable type="textarea" />
+                    <el-form-item label="配合单位:" prop="assistUnit">
+                        <el-input v-model="baseForm.assistUnit" placeholder="请输入" clearable type="textarea" />
                     </el-form-item>
                 </el-col>
                 <el-col :span="8">
-                    <el-form-item label="责任单位:" prop="key9" class="with-auto">
-                        <el-input v-model="baseForm.key7" placeholder="请输入" clearable type="textarea" />
+                    <el-form-item label="责任单位:" prop="dutyUnit">
+                        <el-input v-model="baseForm.dutyUnit" placeholder="请输入" clearable type="textarea" />
                     </el-form-item>
                 </el-col>
             </el-row>
@@ -103,10 +105,10 @@
                     <el-option v-for="(item, index) in yearOptions" :key="item.value" :label="item.label" :value="item.value" />
                 </el-select>
             </template>
-            <el-form :model="yearOptions[selectIndex]?.yearForm" label-width="auto" :rules="yearFormRules" class="mt-3" label-position="left" size="large">
-                <el-form-item label="全年计划投资:" prop="key1" class="w-100">
+            <el-form :model="yearOptions[selectIndex].yearForm" label-width="auto" :rules="yearFormRules" class="mt-3" label-position="left" size="large">
+                <el-form-item label="全年计划投资:" prop="yearlyInvest" class="w-100">
                     <el-input
-                        v-model="yearOptions[selectIndex].yearForm.key1" placeholder="请输入" clearable
+                        v-model="yearOptions[selectIndex].yearForm.yearlyInvest" placeholder="请输入" clearable
                         :formatter="formatInput"
                     >
                         <template #append>亿元</template>
@@ -115,55 +117,55 @@
                 <el-form-item label="预计完成投资额:" prop="key1">
                     <div class="quarter-box w-full flex">
                         <div class="flex">
-                            <el-input v-model="yearOptions[selectIndex].yearForm.key2" placeholder="请输入" clearable :formatter="formatInput">
+                            <el-input v-model="yearOptions[selectIndex].yearForm.oneInvest" placeholder="请输入" clearable :formatter="formatInput">
                                 <template #prepend>一季度</template>
                                 <template #append>亿元</template>
                             </el-input>
                         </div>
                         <div class="ml-[40px] flex">
-                            <el-input v-model="yearOptions[selectIndex].yearForm.key3" placeholder="请输入" clearable :formatter="formatInput">
+                            <el-input v-model="yearOptions[selectIndex].yearForm.twoInvest" placeholder="请输入" clearable :formatter="formatInput">
                                 <template #prepend>二季度</template>
                                 <template #append>亿元</template>
                             </el-input>
                         </div>
                         <div class="ml-[40px] flex">
-                            <el-input v-model="yearOptions[selectIndex].yearForm.key4" placeholder="请输入" clearable :formatter="formatInput">
+                            <el-input v-model="yearOptions[selectIndex].yearForm.threeInvest" placeholder="请输入" clearable :formatter="formatInput">
                                 <template #prepend>三季度</template>
                                 <template #append>亿元</template>
                             </el-input>
                         </div>
                         <div class="ml-[40px] flex">
-                            <el-input v-model="yearOptions[selectIndex].yearForm.key5" placeholder="请输入" clearable :formatter="formatInput">
+                            <el-input v-model="yearOptions[selectIndex].yearForm.fourInvest" placeholder="请输入" clearable :formatter="formatInput">
                                 <template #prepend>四季度</template>
                                 <template #append>亿元</template>
                             </el-input>
                         </div>
                     </div>
                 </el-form-item>
-                <el-form-item label="全年目标:" prop="key6">
-                    <el-input v-model="yearOptions[selectIndex].yearForm.key6" placeholder="请输入" clearable type="textarea" />
+                <el-form-item label="全年目标:" prop="yearlyTarget">
+                    <el-input v-model="yearOptions[selectIndex].yearForm.yearlyTarget" placeholder="请输入" clearable type="textarea" />
                 </el-form-item>
             </el-form>
-            <el-form :model="yearOptions[selectIndex].yearForm" label-width="auto" :rules="yearFormRules" class="mt-3" label-position="left">
+            <el-form :model="yearOptions[selectIndex]?.yearForm" label-width="auto" :rules="yearFormRules" class="mt-3" label-position="left">
                 <div class="hc-form-item-title">各季度工作计划:</div>
-                <el-form-item label="一季度:" prop="key7">
-                    <el-input v-model="yearOptions[selectIndex].yearForm.key7" placeholder="请输入" clearable type="textarea" />
+                <el-form-item label="一季度:" prop="onePlan">
+                    <el-input v-model="yearOptions[selectIndex].yearForm.onePlan" placeholder="请输入" clearable type="textarea" />
                 </el-form-item>
-                <el-form-item label="二季度:" prop="key8">
-                    <el-input v-model="yearOptions[selectIndex].yearForm.key8" placeholder="请输入" clearable type="textarea" />
+                <el-form-item label="二季度:" prop="twoPlan">
+                    <el-input v-model="yearOptions[selectIndex].yearForm.twoPlan" placeholder="请输入" clearable type="textarea" />
                 </el-form-item>
-                <el-form-item label="三季度:" prop="key8">
-                    <el-input v-model="yearOptions[selectIndex].yearForm.key8" placeholder="请输入" clearable type="textarea" />
+                <el-form-item label="三季度:" prop="threePlan	">
+                    <el-input v-model="yearOptions[selectIndex].yearForm.threePlan" placeholder="请输入" clearable type="textarea" />
                 </el-form-item>
-                <el-form-item label="四季度:" prop="key10">
-                    <el-input v-model="yearOptions[selectIndex].yearForm.key10" placeholder="请输入" clearable type="textarea" />
+                <el-form-item label="四季度:" prop="fourPlan">
+                    <el-input v-model="yearOptions[selectIndex].yearForm.fourPlan" placeholder="请输入" clearable type="textarea" />
                 </el-form-item>
             </el-form>
         </hc-card-item>
         <template #action>
-            <el-button v-if="formInfo.id" type="info" @click="cancelClick">取消</el-button>
+            <el-button type="info" @click="cancelClick">取消</el-button>
             <el-button v-if="!formInfo.id" color="#20C98B" type="primary" class="text-white" @click="createClick">创建</el-button>
-            <el-button type="warning" @click="saveClick">保存</el-button>
+            <el-button v-else type="warning" @click="saveClick">保存</el-button>
         </template>
     </hc-card>
 </template>
@@ -173,6 +175,7 @@ import { computed, onMounted, ref, watch } from 'vue'
 import { isNullES } from 'js-fast-way'
 import { getDictionary } from '~api/dictbiz'
    import { arrIndex, formValidate, getArrValue, getObjValue, isArrItem } from 'js-fast-way'
+   import mainApi from '~api/project/project'
 
 const props = defineProps({
     form: {
@@ -188,37 +191,34 @@ const emit = defineEmits(['back'])
 const formInfo = ref(props.form)
 watch(() => props.form, (data) => {
     formInfo.value = data
+  
 })
 
 //渲染完成
 onMounted(() => {
-    console.log(formInfo.value)
+    console.log(formInfo.value, '11111')
     getProStation()
     getProType()
 })
 
-const baseForm = ref({ key1:'', key2: '', key3:'', key4:'', key5:'', key6:'', key7:'', key8:'', key9:'' })
+const baseForm = ref({ })
 const baseFormRules = {
-    key1: {
+    name: {
         required: true,
         trigger: 'blur',
         message: '请输入项目名称',
     },
-    key3: {
+    projectStage: {
         required: true,
         trigger: 'blur',
         message: '请选择项目阶段',
     },
-    key4: {
+    projectType: {
         required: true,
         trigger: 'blur',
         message: '请选择项目类型',
     },
-    role: {
-        required: true,
-        trigger: 'blur',
-        message: '请选择角色',
-    },
+
 }
 const unitSelect = ref('')
 
@@ -228,11 +228,11 @@ const stateOptions = ref([])
 const getProStation = async () => {
     const { error, code, data } = await getDictionary({ code:'projectStage' })
         if (!error && code === 200) {
-            stateOptions.value = getArrValue(data)
+            stateOptions.value = getArrValue(data) 
         } else {
             stateOptions.value = []
-        }
-
+        }   
+    
 }
 //项目类型
 const typeOptions = ref([])
@@ -242,14 +242,14 @@ const getProType = async () => {
             typeOptions.value = getArrValue(data)
         } else {
             typeOptions.value = []
-        }
-
+        }   
+    
   }
   const endYearRef = ref(null)
   const startYearRef = ref(null)
 //开始年
 const startYearChange = (val) => {
-    baseForm.value.key5 = val
+    baseForm.value.startYear = val
     endYearRef.value?.focus()
     endYearRef.value?.handleOpen()
     startYearRef.value?.handleClose()
@@ -258,28 +258,30 @@ const startYearChange = (val) => {
 //结束年
 const endYearChange = (val) => {
     if (isNullES(val)) {
-        baseForm.value.key5 = ''
+        baseForm.value.startYear = ''
     }
-    baseForm.value.key6 = val
+    baseForm.value.endYear = val
 
 }
 //失去焦点
 const endYearBlur = () => {
-    if (isNullES(baseForm.value.key5) || isNullES(baseForm.value.key6)) {
-        baseForm.value.key5 = ''
-        baseForm.value.key6 = ''
+    if (isNullES(baseForm.value.startYear) || isNullES(baseForm.value.endYear)) {
+        baseForm.value.startYear = ''
+        baseForm.value.endYear = ''
         window.$message.warning('请重新选择完整的范围年份')
-    }
+    } 
 
   let years = []
-  let startYear = baseForm.value.key5
-  let endYear = baseForm.value.key6
+  let startYear = baseForm.value.startYear
+  let endYear = baseForm.value.endYear
   for (let year = startYear; year <= endYear; year++) {
     years.push(
         {
             value:year,
             label:year,
-            yearForm:{},
+            yearForm:{
+                planYear:year,
+            },
         },
     )
   }
@@ -307,7 +309,7 @@ const formatInput = (value)=>{
       } else {
         // 如果输入不合法,则移除非法字符,并返回处理后的值
         return value.slice(0, -1)
-      }
+      } 
 }
 
 
@@ -330,17 +332,45 @@ const cancelClick = () => {
 }
 
 //创建
-const createClick = () => {
+const creatLoading = ref(false)
+const createClick = async () => {
     const form = formInfo.value
-    if (isNullES(form.id)) cancelClick()
+    // if (isNullES(form.id)) cancelClick()
+    console.log(baseForm.value, 'baseForm.value')
+    console.log(yearOptions.value, '111111')
+    let list = []
+    yearOptions.value.forEach((ele)=>{
+        let yearForm = ele.yearForm
+        list.push(yearForm)
+    })
+    creatLoading.value = true
+        //发起请求
+        const { error, code, msg } = await mainApi.add({
+            ...baseForm.value,
+            list,
+    })
+    //判断状态
+    creatLoading.value = false
+    if (!error && code === 200) {
+        window?.$message?.success(msg)
+        if (!isNullES(form.id)) {
+            baseForm.value = {}
+            yearOptions.value = [{}]
+            cancelClick()
+        }
+    } else {
+        window.$message.error(msg ?? '操作失败')
+    }
+
     console.log('创建')
 }
 
 //保存
 const saveClick = () => {
-    const form = formInfo.value
-    if (isNullES(form.id)) cancelClick()
+    // const form = formInfo.value
+    // if (isNullES(form.id)) cancelClick()
     console.log('保存')
+    console.log(baseForm.value, 'baseForm.value')
 console.log(yearOptions.value, '111111')
 }
 </script>