index.vue 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581
  1. <template>
  2. <view>
  3. <!-- 头部背景和搜索 -->
  4. <view>
  5. <image :src="appConfig.mobile_top_bg" class="w-full" mode="widthFix"></image>
  6. </view>
  7. <!-- tab -->
  8. <u-tabs :list="typeList" :is-scroll="false" :bold="true" active-color="#DD4250" height="80" font-size="28"
  9. :current="currentTab" @change="changeTab" />
  10. <!-- 我是人才 -->
  11. <view class="p-70 p-t-40 talent-tab" v-if="currentTab == 0">
  12. <view class="flex-col col-center">
  13. <view class="title">您所从事的行业:</view>
  14. <router-link :to="{ path: '/pages/policy/talent', query: { type: item.type, title: item.title }}" class="m-t-40"
  15. v-for="(item,index) in talentTypeList">
  16. <image :src="item.image" mode="widthFix"></image>
  17. </router-link>
  18. </view>
  19. </view>
  20. <!-- 我是企业 -->
  21. <view v-if="currentTab == 1">
  22. <view class="huodong-details">
  23. <view class="p-30 ">
  24. <view class="detail-title">
  25. 一、企业基本信息
  26. </view>
  27. <view class="content-box bg-white m-t-30">
  28. <view class="detail-cell row-between u-border-bottom">
  29. <view class="width75">
  30. 企业名称
  31. </view>
  32. <view class="text-right flex-1">
  33. <input type="text" v-model="info.name" placeholder="请输入">
  34. </view>
  35. </view>
  36. <view class="detail-cell row-between u-border-bottom" @tap="pickerShow('estdate')">
  37. <view class="bold">
  38. 企业成立日期
  39. </view>
  40. <view class="text-right flex-1">
  41. <text class="muted">{{info.estdate}}</text>
  42. <u-icon name="arrow-right" size="28" color="#B8B8B8" :label="info.estdate ? '' :'请选择'"
  43. label-pos="left"></u-icon>
  44. <u-picker v-model="show.estdate" mode="time" @confirm="pickerConfirm('estdate', $event)"
  45. @cancel="pickerCancel('estdate')"></u-picker>
  46. </view>
  47. </view>
  48. <view class="detail-cell row-between u-border-bottom">
  49. <view class="bold">
  50. 企业注册地
  51. </view>
  52. <view class="text-right flex-1">
  53. <input type="text" v-model="info.address" placeholder="请输入">
  54. </view>
  55. </view>
  56. <view class="detail-cell row-between u-border-bottom">
  57. <view class="bold">
  58. 企业实际经营地
  59. </view>
  60. <view class="text-right flex-1">
  61. <input type="text" v-model="info.busAddress" placeholder="请输入">
  62. </view>
  63. </view>
  64. <view class="detail-cell row-between u-border-bottom">
  65. <view class="bold">
  66. 企业有效l类知识产权数
  67. </view>
  68. <view class="text-right flex-1">
  69. <input type="text" v-model="info.propertyNumber" placeholder="请输入">
  70. </view>
  71. </view>
  72. <view class="detail-cell row-between u-border-bottom">
  73. <view class="bold" style="width: 400rpx;">
  74. 有效、高企认定中未使用过的II类知识产权数
  75. </view>
  76. <view class="text-right flex-1">
  77. <input type="text" v-model="info.propertyNumber2" placeholder="请输入">
  78. </view>
  79. </view>
  80. <view class="detail-cell row-between u-border-bottom" @tap="pickerShow('propertyMode')">
  81. <view class="bold">
  82. 知识产权获取方式
  83. </view>
  84. <view class="text-right flex-1">
  85. <text class="muted">{{propertyMode.label}}</text>
  86. <u-icon name="arrow-right" size="28" color="#B8B8B8" :label="propertyMode ? '' :'请选择'"
  87. label-pos="left"></u-icon>
  88. <u-select v-model="show.propertyMode" mode="single-column" :list="propertyModeList"
  89. @confirm="pickerConfirm('propertyMode', $event)"></u-select>
  90. </view>
  91. </view>
  92. <view class="detail-cell row-between u-border-bottom" @tap="pickerShow('isStandard')">
  93. <view class="bold" style="width: 400rpx;">
  94. 企业参与编制国家标准、行业标准检测方法、技术规范的情况
  95. </view>
  96. <view class="text-right flex-1">
  97. <text class="muted">{{isStandard.label}}</text>
  98. <u-icon name="arrow-right" size="28" color="#B8B8B8" :label="isStandard ? '' :'请选择'"
  99. label-pos="left"></u-icon>
  100. <u-select v-model="show.isStandard" mode="single-column" :list="isStandardList"
  101. @confirm="pickerConfirm('isStandard', $event)"></u-select>
  102. </view>
  103. </view>
  104. <view class="detail-cell row-between u-border-bottom">
  105. <view class="bold flex" style="width: 400rpx;">
  106. <view>科技成果数</view>
  107. <view class="m-l-8 m-r-8 primary" style="font-size: 20rpx;">科技成果数有效期提示</view>
  108. <u-icon name="info-circle" color="#DD4250"></u-icon>
  109. </view>
  110. <view class="text-right flex-1">
  111. <input type="text" v-model="info.achievementNumber" placeholder="请输入">
  112. </view>
  113. </view>
  114. </view>
  115. <view class="detail-title m-t-30">
  116. 二、研发组织管理水平评测(多选)
  117. </view>
  118. <view class="content-box m-t-30 bj-w ">
  119. <!-- <u-checkbox-group shape="circle" active-color="#DD4250">
  120. <view class="m-t-15 m-b-15" v-for="(item, index) in manageLevelList" :key="index">
  121. <u-checkbox v-model="item.checked" :name="item.name">{{item.name}}</u-checkbox>
  122. </view>
  123. </u-checkbox-group> -->
  124. <u-checkbox-group shape="circle" active-color="#DD4250">
  125. <u-checkbox :name="item.name" v-for="(item, index) in manageLevelList" :key="index"
  126. v-model="item.checked" @change="checkboxChange($event)">
  127. {{item.label}}
  128. </u-checkbox>
  129. </u-checkbox-group>
  130. </view>
  131. <view class="detail-title m-t-30">
  132. 三、企业成长性评测
  133. </view>
  134. <view class="content-box m-t-30 bj-w ">
  135. <view class="detail-title p-t-30">
  136. 第一年
  137. </view>
  138. <view class="detail-cell row-between ">
  139. <view class="bold">
  140. 净资产(万元)
  141. </view>
  142. <view class="text-right flex-1">
  143. <input type="text" v-model="info.netAssets1" placeholder="请输入">
  144. </view>
  145. </view>
  146. <view class="detail-cell row-between u-border-bottom">
  147. <view class="bold">
  148. 销售收入(万元)
  149. </view>
  150. <view class="text-right flex-1">
  151. <input type="text" v-model="info.saleRevenue1" placeholder="请输入">
  152. </view>
  153. </view>
  154. <view class="detail-title p-t-30">
  155. 第二年
  156. </view>
  157. <view class="detail-cell row-between ">
  158. <view class="bold">
  159. 净资产(万元)
  160. </view>
  161. <view class="text-right flex-1">
  162. <input type="text" v-model="info.netAssets2" placeholder="请输入">
  163. </view>
  164. </view>
  165. <view class="detail-cell row-between u-border-bottom">
  166. <view class="bold">
  167. 销售收入(万元)
  168. </view>
  169. <view class="text-right flex-1">
  170. <input type="text" v-model="info.saleRevenue2" placeholder="请输入">
  171. </view>
  172. </view>
  173. <view class="detail-title p-t-30">
  174. 第三年
  175. </view>
  176. <view class="detail-cell row-between ">
  177. <view class="bold">
  178. 净资产(万元)
  179. </view>
  180. <view class="text-right flex-1">
  181. <input type="text" v-model="info.netAssets3" placeholder="请输入">
  182. </view>
  183. </view>
  184. <view class="detail-cell row-between u-border-bottom">
  185. <view class="bold">
  186. 销售收入(万元)
  187. </view>
  188. <view class="text-right flex-1">
  189. <input type="text" v-model="info.saleRevenue3" placeholder="请输入">
  190. </view>
  191. </view>
  192. <view class="detail-cell row-between u-border-bottom">
  193. <view class="bold">
  194. 验证码
  195. </view>
  196. <view class="text-right flex-1 flex row-right">
  197. <input type="text" v-model="info.code" placeholder="请输入">
  198. <image :src="captchaImg" mode="heightFix" style="height: 54rpx;" class="m-l-10" @tap="refreshCaptcha"></image>
  199. </view>
  200. </view>
  201. </view>
  202. </view>
  203. <view class="footer">
  204. <button class="white btn lg" @click="handleConsult">提交</button>
  205. </view>
  206. </view>
  207. </view>
  208. </view>
  209. </template>
  210. <script>
  211. import {
  212. mapGetters,
  213. mapActions
  214. } from 'vuex'
  215. import {
  216. submitSurveyEnterprise
  217. } from '@/api/app';
  218. import {
  219. getCaptcha
  220. } from '@/utils/tools'
  221. const app = getApp()
  222. export default {
  223. data() {
  224. return {
  225. show: {},
  226. propertyModeList: [{
  227. value: 1,
  228. label: '自主研发'
  229. }, {
  230. value: 2,
  231. label: '仅有受让、受赠和并购等'
  232. }, ],
  233. isStandardList: [{
  234. value: 1,
  235. label: '是'
  236. }, {
  237. value: 0,
  238. label: '否'
  239. }, ],
  240. captcha: '',
  241. info: {
  242. 'name': '',
  243. 'address': '',
  244. 'estdate': '',
  245. 'busAddress': '',
  246. 'propertyNumber': '', //企业有效l类知识产权数
  247. 'propertyNumber2': '', //有效、高企认定中未使用过的II类知识产权数
  248. 'propertyMode': '', //知识产权获取方式 1:自主研发 2:仅有受让、受赠和并购等
  249. 'isStandard': '', //企业参与编制国家标准、行业标准、检测方法、技术规范的情况 1:是 0:否
  250. 'achievementNumber': '', //科技成果数,
  251. 'manageLevel1': 0, //定制了企业研究开发组织管理制度
  252. 'manageLevel2': 0, //建立了研发投入核算体系
  253. 'manageLevel3': 0, //编制了研发费用辅助帐
  254. 'manageLevel4': 0, //设立了内部科技技术研究开发机构并具备相应的科研条件
  255. 'manageLevel5': 0, //与国内外研究开发机构开展多种形式的产学研合作
  256. 'manageLevel6': 0, //建立了科技成果转化的组织实施与激励奖励制度
  257. 'manageLevel7': 0, //建立开放式的创新创业平台
  258. 'manageLevel8': 0, //建立了科技人员的培养进修制度
  259. 'manageLevel9': 0, //建立了职工技能培训制度
  260. 'netAssets1': '', //第1年 净资产
  261. 'netAssets2': '', //第2年 净资产
  262. 'netAssets3': '', //第3年 净资产
  263. 'saleRevenue1': '', //第1年 销售收入
  264. 'saleRevenue2': '', //第2年 销售收入
  265. 'saleRevenue3': '' //第3年 销售收入
  266. },
  267. infoValidate: {
  268. 'name': '企业名称',
  269. 'address': '企业注册地',
  270. 'estdate': '企业成立时间',
  271. 'busAddress': '企业实际经营地',
  272. 'propertyNumber': '企业有效l类知识产权数', //
  273. 'propertyNumber2': '有效、高企认定中未使用过的II类知识产权数', //
  274. 'achievementNumber': '科技成果数', //,
  275. 'netAssets1': '第1年 净资产', //
  276. 'netAssets2': '第2年 净资产', //
  277. 'netAssets3': '第3年 净资产', //
  278. 'saleRevenue1': '第1年 销售收入', //
  279. 'saleRevenue2': '第2年 销售收入', //
  280. 'saleRevenue3': '第3年 销售收入' //
  281. },
  282. typeList: [{
  283. name: '我是人才',
  284. }, {
  285. name: '我是企业',
  286. }],
  287. currentTab: 0,
  288. talentTypeList: [{
  289. 'image': '/static/images/type-1.png',
  290. type: 'industry',
  291. title: '现代产业'
  292. }, {
  293. 'image': '/static/images/type-2.png',
  294. type: 'education',
  295. title: '高等教育'
  296. }, {
  297. 'image': '/static/images/type-3.png',
  298. type: 'medical',
  299. title: '医疗卫生'
  300. }, {
  301. 'image': '/static/images/type-4.png',
  302. type: 'circuit',
  303. title: '集成电路'
  304. }, ],
  305. manageLevelList: [{
  306. label: '1、制定了企业研究开发的组织管理制度',
  307. name: 'manageLevel1',
  308. },
  309. {
  310. label: '2、建立了研发投入核算体系',
  311. name: 'manageLevel2',
  312. },
  313. {
  314. label: '3、编制了研发费用辅组账',
  315. name: 'manageLevel3',
  316. },
  317. {
  318. label: '4、设立了内部科学技术研究开发机构并具备相应的科技',
  319. name: 'manageLevel4',
  320. },
  321. {
  322. label: '5、与国内外研究开发机构开展多种形式产学研合作',
  323. name: 'manageLevel5',
  324. },
  325. {
  326. label: '6、建立了科技成果转化的组织实施与激励奖励制度',
  327. name: 'manageLevel6',
  328. },
  329. {
  330. label: '7、建立开放式的创新创业平台',
  331. name: 'manageLevel7',
  332. },
  333. {
  334. label: '8、建立了科技人员的培养进修制度',
  335. name: 'manageLevel8',
  336. },
  337. {
  338. label: '9、建立了职工技能培训制度',
  339. name: 'manageLevel9',
  340. }
  341. ],
  342. top: 172
  343. }
  344. },
  345. onLoad() {
  346. this.propertyMode = this.propertyModeList[0]
  347. this.isStandard = this.isStandardList[0]
  348. this.info.propertyMode = this.propertyMode.value
  349. this.info.isStandard = this.isStandard.value
  350. this.captchaImg = getCaptcha()
  351. },
  352. onShow() {
  353. // this.getHomeFun();
  354. // this.getUser();
  355. },
  356. onHide() {},
  357. onPullDownRefresh() {
  358. // this.getUser().then(() : {
  359. // uni.stopPullDownRefresh();
  360. // })
  361. },
  362. methods: {
  363. refreshCaptcha(){
  364. this.captchaImg = getCaptcha()
  365. this.$forceUpdate();
  366. },
  367. // ...mapActions(['getUser']),
  368. // 改变当前的Tabs位置
  369. changeTab(index) {
  370. this.currentTab = index;
  371. },
  372. checkboxChange(detail) {
  373. this.info[detail.name] = detail.value ? 1 : 0
  374. },
  375. pickerShow(index) {
  376. this.show[index] = true
  377. this.$forceUpdate();
  378. },
  379. pickerConfirm(index, obj) {
  380. //日期
  381. if (index == 'estdate') {
  382. this.info[index] = obj['year'] + '-' + obj['month'] + '-' + obj['day']
  383. } else {
  384. //单选框
  385. this[index] = obj[0]
  386. this.info[index] = obj[0].value
  387. }
  388. this.$forceUpdate();
  389. },
  390. pickerCancel(index, obj) {
  391. this.show[index] = false
  392. this.$forceUpdate();
  393. },
  394. async handleConsult() {
  395. console.log(this.info)
  396. //表单必填验证
  397. try {
  398. Object.keys(this.infoValidate).forEach((key, index) => {
  399. if (this.info[key] == '') {
  400. throw new Error('请输入' + this.infoValidate[key])
  401. }
  402. })
  403. } catch (e) {
  404. this.$toast({
  405. title: e.message
  406. })
  407. return false;
  408. }
  409. //todo API验证码
  410. // if (this.captcha == '' || this.captcha != 'abcd') {
  411. // this.$toast({
  412. // title: '验证码错误'
  413. // })
  414. // return false;
  415. // }
  416. const {
  417. status,
  418. data,
  419. msg
  420. } = await submitSurveyEnterprise(this.info);
  421. if (status == 1) {
  422. uni.setStorageSync('enterpriseScore', data);
  423. uni.navigateTo({
  424. url: '/pages/policy/score'
  425. })
  426. }
  427. },
  428. },
  429. computed: {
  430. ...mapGetters(['appConfig']),
  431. }
  432. }
  433. </script>
  434. <style lang="less" scoped>
  435. .huodong-details {
  436. padding-bottom: calc(200rpx + env(safe-area-inset-bottom));
  437. }
  438. .details-images {
  439. height: 408rpx;
  440. border-radius: 20rpx;
  441. overflow: hidden;
  442. width: 100%;
  443. image {
  444. width: 100%;
  445. height: 100%;
  446. }
  447. }
  448. .detail-title {
  449. // font-size: 36rpx;
  450. font-weight: bold;
  451. // padding: 30rpx 0;
  452. }
  453. .detail-cell {
  454. display: flex;
  455. // align-items: center;
  456. padding: 30rpx 0;
  457. .cell-img {
  458. padding: 5rpx 0;
  459. image {
  460. width: 48rpx;
  461. height: 48rpx;
  462. display: block
  463. }
  464. }
  465. }
  466. // .muted {
  467. // color: #989898;
  468. // padding-left: 10rpx;
  469. // }
  470. .detail-biaoti {
  471. // font-size: 36rpx;
  472. height: 88rpx;
  473. line-height: 88rpx;
  474. }
  475. .bj-w {
  476. background-color: #fff;
  477. }
  478. .padding-30 {
  479. padding: 0 30rpx !important;
  480. }
  481. .content-box {
  482. padding: 0 24rpx;
  483. box-shadow: 0rpx 8rpx 16rpx 2rpx rgba(0, 0, 0, 0.03);
  484. border-radius: 12rpx 12rpx 12rpx 12rpx;
  485. input {
  486. font-size: 28rpx;
  487. }
  488. textarea {
  489. width: 100%;
  490. height: 100rpx;
  491. font-size: 28rpx;
  492. }
  493. }
  494. .btn-r-border {
  495. position: relative;
  496. &::after {
  497. content: ' ';
  498. width: 1rpx;
  499. height: 36rpx;
  500. background-color: #CCCCCC;
  501. right: 0;
  502. top: 50%;
  503. margin-top: -18rpx;
  504. position: absolute;
  505. }
  506. }
  507. .width75 {
  508. width: 150rpx;
  509. font-weight: bold;
  510. }
  511. </style>
  512. <style lang="scss">
  513. .footer {
  514. left: 0%;
  515. bottom: 150rpx;
  516. width: 100%;
  517. padding: 0 24rpx;
  518. position: fixed;
  519. z-index: 99;
  520. .btn {
  521. height: 84rpx;
  522. line-height: 84rpx;
  523. background-color: $-color-primary;
  524. box-shadow: 0rpx 6rpx 12rpx 2rpx rgba(243, 113, 113, 0.39);
  525. border-radius: 18rpx 18rpx 18rpx 18rpx;
  526. }
  527. }
  528. page {
  529. padding: 0;
  530. }
  531. .talent-tab {
  532. .title {
  533. font-size: 36rpx;
  534. font-weight: 400;
  535. color: #333333;
  536. }
  537. }
  538. </style>