ProjectAdd.vue 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698
  1. <template>
  2. <div class="create-container">
  3. <div class="create-body" v-loading="loading">
  4. <div class="title">创建项目</div>
  5. <el-tabs tabPosition="top" type="card">
  6. <el-tab-pane label="单个创建项目">
  7. <el-form :model="project" :rules="rules" ref="project" label-width="12%" class="demo-report">
  8. <el-form-item label="项目名称" prop="name">
  9. <el-input v-if="isModifyMode" v-model="project.name"></el-input>
  10. <!--<span v-if="!isModifyMode">{{project.name}}</span>-->
  11. </el-form-item>
  12. <el-form-item label="项目描述" prop="name">
  13. <el-input v-if="isModifyMode" v-model="project.description"></el-input>
  14. <!--<span v-if="!isModifyMode">{{project.description}}</span>-->
  15. </el-form-item>
  16. <el-form-item label="联系人姓名" prop="name">
  17. <el-input v-if="isModifyMode" v-model="project.contactName"></el-input>
  18. <!--<span v-if="!isModifyMode">{{project.contactName}}</span>-->
  19. </el-form-item>
  20. <el-form-item label="联系人电话" prop="name">
  21. <el-input v-if="isModifyMode" v-model="project.contactPhone"></el-input>
  22. <!--<span v-if="!isModifyMode">{{project.contactPhone}}</span>-->
  23. </el-form-item>
  24. <el-form-item label="项目定价" prop="name">
  25. <el-input v-if="isModifyMode" v-model="project.price"></el-input>
  26. <!--<span v-if="!isModifyMode">{{project.price}}</span>-->
  27. </el-form-item>
  28. <el-form-item label="平台" prop="platform">
  29. <el-checkbox-group v-if="isModifyMode" v-model="project.platform">
  30. <span v-for="(item,index) in platforms" :key="index">
  31. <el-checkbox :label="item">{{ item }}&nbsp;&nbsp;&nbsp;&nbsp;</el-checkbox>
  32. </span>
  33. </el-checkbox-group>
  34. <!--<span-->
  35. <!--v-if="!isModifyMode"-->
  36. <!--class="badge"-->
  37. <!--v-for="item in project.platform"-->
  38. <!--&gt;{{platformType[item]}}</span>-->
  39. </el-form-item>
  40. <el-form-item label="服务类型" prop="type">
  41. <el-checkbox-group v-if="isModifyMode" v-model="project.type">
  42. <span v-for="(item,index) in serviceType" :key="index">
  43. <el-checkbox :label="item" name="type">{{item}}&nbsp;&nbsp;&nbsp;&nbsp;</el-checkbox>
  44. </span>
  45. </el-checkbox-group>
  46. </el-form-item>
  47. <el-form-item prop="file" label="项目需求文档">
  48. <el-upload
  49. v-if="isModifyMode"
  50. drag
  51. style="width: 400px"
  52. class="upload-demo"
  53. action=""
  54. :on-remove="handleRemove"
  55. :before-remove="beforeRemove"
  56. multiple
  57. :limit="1"
  58. :on-exceed="handleExceed"
  59. :before-upload="beforeFileUpload"
  60. :http-request="uploadRequireDoc"
  61. :file-list="project.requireDoc"
  62. >
  63. <i class="el-icon-upload"></i>
  64. <div class="el-upload__text">
  65. 将文件拖到此处,或
  66. <em>点击上传</em>
  67. </div>
  68. <div class="el-upload__tip" slot="tip">请上传报告文件</div>
  69. </el-upload>
  70. <!--<div v-if="!isModifyMode">-->
  71. <!--<span v-if="project.file==null || project.file.length === 0">暂无文件</span>-->
  72. <!--<a :href="project.file[0]" v-if="project.file!=null && project.file.length > 0"><i-->
  73. <!--class="fa fa-file-text-o"></i>-->
  74. <!--{{project.file[0]}}</a>-->
  75. <!--</div>-->
  76. </el-form-item>
  77. <el-form-item prop="file" label="项目待测文件">
  78. <el-upload
  79. style="width: 400px"
  80. v-if="isModifyMode"
  81. drag
  82. class="upload-demo"
  83. action=""
  84. :on-remove="handleRemove"
  85. :before-remove="beforeRemove"
  86. multiple
  87. :limit="1"
  88. :on-exceed="handleExceed"
  89. :http-request="uploadApkFile"
  90. :before-upload="beforeFileUpload"
  91. :file-list="project.file"
  92. >
  93. <i class="el-icon-upload"></i>
  94. <div class="el-upload__text">
  95. 将文件拖到此处,或
  96. <em>点击上传</em>
  97. </div>
  98. </el-upload>
  99. <!--<div v-if="!isModifyMode">-->
  100. <!--<span v-if="project.file==null || project.file.length === 0">暂无文件</span>-->
  101. <!--<a :href="project.file[0]" v-if="project.file!=null && project.file.length > 0"><i-->
  102. <!--class="fa fa-file-text-o"></i>-->
  103. <!--{{project.file[0]}}</a>-->
  104. <!--</div>-->
  105. </el-form-item>
  106. <el-form-item label="项目截止时间" prop="datetime">
  107. <div class="block" v-if="isModifyMode">
  108. <el-date-picker
  109. v-model="project.datetime"
  110. type="datetime"
  111. placeholder="选择截止时间"
  112. align="right"
  113. :picker-options="pickerOptions"
  114. ></el-date-picker>
  115. </div>
  116. <span v-if="!isModifyMode">{{new Date(project.datetime)}}</span>
  117. </el-form-item>
  118. <!--<el-form-item v-if="!isModifyMode">-->
  119. <!--<div class="btn btn-medium btn-info" @click="modifyInfo()">修改</div>-->
  120. <!--<div class="btn btn-medium" @click="cancelModify()">返回</div>-->
  121. <!--</el-form-item>-->
  122. <el-form-item v-if="isModifyMode">
  123. <div class="btn btn-primary btn-info" @click="submitInfo()">确认提交</div>
  124. </el-form-item>
  125. </el-form>
  126. </el-tab-pane>
  127. <el-tab-pane label="批量创建项目">
  128. <el-form :model="project" :rules="rules" ref="project" label-width="12%" class="demo-report">
  129. <el-form-item prop="file" label="Excel模板文件">
  130. <a :href="downloadFile">
  131. <el-link :underline="false" type="primary"><i
  132. class="el-icon-document"></i>下载文档
  133. </el-link>
  134. </a>
  135. </el-form-item>
  136. <el-form-item type="file" prop="file" label="Excel文件">
  137. <el-upload
  138. v-if="isModifyMode"
  139. drag
  140. class="upload-demo"
  141. action=""
  142. :on-remove="handleRemove"
  143. :before-remove="beforeRemove"
  144. :limit="1"
  145. :on-exceed="handleExceed"
  146. :before-upload="beforeFileUpload"
  147. :http-request="uploadProjectCreateExcelFile"
  148. :file-list="project.excelFile"
  149. >
  150. <i class="el-icon-upload"></i>
  151. <div class="el-upload__text">
  152. 将文件拖到此处,或
  153. <em>点击上传</em>
  154. </div>
  155. </el-upload>
  156. <!--<div v-if="!isModifyMode">-->
  157. <!--<span v-if="project.file==null">暂无文件</span>-->
  158. <!--<a :href="project.file" v-if="project.file!=null"><i class="fa fa-file-text-o"></i>-->
  159. <!--{{project.file}}</a>-->
  160. <!--</div>-->
  161. </el-form-item>
  162. <el-form-item v-if="isModifyMode">
  163. <div class="btn btn-primary btn-info" @click="ensureSubmitExcel()">确认提交</div>
  164. </el-form-item>
  165. </el-form>
  166. <el-dialog
  167. title="您添加的项目"
  168. :visible.sync="dialogVisible"
  169. width="80%"
  170. :before-close="handleDialogClose"
  171. center>
  172. <span>
  173. <el-table
  174. :data="projectList"
  175. style="width: auto">
  176. <el-table-column prop="name" label="项目名称">
  177. <template slot-scope="scope">
  178. <span>{{scope.row.name}}</span>
  179. </template>
  180. </el-table-column>
  181. <el-table-column prop="platform" label="领域类型">
  182. <template slot-scope="scope">
  183. <span>{{scope.row.fieldType}}</span>
  184. </template>
  185. </el-table-column>
  186. <el-table-column prop="name" label="应用类型">
  187. <template slot-scope="scope">
  188. <span>{{scope.row.applicationType}}</span>
  189. </template>
  190. </el-table-column>
  191. <el-table-column prop="platform" label="测试类型">
  192. <template slot-scope="scope">
  193. <span>{{scope.row.type}}</span>
  194. </template>
  195. </el-table-column>
  196. <el-table-column prop="platform" label="委托单位">
  197. <template slot-scope="scope">
  198. <span>{{scope.row.entrustUnit}}</span>
  199. </template>
  200. </el-table-column>
  201. <el-table-column prop="linkMan" label="项目联系人">
  202. <template slot-scope="scope">
  203. <span>{{scope.row.linkMan}}</span>
  204. </template>
  205. </el-table-column>
  206. <el-table-column prop="linkManMobile" label="联系方式">
  207. <template slot-scope="scope">
  208. <span>{{scope.row.linkManMobile}}</span>
  209. </template>
  210. </el-table-column>
  211. <el-table-column prop="description" label="项目需求描述">
  212. <template slot-scope="scope">
  213. <span>{{scope.row.description}}</span>
  214. </template>
  215. </el-table-column>
  216. <el-table-column prop="description" label="计价标准">
  217. <template slot-scope="scope">
  218. <span>{{scope.row.valuationStandard}}</span>
  219. </template>
  220. </el-table-column>
  221. <el-table-column prop="description" label="测试报告内容">
  222. <template slot-scope="scope">
  223. <span>{{scope.row.crowdTestReportForProject.content}}</span>
  224. </template>
  225. </el-table-column>
  226. <el-table-column prop="description" label="测试报告结论">
  227. <template slot-scope="scope">
  228. <span>{{scope.row.crowdTestReportForProject.conclusion}}</span>
  229. </template>
  230. </el-table-column>
  231. </el-table>
  232. </span>
  233. <span slot="footer" class="dialog-footer">
  234. <el-button @click="handleDialogClose">取消</el-button>
  235. <el-button type="primary" @click="hindDialog">确认</el-button>
  236. </span>
  237. </el-dialog>
  238. </el-tab-pane>
  239. </el-tabs>
  240. </div>
  241. </div>
  242. </template>
  243. <script>
  244. import Http from '@/js/http.js'
  245. import Apis from '@/js/api.js'
  246. import {notify} from '@/constants/index'
  247. import {
  248. getAllPlatformTypes,
  249. getAllServiceTypes,
  250. getGreenChannelAddProjectExcelTemplateFile,
  251. storageGet
  252. } from '@/js/index'
  253. export default {
  254. name: 'ProjectAdd',
  255. data() {
  256. return {
  257. userId: 0,
  258. user: {},
  259. loading: false,
  260. dialogVisible: false,
  261. isModifyMode: true,
  262. serviceType: [],
  263. platforms: [],
  264. isFormSubmit: true,
  265. downloadFile: '',
  266. project: {
  267. name: '',
  268. description: '',
  269. contactName: '',
  270. contactPhone: '',
  271. platform: [],
  272. type: [],
  273. requireDoc: [],
  274. requireDocUrl: '',
  275. file: [],
  276. fileUrl: '',
  277. excelFile: [],
  278. excelFileUrl: '',
  279. price: '',
  280. datetime: ''
  281. },
  282. projectList: [{
  283. "id": null,
  284. "name": "广东省农产品商贸交易服务平台",
  285. "code": "PROJ-2020070820055",
  286. "userId": 20473,
  287. "regionalManagerId": 99222,
  288. "projectDistributionTypeId": 1,
  289. "fieldType": "KJFW",
  290. "applicationType": "WEB",
  291. "type": "GNCS",
  292. "linkMan": "张三",
  293. "linkManMobile": "13512345678",
  294. "description": "本平台提供农产品网上供求信息的发布、在线交易服务等功能,帮助用户快速捕获商机,具备开设网上交易会和网上农博会,为用户提供更广阔的宣传平台。",
  295. "projectFile": "",
  296. "requirementFile": "",
  297. "distributionProvince": "江苏",
  298. "distributionCity": "南京",
  299. "valuationStandard": "1200元/(人天)",
  300. "quotedPrice": 30000.0,
  301. "fixedPrice": 30000.0,
  302. "restPrice": null,
  303. "entrustUnit": "广东省农村信息中心",
  304. "status": 4,
  305. "deadTime": "2020-07-08T12:16:34.695+0000",
  306. "endTime": "2020-07-08T12:16:34.695+0000",
  307. "isDeleted": 0,
  308. "joinCount": 1,
  309. "createTime": null,
  310. "crowdTestTaskList": [{
  311. "id": null,
  312. "name": "广东省农产品商贸交易服务平台-GNCS",
  313. "code": "TASK-GNCS-2020070820008",
  314. "crowdTestProjectCode": "PROJ-2020070820055",
  315. "evaluationAgencyId": 1,
  316. "type": "GNCS",
  317. "description": "本平台提供农产品网上供求信息的发布、在线交易服务等功能,帮助用户快速捕获商机,具备开设网上交易会和网上农博会,为用户提供更广阔的宣传平台。",
  318. "requirementFile": "",
  319. "distributionType": 0,
  320. "distributionProvince": null,
  321. "distributionCity": null,
  322. "quotedPrice": 30000.0,
  323. "fixedPrice": 30000.0,
  324. "status": 4,
  325. "fullStatus": 0,
  326. "deadTime": "2020-07-08T12:16:34.695+0000",
  327. "endTime": "2020-07-08T12:16:34.695+0000",
  328. "isDeleted": 0,
  329. "createTime": null,
  330. "participantCount": 1,
  331. "acceptedCount": 1,
  332. "participantHasCommittedCount": 1,
  333. "acceptedUserList": [{
  334. "id": null,
  335. "taskCode": "TASK-GNCS-2020070820008",
  336. "userId": 20473,
  337. "quotedPrice": 0.0,
  338. "hasReport": 1,
  339. "distributionType": 1,
  340. "isAccepted": 1,
  341. "acceptTime": null,
  342. "isCommitted": 1,
  343. "user": null,
  344. "commitTaskTime": "2020-07-08T12:16:34.695+0000",
  345. "commitReportTime": "2020-07-08T12:16:34.695+0000",
  346. "crowdTestReportList": [{
  347. "id": null,
  348. "name": "广东省农产品商贸交易服务平台-GNCS测试报告",
  349. "code": "REPORT-2020070820089",
  350. "userId": 20473,
  351. "dependencyCode": "TASK-GNCS-2020070820008",
  352. "type": "测试报告",
  353. "scope": 1,
  354. "testObject": null,
  355. "description": null,
  356. "content": "对平台的供求信息发布、在线交易、网上上交易会等模块进行了功能性测试,所有测试项均符合项目需求规格说明书的要求",
  357. "file": null,
  358. "conclusion": "通过",
  359. "isDeleted": 0,
  360. "createTime": null
  361. }]
  362. }]
  363. }],
  364. "crowdTestReportForProject": {
  365. "id": null,
  366. "name": "广东省农产品商贸交易服务平台测试报告",
  367. "code": "REPORT-2020070820090",
  368. "userId": null,
  369. "dependencyCode": "PROJ-2020070820055",
  370. "type": "GNCS",
  371. "scope": 0,
  372. "testObject": "广东省农产品商贸交易服务平台",
  373. "description": "本平台提供农产品网上供求信息的发布、在线交易服务等功能,帮助用户快速捕获商机,具备开设网上交易会和网上农博会,为用户提供更广阔的宣传平台。",
  374. "content": "对平台的供求信息发布、在线交易、网上上交易会等模块进行了功能性测试,所有测试项均符合项目需求规格说明书的要求",
  375. "file": null,
  376. "conclusion": "通过",
  377. "isDeleted": 0,
  378. "createTime": null
  379. }
  380. }],
  381. excelFile: {},
  382. rules: {
  383. // name: [
  384. // {required: true, message: '请输入报告名称', trigger: 'blur'}
  385. // // { min: 3, max: 5, message: "长度在 3 到 5 个字符", trigger: "blur" }
  386. // ],
  387. // abstract: [
  388. // {
  389. // required: true,
  390. // message: '请输入摘要信息',
  391. // trigger: 'change'
  392. // }
  393. // ],
  394. // type: [
  395. // {required: true, message: '请选择报告类型', trigger: 'change'}
  396. // ],
  397. // conclusion: [
  398. // {required: true, message: '请输入报告结论', trigger: 'blur'}
  399. // ]
  400. },
  401. pickerOptions: {
  402. shortcuts: [
  403. {
  404. text: '今天',
  405. onClick(picker) {
  406. picker.$emit('pick', new Date())
  407. }
  408. },
  409. {
  410. text: '昨天',
  411. onClick(picker) {
  412. const date = new Date()
  413. date.setTime(date.getTime() - 3600 * 1000 * 24)
  414. picker.$emit('pick', date)
  415. }
  416. },
  417. {
  418. text: '一周前',
  419. onClick(picker) {
  420. const date = new Date()
  421. date.setTime(date.getTime() - 3600 * 1000 * 24 * 7)
  422. picker.$emit('pick', date)
  423. }
  424. }
  425. ]
  426. },
  427. tableData: [{
  428. date: '2016-05-02',
  429. name: '王小虎',
  430. address: '上海市普陀区金沙江路 1518 弄'
  431. }, {
  432. date: '2016-05-04',
  433. name: '王小虎',
  434. address: '上海市普陀区金沙江路 1517 弄'
  435. }, {
  436. date: '2016-05-01',
  437. name: '王小虎',
  438. address: '上海市普陀区金沙江路 1519 弄'
  439. }, {
  440. date: '2016-05-03',
  441. name: '王小虎',
  442. address: '上海市普陀区金沙江路 1516 弄'
  443. }]
  444. }
  445. },
  446. mounted() {
  447. this.$nextTick(() => {
  448. this.init()
  449. })
  450. },
  451. methods: {
  452. init() {
  453. this.setServiceType()
  454. this.setPlatformType()
  455. this.setUserInfo()
  456. this.setTemplateExcel()
  457. },
  458. //加载数据
  459. loadData: function () {
  460. },
  461. modifyInfo() {
  462. this.isModifyMode = true
  463. },
  464. submitInfo() {
  465. //this.isModifyMode = false
  466. this.showLoading()
  467. const newProject = {
  468. userId: this.user.userVO.id,
  469. name: this.project.name,
  470. description: this.project.description,
  471. contactName: this.project.contactName,
  472. contactPhone: this.project.contactPhone,
  473. platform: this.project.platform,
  474. type: this.project.type,
  475. doc: this.project.requireDocUrl,
  476. file: this.project.fileUrl,
  477. price: this.project.price,
  478. datetime: this.project.datetime
  479. }
  480. Http.post(Apis.PROJECT.ADD_PROJECT, newProject).then((res) => {
  481. this.hideLoading()
  482. this.createProjectByFormSuccessConfirm()
  483. console.log(res)
  484. }).catch(error => {
  485. this.hideLoading()
  486. notify('error', error.data)
  487. })
  488. },
  489. // cancelModify () {
  490. // this.isModifyMode = false
  491. // },
  492. handleRemove(file, fileList) {
  493. console.log(file, fileList)
  494. },
  495. handleExceed(files, fileList) {
  496. this.$message.warning(
  497. `当前限制选择 1 个文件,本次选择了 ${
  498. files.length
  499. } 个文件,共选择了 ${files.length + fileList.length} 个文件`
  500. )
  501. },
  502. beforeRemove(file, fileList) {
  503. //return this.$confirm(`确定移除 ${file.name}?`)
  504. },
  505. beforeFileUpload() {
  506. },
  507. uploadProjectCreateExcelFile(param) {
  508. this.showLoading()
  509. const formData = new FormData()
  510. let config = {
  511. //添加请求头
  512. headers: {'Content-Type': 'multipart/form-data'},
  513. }
  514. formData.append('file', param.file)
  515. Http.upload(Apis.PROJECT.ADD_PROJECT_BY_EXCEL_PRE.replace('{userId}', this.user.userVO.id), formData, config).then((res) => {
  516. console.log(res)
  517. this.projectList = res.data
  518. this.hideLoading()
  519. this.showDialog()
  520. //notify('success', '项目添加成功')
  521. }).catch(error => {
  522. console.log("打印错误信息!!!");
  523. console.log(error);
  524. console.log(error.data);
  525. notify('error', error)
  526. this.hideLoading()
  527. })
  528. },
  529. uploadRequireDoc(param) {
  530. const formData = new FormData()
  531. let config = {
  532. //添加请求头
  533. headers: {'Content-Type': 'multipart/form-data'},
  534. }
  535. formData.append('file', param.file)
  536. Http.upload(Apis.FILE.REQUIREMENT_FILE.replace('{userId}', this.user.userVO.id), formData, config).then((res) => {
  537. console.log('上传成功')
  538. this.project.requireDocUrl = res.data
  539. console.log(res.data)
  540. notify('success', '上传成功')
  541. }).catch(error => {
  542. notify('error', error.data)
  543. })
  544. },
  545. uploadApkFile(param) {
  546. const formData = new FormData()
  547. let config = {
  548. //添加请求头
  549. headers: {'Content-Type': 'multipart/form-data'},
  550. }
  551. formData.append('file', param.file)
  552. Http.upload(Apis.FILE.APK.replace('{userId}', this.user.userVO.id), formData, config).then((res) => {
  553. console.log('上传成功')
  554. this.project.fileUrl = res.data
  555. console.log(res)
  556. notify('success', '上传成功')
  557. }).catch(error => {
  558. notify('error', error.data)
  559. })
  560. },
  561. handleDialogClose(done) {
  562. this.hideDialog()
  563. this.project.excelFile = []
  564. // this.$confirm('确认退出?退出前请记录下登录账号和密码,否则无法找回!!!')
  565. // .then(_ => {
  566. // //done()
  567. // this.hideDialog()
  568. // })
  569. // .catch(_ => {
  570. // })
  571. },
  572. hindDialog(){
  573. this.hideDialog()
  574. },
  575. ensureSubmitExcel() {
  576. this.hideDialog()
  577. this.showLoading()
  578. this.project.excelFile = []
  579. Http.post(Apis.PROJECT.ADD_PROJECT_BY_EXCEL, this.projectList).then((res) => {
  580. notify('success', '添加成功')
  581. this.hideLoading()
  582. }).catch((error) => {
  583. notify('error', error.data)
  584. this.hideLoading()
  585. })
  586. },
  587. showDialog() {
  588. this.dialogVisible = true
  589. },
  590. hideDialog() {
  591. this.dialogVisible = false
  592. //this.resetForm()
  593. },
  594. setServiceType() {
  595. getAllServiceTypes().then((res) => {
  596. this.serviceType = res
  597. }).catch((error) => {
  598. notify('error', '获取服务类型出错')
  599. })
  600. },
  601. setPlatformType() {
  602. this.platforms = getAllPlatformTypes()
  603. },
  604. createProjectByFormSuccessConfirm() {
  605. this.$confirm('项目创建成功,是否跳转至主页?', '提示', {
  606. confirmButtonText: '跳转至主页',
  607. cancelButtonText: '继续创建项目',
  608. type: 'success'
  609. }).then(() => {
  610. this.$router.push({
  611. name: 'Home',
  612. // params: {projectId: projectId, taskId: taskId}
  613. })
  614. // this.$message({
  615. // type: 'success',
  616. // message: '删除成功!'
  617. // });
  618. }).catch(() => {
  619. this.resetForm()
  620. // this.$message({
  621. // type: 'info',
  622. // message: '已取消删除'
  623. // });
  624. })
  625. },
  626. resetForm() {
  627. this.project = {
  628. name: '',
  629. description: '',
  630. contactName: '',
  631. contactPhone: '',
  632. platform: [],
  633. type: [],
  634. requireDoc: [],
  635. requireDocUrl: '',
  636. file: [],
  637. fileUrl: '',
  638. excelFile: [],
  639. excelFileUrl: '',
  640. price: '',
  641. datetime: ''
  642. }
  643. },
  644. setUserInfo() {
  645. this.user = storageGet('user')
  646. },
  647. setTemplateExcel() {
  648. this.showLoading()
  649. getGreenChannelAddProjectExcelTemplateFile(this.setTemplateExcelSuccess, this.setTemplateExcelFail)
  650. },
  651. setTemplateExcelSuccess(res) {
  652. this.hideLoading()
  653. this.downloadFile = res.fileUrl
  654. },
  655. setTemplateExcelFail(error) {
  656. this.hideLoading()
  657. notify('error', '加载模板文件失败:' + error.data)
  658. },
  659. showLoading() {
  660. this.loading = true
  661. },
  662. hideLoading() {
  663. this.loading = false
  664. }
  665. },
  666. watch: {
  667. serviceType(val) {
  668. this.serviceType = val
  669. }
  670. },
  671. created: function () {
  672. }
  673. }
  674. </script>
  675. <style scoped>
  676. .el-radio {
  677. margin: 10px 20px 10px 0;
  678. }
  679. .el-form-item /deep/ .el-tabs__content {
  680. max-height: 120px !important;
  681. overflow: auto;
  682. }
  683. .el-row {
  684. margin-bottom: 10px;
  685. }
  686. .el-input {
  687. width: 400px;
  688. }
  689. </style>