index.vue 42 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172
  1. <template>
  2. <div id="index">
  3. <el-row>
  4. <el-col :span="24">
  5. <el-col :span="24" class="top">
  6. <div class="w_1200">
  7. <el-col :span="12" class="left">
  8. <el-col :span="24" class="leftTop">
  9. <el-col :span="2" class="image">
  10. <el-image :src="iconImage"></el-image>
  11. </el-col>
  12. <el-col :span="22" class="txt">
  13. <span>技术成果</span>
  14. <span>A</span>
  15. <span>chieve</span>
  16. <span @click="$router.push({ path: '/market/marketlists', query: { type: '1', column_name: '技术成果' } })">更多</span>
  17. </el-col>
  18. </el-col>
  19. <el-col :span="24" class="leftDown">
  20. <el-row :gutter="7">
  21. <el-col
  22. :span="6"
  23. class="achieveList"
  24. v-for="(item, index) in achieveList"
  25. :key="index"
  26. @click.native="$router.push({ path: '/market/marketlists', query: { type: '1', column_name: '技术成果', id: item.id } })"
  27. >
  28. <el-col :span="24" class="achieveImage">
  29. <el-image v-if="item.image && item.image.length > 0" :src="item.image[0].url"></el-image>
  30. <el-image v-else :src="achievezb"></el-image>
  31. </el-col>
  32. <el-col :span="24" class="name textOver">
  33. {{ item.name }}
  34. </el-col>
  35. </el-col>
  36. </el-row>
  37. </el-col>
  38. </el-col>
  39. <el-col :span="12" class="right">
  40. <el-col :span="24" class="rightTop">
  41. <el-col :span="2" class="image">
  42. <el-image :src="iconImage"></el-image>
  43. </el-col>
  44. <el-col :span="22" class="txt">
  45. <span>科技需求</span>
  46. <span>T</span>
  47. <span>echnology</span>
  48. <span @click="$router.push({ path: '/market/marketlists', query: { type: '0', column_name: '科技需求' } })">更多</span>
  49. </el-col>
  50. </el-col>
  51. <el-col :span="24" class="rightDown">
  52. <el-col
  53. :span="24"
  54. class="technologyList"
  55. v-for="(item, index) in technologyList"
  56. :key="index"
  57. @click.native="$router.push({ path: '/market/marketlists', query: { type: '0', column_name: '科技需求', id: item.id } })"
  58. >
  59. <el-col :span="20" class="name textOver">
  60. {{ item.name }}
  61. </el-col>
  62. <el-col :span="4" class="date">
  63. {{ item.meta | getDate }}
  64. </el-col>
  65. <el-col :span="12" class="field"> 所属领域:{{ item.field }} </el-col>
  66. <el-col :span="12" class="field"> 合作方式:{{ item.cooperation }} </el-col>
  67. </el-col>
  68. </el-col>
  69. </el-col>
  70. </div>
  71. </el-col>
  72. <el-col :span="24" class="centerimage">
  73. <el-image :src="gongqiuImage"></el-image>
  74. </el-col>
  75. <el-col :span="24" class="down">
  76. <div class="w_1200">
  77. <el-col :span="12" class="left">
  78. <el-col :span="24" class="leftTop">
  79. <el-col :span="2" class="image">
  80. <el-image :src="iconImage"></el-image>
  81. </el-col>
  82. <el-col :span="22" class="txt">
  83. <span>商务信息</span>
  84. <span>B</span>
  85. <span>usiness</span>
  86. <span @click="$router.push({ path: '/market/marketlists', query: { type: '2', column_name: '商务信息' } })">更多</span>
  87. </el-col>
  88. </el-col>
  89. <el-col :span="24" class="leftDown">
  90. <el-col
  91. :span="24"
  92. class="businessList"
  93. v-for="(item, index) in businessList"
  94. :key="index"
  95. @click.native="$router.push({ path: '/market/marketlists', query: { type: '2', column_name: '商务信息', id: item.id } })"
  96. >
  97. <el-col :span="10" class="name textOver">
  98. {{ item.name }}
  99. </el-col>
  100. <el-col :span="10" class="messbute"> 信息属性:{{ item.messattribute }} </el-col>
  101. <el-col :span="4" class="date">
  102. {{ item.meta | getDate }}
  103. </el-col>
  104. <el-col :span="24" class="info">
  105. {{ item.informationdesc }}
  106. </el-col>
  107. </el-col>
  108. </el-col>
  109. </el-col>
  110. <el-col :span="12" class="right">
  111. <el-col :span="24" class="rightTop">
  112. <el-col :span="2" class="image">
  113. <el-image :src="iconImage"></el-image>
  114. </el-col>
  115. <el-col :span="22" class="txt">
  116. <span>专家服务</span>
  117. <span>E</span>
  118. <span>xpert</span>
  119. <span @click="$router.push({ path: '/market/marketlists', query: { type: '3', column_name: '专家服务' } })">更多</span>
  120. </el-col>
  121. </el-col>
  122. <el-col :span="24" class="rightDown">
  123. <el-col
  124. :span="12"
  125. class="expertList"
  126. v-for="(item, index) in expertList"
  127. :key="index"
  128. @click.native="$router.push({ path: '/market/marketlists', query: { type: '3', column_name: '专家服务', id: item.id } })"
  129. >
  130. <el-col :span="8" class="expertimage">
  131. <el-image v-if="item.expertimage != ''" :src="item.expertimage"></el-image>
  132. <el-image :src="expertimage" v-else></el-image>
  133. </el-col>
  134. <el-col :span="16" class="rightInfo">
  135. <el-col :span="24" class="name textOver">
  136. {{ item.name }}
  137. </el-col>
  138. <el-col :span="24" class="school textOver"> {{ item.zwzc }} </el-col>
  139. <el-col :span="24" class="company textOver">{{ item.company }} </el-col>
  140. </el-col>
  141. </el-col>
  142. </el-col>
  143. </el-col>
  144. </div>
  145. </el-col>
  146. </el-col>
  147. </el-row>
  148. <el-col :span="24" class="createpro" style="display:none">
  149. <el-button type="text" @click="dialog = true">我要<br />发布</el-button>
  150. </el-col>
  151. <el-dialog :visible.sync="dialog" class="releaseDialog" title="信息征集" @close="toClose" width="61%">
  152. <el-tabs v-model="activeName" type="card">
  153. <el-tab-pane label="技术需求" name="first">
  154. <el-col :span="24" class="first">
  155. <el-form ref="technologyForm" :model="technologyForm" :rules="technologyRules" label-width="140px">
  156. <el-col :span="24" class="company">
  157. <h1>企业信息</h1>
  158. <el-col :span="24" class="compnayInfo">
  159. <el-col :span="24" class="txt">
  160. <el-form-item label="企业名称:" prop="company">
  161. <el-input v-model="technologyForm.company" placeholder="请输入企业名称"></el-input>
  162. </el-form-item>
  163. </el-col>
  164. <el-col :span="12" class="txt">
  165. <el-form-item label="注册类型:">
  166. <el-input v-model="technologyForm.companytype" placeholder="请输入注册类型"></el-input>
  167. </el-form-item>
  168. </el-col>
  169. <el-col :span="12" class="txt">
  170. <el-form-item label="统一社会信用代码:">
  171. <el-input v-model="technologyForm.companytype" placeholder="请输入统一社会信用代码"></el-input>
  172. </el-form-item>
  173. </el-col>
  174. <el-col :span="12" class="txt">
  175. <el-form-item label="注册时间:">
  176. <el-date-picker v-model="technologyForm.companydate" type="date" placeholder="请选择时间" format="yyyy-MM-dd" value-format="yyyy-MM-dd">
  177. </el-date-picker>
  178. </el-form-item>
  179. </el-col>
  180. <el-col :span="12" class="txt">
  181. <el-form-item label="注册资金:">
  182. <el-input v-model="technologyForm.companycapital" placeholder="请输入注册资金"></el-input>
  183. </el-form-item>
  184. </el-col>
  185. <el-col :span="12" class="txt">
  186. <el-form-item label="企业法人:">
  187. <el-input v-model="technologyForm.companyperson" placeholder="请输入企业法人"></el-input>
  188. </el-form-item>
  189. </el-col>
  190. <el-col :span="12" class="txt">
  191. <el-form-item label="企业网址:">
  192. <el-input v-model="technologyForm.companyweb" placeholder="请输入企业网址"></el-input>
  193. </el-form-item>
  194. </el-col>
  195. <el-col :span="12" class="txt">
  196. <el-form-item label="联系人:">
  197. <el-input v-model="technologyForm.contacts" placeholder="请输入联系人"></el-input>
  198. </el-form-item>
  199. </el-col>
  200. <el-col :span="12" class="txt">
  201. <el-form-item label="联系电话:" prop="phone">
  202. <el-input v-model="technologyForm.phone" placeholder="请输入联系电话"></el-input>
  203. </el-form-item>
  204. </el-col>
  205. <el-col :span="12" class="txt">
  206. <el-form-item label="QQ/微信:">
  207. <el-input v-model="technologyForm.qqwx" placeholder="请输入QQ/微信"></el-input>
  208. </el-form-item>
  209. </el-col>
  210. <el-col :span="12" class="txt">
  211. <el-form-item label="电子邮箱:">
  212. <el-input v-model="technologyForm.email" placeholder="请输入电子邮箱"></el-input>
  213. </el-form-item>
  214. </el-col>
  215. <el-col :span="12" class="txt">
  216. <el-form-item label="上年度企业总收入:">
  217. <el-input v-model="technologyForm.sndqyzsr" placeholder="请输入上年度企业总收入"></el-input>
  218. </el-form-item>
  219. </el-col>
  220. <el-col :span="12" class="txt">
  221. <el-form-item label="上年度研发费用:">
  222. <el-input v-model="technologyForm.sndyffy" placeholder="请输入上年度研发费用"></el-input>
  223. </el-form-item>
  224. </el-col>
  225. <el-col :span="12" class="txt">
  226. <el-form-item label="企业总人数:">
  227. <el-input v-model="technologyForm.companytotal" placeholder="请输入企业总人数"></el-input>
  228. </el-form-item>
  229. </el-col>
  230. <el-col :span="12" class="txt">
  231. <el-form-item label="专(兼)职研发人数:">
  232. <el-input v-model="technologyForm.zjzyfrs" placeholder="请输入专(兼)职研发人数"></el-input>
  233. </el-form-item>
  234. </el-col>
  235. <el-col :span="24" class="txtTwo">
  236. <el-form-item label="企业简介:">
  237. <el-input
  238. v-model="technologyForm.companybrief"
  239. type="textarea"
  240. maxlength="300"
  241. show-word-limit
  242. :autosize="{ minRows: 4, maxRows: 5 }"
  243. placeholder="请输入企业简介"
  244. ></el-input>
  245. </el-form-item>
  246. </el-col>
  247. <el-col :span="24" class="txtTwo">
  248. <el-form-item label="主要产品:">
  249. <el-input
  250. v-model="technologyForm.mainproduct"
  251. type="textarea"
  252. maxlength="300"
  253. show-word-limit
  254. :autosize="{ minRows: 4, maxRows: 5 }"
  255. placeholder="请输入主要产品"
  256. ></el-input>
  257. </el-form-item>
  258. </el-col>
  259. <el-col :span="24" class="txtTwo">
  260. <el-form-item label="企业资质(荣誉):">
  261. <el-input
  262. v-model="technologyForm.qualifications"
  263. type="textarea"
  264. maxlength="300"
  265. show-word-limit
  266. :autosize="{ minRows: 4, maxRows: 5 }"
  267. placeholder="请输入企业资质(荣誉)"
  268. ></el-input>
  269. </el-form-item>
  270. </el-col>
  271. </el-col>
  272. </el-col>
  273. <el-col :span="24" class="product">
  274. <h1>技术需求</h1>
  275. <el-col :span="24" class="productInfo">
  276. <el-col :span="24" class="txt">
  277. <el-form-item label="名称:" prop="name">
  278. <el-input v-model="technologyForm.name" placeholder="请输入需求名称"></el-input>
  279. </el-form-item>
  280. </el-col>
  281. <el-col :span="12" class="txt">
  282. <el-form-item label="需求紧急程度:">
  283. <el-select v-model="technologyForm.degreeurgency" placeholder="请选择需求紧急程度">
  284. <el-option label="特急" value="特急"></el-option>
  285. <el-option label="一般" value="一般"></el-option>
  286. <el-option label="储备" value="储备"></el-option>
  287. </el-select>
  288. </el-form-item>
  289. </el-col>
  290. <el-col :span="12" class="txt">
  291. <el-form-item label="所属领域:">
  292. <el-select v-model="technologyForm.field" filterable>
  293. <el-option v-for="(item, index) in fieldList" :key="index" :value="item.name" :label="item.name"></el-option>
  294. </el-select>
  295. </el-form-item>
  296. </el-col>
  297. <el-col :span="12" class="txt">
  298. <el-form-item label="投资预算:">
  299. <el-input v-model="technologyForm.budget" placeholder="请输入投资预算"></el-input>
  300. </el-form-item>
  301. </el-col>
  302. <el-col :span="12" class="txt">
  303. <el-form-item label="合作方式:">
  304. <el-select v-model="technologyForm.cooperation" filterable>
  305. <el-option v-for="(item, index) in cooperationList" :key="index" :value="item.name" :label="item.name"></el-option>
  306. </el-select>
  307. </el-form-item>
  308. </el-col>
  309. <el-col :span="24" class="txtTwo">
  310. <el-form-item label="技术说明:">
  311. <el-input
  312. v-model="technologyForm.requirementdesc"
  313. type="textarea"
  314. maxlength="300"
  315. show-word-limit
  316. :autosize="{ minRows: 4, maxRows: 5 }"
  317. placeholder="请输入技术难题/需求说明"
  318. ></el-input>
  319. </el-form-item>
  320. </el-col>
  321. <el-col :span="24" class="txtTwo">
  322. <el-form-item label="预期目标:">
  323. <el-input
  324. v-model="technologyForm.expect"
  325. type="textarea"
  326. maxlength="300"
  327. show-word-limit
  328. :autosize="{ minRows: 4, maxRows: 5 }"
  329. placeholder="请输入预期技术目标描述"
  330. ></el-input>
  331. </el-form-item>
  332. </el-col>
  333. <el-col :span="24" class="txtTwo">
  334. <el-form-item label="需求现状:">
  335. <el-input
  336. v-model="technologyForm.present"
  337. type="textarea"
  338. maxlength="300"
  339. show-word-limit
  340. :autosize="{ minRows: 4, maxRows: 5 }"
  341. placeholder="请输入需求现状及应对措施"
  342. ></el-input>
  343. </el-form-item>
  344. </el-col>
  345. <el-col :span="24" class="txtTwo">
  346. <el-form-item label="合作条件及要求:">
  347. <el-input
  348. v-model="technologyForm.condition"
  349. type="textarea"
  350. maxlength="300"
  351. show-word-limit
  352. :autosize="{ minRows: 4, maxRows: 5 }"
  353. placeholder="请输入合作条件及要求"
  354. ></el-input>
  355. </el-form-item>
  356. </el-col>
  357. </el-col>
  358. </el-col>
  359. </el-form>
  360. <el-col :span="24" class="btn">
  361. <el-button type="primary" size="mini" @click="technologyBtn">保存</el-button>
  362. </el-col>
  363. </el-col>
  364. </el-tab-pane>
  365. <el-tab-pane label="科技成果" name="second">
  366. <el-col :span="24" class="first">
  367. <el-form ref="achieveForm" :model="achieveForm" :rules="technologyRules" label-width="140px">
  368. <el-col :span="24" class="company">
  369. <h1>企业信息</h1>
  370. <el-col :span="24" class="compnayInfo">
  371. <el-col :span="24" class="txt">
  372. <el-form-item label="企业名称:" prop="company">
  373. <el-input v-model="achieveForm.company" placeholder="请输入企业名称"></el-input>
  374. </el-form-item>
  375. </el-col>
  376. <el-col :span="24" class="txt">
  377. <el-form-item label="企业网址:">
  378. <el-input v-model="achieveForm.companyweb" placeholder="请输入企业网址"></el-input>
  379. </el-form-item>
  380. </el-col>
  381. <el-col :span="12" class="txt">
  382. <el-form-item label="联系人:">
  383. <el-input v-model="achieveForm.contacts" placeholder="请输入联系人"></el-input>
  384. </el-form-item>
  385. </el-col>
  386. <el-col :span="12" class="txt">
  387. <el-form-item label="联系电话:" prop="phone">
  388. <el-input v-model="achieveForm.phone" placeholder="请输入联系电话"></el-input>
  389. </el-form-item>
  390. </el-col>
  391. <el-col :span="12" class="txt">
  392. <el-form-item label="QQ/微信:">
  393. <el-input v-model="achieveForm.qqwx" placeholder="请输入QQ/微信"></el-input>
  394. </el-form-item>
  395. </el-col>
  396. <el-col :span="12" class="txt">
  397. <el-form-item label="电子邮箱:">
  398. <el-input v-model="achieveForm.email" placeholder="请输入电子邮箱"></el-input>
  399. </el-form-item>
  400. </el-col>
  401. <el-col :span="24" class="txtTwo">
  402. <el-form-item label="企业简介:">
  403. <el-input
  404. v-model="achieveForm.companybrief"
  405. type="textarea"
  406. maxlength="300"
  407. show-word-limit
  408. :autosize="{ minRows: 4, maxRows: 5 }"
  409. placeholder="请输入企业简介"
  410. ></el-input>
  411. </el-form-item>
  412. </el-col>
  413. </el-col>
  414. </el-col>
  415. <el-col :span="24" class="product">
  416. <h1>科技成果</h1>
  417. <el-col :span="24" class="productInfo">
  418. <el-col :span="24" class="txt">
  419. <el-form-item label="成果名称:" prop="name">
  420. <el-input v-model="achieveForm.name" placeholder="请输入注册类型"></el-input>
  421. </el-form-item>
  422. </el-col>
  423. <el-col :span="12" class="txt">
  424. <el-form-item label="所属领域:">
  425. <el-select v-model="achieveForm.field" filterable>
  426. <el-option v-for="(item, index) in fieldList" :key="index" :value="item.name" :label="item.name"></el-option>
  427. </el-select>
  428. </el-form-item>
  429. </el-col>
  430. <el-col :span="12" class="txt">
  431. <el-form-item label="合作方式:">
  432. <el-select v-model="achieveForm.cooperation" filterable>
  433. <el-option v-for="(item, index) in cooperationList" :key="index" :value="item.name" :label="item.name"></el-option>
  434. </el-select>
  435. </el-form-item>
  436. </el-col>
  437. <el-col :span="12" class="txt">
  438. <el-form-item label="成果状态:">
  439. <el-select v-model="achieveForm.achievestatus" filterable>
  440. <el-option v-for="(item, index) in achievestatusList" :key="index" :value="item.name" :label="item.name"></el-option>
  441. </el-select>
  442. </el-form-item>
  443. </el-col>
  444. <el-col :span="24" class="txt">
  445. <el-form-item label="成果权属:">
  446. <el-input v-model="achieveForm.achieveown" placeholder="请输入成果权属"></el-input>
  447. </el-form-item>
  448. </el-col>
  449. <el-col :span="24" class="txt">
  450. <el-form-item label="成果来源:">
  451. <el-select v-model="achieveForm.achievesource" placeholder="请选择成果来源">
  452. <el-option label="国家项目" value="国家项目"></el-option>
  453. <el-option label="省级项目" value="省级项目"></el-option>
  454. <el-option label="市级项目" value="市级项目"></el-option>
  455. <el-option label="自选项目" value="自选项目"></el-option>
  456. </el-select>
  457. </el-form-item>
  458. </el-col>
  459. <el-col :span="24" class="txt">
  460. <el-form-item label="意向价格:">
  461. <el-input v-model="achieveForm.intentionprice" placeholder="请输入意向价格"></el-input>
  462. </el-form-item>
  463. </el-col>
  464. <el-col :span="24" class="txt">
  465. <el-form-item label="专利信息:">
  466. <el-input v-model="achieveForm.patentinfo" placeholder="请输入专利信息"></el-input>
  467. </el-form-item>
  468. </el-col>
  469. <el-col :span="24" class="txt">
  470. <el-form-item label="专利状态:">
  471. <el-select v-model="achieveForm.patentstatus" placeholder="请选择专利状态">
  472. <el-option label="已申请" value="已申请"></el-option>
  473. <el-option label="已授权" value="已授权"></el-option>
  474. </el-select>
  475. </el-form-item>
  476. </el-col>
  477. <el-col :span="24" class="txt">
  478. <el-form-item label="项目路演:">
  479. <el-input v-model="achieveForm.roadshow" placeholder="请输入项目路演"></el-input>
  480. </el-form-item>
  481. </el-col>
  482. <el-col :span="24" class="txtTwo">
  483. <el-form-item label="成果简介:">
  484. <el-input
  485. v-model="achieveForm.achievebrief"
  486. type="textarea"
  487. maxlength="300"
  488. show-word-limit
  489. :autosize="{ minRows: 4, maxRows: 5 }"
  490. placeholder="请输入成果简介"
  491. ></el-input>
  492. </el-form-item>
  493. </el-col>
  494. <el-col :span="24" class="txtTwo">
  495. <el-form-item label="技术特点:">
  496. <el-input
  497. v-model="achieveForm.features"
  498. type="textarea"
  499. maxlength="300"
  500. show-word-limit
  501. :autosize="{ minRows: 4, maxRows: 5 }"
  502. placeholder="请输入技术特点"
  503. ></el-input>
  504. </el-form-item>
  505. </el-col>
  506. <el-col :span="24" class="txtTwo">
  507. <el-form-item label="技术团队:">
  508. <el-input
  509. v-model="achieveForm.team"
  510. type="textarea"
  511. maxlength="300"
  512. show-word-limit
  513. :autosize="{ minRows: 4, maxRows: 5 }"
  514. placeholder="请输入技术团队"
  515. ></el-input>
  516. </el-form-item>
  517. </el-col>
  518. <el-col :span="24" class="txtTwo">
  519. <el-form-item label="商业预期:">
  520. <el-input
  521. v-model="achieveForm.expectations"
  522. type="textarea"
  523. maxlength="300"
  524. show-word-limit
  525. :autosize="{ minRows: 4, maxRows: 5 }"
  526. placeholder="请输入商业预期"
  527. ></el-input>
  528. </el-form-item>
  529. </el-col>
  530. <el-col :span="24" class="txtTwo">
  531. <el-form-item label="合作条件及要求:">
  532. <el-input
  533. v-model="achieveForm.condition"
  534. type="textarea"
  535. maxlength="300"
  536. show-word-limit
  537. :autosize="{ minRows: 4, maxRows: 5 }"
  538. placeholder="请输入合作条件及要求"
  539. ></el-input>
  540. </el-form-item>
  541. </el-col>
  542. </el-col>
  543. </el-col>
  544. </el-form>
  545. <el-col :span="24" class="btn">
  546. <el-button type="primary" size="mini" @click="achieveBtn">保存</el-button>
  547. </el-col>
  548. </el-col>
  549. </el-tab-pane>
  550. </el-tabs>
  551. </el-dialog>
  552. </div>
  553. </template>
  554. <script>
  555. import { mapState, createNamespacedHelpers } from 'vuex';
  556. const { mapActions: product } = createNamespacedHelpers('marketproduct');
  557. const { mapActions: expertsuser } = createNamespacedHelpers('expertsuser');
  558. const { mapActions: markettype } = createNamespacedHelpers('markettype');
  559. var moment = require('moment');
  560. export default {
  561. name: 'index',
  562. props: {},
  563. components: {},
  564. data: function() {
  565. return {
  566. gongqiuImage: require('@/assets/live/main2.png'),
  567. iconImage: require('@/assets/live/square_big.png'),
  568. achievezb: require('@/assets/achievezb.jpg'),
  569. expertimage: require('@/assets/live/222.png'),
  570. // 成果
  571. achieveList: [
  572. // {
  573. // achievebrief: '1',
  574. // achieveown: '权属',
  575. // achievesource: '国家项目',
  576. // achievestatus: '原理样机',
  577. // company: '高新技术企业',
  578. // condition: '1',
  579. // contacts: '高新技术企业',
  580. // cooperation: '合作开发',
  581. // expectations: '1',
  582. // features: '1',
  583. // field: '电子信息技术',
  584. // id: '5f72a7f78ee21ce51c076da7',
  585. // image: [
  586. // {
  587. // url: '/files/image/20200929112017.jpg',
  588. // _id: '5f72a7f78ee21ce51c076dab',
  589. // },
  590. // {
  591. // url: '/files/image/20200929112021.jpg',
  592. // _id: '5f72a7f78ee21ce51c076daa',
  593. // },
  594. // ],
  595. // intentionprice: '123',
  596. // name: '测试专利信息',
  597. // phone: '18000000008',
  598. // qqwx: '12345678',
  599. // roadshow: '/files/roadshow/20200929112010.xlsx',
  600. // status: '1',
  601. // team: '1',
  602. // type: '1',
  603. // userid: '5f7043b5114497e1d0bb452a',
  604. // },
  605. ],
  606. // 技术
  607. technologyList: [],
  608. // 商务信息
  609. businessList: [],
  610. // 专家信息
  611. expertList: [],
  612. // 未注册用户发布产品
  613. dialog: false,
  614. activeName: 'first',
  615. // 所属领域
  616. fieldList: [],
  617. // 成果状态
  618. achievestatusList: [],
  619. // 合作方式
  620. cooperationList: [],
  621. // 技术
  622. technologyForm: {},
  623. // 成果
  624. achieveForm: {},
  625. technologyRules: {
  626. company: [{ required: true, message: '请输入企业名称', trigger: 'blur' }],
  627. phone: [{ required: true, message: '请输入联系电话', trigger: 'blur' }],
  628. name: [{ required: true, message: '请输入需求名称', trigger: 'blur' }],
  629. },
  630. };
  631. },
  632. created() {
  633. this.search();
  634. this.searchtype();
  635. },
  636. methods: {
  637. ...markettype({ markettypeList: 'query' }),
  638. ...product({ newquery: 'newquery', productCreate: 'create' }),
  639. ...expertsuser({ expertQuery: 'query' }),
  640. async search() {
  641. let res = await this.newquery({ skip: 0, limit: 8, type: '1', status: '1' });
  642. if (this.$checkRes(res)) this.$set(this, `achieveList`, res.data);
  643. res = await this.newquery({ skip: 0, limit: 6, type: '0', status: '1' });
  644. if (this.$checkRes(res)) this.$set(this, `technologyList`, res.data);
  645. res = await this.newquery({ skip: 0, limit: 5, type: '2', status: '1' });
  646. if (this.$checkRes(res)) this.$set(this, `businessList`, res.data);
  647. res = await this.expertQuery({ skip: 0, limit: 6 });
  648. if (this.$checkRes(res)) this.$set(this, `expertList`, res.data);
  649. },
  650. // 未注册用户添加产品
  651. // 查询字典表
  652. async searchtype() {
  653. // 所属领域;
  654. let res = await this.markettypeList({ category: '01' });
  655. if (this.$checkRes(res)) {
  656. this.$set(this, `fieldList`, res.data);
  657. }
  658. // 成果状态;
  659. res = await this.markettypeList({ category: '02' });
  660. if (this.$checkRes(res)) {
  661. this.$set(this, `achievestatusList`, res.data);
  662. }
  663. // 合作方式;
  664. res = await this.markettypeList({ category: '03' });
  665. if (this.$checkRes(res)) {
  666. this.$set(this, `cooperationList`, res.data);
  667. }
  668. },
  669. // 技术保存
  670. async technologyBtn() {
  671. let data = this.technologyForm;
  672. data.type = '0';
  673. data.status = '0';
  674. let res = await this.productCreate(data);
  675. if (this.$checkRes(res)) {
  676. this.$message({
  677. message: '信息创建成功',
  678. type: 'success',
  679. });
  680. this.toClose();
  681. } else {
  682. this.$message.error('信息创建失败');
  683. }
  684. },
  685. // 成果保存
  686. async achieveBtn() {
  687. let data = this.achieveForm;
  688. data.type = '0';
  689. data.status = '0';
  690. let res = await this.productCreate(data);
  691. if (this.$checkRes(res)) {
  692. this.$message({
  693. message: '信息创建成功',
  694. type: 'success',
  695. });
  696. this.toClose();
  697. } else {
  698. this.$message.error('信息创建失败');
  699. }
  700. },
  701. // 取消
  702. toClose() {
  703. this.technologyForm = {};
  704. this.achieveForm = {};
  705. this.dialog = false;
  706. },
  707. },
  708. // 过滤时间
  709. filters: {
  710. getDate(meta) {
  711. let createdAt = _.get(meta, `createdAt`);
  712. let date = new Date(createdAt)
  713. .toLocaleDateString()
  714. .replace('/', '-')
  715. .replace('/', '-');
  716. return date;
  717. },
  718. },
  719. computed: {
  720. ...mapState(['user']),
  721. pageTitle() {
  722. return `${this.$route.meta.title}`;
  723. },
  724. },
  725. metaInfo() {
  726. return { title: this.$route.meta.title };
  727. },
  728. };
  729. </script>
  730. <style lang="less" scoped>
  731. .w_1200 {
  732. // width: 80%;
  733. width: 1200px;
  734. margin: 0 auto;
  735. }
  736. .top {
  737. margin: 15px 0;
  738. height: 500px;
  739. overflow: hidden;
  740. .left {
  741. border-right: 1px dashed #ccc;
  742. .leftTop {
  743. height: 50px;
  744. .txt {
  745. height: 47px;
  746. line-height: 47px;
  747. border-bottom: 3px solid #044b79;
  748. span:first-child {
  749. color: #000000;
  750. font-size: 24px;
  751. font-weight: bold;
  752. }
  753. span:nth-child(2) {
  754. color: #92959a;
  755. font-size: 24px;
  756. font-weight: bold;
  757. margin: 0 0 0 10px;
  758. }
  759. span:nth-child(3) {
  760. color: #92959a;
  761. font-size: 18px;
  762. font-weight: bold;
  763. }
  764. span:last-child {
  765. float: right;
  766. padding: 0 15px;
  767. font-size: 16px;
  768. font-weight: bold;
  769. color: #044b79;
  770. }
  771. span:last-child:hover {
  772. cursor: pointer;
  773. }
  774. }
  775. }
  776. .leftDown {
  777. height: 450px;
  778. .achieveList {
  779. position: relative;
  780. overflow: hidden;
  781. height: 220px;
  782. margin-top: 5px;
  783. .achieveImage {
  784. .el-image {
  785. width: 100%;
  786. height: 220px;
  787. overflow: hidden;
  788. border-radius: 5px;
  789. transition: all 0.4s linear;
  790. }
  791. }
  792. .name {
  793. color: #fff;
  794. width: 100%;
  795. transform: translateY(-50%) scale(0);
  796. position: absolute;
  797. top: 50%;
  798. left: 0;
  799. height: 40px;
  800. text-align: center;
  801. line-height: 40px;
  802. font-size: 16px;
  803. z-index: 200;
  804. transition: all 0.4s linear;
  805. }
  806. }
  807. .achieveList:hover {
  808. cursor: pointer;
  809. // .name {
  810. // color: #0085d2;
  811. // font-weight: bold;
  812. // }
  813. }
  814. .achieveList::before {
  815. content: '';
  816. // background: linear-gradient(to left top, #e6e6fa, #b0c4de);
  817. background: #ccc;
  818. height: 100%;
  819. width: 100%;
  820. opacity: 0;
  821. position: absolute;
  822. z-index: 100;
  823. left: 0;
  824. top: 0;
  825. transition: all 0.4s linear;
  826. }
  827. .achieveList:hover::before {
  828. opacity: 0.4;
  829. }
  830. .achieveList:hover {
  831. // box-shadow: 3px 12px 15px rgba(0, 0, 0, 0.4);
  832. box-shadow: 3px 5px 6px rgba(0, 0, 0, 0.5);
  833. }
  834. .achieveList:hover .achieveImage .el-image {
  835. transform: scale(1.2);
  836. }
  837. .achieveList:hover .name {
  838. transform: translateY(-50%) scale(1);
  839. font-weight: bolder;
  840. }
  841. }
  842. }
  843. .right {
  844. .rightTop {
  845. height: 50px;
  846. .txt {
  847. height: 47px;
  848. line-height: 47px;
  849. border-bottom: 3px solid #044b79;
  850. span:first-child {
  851. color: #000000;
  852. font-size: 24px;
  853. font-weight: bold;
  854. }
  855. span:nth-child(2) {
  856. color: #92959a;
  857. font-size: 24px;
  858. font-weight: bold;
  859. margin: 0 0 0 10px;
  860. }
  861. span:nth-child(3) {
  862. color: #92959a;
  863. font-size: 18px;
  864. font-weight: bold;
  865. }
  866. span:last-child {
  867. float: right;
  868. padding: 0 15px;
  869. font-size: 16px;
  870. font-weight: bold;
  871. color: #044b79;
  872. }
  873. span:last-child:hover {
  874. cursor: pointer;
  875. }
  876. }
  877. }
  878. .rightDown {
  879. padding: 0 10px;
  880. .technologyList {
  881. padding: 10px 0;
  882. border-bottom: 1px dashed #ccc;
  883. .name {
  884. font-size: 18px;
  885. }
  886. .date {
  887. text-align: center;
  888. font-size: 16px;
  889. }
  890. .field {
  891. padding: 10px 0 0 0;
  892. font-size: 15px;
  893. }
  894. }
  895. .technologyList:hover {
  896. cursor: pointer;
  897. .name {
  898. color: #0085d2;
  899. font-weight: bold;
  900. }
  901. }
  902. }
  903. }
  904. }
  905. .centerimage {
  906. text-align: center;
  907. .el-image {
  908. height: 140px;
  909. }
  910. }
  911. .down {
  912. height: 550px;
  913. padding: 50px 0 0 0;
  914. margin: 0 0 15px 0;
  915. background-color: #e9edf6;
  916. .left {
  917. border-right: 1px dashed #ccc;
  918. .leftTop {
  919. height: 50px;
  920. .txt {
  921. height: 47px;
  922. line-height: 47px;
  923. border-bottom: 3px solid #044b79;
  924. span:first-child {
  925. color: #000000;
  926. font-size: 24px;
  927. font-weight: bold;
  928. }
  929. span:nth-child(2) {
  930. color: #92959a;
  931. font-size: 24px;
  932. font-weight: bold;
  933. margin: 0 0 0 10px;
  934. }
  935. span:nth-child(3) {
  936. color: #92959a;
  937. font-size: 18px;
  938. font-weight: bold;
  939. }
  940. span:last-child {
  941. float: right;
  942. padding: 0 15px;
  943. font-size: 16px;
  944. font-weight: bold;
  945. color: #044b79;
  946. }
  947. span:last-child:hover {
  948. cursor: pointer;
  949. }
  950. }
  951. }
  952. .leftDown {
  953. height: 450px;
  954. padding: 0 10px;
  955. .businessList {
  956. padding: 10px 0;
  957. border-bottom: 1px dashed #044b79;
  958. .name {
  959. font-size: 18px;
  960. }
  961. .messbute {
  962. font-size: 16px;
  963. }
  964. .date {
  965. font-size: 16px;
  966. text-align: center;
  967. }
  968. .info {
  969. padding: 5px 0 0 0;
  970. height: 45px;
  971. font-size: 14px;
  972. overflow: hidden;
  973. text-overflow: ellipsis;
  974. -webkit-line-clamp: 2;
  975. word-break: break-all;
  976. display: -webkit-box;
  977. -webkit-box-orient: vertical;
  978. }
  979. }
  980. .businessList:last-child {
  981. border-bottom: none;
  982. }
  983. .businessList:hover {
  984. cursor: pointer;
  985. .name {
  986. color: #0085d2;
  987. font-weight: bold;
  988. }
  989. }
  990. }
  991. }
  992. .right {
  993. .rightTop {
  994. height: 50px;
  995. .txt {
  996. height: 47px;
  997. line-height: 47px;
  998. border-bottom: 3px solid #044b79;
  999. span:first-child {
  1000. color: #000000;
  1001. font-size: 24px;
  1002. font-weight: bold;
  1003. }
  1004. span:nth-child(2) {
  1005. color: #92959a;
  1006. font-size: 24px;
  1007. font-weight: bold;
  1008. margin: 0 0 0 10px;
  1009. }
  1010. span:nth-child(3) {
  1011. color: #92959a;
  1012. font-size: 18px;
  1013. font-weight: bold;
  1014. }
  1015. span:last-child {
  1016. float: right;
  1017. padding: 0 15px;
  1018. font-size: 16px;
  1019. font-weight: bold;
  1020. color: #044b79;
  1021. }
  1022. span:last-child:hover {
  1023. cursor: pointer;
  1024. }
  1025. }
  1026. }
  1027. .rightDown {
  1028. height: 450px;
  1029. padding: 0 10px;
  1030. .expertList {
  1031. margin: 20px 0 10px 0;
  1032. padding: 10px 0;
  1033. border-bottom: 1px dashed #044b79;
  1034. .expertimage {
  1035. .el-image {
  1036. width: 90px;
  1037. height: 90px;
  1038. border-radius: 90px;
  1039. }
  1040. }
  1041. .rightInfo {
  1042. padding: 0 10px;
  1043. .name {
  1044. font-size: 18px;
  1045. padding: 7px 0 0 0;
  1046. }
  1047. .school {
  1048. font-size: 16px;
  1049. padding: 7px 0 0 0;
  1050. }
  1051. .edu {
  1052. font-size: 16px;
  1053. padding: 7px 0 0 0;
  1054. }
  1055. .company {
  1056. font-size: 16px;
  1057. padding: 7px 0 0 0;
  1058. }
  1059. }
  1060. }
  1061. .expertList:nth-child(5) {
  1062. border-bottom: none;
  1063. }
  1064. .expertList:nth-child(6) {
  1065. border-bottom: none;
  1066. }
  1067. .expertList:hover {
  1068. cursor: pointer;
  1069. .name {
  1070. color: #0085d2;
  1071. font-weight: bold;
  1072. }
  1073. }
  1074. }
  1075. }
  1076. }
  1077. .createpro {
  1078. position: fixed;
  1079. bottom: 100px;
  1080. left: 100px;
  1081. width: 80px;
  1082. height: 80px;
  1083. border: 1px solid #ccc;
  1084. border-radius: 10px;
  1085. text-align: center;
  1086. .el-button {
  1087. font-size: 25px;
  1088. }
  1089. }
  1090. .createpro:hover {
  1091. -webkit-transform: translateY(-3px);
  1092. -ms-transform: translateY(-3px);
  1093. transform: translateY(-3px);
  1094. -webkit-box-shadow: 0 0 6px #0085d2;
  1095. box-shadow: 0 0 6px #0085d2;
  1096. -webkit-transition: all 0.5s ease-out;
  1097. transition: all 0.5s ease-out;
  1098. cursor: pointer;
  1099. .el-button {
  1100. font-weight: bold;
  1101. }
  1102. }
  1103. .releaseDialog {
  1104. margin: 15px 0;
  1105. .first {
  1106. .company {
  1107. border: 1px solid #ccc;
  1108. padding: 0 15px 15px 15px;
  1109. h1 {
  1110. margin: 10px 10px;
  1111. border-bottom: 1px solid red;
  1112. height: 40px;
  1113. line-height: 40px;
  1114. }
  1115. .compnayInfo {
  1116. .txt {
  1117. margin: 0 0 5px 0;
  1118. border-bottom: 1px dashed #ccc;
  1119. padding: 10px 0;
  1120. .left {
  1121. text-align: center;
  1122. height: 40px;
  1123. line-height: 40px;
  1124. font-size: 15px;
  1125. }
  1126. }
  1127. .txtTwo {
  1128. p {
  1129. font-size: 15px;
  1130. padding: 10px;
  1131. }
  1132. }
  1133. }
  1134. }
  1135. .product {
  1136. border: 1px solid #ccc;
  1137. padding: 0 15px 15px 15px;
  1138. h1 {
  1139. margin: 10px 10px;
  1140. border-bottom: 1px solid red;
  1141. height: 40px;
  1142. line-height: 40px;
  1143. }
  1144. .productInfo {
  1145. .txt {
  1146. margin: 0 0 5px 0;
  1147. border-bottom: 1px dashed #ccc;
  1148. padding: 10px 0;
  1149. .left {
  1150. text-align: center;
  1151. height: 40px;
  1152. line-height: 40px;
  1153. font-size: 15px;
  1154. }
  1155. }
  1156. .txtTwo {
  1157. p {
  1158. font-size: 15px;
  1159. padding: 10px;
  1160. }
  1161. }
  1162. }
  1163. }
  1164. .btn {
  1165. text-align: center;
  1166. margin: 15px 0;
  1167. }
  1168. }
  1169. }
  1170. </style>