scorpioyq 2 سال پیش
والد
کامیت
3828759e2f
2فایلهای تغییر یافته به همراه254 افزوده شده و 232 حذف شده
  1. 51 50
      src/views/contract/index.vue
  2. 203 182
      src/views/home/component/params/params1.vue

+ 51 - 50
src/views/contract/index.vue

@@ -4,61 +4,61 @@
       <div class="flex">
         <div class="flex flex-center mt-15 mr-10">
           <el-form-item
-            label="关键字"
-            class="full-width"
-            style="margin-left: -50px"
+              label="关键字"
+              class="full-width"
+              style="margin-left: -50px"
           >
             <el-input
-              v-model="params.name"
-              placeholder="输入合同关键字"
-              prefix-icon="Search"
-              clearable
+                v-model="params.name"
+                placeholder="输入合同关键字"
+                prefix-icon="Search"
+                clearable
             />
           </el-form-item>
           <el-form-item class="full-width" label="合同类别">
             <el-select v-model="params.type" clearable>
               <el-option
-                v-for="item in typelist"
-                :key="item.dictKey"
-                :label="item.dictValue"
-                :value="item.dictKey"
+                  v-for="item in typelist"
+                  :key="item.dictKey"
+                  :label="item.dictValue"
+                  :value="item.dictKey"
               />
             </el-select>
           </el-form-item>
           <el-form-item class="full-width" label="合同状态">
             <el-select v-model="params.status" clearable>
               <el-option
-                v-for="item in dicList"
-                :key="item.dictKey"
-                :label="item.dictValue"
-                :value="item.dictKey"
+                  v-for="item in dicList"
+                  :key="item.dictKey"
+                  :label="item.dictValue"
+                  :value="item.dictKey"
               />
             </el-select>
           </el-form-item>
         </div>
         <div class="flex flex-center ml-20">
-          <base-button type="0" title="重置" icon="Refresh" @click="clearUp" />
-          <base-button class="ml-20" @click="onLoad" />
+          <base-button type="0" title="重置" icon="Refresh" @click="clearUp"/>
+          <base-button class="ml-20" @click="onLoad"/>
         </div>
       </div>
     </el-form>
     <avue-crud
-      :option="option"
-      :data="data"
-      ref="crud"
-      v-model="form"
-      v-model:page="page"
-      :before-open="beforeOpen"
-      @row-del="rowDel"
-      @current-change="currentChange"
-      @size-change="sizeChange"
-      @refresh-change="refreshChange"
+        :option="option"
+        :data="data"
+        ref="crud"
+        v-model="form"
+        v-model:page="page"
+        :before-open="beforeOpen"
+        @row-del="rowDel"
+        @current-change="currentChange"
+        @size-change="sizeChange"
+        @refresh-change="refreshChange"
     >
       <template #title="{ row }">
         <div>{{ row.fileFolder.title }}</div>
       </template>
       <template #menu-left>
-        <div class="grey-6 ml-10">单位:万元</div>
+        <div class="main-color ml-10 bold font-15">金额单位:万元</div>
       </template>
     </avue-crud>
   </el-card>
