lrf402788946 4 лет назад
Родитель
Сommit
84f6547495

+ 167 - 146
src/views/techolchat/list/detail-model/fields.js

@@ -1,146 +1,167 @@
-export const two = [
-  { label: '成立时间', model: 'create_date', list: 'time', type: 'select' },
-  { label: '企业人数', model: 'number', list: 'number', type: 'select' },
-  {
-    label: '企业类型',
-    model: 'company_type',
-    list: 'companyType',
-    type: 'select',
-  },
-  { label: '发展阶段', model: 'parts', list: 'parts', type: 'select' },
-  { label: '所属行业', model: 'profession', list: 'profession', type: 'select' },
-  { label: '行业排名', model: 'order', list: 'order', type: 'select' },
-];
-
-export const three = [
-  {
-    label: '企业负责人',
-    model: 'responder',
-    type: 'object',
-    children: [
-      { label: '与公司关系', model: 'relation', list: 'chargeRelation', type: 'select' },
-      { label: '年龄', model: 'age', list: 'age', type: 'select' },
-      { label: '学历', model: 'edu', list: 'edu', type: 'select' },
-      { label: '职称', model: 'teckRank', list: 'teckRank', type: 'select' },
-      { label: '专业', model: 'major', list: 'major', type: 'select' },
-      { label: '专业契合度', model: 'agreePer', list: 'agreePer', type: 'select' },
-    ],
-  },
-  {
-    label: '技术负责人',
-    model: 'group',
-    type: 'array',
-    children: [
-      { label: '负责人', model: 'charge', list: 'gCharge', type: 'select' },
-      { label: '年龄', model: 'gage', list: 'age', type: 'select' },
-      { label: '学历', model: 'gedu', list: 'edu', type: 'select' },
-      { label: '职称', model: 'gteckRank', list: 'teckRank', type: 'select' },
-      { label: '专业', model: 'gmajor', list: 'major', type: 'select' },
-      { label: '专业契合度', model: 'gagreePer', list: 'agreePer', type: 'select' },
-    ],
-  },
-  {
-    label: '技术顾问团',
-    model: 'gw_group',
-    type: 'object',
-    children: [
-      { label: '负责人', model: 'gnum', list: 'gwNum', type: 'select' },
-      { label: '年龄', model: 'gwage', list: 'age', type: 'select' },
-      { label: '学历', model: 'gwedu', list: 'edu', type: 'select' },
-      { label: '职称', model: 'gwteckRank', list: 'teckRank', type: 'select' },
-      { label: '专业', model: 'gwmajor', list: 'major', type: 'select' },
-      { label: '专业契合度', model: 'gwagreePer', list: 'agreePer', type: 'select' },
-    ],
-  },
-];
-
-export const four = [
-  { label: 'PCT申请数', model: 'pctNum', list: 'zscqNum', type: 'select' },
-  { label: '授权知识产权', model: 'zscqNum', list: 'zscqNum', type: 'select' },
-  { label: '已实施知识产权数', model: 'useZscq', list: 'zscqNum', type: 'select' },
-  { label: '上年度专利许可与转让收入', model: 'in', list: 'zlIn', type: 'select' },
-  { label: '上年度新产品销售额', model: 'sell', list: 'productIn', type: 'select' },
-  {
-    label: '新品开发来源(多选)',
-    model: 'dev_source',
-    type: 'checkbox',
-    list: 'source',
-  },
-  {
-    label: '新品发展战略(多选)',
-    model: 'dev_route',
-    type: 'checkbox',
-    list: 'route',
-  },
-
-  { label: '新品开发周期', model: 'ePeriod', list: 'ePeriod', type: 'select' },
-  { label: '新品研发速度', model: 'eSpeed', list: 'eSpeed', type: 'select' },
-  { label: '新品开发成功率', model: 'rate', list: 'rate', type: 'select' },
-  { label: '新品市场替代性', model: 'eReplaceable', list: 'eReplaceable', type: 'select' },
-  { label: '新品创新质量', model: 'eQuality', list: 'eQuality', type: 'select' },
-  { label: '新品利润/新品销售额', model: 'ePer', list: 'ePer', type: 'select' },
-];
-
-export const five = [
-  { label: '年均技改投入', model: 'yearCost', list: 'cost1', type: 'select' },
-  { label: '外部支出', model: 'yearOutCost', list: 'cost1', type: 'select' },
-  { label: '政府补贴经费', model: 'yearZfCost', list: 'cost1', type: 'select' },
-  { label: '加计扣除额', model: 'yearMinCost', list: 'cost2', type: 'select', labelWidth: '160px' },
-  { label: '研发人员占比', model: 'costPer', list: 'costPer', type: 'select' },
-  { label: '培训费', model: 'yearTrainCost', list: 'cost3', type: 'select', labelWidth: '160px' },
-];
-
-export const six = [
-  { label: '自主申报知识产权数', model: 'selfZscq', list: 'effect', type: 'select', labelWidth: '160px' },
-  { label: '购买(获得许可)知识产权数', model: 'buyZscq', list: 'effect', type: 'select', labelWidth: '180px' },
-  { label: '企业自立科技项目数', model: 'comProject', list: 'effect', type: 'select', labelWidth: '160px' },
-  { label: '自主开发新产品数', model: 'selfProject', list: 'effect', type: 'select', labelWidth: '160px' },
-  { label: '市级以上科技项目数', model: 'SjProject', list: 'effect', type: 'select', labelWidth: '170px' },
-  { label: '市级以上科技奖励数', model: 'SjAward', list: 'effect', type: 'select', labelWidth: '170px' },
-  { label: '与高校院所合作数', model: 'SchoolProject', list: 'effect', type: 'select', labelWidth: '160px' },
-  { label: '与产业链关联企业合作数', model: 'chainProject', list: 'effect', type: 'select', labelWidth: '180px' },
-];
-
-export const seven = [
-  {
-    label: '对外技术合作方式(多选)',
-    model: 'out_way',
-    type: 'checkbox',
-    list: 'way',
-  },
-  {
-    label: '对外技术合作缘由(多选)',
-    model: 'out_reason',
-    type: 'checkbox',
-    list: 'reason',
-  },
-  {
-    label: '对外技术合作内容(多选)',
-    model: 'out_content',
-    type: 'checkbox',
-    list: 'content',
-  },
-  {
-    label: '对外技术需求(多选)',
-    model: 'out_require',
-    type: 'checkbox',
-    list: 'require',
-  },
-  {
-    label: '对外技术使用方式(多选)',
-    model: 'out_use',
-    type: 'checkbox',
-    list: 'use',
-  },
-  {
-    label: '技术实用度',
-    model: 'out_applied',
-    type: 'object',
-    children: [
-      { label: '直接应用占比', model: 'aDirect', list: 'aDirect', type: 'select', labelWidth: '160px' },
-      { label: '需进一步开发才能应用占比', model: 'aNext', list: 'aNext', type: 'select', labelWidth: '180px' },
-      { label: '纯基础理论研究范畴', model: 'aBase', list: 'aBase', type: 'select', labelWidth: '160px' },
-      { label: '技术不能应用', model: 'aCant', list: 'aCant', type: 'select', labelWidth: '160px' },
-    ],
-  },
-];
+export const two = [
+  { label: '成立时间', model: 'create_date', list: 'time', type: 'select' },
+  { label: '企业人数', model: 'number', list: 'number', type: 'select' },
+  {
+    label: '企业类型',
+    model: 'company_type',
+    list: 'companyType',
+    type: 'select',
+  },
+  { label: '发展阶段', model: 'parts', list: 'parts', type: 'select' },
+  { label: '所属行业', model: 'profession', list: 'profession', type: 'select' },
+  { label: '行业排名', model: 'order', list: 'order', type: 'select' },
+];
+
+export const three = [
+  {
+    label: '企业负责人',
+    model: 'responder',
+    type: 'object',
+    children: [
+      { label: '与公司关系', model: 'relation', list: 'chargeRelation', type: 'select' },
+      { label: '年龄', model: 'age', list: 'age', type: 'select' },
+      { label: '学历', model: 'edu', list: 'edu', type: 'select' },
+      { label: '职称', model: 'teckRank', list: 'teckRank', type: 'select' },
+      { label: '专业', model: 'major', list: 'major', type: 'select' },
+      { label: '专业契合度', model: 'agreePer', list: 'agreePer', type: 'select' },
+    ],
+  },
+  {
+    label: '技术负责人',
+    model: 'group',
+    type: 'array',
+    children: [
+      { label: '负责人', model: 'charge', list: 'gCharge', type: 'select' },
+      { label: '年龄', model: 'gage', list: 'age', type: 'select' },
+      { label: '学历', model: 'gedu', list: 'edu', type: 'select' },
+      { label: '职称', model: 'gteckRank', list: 'teckRank', type: 'select' },
+      { label: '专业', model: 'gmajor', list: 'major', type: 'select' },
+      { label: '专业契合度', model: 'gagreePer', list: 'agreePer', type: 'select' },
+    ],
+  },
+  {
+    label: '技术顾问团',
+    model: 'gw_group',
+    type: 'object',
+    children: [
+      { label: '负责人', model: 'gnum', list: 'gwNum', type: 'select' },
+      { label: '年龄', model: 'gwage', list: 'age', type: 'select' },
+      { label: '学历', model: 'gwedu', list: 'edu', type: 'select' },
+      { label: '职称', model: 'gwteckRank', list: 'teckRank', type: 'select' },
+      { label: '专业', model: 'gwmajor', list: 'major', type: 'select' },
+      { label: '专业契合度', model: 'gwagreePer', list: 'agreePer', type: 'select' },
+    ],
+  },
+];
+
+export const addThree = [
+  { label: 'PCT申请数', model: 'pctNum', list: 'zscqNum', type: 'select' },
+  { label: '授权知识产权', model: 'zscqNum', list: 'zscqNum', type: 'select' },
+  { label: '已实施知识产权数', model: 'useZscq', list: 'zscqNum', type: 'select' },
+  { label: '上年度专利许可与转让收入', model: 'in', list: 'zlIn', type: 'select' },
+  { label: '企业内部管理', model: 'qynbgl', list: 'qynbgl', type: 'select' },
+  { label: '知识产权纠纷', model: 'zscqjf', list: 'zscqjf', type: 'select' },
+  { label: '知识产权发展阻碍-内因(可多选)', model: 'zscqfzzany', list: 'zscqfzzany', type: 'checkbox' },
+  { label: '知识产权发展阻碍-外因(可多选)', model: 'zscqfzzawy', list: 'zscqfzzawy', type: 'checkbox' },
+  {
+    label: '现有情况',
+    model: 'now',
+    type: 'object',
+    children: [
+      { label: '发明专利', model: 'fmzl', list: 'effect', type: 'select' },
+      { label: '实用新型', model: 'syxx', list: 'effect', type: 'select' },
+      { label: '商标', model: 'sb', list: 'effect', type: 'select' },
+      { label: '著作权', model: 'zzq', list: 'effect', type: 'select' },
+      { label: '专有技术', model: 'zyjs', list: 'effect', type: 'select' },
+      { label: '集成电路', model: 'jcdl', list: 'effect', type: 'select' },
+      { label: '其他', model: 'qt', list: 'effect', type: 'select' },
+    ],
+  },
+];
+
+export const four = [
+  { label: '上年度新产品销售额', model: 'sell', list: 'productIn', type: 'select' },
+  {
+    label: '新品开发来源(可多选)',
+    model: 'dev_source',
+    type: 'checkbox',
+    list: 'source',
+  },
+  {
+    label: '新品发展战略(可多选)',
+    model: 'dev_route',
+    type: 'checkbox',
+    list: 'route',
+  },
+
+  { label: '新品开发周期', model: 'ePeriod', list: 'ePeriod', type: 'select' },
+  { label: '新品研发速度', model: 'eSpeed', list: 'eSpeed', type: 'select' },
+  { label: '新品开发成功率', model: 'rate', list: 'rate', type: 'select' },
+  { label: '新品市场替代性', model: 'eReplaceable', list: 'eReplaceable', type: 'select' },
+  { label: '新品创新影响', model: 'eQuality', list: 'eQuality', type: 'select' },
+  { label: '新品利润/新品销售额', model: 'ePer', list: 'ePer', type: 'select' },
+];
+
+export const five = [
+  { label: '年均技改投入', model: 'yearCost', list: 'cost1', type: 'select' },
+  { label: '外部支出', model: 'yearOutCost', list: 'cost1', type: 'select' },
+  { label: '政府补贴经费', model: 'yearZfCost', list: 'cost1', type: 'select' },
+  { label: '加计扣除额', model: 'yearMinCost', list: 'cost2', type: 'select', labelWidth: '160px' },
+  { label: '研发人员年工资占比', model: 'costPer', list: 'costPer', type: 'select' },
+  { label: '研发/知识产权培训费', model: 'yearTrainCost', list: 'cost3', type: 'select', labelWidth: '160px' },
+];
+
+export const six = [
+  { label: '自主申报知识产权数', model: 'selfZscq', list: 'effect', type: 'select', labelWidth: '160px' },
+  { label: '购买(获得许可)知识产权数', model: 'buyZscq', list: 'effect', type: 'select', labelWidth: '180px' },
+  { label: '企业自立科技项目数', model: 'comProject', list: 'effect', type: 'select', labelWidth: '160px' },
+  { label: '自主开发新产品数', model: 'selfProject', list: 'effect', type: 'select', labelWidth: '160px' },
+  { label: '市级以上科技项目数', model: 'SjProject', list: 'effect', type: 'select', labelWidth: '170px' },
+  { label: '市级以上科技奖励数', model: 'SjAward', list: 'effect', type: 'select', labelWidth: '170px' },
+  { label: '与高校院所合作数', model: 'SchoolProject', list: 'effect', type: 'select', labelWidth: '160px' },
+  { label: '与产业链关联企业合作数', model: 'chainProject', list: 'effect', type: 'select', labelWidth: '180px' },
+];
+
+export const seven = [
+  {
+    label: '对外技术合作方式(可多选)',
+    model: 'out_way',
+    type: 'checkbox',
+    list: 'way',
+  },
+  {
+    label: '对外技术合作缘由(可多选)',
+    model: 'out_reason',
+    type: 'checkbox',
+    list: 'reason',
+  },
+  {
+    label: '对外技术合作内容(可多选)',
+    model: 'out_content',
+    type: 'checkbox',
+    list: 'content',
+  },
+  {
+    label: '对外技术需求(可多选)',
+    model: 'out_require',
+    type: 'checkbox',
+    list: 'require',
+  },
+  {
+    label: '对外技术使用方式(可多选)',
+    model: 'out_use',
+    type: 'checkbox',
+    list: 'use',
+  },
+  {
+    label: '技术实用度',
+    model: 'out_applied',
+    type: 'object',
+    children: [
+      { label: '直接应用', model: 'aDirect', list: 'aDirect', type: 'select', labelWidth: '160px' },
+      { label: '需进一步开发才能应用', model: 'aNext', list: 'aNext', type: 'select', labelWidth: '180px' },
+      { label: '纯基础研发', model: 'aBase', list: 'aBase', type: 'select', labelWidth: '160px' },
+      { label: '尚不能应用', model: 'aCant', list: 'aCant', type: 'select', labelWidth: '160px' },
+    ],
+  },
+];

