index.vue 43 KB

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