Jelajahi Sumber

修改个人中心

zs 1 tahun lalu
induk
melakukan
8d22693a50

+ 43 - 9
src/views/center/index.vue

@@ -14,7 +14,7 @@
               class="form"
             >
               <el-form-item label="账号" prop="account">
-                <el-input v-model="form.account" placeholder="请输入账号">
+                <el-input disabled v-model="form.account" placeholder="请输入账号">
                   <template #prefix>
                     <el-icon>
                       <User />
@@ -53,15 +53,24 @@
               <el-form-item label="角色" prop="role">
                 <el-col :span="24" class="role"> {{ getRole(form.role) }}</el-col>
               </el-form-item>
+              <el-col :span="24" class="button">
+                <el-button type="primary" @click="submitForm(ruleFormRef)">保存</el-button>
+              </el-col>
             </el-form>
           </el-col>
-          <el-row v-if="form.info">
-            <el-col :span="24" class="one_1"> 个人基本资料</el-col>
-            <el-col :span="24" class="one_2"> 11111 </el-col>
+          <el-row v-if="form.type">
+            <el-col :span="24" class="one_1"> 基本资料</el-col>
+            <el-col :span="24" class="one_2">
+              <expert v-if="form.type == '1'"></expert>
+              <company v-if="form.type == '2'"></company>
+              <incubator v-if="form.type == '3'"></incubator>
+              <competition v-if="form.type == '4'"></competition>
+              <investment v-if="form.type == '5'"></investment>
+              <association v-if="form.type == '6'"></association>
+              <state v-if="form.type == '7'"></state>
+              <unit v-if="form.type == '8'"></unit>
+            </el-col>
           </el-row>
-          <el-col :span="24" class="button">
-            <el-button type="primary" @click="submitForm(ruleFormRef)">保存</el-button>
-          </el-col>
         </div>
       </el-col>
     </el-row>
@@ -71,8 +80,16 @@
 <script setup>
 // API 引用
 import { getCity } from '@/utils/city'
-import { get } from 'lodash-es'
-
+import { cloneDeep, get } from 'lodash-es'
+// 组件
+import association from './parts/association.vue'
+import company from './parts/company.vue'
+import competition from './parts/competition.vue'
+import expert from './parts/expert.vue'
+import incubator from './parts/incubator.vue'
+import state from './parts/state.vue'
+import unit from './parts/unit.vue'
+import investment from './parts/investment.vue'
 // 接口
 import { UserStore } from '@/store/user'
 const userStore = UserStore()
@@ -87,6 +104,8 @@ const $checkRes = inject('$checkRes')
 // 加载中
 const loading = ref(false)
 const form = ref({})
