index.vue 44 KB

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