contextfabu.vue 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292
  1. <template>
  2. <el-col>
  3. <el-col :span="24" class="rightTop">
  4. <template>
  5. <el-tabs v-model="activeName" @tab-click="handleClick">
  6. <el-tab-pane label="需求发布" name="first">
  7. <el-form ref="form" :model="form" label-width="80px">
  8. <el-form-item label="类别">
  9. <el-select v-model="form.totaltype" placeholder="请选择类别" @change="selectType" prop="totaltype">
  10. <el-option v-for="(item, index) in typeList" :key="index" :value="item.value" :label="item.name"></el-option>
  11. </el-select>
  12. </el-form-item>
  13. <el-col class="mingcheng" :span="24">
  14. <el-form-item label="名称">
  15. <el-input v-model="form.name" placeholder="请输入名称"></el-input>
  16. </el-form-item>
  17. </el-col>
  18. <el-col class="mingcheng" :span="24">
  19. <el-form-item label="类型">
  20. <el-select v-model="form.product_type_id" filterable @change="selectChild">
  21. <el-option v-for="(item, index) in columnList" :key="index" :value="item.id" :label="item.name"></el-option>
  22. </el-select>
  23. </el-form-item>
  24. </el-col>
  25. <!-- <el-col class="mingcheng" :span="24">
  26. <el-form-item label="产品图片" v-model="form.url">
  27. <el-upload> </el-upload>
  28. </el-form-item>
  29. </el-col> -->
  30. <el-col class="mingcheng" :span="24">
  31. <el-form-item label="应用领域" prop="1" v-if="form.totaltype === '1' ? form.totaltype === '2' : 'qiya'">
  32. <el-input v-model="form.field" placeholder="请选择名称"></el-input>
  33. </el-form-item>
  34. </el-col>
  35. <el-col class="mingcheng" :span="24">
  36. <el-form-item label="服务范围" prop="2" v-if="form.totaltype === '0' ? form.totaltype === '1' : 'qiya'">
  37. <el-input type="textarea" v-model="form.scope"></el-input>
  38. </el-form-item>
  39. </el-col>
  40. <el-col class="mingcheng" :span="24">
  41. <el-form-item label="产品参数" prop="2" v-if="form.totaltype === '1' ? form.totaltype === '2' : 'qiya'">
  42. <!-- <el-table :data="tableData" style="width: 100%">
  43. <el-table-column prop="arg_name" label="参数名称" width="180"> </el-table-column>
  44. <el-table-column prop="memo" label="参数内容" width="180"> </el-table-column>
  45. </el-table> -->
  46. <!-- <el-button type="primary">添加</el-button> -->
  47. <template>
  48. <div class="tableDate">
  49. <div class="button" style="width:6%;float:right;">
  50. <P><el-button class="el-icon-plus" @click.prevent="addRow()"></el-button></P>
  51. <p><el-button class="el-icon-minus" @click.prevent="delData()"></el-button></p>
  52. </div>
  53. <div class="table">
  54. <el-table :data="tableData" ref="table" tooltip-effect="dark" border stripe style="width: 93%" @selection-change="selectRow">
  55. <el-table-column type="selection" width="45" align="center"></el-table-column>
  56. <el-table-column label="序号" type="index" width="60" align="center"></el-table-column>
  57. <el-table-column label="产品参数">
  58. <template slot-scope="scope">
  59. <el-input class="arg_name" v-model="scope.row.require_des"></el-input>
  60. </template>
  61. </el-table-column>
  62. <el-table-column label="内容">
  63. <template slot-scope="scope">
  64. <el-input type="textarea" class="remark" v-model="scope.row.memo"></el-input>
  65. </template>
  66. </el-table-column>
  67. </el-table>
  68. </div>
  69. </div>
  70. </template>
  71. </el-form-item>
  72. <el-col class="mingcheng" :span="24">
  73. <el-form-item label="市场前景" prop="2" v-if="form.totaltype === '2'">
  74. <el-input type="textarea" v-model="form.prospect"></el-input>
  75. </el-form-item>
  76. </el-col>
  77. </el-col>
  78. <el-col class="danjia" :span="24">
  79. <el-form-item label="单价">
  80. <el-input v-model="form.userid" placeholder="请输入单价"></el-input>
  81. </el-form-item>
  82. </el-col>
  83. <el-col class="mingcheng" :span="24">
  84. <el-form-item label="单位">
  85. <el-input v-model="form.product_type_name" placeholder="请输入名称"></el-input>
  86. </el-form-item>
  87. </el-col>
  88. <el-col class="mingcheng" :span="24">
  89. <el-form-item label="交易方式">
  90. <el-select v-model="form.business" placeholder="请选择交易方式">
  91. <el-option label="公用" value="0"></el-option>
  92. <el-option label="转让" value="1"></el-option>
  93. <el-option label="竞价" value="2"></el-option>
  94. </el-select>
  95. </el-form-item>
  96. </el-col>
  97. <el-col class="mingcheng" :span="24">
  98. <el-form-item label="研发阶段">
  99. <el-select v-model="form.phase" placeholder="请选择研发阶段">
  100. <el-option label="阶段成果" value="1"></el-option>
  101. <el-option label="最终成果" value="2"></el-option>
  102. </el-select>
  103. </el-form-item>
  104. </el-col>
  105. <el-col class="mingcheng" :span="24">
  106. <el-form-item label="简介">
  107. <el-input type="textarea" v-model="form.introduction"></el-input>
  108. </el-form-item>
  109. </el-col>
  110. <el-col class="mingcheng" :span="24">
  111. <el-form-item>
  112. <el-button type="primary" @click="onSubmit" size="mini">{{ isNew ? '创建' : '发布' }}</el-button>
  113. </el-form-item>
  114. </el-col>
  115. </el-form>
  116. </el-tab-pane>
  117. <el-tab-pane label="供给发布" name="second">配置管理</el-tab-pane>
  118. </el-tabs>
  119. </template>
  120. </el-col>
  121. </el-col>
  122. </template>
  123. <script>
  124. export default {
  125. name: 'contextfabu',
  126. props: {
  127. isNew: { type: Boolean, default: false } /* 是否新创建 */,
  128. form: null,
  129. columnList: null,
  130. },
  131. components: {},
  132. data: () => ({
  133. tableData: [],
  134. selectlistRow: [],
  135. rowNum: 1,
  136. typeList: [
  137. { name: '服务', value: '0' },
  138. { name: '产品', value: '1' },
  139. { name: '技术', value: '2' },
  140. ],
  141. activeName: 'first',
  142. }),
  143. created() {
  144. if (!this.isNew) this.selectType(this.form.totaltype, 'into');
  145. },
  146. computed: {},
  147. methods: {
  148. selectChild(column_id) {
  149. let res = this.columnList.filter(fil => fil.id === column_id);
  150. if (res.length > 0) {
  151. console.log(res[0].name);
  152. this.$set(this.form, `product_type_name`, res[0].name);
  153. }
  154. this.$forceUpdate();
  155. },
  156. async selectType(item, totaltype) {
  157. if (totaltype !== 'into') {
  158. delete this.form.url;
  159. delete this.form.content_id;
  160. }
  161. let result;
  162. if (item === '2') {
  163. // result = await this.allSearch({ totaltype: 'content', site: this.form.site });
  164. // if (`${result.errcode}` === '0') this.$set(this, `typeList`, result.data);
  165. } else if (item === '1') {
  166. // result = await this.allSearch({ totaltype: 'url', site: this.form.site });
  167. // if (`${result.errcode}` === '0') this.$set(this, `typeList`, result.data);
  168. } else if (item === '0') {
  169. // result = await this.allSearch({ totaltype: 'column', site: this.form.site });
  170. // if (`${result.errcode}` === '0') this.$set(this, `typeList`, result.data);
  171. }
  172. },
  173. onSubmit() {
  174. this.$emit('onsaves', { data: this.form });
  175. },
  176. handleClick(tab, event) {
  177. console.log(tab, event);
  178. },
  179. // 获取表格选中时的数据
  180. selectRow(val) {
  181. this.selectlistRow = val;
  182. },
  183. // 增加行
  184. addRow() {
  185. var list = {
  186. rowNum: this.rowNum,
  187. };
  188. this.tableData.unshift(list);
  189. this.rowNum += 1;
  190. },
  191. // 删除方法
  192. // 删除选中行
  193. delData() {
  194. for (let i = 0; i < this.selectlistRow.length; i++) {
  195. let val = this.selectlistRow;
  196. // 获取选中行的索引的方法
  197. // 遍历表格中tableData数据和选中的val数据,比较它们的rowNum,相等则输出选中行的索引
  198. // rowNum的作用主要是为了让每一行有一个唯一的数据,方便比较,可以根据个人的开发需求从后台传入特定的数据
  199. val.forEach((val, index) => {
  200. this.tableData.forEach((v, i) => {
  201. if (val.rowNum === v.rowNum) {
  202. // i 为选中的索引
  203. this.tableData.splice(i, 1);
  204. }
  205. });
  206. });
  207. }
  208. // 删除完数据之后清除勾选框
  209. this.$refs.table.clearSelection();
  210. },
  211. },
  212. };
  213. </script>
  214. <style lang="less" scoped>
  215. .avatar-uploader .el-upload {
  216. border: 1px dashed #d9d9d9;
  217. border-radius: 6px;
  218. cursor: pointer;
  219. position: relative;
  220. overflow: hidden;
  221. }
  222. .avatar-uploader .el-upload:hover {
  223. border-color: #409eff;
  224. }
  225. .avatar-uploader-icon {
  226. font-size: 28px;
  227. color: #8c939d;
  228. width: 178px;
  229. height: 178px;
  230. line-height: 178px;
  231. text-align: center;
  232. }
  233. .avatar {
  234. width: 178px;
  235. height: 178px;
  236. display: block;
  237. }
  238. .rightTop {
  239. height: 60px;
  240. width: 950px;
  241. }
  242. .rightTopL {
  243. width: 130px;
  244. height: 60px;
  245. background: #215299;
  246. float: left;
  247. color: #fff;
  248. font-size: 18px;
  249. text-align: center;
  250. font-family: '微软雅黑', Tahoma, Arial, Helvetica, STHeiti;
  251. }
  252. /deep/.el-tabs__item.is-active {
  253. color: #ffffff;
  254. background-color: blue;
  255. }
  256. .el-tabs__active-bar {
  257. position: absolute;
  258. bottom: 0;
  259. left: 0;
  260. height: 2px;
  261. background-color: blue;
  262. z-index: 1;
  263. }
  264. .mingcheng {
  265. width: 700px;
  266. }
  267. .tables {
  268. width: 500px;
  269. padding: 0 0 0 30px;
  270. min-height: 50px;
  271. }
  272. .jiaoyi {
  273. width: 400px;
  274. }
  275. .danjia {
  276. width: 500px;
  277. }
  278. </style>