+// 表单验证
+const ruleFormRef = ref()
 const validatePhoneNumber = (rule, value, callback) => {
   const reg = /^1[3-9]\d{9}$/
   if (!value) {
@@ -127,6 +146,7 @@ const search = async () => {
   if (user.value._id) {
     let res = await store.fetch(user.value._id)
     if (res.errcode == '0') form.value = res.data
+    form.value.type = '1'
   }
 }
 const searchOther = async () => {
@@ -177,6 +197,20 @@ const getRole = (data) => {
     return list.join(',')
   }
 }
+// provide
+provide('cloneDeep', cloneDeep)
+provide('ruleFormRef ', ruleFormRef)
+// 字典
+provide('genderList', genderList)
+provide('fieldList', fieldList)
+provide('educationList', educationList)
+provide('cityList', cityList)
+provide('isUseList', isUseList)
+provide('patternList', patternList)
+provide('scaleList', scaleList)
+provide('IndustryList', IndustryList)
+provide('cardTypeList', cardTypeList)
+provide('contributionList', contributionList)
 </script>
 <style scoped lang="scss">
 .main {

+ 106 - 0
src/views/center/parts/association.vue

@@ -0,0 +1,106 @@
+<template>
+  <div class="index">
+    <el-form
+      ref="ruleFormRef"
+      :model="form"
+      :rules="rules"
+      label-width="90px"
+      class="form"
+      label-position="left"
+    >
+      <el-row :gutter="20">
+        <el-col :span="12">
+          <el-form-item label="商协会名称" prop="name">
+            <el-input v-model="form.name" placeholder="请输入商协会名称" />
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="负责人姓名" prop="person">
+            <el-input v-model="form.person" placeholder="请输入负责人姓名" />
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row :gutter="20">
+        <el-col :span="12">
+          <el-form-item label="负责人电话" prop="person_phone">
+            <el-input v-model="form.person_phone" placeholder="请输入负责人电话" />
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="是否公开" prop="is_show">
+            <el-radio-group v-model="form.is_show">
+              <el-radio v-for="i in isUseList" :key="i._id" :label="i.value">{{
+                i.label
+              }}</el-radio>
+            </el-radio-group>
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-col :span="24">
+        <el-form-item label="地址" prop="address">
+          <el-input
+            v-model="form.address"
+            :autosize="{ minRows: 2, maxRows: 4 }"
+            type="textarea"
+            placeholder="请输入地址"
+          />
+        </el-form-item>
+      </el-col>
+      <el-col :span="24">
+        <el-form-item label="简介" prop="brief">
+          <el-input
+            v-model="form.brief"
+            :autosize="{ minRows: 2, maxRows: 4 }"
+            type="textarea"
+            placeholder="请输入简介"
+          />
+        </el-form-item>
+      </el-col>
+      <el-col :span="24" class="button">
+        <el-button type="primary" @click="submitForm(ruleFormRef)">保存</el-button>
+      </el-col>
+    </el-form>
+  </div>
+</template>
+<script setup>
+// 基础
+const cloneDeep = inject('cloneDeep')
+// 表单
+const ruleFormRef = inject('ruleFormRef')
+// 字典表
+const isUseList = inject('isUseList')
+// 接口
+import { AssociationStore } from '@/store/api/user/association'
+const associationStore = AssociationStore()
+const form = ref({})
+const rules = reactive({
+  // nick_name: [{ required: true, message: '请输入昵称', trigger: 'blur' }],
+  // gender: [{ required: true, message: '请选择性别', trigger: 'blur' }],
+  // phone: [{ required: true, validator: validatePhoneNumber, trigger: 'blur' }],
+  // account: [{ required: true, message: '请输入账号', trigger: 'blur' }],
+  // password: [{ required: true, message: '请输入密码', trigger: 'blur' }],
+  // refpassword: [{ required: true, validator: validatePassword, trigger: 'blur' }]
+})
+// 注册
+const submitForm = async (formEl) => {
+  if (!formEl) return
+  await formEl.validate(async (valid, fields) => {
+    if (valid) {
+      const data = cloneDeep(form.value)
+      const res = await associationStore.update(data)
+      if (res.errcode === 0) {
+        console.log(res)
+      }
+    } else {
+      console.log('error submit!', fields)
+    }
+  })
+}
+</script>
+<style scoped lang="scss">
+.index {
+  .button {
+    text-align: center;
+  }
+}
+</style>

+ 203 - 0
src/views/center/parts/company.vue

@@ -0,0 +1,203 @@
+<template>
+  <div class="index">
+    <el-form
+      ref="ruleFormRef"
+      :model="form"
+      :rules="rules"
+      label-width="100px"
+      class="form"
+      label-position="left"
+    >
+      <el-row>
+        <el-form-item label="企业Logo" prop="logo">
+          <custom-upload
+            model="logo"
+            :list="form.logo"
+            :limit="1"
+            url="/files/web/template/company/upload"
+            @change="onFUpload"
+            listType="picture-card"
+          ></custom-upload>
+        </el-form-item>
+      </el-row>
+      <el-row :gutter="20">
+        <el-col :span="12">
+          <el-form-item label="企业名称" prop="name">
+            <el-input v-model="form.name" placeholder="请输入企业名称" />
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="企业类型" prop="pattern">
+            <el-select clearable v-model="form.pattern" placeholder="请选择企业类型">
+              <el-option
+                v-for="(item, index) in patternList"
+                :key="index"
+                :label="item.label"
+                :value="item.value"
+              />
+            </el-select>
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row :gutter="20">
+        <el-col :span="12">
+          <el-form-item label="企业规模" prop="scale">
+            <el-select clearable v-model="form.scale" placeholder="请选择企业规模">
+              <el-option
+                v-for="item in scaleList"
+                :key="item.value"
+                :label="item.label"
+                :value="item.value"
+              />
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="统一信用代码" prop="code">
+            <el-input v-model="form.code" placeholder="请输入统一信用代码" />
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row :gutter="20">
+        <el-col :span="12">
+          <el-form-item label="所属行业" prop="type">
+            <el-select clearable v-model="form.type" placeholder="请选择所属行业">
+              <el-option
+                v-for="(item, index) in IndustryList"
+                :key="index"
+                :label="item.label"
+                :value="item.value"
+              />
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="所在地区" prop="region">
+            <el-cascader
+              v-model="form.area"
+              :props="{ value: 'label', label: 'label' }"
+              :options="cityList"
+              clearable
+              placeholder="请选择所在地区"
+              style="width: 100%"
+            />
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row :gutter="20">
+        <el-col :span="12">
+          <el-form-item label="法定代表人" prop="representative">
+            <el-input v-model="form.representative" placeholder="请输入法定代表人名称" />
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="电子邮箱" prop="email">
+            <el-input v-model="form.email" type="email" placeholder="请输入电子邮箱" />
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row :gutter="20">
+        <el-col :span="12">
+          <el-form-item label="员工人数" prop="person">
+            <el-input v-model="form.person" placeholder="请输入员工人数" />
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="注册资本" prop="register">
+            <el-input v-model="form.register" placeholder="请输入注册资本(万元)" />
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row :gutter="20">
+        <el-col :span="12">
+          <el-form-item label="成立时间" prop="create_time">
+            <el-date-picker
+              format="YYYY-MM-DD"
+              value-format="YYYY-MM-DD"
+              v-model="form.create_time"
+              type="date"
+              placeholder="请选择成立时间"
+              style="width: 100%"
+            />
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="企业地址" prop="address">
+            <el-input v-model="form.address" placeholder="请输入企业地址" />
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-col :span="24">
+        <el-form-item label="是否公开" prop="is_show">
+          <el-radio-group v-model="form.is_show">
+            <el-radio v-for="i in isUseList" :key="i._id" :label="i.value">{{ i.label }}</el-radio>
+          </el-radio-group>
+        </el-form-item>
+      </el-col>
+      <el-col :span="24">
+        <el-form-item label="简介" prop="brief">
+          <el-input
+            v-model="form.brief"
+            :autosize="{ minRows: 2, maxRows: 4 }"
+            type="textarea"
+            placeholder="请输入简介"
+          />
+        </el-form-item>
+      </el-col>
+      <el-col :span="24" class="button">
+        <el-button type="primary" @click="submitForm(ruleFormRef)">保存</el-button>
+      </el-col>
+    </el-form>
+  </div>
+</template>
+<script setup>
+// 基础
+const cloneDeep = inject('cloneDeep')
+// 表单
+const ruleFormRef = inject('ruleFormRef')
+// 字典表
+const patternList = inject('patternList')
+const scaleList = inject('scaleList')
+const IndustryList = inject('IndustryList')
+const cityList = inject('cityList')
+const isUseList = inject('isUseList')
+// 接口
+import { CompanyStore } from '@/store/api/user/company'
+const companyStore = CompanyStore()
+const form = ref({})
+const rules = reactive({
+  // nick_name: [{ required: true, message: '请输入昵称', trigger: 'blur' }],
+  // gender: [{ required: true, message: '请选择性别', trigger: 'blur' }],
+  // phone: [{ required: true, validator: validatePhoneNumber, trigger: 'blur' }],
+  // account: [{ required: true, message: '请输入账号', trigger: 'blur' }],
+  // password: [{ required: true, message: '请输入密码', trigger: 'blur' }],
+  // refpassword: [{ required: true, validator: validatePassword, trigger: 'blur' }]
+})
+// 上传图片
+const onFUpload = (e) => {
+  const { model, value } = e
+  form.value[model] = value
+}
+// 注册
+const submitForm = async (formEl) => {
+  if (!formEl) return
+  await formEl.validate(async (valid, fields) => {
+    if (valid) {
+      const data = cloneDeep(form.value)
+      const res = await companyStore.update(data)
+      if (res.errcode === 0) {
+        console.log(res)
+      }
+    } else {
+      console.log('error submit!', fields)
+    }
+  })
+}
+</script>
+<style scoped lang="scss">
+.index {
+  .button {
+    text-align: center;
+  }
+}
+</style>

+ 106 - 0
src/views/center/parts/competition.vue

@@ -0,0 +1,106 @@
+<template>
+  <div class="index">
+    <el-form
+      ref="ruleFormRef"
+      :model="form"
+      :rules="rules"
+      label-width="90px"
+      class="form"
+      label-position="left"
+    >
+      <el-row :gutter="20">
+        <el-col :span="12">
+          <el-form-item label="名称" prop="name">
+            <el-input v-model="form.name" placeholder="请输入名称" />
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="负责人姓名" prop="person">
+            <el-input v-model="form.person" placeholder="请输入负责人姓名" />
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row :gutter="20">
+        <el-col :span="12">
+          <el-form-item label="负责人电话" prop="person_phone">
+            <el-input v-model="form.person_phone" placeholder="请输入负责人电话" />
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="是否公开" prop="is_show">
+            <el-radio-group v-model="form.is_show">
+              <el-radio v-for="i in isUseList" :key="i._id" :label="i.value">{{
+                i.label
+              }}</el-radio>
+            </el-radio-group>
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-col :span="24">
+        <el-form-item label="地址" prop="address">
+          <el-input
+            v-model="form.address"
+            :autosize="{ minRows: 2, maxRows: 4 }"
+            type="textarea"
+            placeholder="请输入地址"
+          />
+        </el-form-item>
+      </el-col>
+      <el-col :span="24">
+        <el-form-item label="简介" prop="brief">
+          <el-input
+            v-model="form.brief"
+            :autosize="{ minRows: 2, maxRows: 4 }"
+            type="textarea"
+            placeholder="请输入简介"
+          />
+        </el-form-item>
+      </el-col>
+      <el-col :span="24" class="button">
+        <el-button type="primary" @click="submitForm(ruleFormRef)">保存</el-button>
+      </el-col>
+    </el-form>
+  </div>
+</template>
+<script setup>
+// 基础
+const cloneDeep = inject('cloneDeep')
+// 表单
+const ruleFormRef = inject('ruleFormRef')
+// 字典表
+const isUseList = inject('isUseList')
+// 接口
+import { CompetitionStore } from '@/store/api/user/competition'
+const competitionStore = CompetitionStore()
+const form = ref({})
+const rules = reactive({
+  // nick_name: [{ required: true, message: '请输入昵称', trigger: 'blur' }],
+  // gender: [{ required: true, message: '请选择性别', trigger: 'blur' }],
+  // phone: [{ required: true, validator: validatePhoneNumber, trigger: 'blur' }],
+  // account: [{ required: true, message: '请输入账号', trigger: 'blur' }],
+  // password: [{ required: true, message: '请输入密码', trigger: 'blur' }],
+  // refpassword: [{ required: true, validator: validatePassword, trigger: 'blur' }]
+})
+// 注册
+const submitForm = async (formEl) => {
+  if (!formEl) return
+  await formEl.validate(async (valid, fields) => {
+    if (valid) {
+      const data = cloneDeep(form.value)
+      const res = await competitionStore.update(data)
+      if (res.errcode === 0) {
+        console.log(res)
+      }
+    } else {
+      console.log('error submit!', fields)
+    }
+  })
+}
+</script>
+<style scoped lang="scss">
+.index {
+  .button {
+    text-align: center;
+  }
+}
+</style>

+ 162 - 0
src/views/center/parts/expert.vue

@@ -0,0 +1,162 @@
+<template>
+  <div class="index">
+    <el-form
+      ref="ruleFormRef"
+      :model="form"
+      :rules="rules"
+      label-width="80px"
+      class="form"
+      label-position="left"
+    >
+      <el-row :gutter="20">
+        <el-col :span="12">
+          <el-form-item label="专家姓名" prop="name">
+            <el-input v-model="form.name" placeholder="请输入专家姓名" />
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="出生年月" prop="birth">
+            <el-date-picker
+              format="YYYY-MM-DD"
+              value-format="YYYY-MM-DD"
+              v-model="form.birth"
+              type="date"
+              placeholder="请选择出生年月"
+              style="width: 100%"
+            />
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row :gutter="20">
+        <el-col :span="12">
+          <el-form-item label="证件类型" prop="cardType">
+            <el-select clearable v-model="form.cardType" placeholder="请选择证件类型">
+              <el-option
+                v-for="(item, index) in cardTypeList"
+                :key="index"
+                :label="item.label"
+                :value="item.value"
+              />
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="证件号码" prop="card">
+            <el-input v-model="form.card" placeholder="请输入证件号码" />
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row :gutter="20">
+        <el-col :span="12">
+          <el-form-item label="擅长领域" prop="field">
+            <el-select clearable v-model="form.field" placeholder="请选择擅长领域">
+              <el-option
+                v-for="(item, index) in fieldList"
+                :key="index"
+                :label="item.label"
+                :value="item.value"
+              />
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="研究方向" prop="direction">
+            <el-input v-model="form.direction" placeholder="请输入研究方向" />
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row :gutter="20">
+        <el-col :span="12">
+          <el-form-item label="最高学历" prop="education">
+            <el-select clearable v-model="form.education" placeholder="请选择最高学历">
+              <el-option
+                v-for="(item, index) in educationList"
+                :key="index"
+                :label="item.label"
+                :value="item.value"
+              />
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="所在地区" prop="region">
+            <el-cascader
+              v-model="form.area"
+              :props="{ value: 'label', label: 'label' }"
+              :options="cityList"
+              clearable
+              placeholder="请选择所在地区"
+              style="width: 100%"
+            />
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-col :span="24">
+        <el-form-item label="是否公开" prop="is_show">
+          <el-radio-group v-model="form.is_show">
+            <el-radio v-for="i in isUseList" :key="i._id" :label="i.value">{{ i.label }}</el-radio>
+          </el-radio-group>
+        </el-form-item>
+      </el-col>
+      <el-col :span="24">
+        <el-form-item label="简介" prop="brief">
+          <el-input
+            v-model="form.brief"
+            :autosize="{ minRows: 2, maxRows: 4 }"
+            type="textarea"
+            placeholder="请输入简介"
+          />
+        </el-form-item>
+      </el-col>
+      <el-col :span="24" class="button">
+        <el-button type="primary" @click="submitForm(ruleFormRef)">保存</el-button>
+      </el-col>
+    </el-form>
+  </div>
+</template>
+<script setup>
+// 基础
+const cloneDeep = inject('cloneDeep')
+// 表单
+const ruleFormRef = inject('ruleFormRef')
+// 字典表
+const fieldList = inject('fieldList')
+const educationList = inject('educationList')
+const cityList = inject('cityList')
+const isUseList = inject('isUseList')
+const cardTypeList = inject('cardTypeList')
+// 接口
+import { ExpertStore } from '@/store/api/user/expert'
+const expertStore = ExpertStore()
+const form = ref({})
+const rules = reactive({
+  // nick_name: [{ required: true, message: '请输入昵称', trigger: 'blur' }],
+  // gender: [{ required: true, message: '请选择性别', trigger: 'blur' }],
+  // phone: [{ required: true, validator: validatePhoneNumber, trigger: 'blur' }],
+  // account: [{ required: true, message: '请输入账号', trigger: 'blur' }],
+  // password: [{ required: true, message: '请输入密码', trigger: 'blur' }],
+  // refpassword: [{ required: true, validator: validatePassword, trigger: 'blur' }]
+})
+// 保存
+const submitForm = async (formEl) => {
+  if (!formEl) return
+  await formEl.validate(async (valid, fields) => {
+    if (valid) {
+      const data = cloneDeep(form.value)
+      const res = await expertStore.update(data)
+      if (res.errcode === 0) {
+        console.log(res)
+      }
+    } else {
+      console.log('error submit!', fields)
+    }
+  })
+}
+</script>
+<style scoped lang="scss">
+.index {
+  .button {
+    text-align: center;
+  }
+}
+</style>

+ 106 - 0
src/views/center/parts/incubator.vue

@@ -0,0 +1,106 @@
+<template>
+  <div class="index">
+    <el-form
+      ref="ruleFormRef"
+      :model="form"
+      :rules="rules"
+      label-width="90px"
+      class="form"
+      label-position="left"
+    >
+      <el-row :gutter="20">
+        <el-col :span="12">
+          <el-form-item label="孵化器名称" prop="name">
+            <el-input v-model="form.name" placeholder="请输入孵化器名称" />
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="负责人姓名" prop="person">
+            <el-input v-model="form.person" placeholder="请输入负责人姓名" />
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row :gutter="20">
+        <el-col :span="12">
+          <el-form-item label="负责人电话" prop="person_phone">
+            <el-input v-model="form.person_phone" placeholder="请输入负责人电话" />
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="是否公开" prop="is_show">
+            <el-radio-group v-model="form.is_show">
+              <el-radio v-for="i in isUseList" :key="i._id" :label="i.value">{{
+                i.label
+              }}</el-radio>
+            </el-radio-group>
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-col :span="24">
+        <el-form-item label="地址" prop="address">
+          <el-input
+            v-model="form.address"
+            :autosize="{ minRows: 2, maxRows: 4 }"
+            type="textarea"
+            placeholder="请输入地址"
+          />
+        </el-form-item>
+      </el-col>
+      <el-col :span="24">
+        <el-form-item label="简介" prop="brief">
+          <el-input
+            v-model="form.brief"
+            :autosize="{ minRows: 2, maxRows: 4 }"
+            type="textarea"
+            placeholder="请输入简介"
+          />
+        </el-form-item>
+      </el-col>
+      <el-col :span="24" class="button">
+        <el-button type="primary" @click="submitForm(ruleFormRef)">保存</el-button>
+      </el-col>
+    </el-form>
+  </div>
+</template>
+<script setup>
+// 基础
+const cloneDeep = inject('cloneDeep')
+// 表单
+const ruleFormRef = inject('ruleFormRef')
+// 字典表
+const isUseList = inject('isUseList')
+// 接口
+import { IncubatorStore } from '@/store/api/user/incubator'
+const incubatorStore = IncubatorStore()
+const form = ref({})
+const rules = reactive({
+  // nick_name: [{ required: true, message: '请输入昵称', trigger: 'blur' }],
+  // gender: [{ required: true, message: '请选择性别', trigger: 'blur' }],
+  // phone: [{ required: true, validator: validatePhoneNumber, trigger: 'blur' }],
+  // account: [{ required: true, message: '请输入账号', trigger: 'blur' }],
+  // password: [{ required: true, message: '请输入密码', trigger: 'blur' }],
+  // refpassword: [{ required: true, validator: validatePassword, trigger: 'blur' }]
+})
+// 注册
+const submitForm = async (formEl) => {
+  if (!formEl) return
+  await formEl.validate(async (valid, fields) => {
+    if (valid) {
+      const data = cloneDeep(form.value)
+      const res = await incubatorStore.update(data)
+      if (res.errcode === 0) {
+        console.log(res)
+      }
+    } else {
+      console.log('error submit!', fields)
+    }
+  })
+}
+</script>
+<style scoped lang="scss">
+.index {
+  .button {
+    text-align: center;
+  }
+}
+</style>

+ 134 - 0
src/views/center/parts/investment.vue

@@ -0,0 +1,134 @@
+<template>
+  <div class="index">
+    <el-form
+      ref="ruleFormRef"
+      :model="form"
+      :rules="rules"
+      label-width="80px"
+      class="form"
+      label-position="left"
+    >
+      <el-row :gutter="20">
+        <el-col :span="12">
+          <el-form-item label="姓名" prop="name">
+            <el-input v-model="form.name" placeholder="请输入姓名" />
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="出资额" prop="money">
+            <el-input v-model="form.money" placeholder="请输入出资额(万元)" />
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row :gutter="20">
+        <el-col :span="12">
+          <el-form-item label="证件类型" prop="cardType">
+            <el-select clearable v-model="form.cardType" placeholder="请选择证件类型">
+              <el-option
+                v-for="(item, index) in cardTypeList"
+                :key="index"
+                :label="item.label"
+                :value="item.value"
+              />
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="证件号码" prop="card">
+            <el-input v-model="form.card" placeholder="请输入证件号码" />
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row :gutter="20">
+        <el-col :span="12">
+          <el-form-item label="出资方式" prop="type">
+            <el-select clearable v-model="form.type" placeholder="请选择出资方式">
+              <el-option
+                v-for="(item, index) in contributionList"
+                :key="index"
+                :label="item.label"
+                :value="item.value"
+              />
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="是否公开" prop="is_show">
+            <el-radio-group v-model="form.is_show">
+              <el-radio v-for="i in isUseList" :key="i._id" :label="i.value">{{
+                i.label
+              }}</el-radio>
+            </el-radio-group>
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-col :span="24">
+        <el-form-item label="地址" prop="address">
+          <el-input
+            v-model="form.address"
+            :autosize="{ minRows: 2, maxRows: 4 }"
+            type="textarea"
+            placeholder="请输入地址"
+          />
+        </el-form-item>
+      </el-col>
+      <el-col :span="24">
+        <el-form-item label="简介" prop="brief">
+          <el-input
+            v-model="form.brief"
+            :autosize="{ minRows: 2, maxRows: 4 }"
+            type="textarea"
+            placeholder="请输入简介"
+          />
+        </el-form-item>
+      </el-col>
+      <el-col :span="24" class="button">
+        <el-button type="primary" @click="submitForm(ruleFormRef)">保存</el-button>
+      </el-col>
+    </el-form>
+  </div>
+</template>
+<script setup>
+// 基础
+const cloneDeep = inject('cloneDeep')
+// 表单
+const ruleFormRef = inject('ruleFormRef')
+// 字典表
+const cardTypeList = inject('cardTypeList')
+const isUseList = inject('isUseList')
+const contributionList = inject('contributionList')
+// 接口
+import { InvestmentStore } from '@/store/api/user/investment'
+const investmentStore = InvestmentStore()
+const form = ref({})
+const rules = reactive({
+  // nick_name: [{ required: true, message: '请输入昵称', trigger: 'blur' }],
+  // gender: [{ required: true, message: '请选择性别', trigger: 'blur' }],
+  // phone: [{ required: true, validator: validatePhoneNumber, trigger: 'blur' }],
+  // account: [{ required: true, message: '请输入账号', trigger: 'blur' }],
+  // password: [{ required: true, message: '请输入密码', trigger: 'blur' }],
+  // refpassword: [{ required: true, validator: validatePassword, trigger: 'blur' }]
+})
+// 注册
+const submitForm = async (formEl) => {
+  if (!formEl) return
+  await formEl.validate(async (valid, fields) => {
+    if (valid) {
+      const data = cloneDeep(form.value)
+      const res = await investmentStore.update(data)
+      if (res.errcode === 0) {
+        console.log(res)
+      }
+    } else {
+      console.log('error submit!', fields)
+    }
+  })
+}
+</script>
+<style scoped lang="scss">
+.index {
+  .button {
+    text-align: center;
+  }
+}
+</style>

+ 120 - 0
src/views/center/parts/state.vue

@@ -0,0 +1,120 @@
+<template>
+  <div class="index">
+    <el-form
+      ref="ruleFormRef"
+      :model="form"
+      :rules="rules"
+      label-width="90px"
+      class="form"
+      label-position="left"
+    >
+      <el-row :gutter="20">
+        <el-col :span="12">
+          <el-form-item label="名称" prop="name">
+            <el-input v-model="form.name" placeholder="请输入名称" />
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="负责人姓名" prop="person">
+            <el-input v-model="form.person" placeholder="请输入负责人姓名" />
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row :gutter="20">
+        <el-col :span="12">
+          <el-form-item label="负责人电话" prop="person_phone">
+            <el-input v-model="form.person_phone" placeholder="请输入负责人电话" />
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="部门类型" prop="type">
+            <el-select clearable v-model="form.type" placeholder="请选择部门类型">
+              <el-option
+                v-for="(item, index) in typeList"
+                :key="index"
+                :label="item.label"
+                :value="item.value"
+              />
+            </el-select>
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row :gutter="20">
+        <el-col :span="12">
+          <el-form-item label="是否公开" prop="is_show">
+            <el-radio-group v-model="form.is_show">
+              <el-radio v-for="i in isUseList" :key="i._id" :label="i.value">{{
+                i.label
+              }}</el-radio>
+            </el-radio-group>
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-col :span="24">
+        <el-form-item label="地址" prop="address">
+          <el-input
+            v-model="form.address"
+            :autosize="{ minRows: 2, maxRows: 4 }"
+            type="textarea"
+            placeholder="请输入地址"
+          />
+        </el-form-item>
+      </el-col>
+      <el-col :span="24">
+        <el-form-item label="简介" prop="brief">
+          <el-input
+            v-model="form.brief"
+            :autosize="{ minRows: 2, maxRows: 4 }"
+            type="textarea"
+            placeholder="请输入简介"
+          />
+        </el-form-item>
+      </el-col>
+      <el-col :span="24" class="button">
+        <el-button type="primary" @click="submitForm(ruleFormRef)">保存</el-button>
+      </el-col>
+    </el-form>
+  </div>
+</template>
+<script setup>
+// 基础
+const cloneDeep = inject('cloneDeep')
+// 表单
+const ruleFormRef = inject('ruleFormRef')
+// 字典表
+const isUseList = inject('isUseList')
+// 接口
+import { StateStore } from '@/store/api/user/state'
+const stateStore = StateStore()
+const form = ref({})
+const rules = reactive({
+  // nick_name: [{ required: true, message: '请输入昵称', trigger: 'blur' }],
+  // gender: [{ required: true, message: '请选择性别', trigger: 'blur' }],
+  // phone: [{ required: true, validator: validatePhoneNumber, trigger: 'blur' }],
+  // account: [{ required: true, message: '请输入账号', trigger: 'blur' }],
+  // password: [{ required: true, message: '请输入密码', trigger: 'blur' }],
+  // refpassword: [{ required: true, validator: validatePassword, trigger: 'blur' }]
+})
+// 注册
+const submitForm = async (formEl) => {
+  if (!formEl) return
+  await formEl.validate(async (valid, fields) => {
+    if (valid) {
+      const data = cloneDeep(form.value)
+      const res = await stateStore.update(data)
+      if (res.errcode === 0) {
+        console.log(res)
+      }
+    } else {
+      console.log('error submit!', fields)
+    }
+  })
+}
+</script>
+<style scoped lang="scss">
+.index {
+  .button {
+    text-align: center;
+  }
+}
+</style>

+ 106 - 0
src/views/center/parts/unit.vue

@@ -0,0 +1,106 @@
+<template>
+  <div class="index">
+    <el-form
+      ref="ruleFormRef"
+      :model="form"
+      :rules="rules"
+      label-width="90px"
+      class="form"
+      label-position="left"
+    >
+      <el-row :gutter="20">
+        <el-col :span="12">
+          <el-form-item label="名称" prop="name">
+            <el-input v-model="form.name" placeholder="请输入名称" />
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="负责人姓名" prop="person">
+            <el-input v-model="form.person" placeholder="请输入负责人姓名" />
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row :gutter="20">
+        <el-col :span="12">
+          <el-form-item label="负责人电话" prop="person_phone">
+            <el-input v-model="form.person_phone" placeholder="请输入负责人电话" />
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="是否公开" prop="is_show">
+            <el-radio-group v-model="form.is_show">
+              <el-radio v-for="i in isUseList" :key="i._id" :label="i.value">{{
+                i.label
+              }}</el-radio>
+            </el-radio-group>
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-col :span="24">
+        <el-form-item label="地址" prop="address">
+          <el-input
+            v-model="form.address"
+            :autosize="{ minRows: 2, maxRows: 4 }"
+            type="textarea"
+            placeholder="请输入地址"
+          />
+        </el-form-item>
+      </el-col>
+      <el-col :span="24">
+        <el-form-item label="简介" prop="brief">
+          <el-input
+            v-model="form.brief"
+            :autosize="{ minRows: 2, maxRows: 4 }"
+            type="textarea"
+            placeholder="请输入简介"
+          />
+        </el-form-item>
+      </el-col>
+      <el-col :span="24" class="button">
+        <el-button type="primary" @click="submitForm(ruleFormRef)">保存</el-button>
+      </el-col>
+    </el-form>
+  </div>
+</template>
+<script setup>
+// 基础
+const cloneDeep = inject('cloneDeep')
+// 表单
+const ruleFormRef = inject('ruleFormRef')
+// 字典表
+const isUseList = inject('isUseList')
+// 接口
+import { UnitStore } from '@/store/api/user/unit'
+const unitStore = UnitStore()
+const form = ref({})
+const rules = reactive({
+  // nick_name: [{ required: true, message: '请输入昵称', trigger: 'blur' }],
+  // gender: [{ required: true, message: '请选择性别', trigger: 'blur' }],
+  // phone: [{ required: true, validator: validatePhoneNumber, trigger: 'blur' }],
+  // account: [{ required: true, message: '请输入账号', trigger: 'blur' }],
+  // password: [{ required: true, message: '请输入密码', trigger: 'blur' }],
+  // refpassword: [{ required: true, validator: validatePassword, trigger: 'blur' }]
+})
+// 注册
+const submitForm = async (formEl) => {
+  if (!formEl) return
+  await formEl.validate(async (valid, fields) => {
+    if (valid) {
+      const data = cloneDeep(form.value)
+      const res = await unitStore.update(data)
+      if (res.errcode === 0) {
+        console.log(res)
+      }
+    } else {
+      console.log('error submit!', fields)
+    }
+  })
+}
+</script>
+<style scoped lang="scss">
+.index {
+  .button {
+    text-align: center;
+  }
+}
+</style>

+ 4 - 4
src/views/register/index.vue

@@ -26,9 +26,9 @@
               <user v-if="type == '0'"></user>
               <expert v-if="type == '1'"></expert>
               <company v-if="type == '2'"></company>
-              <Incubator v-if="type == '3'"></Incubator>
+              <incubator v-if="type == '3'"></incubator>
               <competition v-if="type == '4'"></competition>
-              <Investment v-if="type == '5'"></Investment>
+              <investment v-if="type == '5'"></investment>
               <association v-if="type == '6'"></association>
               <state v-if="type == '7'"></state>
               <unit v-if="type == '8'"></unit>
@@ -59,10 +59,10 @@ import association from './parts/association.vue'
 import company from './parts/company.vue'
 import competition from './parts/competition.vue'
 import expert from './parts/expert.vue'
-import Incubator from './parts/incubator.vue'
+import incubator from './parts/incubator.vue'
 import state from './parts/state.vue'
 import unit from './parts/unit.vue'
-import Investment from './parts/investment.vue'
+import investment from './parts/investment.vue'
 // 路由
 const router = useRouter()
 // 加载中