@@ -67,14 +67,15 @@
 <route>
 {
 name: '合同管理',
-meta: { layout: 'empty','path':'/home/details','title':'资料管理','showMsg' : "请先通过资料管理,在对应的相关合同类别下上传合同文件,系统将自动识别所有相关文件并展示在以下列表中。"}
+meta: { layout: 'empty','path':'/home/details','title':'资料管理','showMsg' :
+"请先通过资料管理,在对应的相关合同类别下上传合同文件,系统将自动识别所有相关文件并展示在以下列表中。"}
 }
 </route>
 <script>
 import BaseButton from '@/components/base-button.vue'
 
 export default {
-  components: { BaseButton },
+  components: {BaseButton},
   data() {
     return {
       projectId: '',
@@ -138,7 +139,7 @@ export default {
             label: '合同状态',
             prop: 'contractsStatus',
             dicUrl:
-              '/api/blade-system/dict-biz/dictionary?code=contract-status',
+                '/api/blade-system/dict-biz/dictionary?code=contract-status',
             props: {
               label: 'dictValue',
               value: 'dictKey'
@@ -172,7 +173,7 @@ export default {
   },
   methods: {
     getDic(code) {
-      this.$api.common.dicList({ code }).then(res => {
+      this.$api.common.dicList({code}).then(res => {
         if (res.code === 200) {
           if (code === 'contract-status') {
             this.dicList = res.data
@@ -184,24 +185,24 @@ export default {
     },
     onLoad() {
       this.loading = true
-      const data = Object.assign(this.params, { projectId: this.projectId })
+      const data = Object.assign(this.params, {projectId: this.projectId})
       this.$api.contract
-        .contractList(Object.assign(this.page, data))
-        .then(res => {
-          this.data = res.data.records.map(ele => {
-            if (ele.contractsStatus === -1) {
-              ele.contractsStatus = ''
-            }
-            if (ele.type === -1) {
-              ele.type = ''
-            }
-            return ele
+          .contractList(Object.assign(this.page, data))
+          .then(res => {
+            this.data = res.data.records.map(ele => {
+              if (ele.contractsStatus === -1) {
+                ele.contractsStatus = ''
+              }
+              if (ele.type === -1) {
+                ele.type = ''
+              }
+              return ele
+            })
+            this.page.total = res.data.total
+          })
+          .finally(() => {
+            this.loading = false
           })
-          this.page.total = res.data.total
-        })
-        .finally(() => {
-          this.loading = false
-        })
     },
     clearUp() {
       this.params.name = ''
@@ -213,7 +214,7 @@ export default {
       if (type === 'view') {
         const data = this.$router.resolve({
           path: '/contract/detail',
-          query: { id: this.form.id }
+          query: {id: this.form.id}
         })
         window.open(data.href, '_blank')
       }
@@ -224,7 +225,7 @@ export default {
       }).then(res => {
         console.log(res)
         if (res === 'confirm') {
-          this.$api.contract.contractRemove({ ids: row.id }).then(res => {
+          this.$api.contract.contractRemove({ids: row.id}).then(res => {
             if (res.code === 200) {
               this.$message.success(res.msg)
               this.onLoad()

+ 203 - 182
src/views/home/component/params/params1.vue

@@ -3,42 +3,43 @@
     <div class="flex flex-center full-width flex-justify-between mt-10 mb-10">
       <div class="flex flex-center">
         <span class="full-width text-left bold mr-20">{{
-          info.dictValue
-        }}</span>
+            info.dictValue
+          }}</span>
         <el-tag>{{
-          detail.tags === 1 ? '政府投资项目' : '企业投资项目'
-        }}</el-tag>
+            detail.tags === 1 ? '政府投资项目' : '企业投资项目'
+          }}
+        </el-tag>
       </div>
       <el-button
-        v-if="detail.can_update"
-        type="primary"
-        @click="disabled = !disabled"
-        >{{ disabled ? '编 辑' : '保 存' }}
+          v-if="detail.can_update"
+          type="primary"
+          @click="disabled = !disabled"
+      >{{ disabled ? '编 辑' : '保 存' }}
       </el-button>
     </div>
     <div class="mt-10" style="width: 90%">
       <el-form
-        v-if="form"
-        :model="form"
-        label-width="140px"
-        :disabled="disabled"
-        label-position="left"
-        class="form-content flex flex-col"
+          v-if="form"
+          :model="form"
+          label-width="140px"
+          :disabled="disabled"
+          label-position="left"
+          class="form-content flex flex-col"
       >
         <div class="flex flex-justify-start">
           <el-form-item label="项目名称" style="flex: 1">
-            <el-input v-model="form.name" placeholder="项目名称" />
+            <el-input v-model="form.name" placeholder="项目名称"/>
           </el-form-item>
           <el-form-item
-            label="总投资金额(万元)"
-            style="flex: 1"
-            class="ml-20 full-width"
+              label="总投资金额(万元)"
+              style="flex: 1"
+              class="ml-20 full-width"
           >
             <div class="full-width">
               <el-input
-                v-model="form.total_amount"
-                placeholder="总投资金额(万元)"
-                class="full-width"
+                  v-model="form.total_amount"
+                  placeholder="总投资金额(万元)"
+                  class="full-width"
               />
             </div>
           </el-form-item>
@@ -47,10 +48,10 @@
           <el-form-item label="县(区)" style="flex: 1">
             <div class="full-width" v-if="!disabled">
               <avue-input-tree
-                v-model="form.county"
-                class="full-width"
-                placeholder="请选择县(区)"
-                :dic="areaDic"
+                  v-model="form.county"
+                  class="full-width"
+                  placeholder="请选择县(区)"
+                  :dic="areaDic"
               ></avue-input-tree>
             </div>
             <el-input v-model="form.county_name" v-else></el-input>
@@ -58,15 +59,15 @@
           <el-form-item label="责任单位" style="flex: 1" class="ml-20">
             <div class="full-width">
               <avue-input-tree
-                default-expand-all
-                v-model="form.responsible_unit"
-                placeholder="责任单位"
-                :dic="detail.tags === 1 ? deptDic : compDic"
-                class="full-width"
-                v-if="!disabled"
-                @change="handlerReponsible"
+                  default-expand-all
+                  v-model="form.responsible_unit"
+                  placeholder="责任单位"
+                  :dic="detail.tags === 1 ? deptDic : compDic"
+                  class="full-width"
+                  v-if="!disabled"
+                  @change="handlerReponsible"
               ></avue-input-tree>
-              <el-input v-model="form.unit_name" v-else />
+              <el-input v-model="form.unit_name" v-else/>
             </div>
           </el-form-item>
         </div>
@@ -75,181 +76,192 @@
           <el-form-item label="主管单位" style="flex: 1">
             <div class="full-width">
               <avue-input-tree
-                default-expand-all
-                v-model="form.competent_unit"
-                placeholder="主管单位"
-                :dic="deptDic"
-                class="full-width"
-                v-if="!disabled"
-                @change="handlerCompetent"
+                  default-expand-all
+                  v-model="form.competent_unit"
+                  placeholder="主管单位"
+                  :dic="deptDic"
+                  class="full-width"
+                  v-if="!disabled"
+                  @change="handlerCompetent"
               ></avue-input-tree>
-              <el-input v-model="form.competent_unit_name" v-else />
+              <el-input v-model="form.competent_unit_name" v-else/>
             </div>
           </el-form-item>
           <el-form-item label="责任领导" style="flex: 1" class="ml-20">
             <el-input
-              v-model="form.responsible_leader"
-              placeholder="责任领导"
+                v-model="form.responsible_leader"
+                placeholder="责任领导"
             />
           </el-form-item>
         </div>
         <div class="full-width flex">
           <el-form-item label="负责人及联系电话" style="flex: 1">
             <el-input
-              v-model="form.construction_unit"
-              placeholder="负责人及联系电话"
+                v-model="form.construction_unit"
+                placeholder="负责人及联系电话"
             />
           </el-form-item>
         </div>
 
         <div class="full-width flex">
           <el-form-item
-            label="行业分类"
-            class="flex-child-average"
-            style="flex: 1"
+              label="行业分类"
+              class="flex-child-average"
+              style="flex: 1"
           >
-            <el-input v-model="form.industry" />
+            <el-select
+                v-model="form.dictKey"
+                placeholder="行业分类"
+                class="full-width"
+            >
+              <el-option
+                  v-for="item in industryList"
+                  :key="item.dictKey"
+                  :label="item.dictValue"
+                  :value="item.dictKey"
+              />
+            </el-select>
           </el-form-item>
           <el-form-item label="建设起止时间" class="flex-child-average ml-20">
             <el-input
-              v-if="disabled"
-              v-model="form.construction_start_and_end"
+                v-if="disabled"
+                v-model="form.construction_start_and_end"
             />
             <el-date-picker
-              v-else
-              v-model="form.construction_start_and_end_new"
-              @change="changeDate"
-              type="daterange"
-              range-separator="至"
-              start-placeholder="开始日期"
-              end-placeholder="截止日期"
-              style="width: 100%"
-              format="YYYY-MM-DD"
-              value-format="YYYY-MM-DD"
+                v-else
+                v-model="form.construction_start_and_end_new"
+                @change="changeDate"
+                type="daterange"
+                range-separator="至"
+                start-placeholder="开始日期"
+                end-placeholder="截止日期"
+                style="width: 100%"
+                format="YYYY-MM-DD"
+                value-format="YYYY-MM-DD"
             />
           </el-form-item>
         </div>
 
         <div class="full-width flex" v-if="detail.tags === 2">
           <el-form-item
-            label="备案号"
-            class="flex-child-average"
-            style="flex: 1"
+              label="备案号"
+              class="flex-child-average"
+              style="flex: 1"
           >
-            <el-input v-model="form.record_id" />
+            <el-input v-model="form.record_id"/>
           </el-form-item>
           <el-form-item label="备案时间" class="flex-child-average ml-20">
-            <el-input v-if="disabled" v-model="form.record_date" />
+            <el-input v-if="disabled" v-model="form.record_date"/>
             <el-date-picker
-              v-else
-              v-model="form.record_date"
-              @change="changeDate"
-              placeholder="备案时间"
-              style="width: 100%"
-              format="YYYY-MM-DD"
-              value-format="YYYY-MM-DD"
+                v-else
+                v-model="form.record_date"
+                @change="changeDate"
+                placeholder="备案时间"
+                style="width: 100%"
+                format="YYYY-MM-DD"
+                value-format="YYYY-MM-DD"
             />
           </el-form-item>
         </div>
 
         <div class="full-width flex" v-if="detail.tags === 1">
           <el-form-item
-            label="可研批复号"
-            class="flex-child-average"
-            style="flex: 1"
+              label="可研批复号"
+              class="flex-child-average"
+              style="flex: 1"
           >
-            <el-input v-model="form.available_approval_id" />
+            <el-input v-model="form.available_approval_id"/>
           </el-form-item>
           <el-form-item label="可研批复时间" class="flex-child-average ml-20">
-            <el-input v-if="disabled" v-model="form.available_approval_date" />
+            <el-input v-if="disabled" v-model="form.available_approval_date"/>
             <el-date-picker
-              v-else
-              v-model="form.available_approval_date"
-              @change="changeDate"
-              placeholder="可研批复时间"
-              style="width: 100%"
-              format="YYYY-MM-DD"
-              value-format="YYYY-MM-DD"
+                v-else
+                v-model="form.available_approval_date"
+                @change="changeDate"
+                placeholder="可研批复时间"
+                style="width: 100%"
+                format="YYYY-MM-DD"
+                value-format="YYYY-MM-DD"
             />
           </el-form-item>
         </div>
 
         <div class="full-width flex">
           <el-form-item
-            label="项目代码"
-            class="flex-child-average"
-            style="flex: 1"
+              label="项目代码"
+              class="flex-child-average"
+              style="flex: 1"
           >
-            <el-input v-model="form.project_code" />
+            <el-input v-model="form.project_code"/>
           </el-form-item>
           <el-form-item label="监管平台代码" class="flex-child-average ml-20">
-            <el-input v-model="form.regulatory_platform_code" />
+            <el-input v-model="form.regulatory_platform_code"/>
           </el-form-item>
         </div>
 
         <div class="full-width flex">
           <el-form-item label="计划开工时间" style="flex: 1" class="full-width">
             <el-date-picker
-              v-model="form.plan_commencement_time"
-              type="date"
-              style="width: 100%"
-              placeholder="计划开工时间"
-              format="YYYY-MM-DD"
-              value-format="YYYY-MM-DD"
+                v-model="form.plan_commencement_time"
+                type="date"
+                style="width: 100%"
+                placeholder="计划开工时间"
+                format="YYYY-MM-DD"
+                value-format="YYYY-MM-DD"
             />
           </el-form-item>
           <el-form-item label="实际开工时间" style="flex: 1" class="ml-20">
             <el-date-picker
-              v-model="form.start_time"
-              type="date"
-              style="width: 100%"
-              placeholder="实际开工时间"
-              format="YYYY-MM-DD"
-              value-format="YYYY-MM-DD"
+                v-model="form.start_time"
+                type="date"
+                style="width: 100%"
+                placeholder="实际开工时间"
+                format="YYYY-MM-DD"
+                value-format="YYYY-MM-DD"
             />
           </el-form-item>
         </div>
         <div class="full-width flex">
           <el-form-item label="计划入库时间" style="flex: 1">
             <el-date-picker
-              v-model="form.plan_storage_time"
-              type="date"
-              style="width: 100%"
-              placeholder="计划入库时间"
-              format="YYYY-MM-DD"
-              value-format="YYYY-MM-DD"
+                v-model="form.plan_storage_time"
+                type="date"
+                style="width: 100%"
+                placeholder="计划入库时间"
+                format="YYYY-MM-DD"
+                value-format="YYYY-MM-DD"
             />
           </el-form-item>
           <el-form-item label="实际入库时间" style="flex: 1" class="ml-20">
             <el-date-picker
-              v-model="form.storage_time"
-              type="date"
-              style="width: 100%"
-              placeholder="实际入库时间"
-              format="YYYY-MM-DD"
-              value-format="YYYY-MM-DD"
+                v-model="form.storage_time"
+                type="date"
+                style="width: 100%"
+                placeholder="实际入库时间"
+                format="YYYY-MM-DD"
+                value-format="YYYY-MM-DD"
             />
           </el-form-item>
         </div>
         <div class="full-width flex">
           <el-form-item label="计划竣工时间" style="flex: 1">
             <el-date-picker
-              v-model="form.plan_completion_time"
-              type="date"
-              style="width: 100%"
-              placeholder="计划竣工时间"
-              format="YYYY-MM-DD"
-              value-format="YYYY-MM-DD"
+                v-model="form.plan_completion_time"
+                type="date"
+                style="width: 100%"
+                placeholder="计划竣工时间"
+                format="YYYY-MM-DD"
+                value-format="YYYY-MM-DD"
             />
           </el-form-item>
           <el-form-item label="实际竣工时间" style="flex: 1" class="ml-20">
             <el-date-picker
-              v-model="form.completion_time"
-              type="date"
-              style="width: 100%"
-              placeholder="实际竣工时间"
-              format="YYYY-MM-DD"
-              value-format="YYYY-MM-DD"
+                v-model="form.completion_time"
+                type="date"
+                style="width: 100%"
+                placeholder="实际竣工时间"
+                format="YYYY-MM-DD"
+                value-format="YYYY-MM-DD"
             />
           </el-form-item>
         </div>
@@ -257,15 +269,15 @@
           <el-form-item label="是否入库" style="flex: 1">
             <div class="full-width">
               <el-select
-                v-model="form.is_storage"
-                placeholder="是否入库"
-                class="full-width"
+                  v-model="form.is_storage"
+                  placeholder="是否入库"
+                  class="full-width"
               >
                 <el-option
-                  v-for="item in yesOrNo"
-                  :key="item.label"
-                  :label="item.label"
-                  :value="item.value"
+                    v-for="item in yesOrNo"
+                    :key="item.label"
+                    :label="item.label"
+                    :value="item.value"
                 />
               </el-select>
             </div>
@@ -273,15 +285,15 @@
           <el-form-item label="是否开工" style="flex: 1" class="ml-20">
             <div class="full-width">
               <el-select
-                v-model="form.is_start"
-                placeholder="是否开工"
-                class="full-width"
+                  v-model="form.is_start"
+                  placeholder="是否开工"
+                  class="full-width"
               >
                 <el-option
-                  v-for="item in yesOrNo"
-                  :key="item.label"
-                  :label="item.label"
-                  :value="item.value"
+                    v-for="item in yesOrNo"
+                    :key="item.label"
+                    :label="item.label"
+                    :value="item.value"
                 />
               </el-select>
             </div>
@@ -291,35 +303,35 @@
           <el-form-item label="是否纳入省重点项目" style="flex: 1">
             <div class="full-width">
               <el-select
-                v-model="form.is_provincial_key"
-                placeholder="是否纳入省重点项目"
-                class="full-width"
+                  v-model="form.is_provincial_key"
+                  placeholder="是否纳入省重点项目"
+                  class="full-width"
               >
                 <el-option
-                  v-for="item in yesOrNo"
-                  :key="item.label"
-                  :label="item.label"
-                  :value="item.value"
+                    v-for="item in yesOrNo"
+                    :key="item.label"
+                    :label="item.label"
+                    :value="item.value"
                 />
               </el-select>
             </div>
           </el-form-item>
           <el-form-item
-            label="是否纳入省集中开工"
-            style="flex: 1"
-            class="ml-20"
+              label="是否纳入省集中开工"
+              style="flex: 1"
+              class="ml-20"
           >
             <div class="full-width">
               <el-select
-                v-model="form.is_provincial_level_construction"
-                placeholder="是否纳入省集中开工"
-                class="full-width"
+                  v-model="form.is_provincial_level_construction"
+                  placeholder="是否纳入省集中开工"
+                  class="full-width"
               >
                 <el-option
-                  v-for="item in yesOrNo"
-                  :key="item.label"
-                  :label="item.label"
-                  :value="item.value"
+                    v-for="item in yesOrNo"
+                    :key="item.label"
+                    :label="item.label"
+                    :value="item.value"
                 />
               </el-select>
             </div>
@@ -327,16 +339,16 @@
         </div>
         <div class="full-width">
           <el-form-item label="项目建设详细地址">
-            <el-input v-model="form.address" placeholder="项目建设详细地址" />
+            <el-input v-model="form.address" placeholder="项目建设详细地址"/>
           </el-form-item>
         </div>
         <div class="full-width">
           <el-form-item label="主要建设内容及规模">
             <el-input
-              v-model="form.construction_content"
-              type="textarea"
-              placeholder="主要建设内容及规模"
-              :rows="4"
+                v-model="form.construction_content"
+                type="textarea"
+                placeholder="主要建设内容及规模"
+                :rows="4"
             />
           </el-form-item>
         </div>
@@ -346,7 +358,7 @@
 </template>
 
 <script>
-import { useStore } from '@/store/user.js'
+import {useStore} from '@/store/user.js'
 
 export default {
   name: 'params1',
@@ -362,7 +374,7 @@ export default {
   },
   setup() {
     const user = useStore()
-    return { user }
+    return {user}
   },
   watch: {
     detail: {
@@ -373,8 +385,8 @@ export default {
         if (this.form.name) {
           const xian = this.form.name.indexOf('县')
           this.form.name = this.dev
-            ? this.form.name.substring(xian + 1)
-            : this.form.name
+              ? this.form.name.substring(xian + 1)
+              : this.form.name
         }
       },
       immediate: true
@@ -394,21 +406,30 @@ export default {
       form: {},
       areaDic: [],
       yesOrNo: [
-        { label: '否', value: 0 },
-        { label: '是', value: 1 }
+        {label: '否', value: 0},
+        {label: '是', value: 1}
       ],
       deptDic: [],
       compDic: [],
+      industryList: [],
       dev: false
     }
   },
   mounted() {
     this.dev = sessionStorage.getItem('dev') === 'true'
+    this.getDic()
     this.areaList()
     this.getDepList()
     this.getCompList()
   },
   methods: {
+    getDic() {
+      this.$api.common.dicList({code: 'industry-classification'}).then(res => {
+        if (res.code === 200) {
+          this.industryList = res.data
+        }
+      })
+    },
     getDepList() {
       const local = {
         label: this.user.info.deptName,
@@ -416,22 +437,22 @@ export default {
       }
       this.deptDic.push(local)
       this.$api.system
-        .getDeptLazy({ parentId: this.user.info.deptId, deptCategory: 3 })
-        .then(res => {
-          if (res.code === 200) {
-            const tmp = res.data.map(ele => {
-              const item = { label: ele.deptName, value: ele.id }
-              return item
-            })
-            this.deptDic = this.deptDic.concat(tmp)
-          }
-        })
+          .getDeptLazy({parentId: this.user.info.deptId, deptCategory: 3})
+          .then(res => {
+            if (res.code === 200) {
+              const tmp = res.data.map(ele => {
+                const item = {label: ele.deptName, value: ele.id}
+                return item
+              })
+              this.deptDic = this.deptDic.concat(tmp)
+            }
+          })
     },
     getCompList() {
-      this.$api.system.getNewDeptLazy({ deptCategory: 4 }).then(res => {
+      this.$api.system.getNewDeptLazy({deptCategory: 4}).then(res => {
         if (res.code === 200) {
           const tmp = res.data.map(ele => {
-            const item = { label: ele.deptName, value: ele.id }
+            const item = {label: ele.deptName, value: ele.id}
             return item
           })
           this.compDic = this.compDic.concat(tmp)
@@ -439,7 +460,7 @@ export default {
       })
     },
     areaList() {
-      this.$api.common.region({ code: '' }).then(res => {
+      this.$api.common.region({code: ''}).then(res => {
         if (res.code === 200) {
           this.areaDic = res.data.map(item => this.mapTree(item))
         }
@@ -447,7 +468,7 @@ export default {
     },
     mapTree(item) {
       const haveChildren =
-        Array.isArray(item.children) && item.children.length > 0
+          Array.isArray(item.children) && item.children.length > 0
       return {
         key: item.id,
         value: item.id,