+ 101 - 0
src/views/techolchat/list/detail-model/parts-models/add-three.vue

@@ -0,0 +1,101 @@
+<template>
+  <div id="add-three">
+    <el-row>
+      <el-col :span="24" class="main">
+        <el-form :model="form" :rules="rules" ref="form" label-width="180px">
+          <template v-for="(i, index) in question">
+            <template v-if="i.type === 'select'">
+              <el-col :span="12" :key="`select${index}`">
+                <el-form-item :prop="`${index}`" :label="`${i.label}`">
+                  <el-select v-model="form[i.model]" placeholder="">
+                    <el-option v-for="(item, index) in getList(i.list)" :key="index" :value="item" :label="item"></el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+            </template>
+            <template v-else-if="i.type === 'checkbox'">
+              <el-col :span="12" :key="`checkbox${index}`">
+                <el-form-item :prop="`${index}`" :label="`${i.label}`">
+                  <el-select v-model="form[i.model]" multiple placeholder="">
+                    <el-option v-for="(item, index) in getList(i.list)" :key="index" :value="item" :label="item"></el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+            </template>
+            <template v-else-if="i.type === 'object'">
+              <el-col :span="2" class="label" :key="`object-title${index}`">
+                {{ i.label }}
+              </el-col>
+              <el-col :span="22" class="select" :key="`object-child${index}`">
+                <el-col :span="3" class="chiList" v-for="(f, index) in i.children" :key="`children${index}`">
+                  <el-col :span="24" class="chi_label">
+                    {{ f.label }}
+                  </el-col>
+                  <el-col :span="24" class="chi_select">
+                    <el-select v-model="form[f.model]" placeholder="">
+                      <el-option v-for="(item, index) in getList(f.list)" :key="index" :value="item" :label="item"></el-option>
+                    </el-select>
+                  </el-col>
+                </el-col>
+              </el-col>
+            </template>
+          </template>
+        </el-form>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import { addThree } from '../fields.js';
+import * as select from '../select.js';
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'addThree',
+  props: {
+    form: { type: Object },
+    rules: { type: Object },
+  },
+  components: {},
+  data: function() {
+    return {
+      question: addThree,
+    };
+  },
+  created() {},
+  methods: {
+    // 获取列表
+    getList(type) {
+      return select[type];
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.label {
+  font-size: 14px;
+  color: #606266;
+  margin: 0 7px 0 0;
+  padding: 5px 0;
+}
+.select {
+  width: 90.8%;
+  .chiList {
+    width: 13.2%;
+    margin: 0 10px 0 0;
+    .chi_label {
+      text-align: center;
+      font-size: 14px;
+      color: #606266;
+      padding: 5px 0;
+    }
+  }
+  .chiList:last-child {
+    margin: 0;
+  }
+  /deep/.el-input__inner {
+    border: 1px solid #333;
+  }
+}
+</style>

+ 231 - 231
src/views/techolchat/list/detail-model/questionnaire-model.vue

@@ -1,231 +1,231 @@
-<template>
-  <div id="questionnaire-model">
-    <el-row type="flex" justify="end">
-      <el-col :span="2">
-        <slot></slot>
-      </el-col>
-    </el-row>
-    <el-row>
-      <el-col :span="24" class="main">
-        <el-col :span="24" class="one">
-          <el-row>
-            <el-col :span="24" class="info">
-              <el-col :span="24" class="title">
-                {{ data.title }}
-                <img :src="qc" style="position:relative;top:20px" />
-              </el-col>
-              <el-col :span="24" class="brief">
-                {{ data.brief }}
-              </el-col>
-            </el-col>
-            <el-col :span="24" class="form">
-              <el-form :model="answer" label-position="top" ref="form">
-                <el-form-item v-if="!user || !user.id" label="您是否注册成为平台用户">
-                  <el-radio-group v-model="userForm.user">
-                    <el-radio :label="true">是</el-radio>
-                    <el-radio :label="false">否</el-radio>
-                  </el-radio-group>
-                </el-form-item>
-                <el-form-item v-if="userForm.user" label="手机号">
-                  <el-input v-model="userForm.phone" placeholder="请填写手机号"></el-input>
-                </el-form-item>
-                <!-- 0单选,1多选,2简答 -->
-                <template v-for="(i, index) in data.questions">
-                  <el-form-item
-                    v-if="i.type === '0'"
-                    :prop="`${index}`"
-                    :key="`question${index}`"
-                    :label="`${index + 1}.${i.title}`"
-                    :rules="[{ required: true, message: '请选择一个选项', trigger: 'blur' }]"
-                  >
-                    <el-radio-group v-model="answer[index]" :disabled="disabled">
-                      <el-radio v-for="(s, si) in i.selects" :key="`s_${index}_${si}`" :label="s.name">{{ s.num }}.{{ s.name }}</el-radio>
-                    </el-radio-group>
-                  </el-form-item>
-                  <el-form-item
-                    v-else-if="i.type === '1'"
-                    :prop="`${index}`"
-                    :key="`question${index}`"
-                    :label="`${index + 1}.${i.title}`"
-                    :rules="[{ required: true, message: '请至少选择一个选项', trigger: 'blur' }]"
-                  >
-                    <el-checkbox-group :value="answer[index]" @input="data => toCheck(data, index)" :disabled="disabled">
-                      <el-checkbox v-for="(s, si) in i.selects" :key="`c_${index}_${si}`" :label="s.name">{{ s.num }}.{{ s.name }}</el-checkbox>
-                    </el-checkbox-group>
-                  </el-form-item>
-                  <el-form-item v-else :key="`question${index}`" :label="`${index + 1}.${i.title}`">
-                    <el-input v-model="answer[index]" type="textarea" :autosize="{ minRows: 4, maxRows: 6 }" :readonly="disabled"></el-input>
-                  </el-form-item>
-                </template>
-              </el-form>
-            </el-col>
-
-            <el-col :span="24" style="text-align:center">
-              <el-button type="primary" @click="toSubmit" v-if="!disabled">提交</el-button>
-            </el-col>
-          </el-row>
-        </el-col>
-      </el-col>
-    </el-row>
-  </div>
-</template>
-
-<script>
-import QRCode from 'qrcode';
-const _ = require('lodash');
-import { mapState, createNamespacedHelpers } from 'vuex';
-const { mapActions: answer } = createNamespacedHelpers('answer');
-export default {
-  name: 'questionnaire-model',
-  props: {
-    data: { type: Object, required: true },
-  },
-  components: {},
-  data: function() {
-    return {
-      answer: {},
-      disabled: false,
-      userForm: {},
-      qc: '',
-    };
-  },
-  created() {
-    this.init();
-    this.creatQrCode();
-  },
-  methods: {
-    ...answer(['create', 'findAnswer']),
-    async init() {
-      console.log('in function:');
-      const { questions } = this.data;
-      if (!(_.isArray(questions) && questions.length > 0)) return;
-      for (let i = 0; i < questions.length; i++) {
-        const e = questions[i];
-        const { type } = e;
-        if (type === '1') {
-          this.answer[i] = [];
-        }
-      }
-      this.getAnswer();
-    },
-    async getAnswer() {
-      if (!this.user || !this.user.id) return;
-      const res = await this.findAnswer({ user_id: this.user.id, questionnaire_id: this.id });
-      if (this.$checkRes(res)) {
-        if (res.data) {
-          this.disabled = true;
-          // 还原数据
-          const { answer } = res.data;
-          const questions = this.data.questions;
-          const reply = {};
-          for (const i of answer) {
-            const { answer: a, quest } = i;
-            const r = questions.findIndex(f => f.title === quest);
-            if (r > -1) reply[r] = a;
-          }
-          this.$set(this, 'answer', reply);
-        }
-      }
-    },
-    // 因为层级过深(只要不是在this下,就属于过深),所以需要手动更新视图
-    toCheck(data, model) {
-      this.answer[model] = data;
-      this.$forceUpdate();
-    },
-    async toSubmit() {
-      this.$refs.form.validate(valid => {
-        if (valid) {
-          this.submit();
-        } else {
-          console.log('error submit!!');
-          return false;
-        }
-      });
-    },
-    async submit() {
-      let dup = _.cloneDeep(this.answer);
-      const keys = Object.keys(dup);
-      const questions = this.data.questions;
-      const answer = [];
-      for (const i of keys) {
-        const a = dup[i];
-        const quest = questions[i];
-        if (a && quest) {
-          const obj = { answer: a, quest: quest.title };
-          answer.push(obj);
-        }
-      }
-      const data = {
-        questionnaire_id: this.id,
-        answer,
-      };
-      if (this.user && this.user.id) {
-        data.user_id = this.user.id;
-      } else {
-        const userForm = this.userForm;
-        if (userForm.user) data.phone = userForm.phone;
-      }
-      const res = await this.create(data);
-      if (this.$checkRes(res, '提交成功', '提交失败')) {
-        // 返回列表
-        // this.$router.push('/questionnaire/index');
-        // TODO返回
-        this.$router.push({ path: './list', query: { index: this.$route.query.index } });
-      }
-    },
-    // 创建二维码
-    async creatQrCode() {
-      let url = `http://broadcast.waityou24.cn/platmobile/question/detail?id=${this.data.id}`; // 需要转换为二维码的内容
-      console.log(url);
-      this.qc = await QRCode.toDataURL(url, { height: 60, width: 60 });
-    },
-  },
-  computed: {
-    ...mapState(['user', 'menuParams']),
-    id() {
-      return this.$route.query.id;
-    },
-    pageTitle() {
-      return `${this.$route.meta.title}`;
-    },
-  },
-  metaInfo() {
-    return { title: this.$route.meta.title };
-  },
-};
-</script>
-
-<style lang="less" scoped>
-.main {
-  padding: 15px 0;
-  .one {
-    margin: 0 0 10px 0;
-    .info {
-      border-bottom: 1px dashed #ccc;
-      padding: 0 20px;
-      .title {
-        font-size: 30px;
-        font-weight: bold;
-        margin: 20px 0;
-        text-align: center;
-      }
-      .brief {
-        font-size: 16px;
-        padding: 0 0 20px 0;
-      }
-    }
-    .form {
-      padding: 20px 0;
-      /deep/.el-form-item {
-        margin-bottom: 5px;
-      }
-      /deep/.el-form-item__label {
-        padding: 0 0;
-        font-weight: bold;
-        color: #000;
-        font-size: 16px;
-      }
-    }
-  }
-}
-</style>
+<template>
+  <div id="questionnaire-model">
+    <el-row type="flex" justify="end">
+      <el-col :span="2">
+        <slot></slot>
+      </el-col>
+    </el-row>
+    <el-row>
+      <el-col :span="24" class="main">
+        <el-col :span="24" class="one">
+          <el-row>
+            <el-col :span="24" class="info">
+              <el-col :span="24" class="title">
+                {{ data.title }}
+                <img :src="qc" style="position:relative;top:20px" />
+              </el-col>
+              <el-col :span="24" class="brief">
+                {{ data.brief }}
+              </el-col>
+            </el-col>
+            <el-col :span="24" class="form">
+              <el-form :model="answer" label-position="top" ref="form">
+                <el-form-item v-if="!user || !user.id" label="您是否注册成为平台用户">
+                  <el-radio-group v-model="userForm.user">
+                    <el-radio :label="true">是</el-radio>
+                    <el-radio :label="false">否</el-radio>
+                  </el-radio-group>
+                </el-form-item>
+                <el-form-item v-if="userForm.user" label="手机号">
+                  <el-input v-model="userForm.phone" placeholder="请填写手机号"></el-input>
+                </el-form-item>
+                <!-- 0单选,1多选,2简答 -->
+                <template v-for="(i, index) in data.questions">
+                  <el-form-item
+                    v-if="i.type === '0'"
+                    :prop="`${index}`"
+                    :key="`question${index}`"
+                    :label="`${index + 1}.${i.title}`"
+                    :rules="[{ required: true, message: '请选择一个选项', trigger: 'blur' }]"
+                  >
+                    <el-radio-group v-model="answer[index]" :disabled="disabled">
+                      <el-radio v-for="(s, si) in i.selects" :key="`s_${index}_${si}`" :label="s.name">{{ s.num }}.{{ s.name }}</el-radio>
+                    </el-radio-group>
+                  </el-form-item>
+                  <el-form-item
+                    v-else-if="i.type === '1'"
+                    :prop="`${index}`"
+                    :key="`question${index}`"
+                    :label="`${index + 1}.${i.title}`"
+                    :rules="[{ required: true, message: '请至少选择一个选项', trigger: 'blur' }]"
+                  >
+                    <el-checkbox-group :value="answer[index]" @input="data => toCheck(data, index)" :disabled="disabled">
+                      <el-checkbox v-for="(s, si) in i.selects" :key="`c_${index}_${si}`" :label="s.name">{{ s.num }}.{{ s.name }}</el-checkbox>
+                    </el-checkbox-group>
+                  </el-form-item>
+                  <el-form-item v-else :key="`question${index}`" :label="`${index + 1}.${i.title}`">
+                    <el-input v-model="answer[index]" type="textarea" :autosize="{ minRows: 4, maxRows: 6 }" :readonly="disabled"></el-input>
+                  </el-form-item>
+                </template>
+              </el-form>
+            </el-col>
+
+            <el-col :span="24" style="text-align:center">
+              <el-button type="primary" @click="toSubmit" v-if="!disabled">提交</el-button>
+            </el-col>
+          </el-row>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import QRCode from 'qrcode';
+const _ = require('lodash');
+import { mapState, createNamespacedHelpers } from 'vuex';
+const { mapActions: answer } = createNamespacedHelpers('answer');
+export default {
+  name: 'questionnaire-model',
+  props: {
+    data: { type: Object, required: true },
+  },
+  components: {},
+  data: function() {
+    return {
+      answer: {},
+      disabled: false,
+      userForm: {},
+      qc: '',
+    };
+  },
+  created() {
+    this.init();
+    this.creatQrCode();
+  },
+  methods: {
+    ...answer(['create', 'findAnswer']),
+    async init() {
+      console.log('in function:');
+      const { questions } = this.data;
+      if (!(_.isArray(questions) && questions.length > 0)) return;
+      for (let i = 0; i < questions.length; i++) {
+        const e = questions[i];
+        const { type } = e;
+        if (type === '1') {
+          this.answer[i] = [];
+        }
+      }
+      this.getAnswer();
+    },
+    async getAnswer() {
+      if (!this.user || !this.user.id) return;
+      const res = await this.findAnswer({ user_id: this.user.id, questionnaire_id: this.id });
+      if (this.$checkRes(res)) {
+        if (res.data) {
+          this.disabled = true;
+          // 还原数据
+          const { answer } = res.data;
+          const questions = this.data.questions;
+          const reply = {};
+          for (const i of answer) {
+            const { answer: a, quest } = i;
+            const r = questions.findIndex(f => f.title === quest);
+            if (r > -1) reply[r] = a;
+          }
+          this.$set(this, 'answer', reply);
+        }
+      }
+    },
+    // 因为层级过深(只要不是在this下,就属于过深),所以需要手动更新视图
+    toCheck(data, model) {
+      this.answer[model] = data;
+      this.$forceUpdate();
+    },
+    async toSubmit() {
+      this.$refs.form.validate(valid => {
+        if (valid) {
+          this.submit();
+        } else {
+          console.log('error submit!!');
+          return false;
+        }
+      });
+    },
+    async submit() {
+      let dup = _.cloneDeep(this.answer);
+      const keys = Object.keys(dup);
+      const questions = this.data.questions;
+      const answer = [];
+      for (const i of keys) {
+        const a = dup[i];
+        const quest = questions[i];
+        if (a && quest) {
+          const obj = { answer: a, quest: quest.title };
+          answer.push(obj);
+        }
+      }
+      const data = {
+        questionnaire_id: this.id,
+        answer,
+      };
+      if (this.user && this.user.id) {
+        data.user_id = this.user.id;
+      } else {
+        const userForm = this.userForm;
+        if (userForm.user) data.phone = userForm.phone;
+      }
+      const res = await this.create(data);
+      if (this.$checkRes(res, '提交成功', '提交失败')) {
+        // 返回列表
+        // this.$router.push('/questionnaire/index');
+        // TODO返回
+        this.$router.push({ path: './list', query: { index: this.$route.query.index } });
+      }
+    },
+    // 创建二维码
+    async creatQrCode() {
+      let url = `http://broadcast.waityou24.cn/platmobile/question/detail?id=${this.data.id}`; // 需要转换为二维码的内容
+      console.log(url);
+      this.qc = await QRCode.toDataURL(url, { height: 60, width: 60 });
+    },
+  },
+  computed: {
+    ...mapState(['user', 'menuParams']),
+    id() {
+      return this.$route.query.id;
+    },
+    pageTitle() {
+      return `${this.$route.meta.title}`;
+    },
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.main {
+  padding: 15px 0;
+  .one {
+    margin: 0 0 10px 0;
+    .info {
+      border-bottom: 1px dashed #ccc;
+      padding: 0 20px;
+      .title {
+        font-size: 30px;
+        font-weight: bold;
+        margin: 20px 0;
+        text-align: center;
+      }
+      .brief {
+        font-size: 16px;
+        padding: 0 0 20px 0;
+      }
+    }
+    .form {
+      padding: 20px 0;
+      /deep/.el-form-item {
+        margin-bottom: 5px;
+      }
+      /deep/.el-form-item__label {
+        padding: 0 0;
+        font-weight: bold;
+        color: #000;
+        font-size: 16px;
+      }
+    }
+  }
+}
+</style>

+ 240 - 230
src/views/techolchat/list/detail-model/questionnaire-models.vue

@@ -1,230 +1,240 @@
-<template>
-  <div id="questionnaire-models">
-    <el-row>
-      <el-col :span="24" class="main">
-        <el-col :span="24" class="top">
-          <slot></slot>
-        </el-col>
-        <el-col :span="24" class="down">
-          <el-form :model="form" :rules="rules" ref="form">
-            <el-col :span="24" class="one">
-              <el-col :span="24" class="title">
-                {{ data.title }}
-              </el-col>
-              <el-col :span="24" class="brief">
-                {{ data.brief }}
-              </el-col>
-            </el-col>
-            <el-col :span="24" class="two">
-              <el-col :span="24" class="common">
-                <el-col :span="24" class="txt">
-                  <span>答卷企业</span>
-                </el-col>
-                <el-col :span="24" class="info">
-                  <one :form="form" :rules="rules"></one>
-                </el-col>
-              </el-col>
-              <el-col :span="24" class="common">
-                <el-col :span="24" class="txt">
-                  <span>企业基本信息</span>
-                </el-col>
-                <el-col :span="24" class="info">
-                  <two :form="form" :rules="rules"></two>
-                </el-col>
-              </el-col>
-              <el-col :span="24" class="common">
-                <el-col :span="24" class="txt">
-                  <span>企业创新团队</span>
-                </el-col>
-                <el-col :span="24" class="info">
-                  <thr :form="form" :rules="rules"></thr>
-                </el-col>
-              </el-col>
-              <el-col :span="24" class="common">
-                <el-col :span="24" class="txt">
-                  <span>企业新品开发</span>
-                </el-col>
-                <el-col :span="24" class="info">
-                  <four :form="form" :rules="rules"></four>
-                </el-col>
-              </el-col>
-              <el-col :span="24" class="common">
-                <el-col :span="24" class="txt">
-                  <span>企业研发投入(近三年平均)</span>
-                </el-col>
-                <el-col :span="24" class="info">
-                  <five :form="form" :rules="rules"></five>
-                </el-col>
-              </el-col>
-              <el-col :span="24" class="common">
-                <el-col :span="24" class="txt">
-                  <span>企业研发成效(近三年平均)</span>
-                </el-col>
-                <el-col :span="24" class="info">
-                  <six v-model="form" :rules="rules"></six>
-                </el-col>
-              </el-col>
-              <el-col :span="24" class="common">
-                <el-col :span="24" class="txt">
-                  <span>对外技术合作</span>
-                </el-col>
-                <el-col :span="24" class="info">
-                  <seven v-model="form" :rules="rules"></seven>
-                </el-col>
-              </el-col>
-              <el-col :span="24" class="btn">
-                <el-button type="primary" size="mini" @click="onSubmit">提交</el-button>
-              </el-col>
-            </el-col>
-          </el-form>
-        </el-col>
-      </el-col>
-    </el-row>
-  </div>
-</template>
-
-<script>
-const fields = require('./fields');
-import one from './parts-models/one.vue';
-import two from './parts-models/two.vue';
-import thr from './parts-models/thr.vue';
-import four from './parts-models/four.vue';
-import five from './parts-models/five.vue';
-import six from './parts-models/six.vue';
-import seven from './parts-models/seven.vue';
-import { mapState, createNamespacedHelpers } from 'vuex';
-const { mapActions: answer } = createNamespacedHelpers('answer');
-export default {
-  name: 'questionnaire-models',
-  props: {
-    data: { type: Object, required: true },
-  },
-  components: {
-    one,
-    two,
-    thr,
-    four,
-    five,
-    six,
-    seven,
-  },
-  data: function() {
-    return {
-      form: {},
-      rules: {
-        company: [{ required: true, message: '请输入企业名称', trigger: 'blur' }],
-        contacts: [{ required: true, message: '请输入联系人', trigger: 'blur' }],
-        phone: [{ required: true, message: '请输入联系电话', trigger: 'blur' }],
-      },
-    };
-  },
-  created() {},
-  methods: {
-    ...answer(['create']),
-    async onSubmit() {
-      let data = this.form;
-      const { company, contacts, phone, ...others } = data;
-      const obj = { company, contacts, phone, questionnaire_id: this.id };
-      const fields = this.setFields();
-      const arr = [];
-      const keys = Object.keys(others);
-      for (const key of keys) {
-        const label = fields[key];
-        const answer = others[key];
-        arr.push({ label, answer });
-      }
-      obj.answer = arr;
-      const res = await this.create(obj);
-      if (this.$checkRes(res, '答卷成功', res.errmsg || '答卷失败')) {
-      }
-    },
-    setFields() {
-      const fkeys = Object.keys(fields);
-      let object = [];
-      for (const key of fkeys) {
-        const narr = fields[key];
-        for (const obj of narr) {
-          if (!obj.children) {
-            object[obj.model] = obj.label;
-          } else {
-            for (const child of obj.children) {
-              object[child.model] = child.label;
-            }
-          }
-        }
-      }
-      return object;
-    },
-  },
-  computed: {
-    ...mapState(['fields']),
-    id() {
-      return this.$route.query.id;
-    },
-  },
-  metaInfo() {
-    return { title: this.$route.meta.title };
-  },
-  watch: {
-    test: {
-      deep: true,
-      immediate: true,
-      handler(val) {},
-    },
-  },
-};
-</script>
-
-<style lang="less" scoped>
-.main {
-  .top {
-    text-align: right;
-    margin: 0 0 10px 0;
-  }
-  .down {
-    .one {
-      border-bottom: 1px dashed #ccc;
-      padding: 0 20px;
-      margin: 0 0 22px 0;
-      .title {
-        font-size: 30px;
-        font-weight: bold;
-        margin: 20px 0;
-        text-align: center;
-      }
-      .brief {
-        font-size: 16px;
-        padding: 0 0 20px 0;
-      }
-    }
-    .two {
-      .common {
-        position: relative;
-        border: 1px solid #41719c;
-        margin: 0 0 35px 0;
-        min-height: 150px;
-        .txt {
-          position: absolute;
-          top: -22px;
-          text-align: center;
-          span {
-            height: 40px;
-            line-height: 40px;
-            display: inline-block;
-            padding: 0 35px;
-            background: #fff;
-            font-weight: bold;
-            font-size: 18px;
-          }
-        }
-        .info {
-          padding: 20px 10px 10px 10px;
-        }
-      }
-      .btn {
-        text-align: center;
-      }
-    }
-  }
-}
-</style>
+<template>
+  <div id="questionnaire-models">
+    <el-row>
+      <el-col :span="24" class="main">
+        <el-col :span="24" class="top">
+          <slot></slot>
+        </el-col>
+        <el-col :span="24" class="down">
+          <el-form :model="form" :rules="rules" ref="form">
+            <el-col :span="24" class="one">
+              <el-col :span="24" class="title">
+                {{ data.title }}
+              </el-col>
+              <el-col :span="24" class="brief">
+                {{ data.brief }}
+              </el-col>
+            </el-col>
+            <el-col :span="24" class="two">
+              <el-col :span="24" class="common">
+                <el-col :span="24" class="txt">
+                  <span>答卷企业</span>
+                </el-col>
+                <el-col :span="24" class="info">
+                  <one :form="form" :rules="rules"></one>
+                </el-col>
+              </el-col>
+              <el-col :span="24" class="common">
+                <el-col :span="24" class="txt">
+                  <span>企业基本信息</span>
+                </el-col>
+                <el-col :span="24" class="info">
+                  <two :form="form" :rules="rules"></two>
+                </el-col>
+              </el-col>
+              <el-col :span="24" class="common">
+                <el-col :span="24" class="txt">
+                  <span>企业创新团队</span>
+                </el-col>
+                <el-col :span="24" class="info">
+                  <thr :form="form" :rules="rules"></thr>
+                </el-col>
+              </el-col>
+              <el-col :span="24" class="common">
+                <el-col :span="24" class="txt">
+                  <span>企业知识产权</span>
+                </el-col>
+                <el-col :span="24" class="info">
+                  <add-thr :form="form" :rules="rules"></add-thr>
+                </el-col>
+              </el-col>
+              <el-col :span="24" class="common">
+                <el-col :span="24" class="txt">
+                  <span>企业新品开发</span>
+                </el-col>
+                <el-col :span="24" class="info">
+                  <four :form="form" :rules="rules"></four>
+                </el-col>
+              </el-col>
+              <el-col :span="24" class="common">
+                <el-col :span="24" class="txt">
+                  <span>企业研发投入(近三年平均)</span>
+                </el-col>
+                <el-col :span="24" class="info">
+                  <five :form="form" :rules="rules"></five>
+                </el-col>
+              </el-col>
+              <el-col :span="24" class="common">
+                <el-col :span="24" class="txt">
+                  <span>企业研发成效(近三年平均)</span>
+                </el-col>
+                <el-col :span="24" class="info">
+                  <six v-model="form" :rules="rules"></six>
+                </el-col>
+              </el-col>
+              <el-col :span="24" class="common">
+                <el-col :span="24" class="txt">
+                  <span>对外技术合作</span>
+                </el-col>
+                <el-col :span="24" class="info">
+                  <seven v-model="form" :rules="rules"></seven>
+                </el-col>
+              </el-col>
+              <el-col :span="24" class="btn">
+                <el-button type="primary" size="mini" @click="onSubmit">提交</el-button>
+              </el-col>
+            </el-col>
+          </el-form>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+const fields = require('./fields');
+import one from './parts-models/one.vue';
+import two from './parts-models/two.vue';
+import thr from './parts-models/thr.vue';
+import addThr from './parts-models/add-three.vue';
+import four from './parts-models/four.vue';
+import five from './parts-models/five.vue';
+import six from './parts-models/six.vue';
+import seven from './parts-models/seven.vue';
+import { mapState, createNamespacedHelpers } from 'vuex';
+const { mapActions: answer } = createNamespacedHelpers('answer');
+export default {
+  name: 'questionnaire-models',
+  props: {
+    data: { type: Object, required: true },
+  },
+  components: {
+    one,
+    two,
+    thr,
+    addThr,
+    four,
+    five,
+    six,
+    seven,
+  },
+  data: function() {
+    return {
+      form: {},
+      rules: {
+        company: [{ required: true, message: '请输入企业名称', trigger: 'blur' }],
+        contacts: [{ required: true, message: '请输入联系人', trigger: 'blur' }],
+        phone: [{ required: true, message: '请输入联系电话', trigger: 'blur' }],
+      },
+    };
+  },
+  created() {},
+  methods: {
+    ...answer(['create']),
+    async onSubmit() {
+      let data = this.form;
+      const { company, contacts, phone, ...others } = data;
+      const obj = { company, contacts, phone, questionnaire_id: this.id };
+      const fields = this.setFields();
+      const arr = [];
+      const keys = Object.keys(others);
+      for (const key of keys) {
+        const label = fields[key];
+        const answer = others[key];
+        arr.push({ label, answer });
+      }
+      obj.answer = arr;
+      const res = await this.create(obj);
+      if (this.$checkRes(res, '答卷成功', res.errmsg || '答卷失败')) {
+      }
+    },
+    setFields() {
+      const fkeys = Object.keys(fields);
+      let object = [];
+      for (const key of fkeys) {
+        const narr = fields[key];
+        for (const obj of narr) {
+          if (!obj.children) {
+            object[obj.model] = obj.label;
+          } else {
+            for (const child of obj.children) {
+              object[child.model] = child.label;
+            }
+          }
+        }
+      }
+      return object;
+    },
+  },
+  computed: {
+    ...mapState(['fields']),
+    id() {
+      return this.$route.query.id;
+    },
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+  watch: {
+    test: {
+      deep: true,
+      immediate: true,
+      handler(val) {},
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.main {
+  .top {
+    text-align: right;
+    margin: 0 0 10px 0;
+  }
+  .down {
+    .one {
+      border-bottom: 1px dashed #ccc;
+      padding: 0 20px;
+      margin: 0 0 22px 0;
+      .title {
+        font-size: 30px;
+        font-weight: bold;
+        margin: 20px 0;
+        text-align: center;
+      }
+      .brief {
+        font-size: 16px;
+        padding: 0 0 20px 0;
+      }
+    }
+    .two {
+      .common {
+        position: relative;
+        border: 1px solid #41719c;
+        margin: 0 0 35px 0;
+        min-height: 150px;
+        .txt {
+          position: absolute;
+          top: -22px;
+          text-align: center;
+          span {
+            height: 40px;
+            line-height: 40px;
+            display: inline-block;
+            padding: 0 35px;
+            background: #fff;
+            font-weight: bold;
+            font-size: 18px;
+          }
+        }
+        .info {
+          padding: 20px 10px 10px 10px;
+        }
+      }
+      .btn {
+        text-align: center;
+      }
+    }
+  }
+}
+</style>

+ 110 - 102
src/views/techolchat/list/detail-model/select.js

@@ -1,102 +1,110 @@
-const companyType = ['国有/国有控股企业', '民营/私人控股企业', '外商独资/合资企业', '上市公司', '家族企业', '高新技术企业'];
-const time = ['3年以内', '3—5年', '5—10年', '10年以上'];
-const profession = [
-  '农、林、牧、渔业',
-  '采矿业',
-  '制造业',
-  '电力、热力、燃气及水生产和供应业',
-  '建筑业',
-  '批发和零售业',
-  '交通运输、仓储和邮政业',
-  '住宿和餐饮业',
-  '信息传输、软件和信息技术服务业',
-  '金融业',
-  '房地产业',
-  '租赁和商务服务业',
-  '科学研究和技术服务业',
-  '水利、环境和公共设施管理业',
-  '居民服务、修理和其他服务业',
-  '教育',
-  '卫生和社会工作',
-  '文化、体育和娱乐业',
-  '公共管理、社会保障和社会组织',
-  '国际组织',
-  '其他',
-];
-const number = ['50人以内', '50—200人', '200—1000人', '1000人以上'];
-const parts = ['投入阶段', '成长阶段', '稳定发展阶段', '举步维艰阶段', '入不敷出阶段'];
-const order = ['前10%', '前30%', '50%左右', '后30%', '后10%', '独占/特许经营'];
-const zscqNum = ['0件', '1-3件', '3—5件', '5—10件', '10件以上'];
-const zlIn = ['300万以内', '300万—2000万', '2000万—5000万', '5000万—2亿', '2亿以上'];
-const productIn = ['1000万以内', '1000万—5000万', '5000万—2亿', '2亿以上'];
-const chargeRelation = ['合伙人', '创始人', '职业经理人', '家族企业'];
-const age = ['30岁以下', '31—35', '36—40', '41—45', '46—50', '51—55', '56—60', '60以上'];
-const edu = ['大专以下', '大专', '本科', '硕士', '博士'];
-const teckRank = ['中级以下', '中级', '副高级', '正高级', '杰青/长江学者/院士'];
-const major = ['理学', '工学', '医学', '农学'];
-const agreePer = ['90%以上', '80—90%', '60—79%', '30—59%', '30%以下'];
-const gCharge = ['有研发副总', '无研发副总,有技术总监', '无研发副总、无技术总监,有技术负责人', '无技术团队'];
-const gwNum = ['无顾问团队', '3人以下', '3—7人', '7人以上'];
-const cost1 = ['50万以下', '50—300万', '300—1000万', '1000万以上'];
-const cost2 = ['50万以下', '50—200万', '200—500万', '500万以上'];
-const cost3 = ['50万以下', '50—200万', '200万以上'];
-const costPer = ['5%以内', '5—10%', '11—30%', '31—50%', '50%以上'];
-const effect = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '10个以上'];
-const source = ['企业领导人的创造力', '产品用户市场的需求反馈', '同类产品的竞争所致', '技术合作方的技术突破', '一直引领行业发展'];
-const route = ['重视产品核心技术开发', '设计企业科技项目(技改)', '自主申报知识产权', '紧随产品市场技术需求', '购置(租用)技术研发设备'];
-const eSpeed = ['开发时间远远早于预定时间', '开发速度远远高于行业标准', '开发速度远远快于预期', '开发时间远远低于标准的产品开发时间'];
-const eQuality = ['在行业内非常具有新颖性', '为行业内新品开发提供了新创意', '开发的新产品具有创造性', '有能力来为其他的产品生成创意'];
-const eReplaceable = ['完全替代', '基本替代', '市场共存', '还需进一步研制', '市场预研'];
-const ePeriod = ['一个月内', '一个季度内', '半年内', '一年内', '二年', '三年', '三年以上'];
-const rate = ['100%', '90%', '80%', '70%', '60%', '50%', '50%以下'];
-const ePer = ['10%以内', '11—20%', '21—30%', '31—50%', '50%以上'];
-const way = ['技术开发', '委托开发', '技术合作', '技术咨询', '技术培训', '技术服务'];
-const reason = ['熟人接洽', '长期合作', '技术征集揭榜', '师生情怀', '政府对接', '线上对接', '中介机构对接', '专场对接'];
-const content = ['共同申报知识产权', '共同承担科技项目', '共建实验室', '共建技术中心', '互为教育实践基地', '共享科研设备'];
-const require = ['紧跟市场,赶超同类产品', '产品性能提高', '产品产能提高', '节能降耗', '满足特殊条件要求,实际不需要', '生产企业,无技术开发能力'];
-const use = ['专利(技术)授权独占', '专利(技术)许可', '专利(技术)购买', '合作建立专利池(长期合作)'];
-const aDirect = ['10%以下', '11—30%', '31—50%', '51—80%', '80%以上'];
-const aNext = ['10%以下', '11—30%', '31—50%', '51—80%', '80%以上'];
-const aBase = ['理论研究', '技术预研', '技术储备', '工业性实验前成果'];
-const aCant = ['缺乏资金支持', '缺乏技术配套', '缺乏生产条件', '缺乏技术团队'];
-export {
-  companyType,
-  time,
-  profession,
-  number,
-  parts,
-  order,
-  zscqNum,
-  zlIn,
-  productIn,
-  chargeRelation,
-  age,
-  edu,
-  teckRank,
-  major,
-  agreePer,
-  gCharge,
-  gwNum,
-  cost1,
-  cost2,
-  cost3,
-  costPer,
-  effect,
-  source,
-  route,
-  eSpeed,
-  eQuality,
-  eReplaceable,
-  ePeriod,
-  rate,
-  ePer,
-  way,
-  reason,
-  content,
-  require,
-  use,
-  aDirect,
-  aNext,
-  aBase,
-  aCant,
-};
+const companyType = ['国有/国有控股企业', '民营/私人控股企业', '外商独资/合资企业', '上市公司', '家族企业', '高新技术企业'];
+const time = ['3年以内', '3—5年', '5—10年', '10年以上'];
+const profession = [
+  '农、林、牧、渔业',
+  '采矿业',
+  '制造业',
+  '电力、热力、燃气及水生产和供应业',
+  '建筑业',
+  '批发和零售业',
+  '交通运输、仓储和邮政业',
+  '住宿和餐饮业',
+  '信息传输、软件和信息技术服务业',
+  '金融业',
+  '房地产业',
+  '租赁和商务服务业',
+  '科学研究和技术服务业',
+  '水利、环境和公共设施管理业',
+  '居民服务、修理和其他服务业',
+  '教育',
+  '卫生和社会工作',
+  '文化、体育和娱乐业',
+  '公共管理、社会保障和社会组织',
+  '国际组织',
+  '其他',
+];
+const number = ['50人以内', '50—200人', '200—1000人', '1000人以上'];
+const parts = ['投入阶段', '成长阶段', '稳定发展阶段', '举步维艰阶段', '入不敷出阶段'];
+const order = ['前10%', '前30%', '50%左右', '后30%', '后10%', '独占/特许经营'];
+const zscqNum = ['0件', '1-3件', '3—5件', '5—10件', '10件以上'];
+const zlIn = ['300万以内', '300万—2000万', '2000万—5000万', '5000万—2亿', '2亿以上'];
+const productIn = ['1000万以内', '1000万—5000万', '5000万—2亿', '2亿以上'];
+const chargeRelation = ['合伙人', '创始人', '职业经理人', '家族企业'];
+const age = ['30岁以下', '31—35', '36—40', '41—45', '46—50', '51—55', '56—60', '60以上'];
+const edu = ['大专以下', '大专', '本科', '硕士', '博士'];
+const teckRank = ['中级以下', '中级', '副高级', '正高级', '杰青/长江学者/院士'];
+const major = ['理学', '工学', '医学', '农学'];
+const agreePer = ['90%以上', '80—90%', '60—79%', '30—59%', '30%以下'];
+const gCharge = ['有研发副总', '无研发副总,有技术总监', '无研发副总、无技术总监,有技术负责人', '无技术团队'];
+const gwNum = ['无顾问团队', '3人以下', '3—7人', '7人以上'];
+const cost1 = ['50万以下', '50—300万', '300—1000万', '1000万以上'];
+const cost2 = ['50万以下', '50—200万', '200—500万', '500万以上'];
+const cost3 = ['50万以下', '50—200万', '200万以上'];
+const costPer = ['5%以内', '5—10%', '11—30%', '31—50%', '50%以上'];
+const effect = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '10个以上'];
+const source = ['产品专利技术更新', '企业领导人的创造力', '产品用户市场的需求反馈', '同类产品的竞争所致', '技术合作方的技术突破', '一直引领行业发展'];
+const route = ['重视产品核心技术开发', '设计企业科技项目(技改)', '自主申报知识产权', '紧随产品市场技术需求', '购置(租用)技术研发设备'];
+const eSpeed = ['开发时间远远早于预定时间', '开发速度远远高于行业标准', '开发速度远远快于预期', '开发时间远远低于标准的产品开发时间'];
+const eQuality = ['在行业内非常具有新颖性', '为行业内新品开发提供了新创意', '开发的新产品具有创造性', '有能力来为其他的产品生成创意'];
+const eReplaceable = ['完全替代', '基本替代', '市场共存', '还需进一步研制', '市场预研'];
+const ePeriod = ['一个月内', '一个季度内', '半年内', '一年内', '二年', '三年', '三年以上'];
+const rate = ['100%', '90%', '80%', '70%', '60%', '50%', '50%以下'];
+const ePer = ['10%以内', '11—20%', '21—30%', '31—50%', '50%以上'];
+const way = ['技术开发', '委托开发', '技术合作', '技术咨询', '技术培训', '技术服务'];
+const reason = ['熟人接洽', '长期合作', '技术征集揭榜', '师生情怀', '政府对接', '线上对接', '中介机构对接', '专场对接'];
+const content = ['共同申报知识产权', '共同承担科技项目', '共建实验室', '共建技术中心', '互为教育实践基地', '共享科研设备'];
+const require = ['紧跟市场,赶超同类产品', '产品性能提高', '产品产能提高', '节能降耗', '满足特殊条件要求,实际不需要', '生产企业,无技术开发能力'];
+const use = ['无知识产权条款', '双方公用', '专利(技术)授权独占', '专利(技术)许可', '专利(技术)购买', '合作建立专利池(长期合作)'];
+const aDirect = ['10%以下', '11—30%', '31—50%', '51—80%', '80%以上'];
+const aNext = ['10%以下', '11—30%', '31—50%', '51—80%', '80%以上'];
+const aBase = ['理论研究', '技术预研', '技术储备', '工业性实验前成果'];
+const aCant = ['缺乏资金支持', '缺乏技术配套', '缺乏生产条件', '缺乏技术团队'];
+const qynbgl = ['有知识产权专职部门', '其它部门兼职管理', '委托外部机构托管', '无专职人员,但有兼职人员', '无专职兼职人员'];
+const zscqjf = ['无此类情况', '有此类情况,被质疑侵权', '有此类情况,被侵权', '有专职知识产权律师', '出口产品涉嫌侵权被海关查扣', '国外展会遭遇知识产权纠纷'];
+const zscqfzzany = ['知识产权投入太高', '知识产权激励制度不完善', '自主创新意识不强', '企业研发人员不足'];
+const zscqfzzawy = ['技术市场不健全', '政府支持力度不高', '缺乏鼓励自主创新的社会氛围', '企业间竞争不充分', '产学研合作太难', '政府对知识产权保护不力'];
+export {
+  companyType,
+  time,
+  profession,
+  number,
+  parts,
+  order,
+  zscqNum,
+  zlIn,
+  productIn,
+  chargeRelation,
+  age,
+  edu,
+  teckRank,
+  major,
+  agreePer,
+  gCharge,
+  gwNum,
+  cost1,
+  cost2,
+  cost3,
+  costPer,
+  effect,
+  source,
+  route,
+  eSpeed,
+  eQuality,
+  eReplaceable,
+  ePeriod,
+  rate,
+  ePer,
+  way,
+  reason,
+  content,
+  require,
+  use,
+  aDirect,
+  aNext,
+  aBase,
+  aCant,
+  qynbgl,
+  zscqjf,
+  zscqfzzany,
+  zscqfzzawy,
+};