projectApplicationMakerSpaceDetails.vue 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820
  1. <template>
  2. <!-- 项目立项申请查看详细项目基本内容 -->
  3. <div class="projectApplication1" v-loading="loading">
  4. <!-- 活动申请填写信息区域开始 -->
  5. <div class="select">
  6. <div class="selectTop">
  7. <div class="label">项目名称</div>
  8. <el-input v-model="select.project" placeholder="请输入内容"></el-input>
  9. </div>
  10. <div class="selectMid">
  11. <div class="selectLeft">
  12. <div class="inpBlock">
  13. <div class="label">负责人</div>
  14. <el-input v-model="select.person" placeholder="请输入内容"></el-input>
  15. </div>
  16. <div class="inpBlock">
  17. <div class="label">所在部门</div>
  18. <el-select v-model="select.departmentData" style="width: 100%;" placeholder="请选择">
  19. <el-option
  20. v-for="item in select.department"
  21. :key="item.id"
  22. :label="item.name"
  23. :value="item.id">
  24. </el-option>
  25. </el-select>
  26. </div>
  27. <div class="inpBlock">
  28. <div class="label">学院牵头领导</div>
  29. <el-input v-model="select.lead_leader" placeholder="请输入学院牵头领导"></el-input>
  30. </div>
  31. </div>
  32. <div class="selectRight">
  33. <div class="inpBlock">
  34. <div class="label">项目时间</div>
  35. <el-date-picker
  36. v-model="select.Date"
  37. type="daterange"
  38. style="width: 100%;"
  39. value-format="yyyy-MM-dd HH:mm:ss"
  40. range-separator="至"
  41. start-placeholder="项目起始时间"
  42. end-placeholder="项目完成时间">
  43. </el-date-picker>
  44. <!-- <el-date-picker
  45. v-model="select.Date"
  46. type="datetime"
  47. style="width: 100%;"
  48. value-format="yyyy-MM-dd HH:mm:ss"
  49. placeholder="选择日期">
  50. </el-date-picker> -->
  51. </div>
  52. <div class="inpBlock">
  53. <div class="label">预算总经费</div>
  54. <el-input type="number" v-model.number="select.Fund" placeholder="请输入内容"></el-input>
  55. </div>
  56. <div class="inpBlock">
  57. <div class="label">选择分类</div>
  58. <el-cascader disabled="" v-model="select.sort" :options="select.sortOptions" clearable></el-cascader>
  59. </div>
  60. </div>
  61. </div>
  62. </div>
  63. <!-- 活动申请填写信息区域结束 -->
  64. <!-- 项目封面修改上传开始 -->
  65. <div style="height: 260px;">
  66. <div class="tabTit">
  67. <div><p>封面上传</p></div>
  68. </div>
  69. <hr>
  70. <div style="margin-bottom: 10px;">修改项目封面</div>
  71. <el-progress v-show="progress.show" :percentage="progress.value" :format="ProgressFormat"></el-progress>
  72. <el-upload
  73. class="avatar-uploader"
  74. action="#"
  75. disabled
  76. style="position: relative;"
  77. :show-file-list="false"
  78. >
  79. <img v-if="dialogImageUrl" :src="dialogImageUrl" class="avatar">
  80. <i v-else class="el-icon-plus avatar-uploader-icon"></i>
  81. <BeUpload :progress="progress" style="position:absolute; width: 301px;height: 180px; opacity: 0;z-index:333;left: 0px;top: 0;" @getFile="getFile" class="uploadPic" :navName="'上传封面'" :accept="accept"></BeUpload>
  82. </el-upload>
  83. </div>
  84. <!-- 项目封面修改上传开始结束 -->
  85. <!-- 项目教师开始 -->
  86. <div class="tabTit">
  87. <div><p>项目组-教师团队</p><span>(团队3人以上,至少应包含1名教研室主任)</span></div>
  88. <el-button type="primary" @click="addMember" size="mini">添加教师</el-button>
  89. </div>
  90. <hr>
  91. <el-table
  92. :data="teacherData"
  93. tooltip-effect="dark"
  94. stripe
  95. class="fontSize"
  96. :header-cell-style="{ background: '#f2f2f2',color:'#000' }"
  97. >
  98. <el-table-column
  99. prop="name"
  100. label="姓名"
  101. align="center"
  102. >
  103. </el-table-column>
  104. <el-table-column
  105. prop="speciality"
  106. label="专业"
  107. align="center"
  108. >
  109. </el-table-column>
  110. <el-table-column
  111. prop="title"
  112. label="职称"
  113. align="center"
  114. >
  115. </el-table-column>
  116. <el-table-column
  117. prop="education"
  118. label="学历"
  119. align="center"
  120. >
  121. </el-table-column>
  122. <el-table-column
  123. prop="section"
  124. label="所在教研室"
  125. align="center"
  126. >
  127. </el-table-column>
  128. <el-table-column
  129. prop="work"
  130. label="项目组任务分工"
  131. align="center"
  132. >
  133. </el-table-column>
  134. <el-table-column
  135. prop="operation"
  136. align="center"
  137. label="操作"
  138. >
  139. <template #default="scope">
  140. <div class="operations">
  141. <!-- <el-button type="primary" @click="lookDetail(scope)" size="mini">查看详情</el-button> -->
  142. <el-button type="primary" @click="amendDialogData(scope.$index)" size="mini">修改</el-button>
  143. <el-button type="primary" @click="Del(scope.$index)" size="mini">删除</el-button>
  144. </div>
  145. </template>
  146. </el-table-column>
  147. </el-table>
  148. <!-- 项目教师结束 -->
  149. <!-- 项目学生开始 -->
  150. <div class="tabTit">
  151. <div><p>项目组-学生团队</p><span>(团队5人以上,学生团队年级结构安排合理)</span></div>
  152. <el-button type="primary" @click="addMemberStudent" size="mini">添加学生</el-button>
  153. </div>
  154. <hr>
  155. <el-table
  156. :data="studentData"
  157. tooltip-effect="dark"
  158. stripe
  159. class="fontSize"
  160. :header-cell-style="{ background: '#f2f2f2',color:'#000' }"
  161. >
  162. <el-table-column
  163. prop="name"
  164. label="姓名"
  165. align="center"
  166. >
  167. </el-table-column>
  168. <el-table-column
  169. prop="class"
  170. label="班级"
  171. align="center"
  172. >
  173. </el-table-column>
  174. <el-table-column
  175. prop="age"
  176. label="年龄"
  177. align="center"
  178. >
  179. </el-table-column>
  180. <el-table-column
  181. prop="work"
  182. label="项目组任务分工"
  183. align="center"
  184. >
  185. </el-table-column>
  186. <el-table-column
  187. prop="operation"
  188. align="center"
  189. label="操作"
  190. >
  191. <template #default="scope">
  192. <div class="operations">
  193. <el-button type="primary" @click="updateStudent(scope.$index)" size="mini">修改</el-button>
  194. <el-button type="primary" @click="DelStudent(scope.$index)" size="mini">删除</el-button>
  195. </div>
  196. </template>
  197. </el-table-column>
  198. </el-table>
  199. <!-- 项目学生结束 -->
  200. <!-- 项目简介开始 -->
  201. <div class="tabTit">
  202. <div><p>项目简介</p></div>
  203. </div>
  204. <hr>
  205. <el-input
  206. type="textarea"
  207. :rows="6"
  208. resize="none"
  209. class="textArea"
  210. placeholder="请输入内容"
  211. v-model="textarea">
  212. </el-input>
  213. <!-- 项目简介结束 -->
  214. <div class="baseBtn">
  215. <div class="blockWidth">
  216. <!-- <el-button type="primary" class="backBtn" @click="audit">立即修改</el-button> -->
  217. <el-button v-show="isUpload==0" type="primary" class="backBtn" @click="submitHint=true">立即修改</el-button>
  218. <!-- <el-button v-show="isUpload==1" type="primary" class="backBtn" disabled style="background: #ccc !important;border: none;">立即修改</el-button> -->
  219. <el-button v-show="isUpload!=0" type="primary" class="backBtn" disabled style="background: #ccc !important;border: none;">立即修改</el-button>
  220. </div>
  221. </div>
  222. <!--添加教师dialog对话框开始 -->
  223. <el-dialog
  224. :title= "isAddMember==1?'添加教师':'修改教师'"
  225. :visible.sync="addMemberDialog"
  226. :modal="true"
  227. :close-on-click-modal="true"
  228. class="AddMember">
  229. <div class="littleBlock">
  230. <div class="dialogLabel">姓名</div>
  231. <div>
  232. <el-input v-model="teacher.name" placeholder="请输入教师姓名"></el-input>
  233. </div>
  234. </div>
  235. <div class="littleBlock">
  236. <div class="dialogLabel">专业</div>
  237. <div>
  238. <el-input v-model="teacher.speciality" placeholder="请输入教师专业"></el-input>
  239. </div>
  240. </div>
  241. <div class="littleBlock">
  242. <div class="dialogLabel">职称</div>
  243. <div>
  244. <el-input v-model="teacher.title" placeholder="请输入教师职称"></el-input>
  245. </div>
  246. </div>
  247. <div class="littleBlock">
  248. <div class="dialogLabel">学历</div>
  249. <div>
  250. <el-input v-model="teacher.education" placeholder="请输入教师学历"></el-input>
  251. </div>
  252. </div>
  253. <div class="littleBlock">
  254. <div class="dialogLabel" style="transform: translate(0,0);">所在教研室</div>
  255. <div>
  256. <el-input v-model="teacher.section" placeholder="请输入所在教研室"></el-input>
  257. </div>
  258. </div>
  259. <div class="littleBlock">
  260. <div class="dialogLabel" style="transform: translate(0,0);">项目组角色分工</div>
  261. <div>
  262. <el-input v-model="teacher.work" placeholder="请输入项目组角色分工"></el-input>
  263. </div>
  264. </div>
  265. <div slot="footer" class="footer">
  266. <el-button v-show="isAddMember==1" type="primary" @click="commit" class="AllDialogBtn" >确认提交</el-button>
  267. <el-button v-show="isAddMember==2" type="primary" @click="commit2" class="AllDialogBtn" >确认修改</el-button>
  268. <el-button @click="addMemberDialog = false" class="AllDialogBtn">取消</el-button>
  269. </div>
  270. </el-dialog>
  271. <!--添加教师dialog对话框结束 -->
  272. <!-- 添加学生dialog对话框开始 -->
  273. <el-dialog
  274. :title= "isAddStudent==1?'添加学生':'修改学生'"
  275. :visible.sync="addStudentDialog"
  276. :modal="true"
  277. :close-on-click-modal="true"
  278. class="AddMember">
  279. <div class="littleBlock">
  280. <div class="dialogLabel">姓名</div>
  281. <div>
  282. <el-input v-model="student.name" placeholder="请输入学生姓名"></el-input>
  283. </div>
  284. </div>
  285. <div class="littleBlock">
  286. <div class="dialogLabel">班级</div>
  287. <div>
  288. <el-input v-model="student.class" placeholder="请输入学生班级"></el-input>
  289. </div>
  290. </div>
  291. <div class="littleBlock">
  292. <div class="dialogLabel">年龄</div>
  293. <div>
  294. <el-input v-model="student.age" placeholder="请输入学生年龄"></el-input>
  295. </div>
  296. </div>
  297. <div class="littleBlock">
  298. <div class="dialogLabel" style="transform: translate(0,0);">项目组角色分工</div>
  299. <div>
  300. <el-input v-model="student.work" placeholder="请输入项目组角色分工"></el-input>
  301. </div>
  302. </div>
  303. <div slot="footer" class="footer">
  304. <el-button v-show="isAddStudent==1" type="primary" @click="commitStudent" class="AllDialogBtn" >确认提交</el-button>
  305. <el-button v-show="isAddStudent==2" type="primary" @click="commitStudent2" class="AllDialogBtn" >确认修改</el-button>
  306. <el-button @click="addStudentDialog=false" class="AllDialogBtn">取消</el-button>
  307. </div>
  308. </el-dialog>
  309. <!-- 添加学生dialog对话框结束 -->
  310. <!-- 删除教师对话框开始 -->
  311. <el-dialog
  312. title="删除教师"
  313. :visible.sync="delMember"
  314. width="600px"
  315. class="delMemberDialog">
  316. <span class="deleteContent">确定删除该教师?</span>
  317. <span slot="footer" class="dialog-footer">
  318. <el-button type="primary" @click="commitDelMember" class="AllDialogBtn">确认删除</el-button>
  319. <el-button @click="delMember=false" class="AllDialogBtn" >取消</el-button>
  320. </span>
  321. </el-dialog>
  322. <!-- 删除教师对话框结束 -->
  323. <!-- 删除学生成员对话框开始 -->
  324. <el-dialog
  325. title="删除学生成员"
  326. :visible.sync="DelStudentDialog"
  327. width="600px"
  328. class="delMemberDialog">
  329. <span class="deleteContent">确定删除该学生成员?</span>
  330. <span slot="footer" class="dialog-footer">
  331. <el-button type="primary" @click="commitDelStudent" class="AllDialogBtn">确认删除</el-button>
  332. <el-button @click="DelStudentDialog = false" class="AllDialogBtn" >取消</el-button>
  333. </span>
  334. </el-dialog>
  335. <!-- 删除学生成员对话框结束 -->
  336. <!-- 修改对话框开始 -->
  337. <el-dialog
  338. title="提示"
  339. :visible.sync="submitHint"
  340. width="600px"
  341. class="projectApplicationfundAddDialog">
  342. <div class="addDialogLogo">LOGO</div>
  343. <div class="deleteContent">确定修改项目基本信息?</div>
  344. <span slot="footer" class="dialog-footer">
  345. <el-button type="primary" @click="submitAll" class="AllDialogBtn">确认提交</el-button>
  346. <el-button @click="submitHint = false" size="small" class="AllDialogBtn">取消</el-button>
  347. </span>
  348. </el-dialog>
  349. <!-- 修改对话框结束 -->
  350. </div>
  351. </template>
  352. <script>
  353. import BeUpload from "@/components/tool/beUpload.vue";
  354. export default {
  355. components: {
  356. BeUpload,
  357. },
  358. data() {
  359. return {
  360. iid:'',
  361. isUpload:'',
  362. accept:"image/*",
  363. isAddMember:1,
  364. isAddStudent:1,
  365. progress:{ //进度条
  366. value:0,
  367. show:false
  368. },
  369. dialogImageUrl:'', //图片地址
  370. index:0,
  371. delMember:false,
  372. DelStudentDialog:false,
  373. amendMemberDialog:false,
  374. addMemberDialog:false,
  375. addStudentDialog:false,
  376. submitHint:false,
  377. loading:false,
  378. select:{ //数据详情框数据
  379. project:'',
  380. person:'',
  381. departmentData:"", //部门框值
  382. sort:[], //分类值
  383. tel:'',
  384. Date:'',
  385. Fund:'',
  386. sortOptions: [],//分类
  387. department:[],
  388. },
  389. textarea:'', //项目简介
  390. teacherData:[], //成员列表数据
  391. studentData:[],
  392. addTabMember:{ //添加项目成员
  393. // id:'',
  394. name:'',
  395. class:'',
  396. phone:'',
  397. score:0
  398. },
  399. teacher:{ //添加老师团队表
  400. name:"", //姓名
  401. speciality:"",//专业
  402. title:"",//职称
  403. education:"",//学历
  404. section:"",//所在教研室
  405. work:"",//项目组角色分工
  406. },
  407. student:{ //添加学生团队表
  408. name:"",//姓名
  409. class:"",//班级
  410. age:"",//年龄
  411. work:'',//项目组任务分工
  412. }
  413. }
  414. },
  415. methods:{
  416. addMemberStudent(){//添加项目组-学生成员
  417. this.isAddStudent=1;
  418. this.addStudentDialog = true;
  419. },
  420. commitStudent(){//确定添加学生
  421. for(let i in this.student){if(this.student[i]==''||this.student[i]==undefined)return this.$message.error("请填完所有内容");}
  422. let newData={};
  423. for(let a in this.student)newData[a] = this.student[a];
  424. this.studentData.push(newData);
  425. this.$message.success("添加成功");
  426. this.addStudentDialog = false;
  427. //清空表单
  428. for(let j in this.student)this.student[j]='';
  429. },
  430. updateStudent(val){ //修改学生信息
  431. Object.assign(this.student,this.studentData[val]);
  432. this.isAddStudent=2;
  433. this.index=val;
  434. this.addStudentDialog = true;
  435. },
  436. commitStudent2(){//确定修改学生
  437. Object.assign(this.studentData[this.index],this.student)
  438. this.addStudentDialog=false;
  439. for(let k in this.student) this.student[k]=''
  440. this.$message.success('修改成功')
  441. },
  442. DelStudent(val){//删除学生对话框
  443. this.index = val;
  444. this.DelStudentDialog=true;
  445. },
  446. commitDelStudent(){ //对话框确定删除学生成员
  447. this.studentData.splice(this.index,1);
  448. this.$message.success('删除成功');
  449. this.DelStudentDialog=false;
  450. },
  451. addMember(){ //添加教师按钮,显示对话框
  452. this.addMemberDialog=true;
  453. this.isAddMember=1;
  454. },
  455. commit(){ //确定添加教师
  456. for(let i in this.teacher){if(this.teacher[i]==''||this.teacher[i]==undefined)return this.$message.error("请填完所有内容");}
  457. let newData = {};
  458. for(let a in this.teacher)newData[a] = this.teacher[a];
  459. this.teacherData.push(newData);
  460. this.$message.success('添加成功');
  461. this.addMemberDialog = false;
  462. for(let j in this.teacher)this.teacher[j]='';
  463. },
  464. amendDialogData(val){ //修改项目成员信息对话框显示
  465. Object.assign(this.teacher,this.teacherData[val])
  466. this.isAddMember=2;
  467. this.index=val;
  468. this.addMemberDialog=true;
  469. },
  470. commit2(){ //确定修改老师
  471. Object.assign(this.teacherData[this.index],this.teacher)
  472. for(let k in this.teacher) this.teacher[k]=''
  473. this.addMemberDialog=false;
  474. this.$message.success('修改成功')
  475. },
  476. Del(val){ //删除老师按钮
  477. this.index=val;
  478. this.delMember=true;
  479. },
  480. commitDelMember(){ //确定删除老师按钮
  481. this.teacherData.splice(this.index,1)
  482. this.$message.success('删除成功')
  483. this.delMember=false;
  484. },
  485. ProgressFormat(value){ //进度条
  486. return value ==100?'100%':`${value}%`
  487. },
  488. getFile(val) { //上传封面
  489. this.progress.show = false;
  490. this.dialogImageUrl=val.url
  491. },
  492. audit(){ //立即修改对话框显示
  493. this.submitHint=true
  494. },
  495. submitAll(){
  496. let param = {
  497. uid:this.$store.state.userInfo.userid,
  498. pid:JSON.parse(localStorage.getItem('pid')),
  499. title:this.select.project,
  500. pro_leader:this.select.person,
  501. lead_leader:this.select.lead_leader,
  502. startTime:this.select.Date[0],
  503. endTime:this.select.Date[1],
  504. cid:this.select.departmentData,
  505. fund:this.select.Fund,
  506. img:this.dialogImageUrl,
  507. teacher:JSON.stringify(this.teacherData),
  508. student:JSON.stringify(this.studentData),
  509. brief:this.textarea,
  510. }
  511. //判断数据
  512. const cEmpty = /^\s*$/g;
  513. for(let i in param){
  514. switch(i){
  515. case 'title':
  516. if(cEmpty.test(param[i]))return this.$message.error("项目名称不能为空")
  517. break;
  518. case 'pro_leader':
  519. if(cEmpty.test(param[i]))return this.$message.error("项目负责人不能为空")
  520. break;
  521. case 'startTime':
  522. if(cEmpty.test(param[i]))return this.$message.error("请选择项目开始时间")
  523. break;
  524. case 'endTime':
  525. if(cEmpty.test(param[i]))return this.$message.error("请选择项目计划结束时间")
  526. break
  527. case 'cid':
  528. if(cEmpty.test(param[i]))return this.$message.error("请选择项目所属部门")
  529. break;
  530. case "lead_leader":
  531. if(cEmpty.test(param[i]))return this.$message.error("请输入学院牵头领导")
  532. break;
  533. case 'img':
  534. if(cEmpty.test(param[i]))return this.$message.error("请选择项目封面图片")
  535. break;
  536. case 'teacher':
  537. if(JSON.parse(param[i]).length<3)return this.$message.error("需要教师团队3人以上,至少应包含1名教研室主任")
  538. break;
  539. case 'student':
  540. if(JSON.parse(param[i]).length<5)return this.$message.error("需要学生团队5人以上")
  541. break;
  542. case 'brief':
  543. if(param[i].length<200&&param[i]<=300)return this.$message.error("项目简介需要200-300字")
  544. break;
  545. }
  546. }
  547. this.ajax.post(this.$store.state.api+'/UpdateProjectMakerSpaceBase',param).then(res=>{
  548. if(res.data==1){
  549. this.$message.success("修改项目信息成功")
  550. }else{
  551. this.$message.error('修改项目信息失败')
  552. }
  553. this.submitHint = false;
  554. this.getData();
  555. }).catch(err=>{
  556. console.log(err)
  557. })
  558. },
  559. getData(){ //初始化完成获取基本数据进行填充
  560. this.loading = true;
  561. let param={
  562. uid:this.$store.state.userInfo.userid,
  563. pid:JSON.parse(localStorage.getItem('pid'))
  564. }
  565. this.ajax
  566. .get(this.$store.state.api+'/SelectProjectMakerSpace',param)
  567. .then(res=>{
  568. let data=res.data[0][0]
  569. this.select.project=data.title;
  570. this.select.Fund=data.fund;
  571. this.select.person=data.pro_leader;
  572. this.select.Date=[data.begintime,data.planTime];
  573. this.textarea=data.brief;
  574. this.dialogImageUrl=data.image;
  575. this.select.departmentData = data['classid']
  576. this.select.sort = [data['typeid'],data['typeName']]
  577. this.isUpload=data['isupload']
  578. this.select.lead_leader = data['lead_leader']
  579. this.teacherData = JSON.parse(data['course_teacher'])
  580. this.studentData = JSON.parse(data['course_student'])
  581. this.loading = false;
  582. },err=>{
  583. console.log(err);
  584. })
  585. },
  586. getProjectDepartmentData(){ //获取项目立项申请基础信息页面所在部门数据
  587. let param={
  588. uid:this.$store.state.userInfo.userid
  589. }
  590. this.ajax
  591. .get(this.$store.state.api+'/SelectAllDepartment',param)
  592. .then(res=>{
  593. this.select.department=res.data[0]
  594. },err=>{
  595. console.log(err);
  596. })
  597. },
  598. getProjectTypeData(){ //获取项目立项申请基础信息页面分类数据
  599. let TypeList = [];
  600. let param={
  601. uid:this.$store.state.userInfo.userid
  602. }
  603. this.ajax
  604. .get(this.$store.state.api+'/SelectAllType',param)
  605. .then(res=>{
  606. //获取主分类
  607. let master = res.data[0].filter(item=>item['pid']=='');
  608. //获取子分类
  609. let minion = res.data[0].filter(item=>item['pid']!='');
  610. master.forEach(item=>{
  611. let type = {
  612. value:item['id'],
  613. label:item['name'],
  614. children:[],
  615. }
  616. minion.forEach(min=>{
  617. if(min['pid']==item['id']){
  618. let minType = {
  619. value:min['id'],
  620. label:min['name']
  621. }
  622. type['children'].push(minType);
  623. }
  624. })
  625. TypeList.push(type);
  626. })
  627. this.select.sortOptions = TypeList;
  628. console.log(this.select)
  629. },err=>{
  630. console.log(err);
  631. })
  632. },
  633. },
  634. mounted(){ //数据加载完成后触发
  635. this.getData();
  636. this.getProjectDepartmentData();
  637. this.getProjectTypeData();
  638. },
  639. }
  640. </script>
  641. <style lang="less">
  642. .projectApplication1{
  643. .avatar-uploader .el-upload {
  644. border: 1px dashed #d9d9d9;
  645. border-radius: 6px;
  646. cursor: pointer;
  647. // position: relative;
  648. overflow: hidden;
  649. }
  650. .avatar-uploader .el-upload:hover {
  651. border-color: #409EFF;
  652. }
  653. .avatar-uploader-icon {
  654. font-size: 28px;
  655. color: #8c939d;
  656. width: 300px;
  657. // height: 100%;
  658. line-height: 178px;
  659. text-align: center;
  660. }
  661. .avatar {
  662. width: 300px;
  663. height:178px !important;
  664. display: block;
  665. }
  666. .delMemberDialog{ //删除对话框
  667. .el-dialog{
  668. border-radius: 5px;
  669. overflow: hidden;
  670. }
  671. .deleteContent{
  672. margin: 30px 0;
  673. font-size: 22px;
  674. color: #000;
  675. }
  676. .el-dialog__header{
  677. background: #32455b;
  678. display: flex;
  679. justify-content: center;
  680. }
  681. .el-dialog__title{
  682. color:#fff;
  683. display: flex;
  684. justify-content: center;
  685. font-size: 18px;
  686. position: relative;
  687. top: -2px;
  688. }
  689. .el-dialog__body{
  690. display: flex;
  691. justify-content: center;
  692. }
  693. .dialog-footer{
  694. display: flex;
  695. justify-content: center;
  696. box-sizing: border-box;
  697. }
  698. }
  699. //项目修改对话框开始
  700. .projectApplicationfundAddDialog{
  701. .el-dialog__header{
  702. background: #32455b;
  703. }
  704. .el-dialog{
  705. border-radius:5px ;
  706. overflow: hidden;
  707. }
  708. .deleteContent{
  709. width: 100%;
  710. text-align: center;
  711. font-size: 22px;
  712. color: #000;
  713. }
  714. .addDialogLogo{
  715. width: 60px;
  716. height: 30px;
  717. border-radius: 5px;
  718. display: flex;
  719. justify-content: center;
  720. line-height: 30px;
  721. background: #f2f2f2;
  722. position: absolute;
  723. left: 20px; top: 15px;
  724. }
  725. .el-dialog__title{
  726. color:#fff;
  727. display: flex;
  728. justify-content: center;
  729. font-size: 18px;
  730. position: relative;
  731. top: -2px;
  732. }
  733. .addDialogMid{
  734. box-sizing: border-box;
  735. padding:0 60px 0 10px;
  736. .addDialogTit{
  737. display: flex;
  738. span{
  739. width: 80px;
  740. line-height: 40px;
  741. text-align: left;
  742. }
  743. }
  744. .addDialogTit1{
  745. display: flex;
  746. justify-content: space-between;
  747. margin-bottom: 15px;
  748. }
  749. .addDialogTit2{
  750. margin-top: 10px;
  751. font-size: 18px;
  752. color: #000;
  753. text-indent: 2em;
  754. }
  755. .addDialogCon{
  756. margin-top: 20px;
  757. }
  758. }
  759. .dialog-footer{
  760. display: flex;
  761. justify-content: center;
  762. }
  763. }
  764. }
  765. </style>