plm前端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

751 lines
25 KiB

3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
2 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
2 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
  1. <template>
  2. <div class="mod-config">
  3. <el-dialog
  4. width="600px"
  5. :title="!dataForm.id ? '添加' :'编辑'"
  6. :close-on-click-modal="false"
  7. :visible.sync="visible">
  8. <el-form :inline="true" label-position="top" label-width="100px" :rules="projectRole">
  9. <el-form-item :label="'项目层级'" prop="projectLevel" :rules="projectRole.projectLevel">
  10. <el-select v-model="dataForm.projectLevel" style="width: 130px">
  11. <el-option label="一级" value=1></el-option>
  12. <el-option label="二级" value=2></el-option>
  13. <el-option label="三级" value=3></el-option>
  14. </el-select>
  15. </el-form-item>
  16. <el-form-item :label="'项目号'">
  17. <el-input v-model="dataForm.projectId" style="width: 130px" disabled></el-input>
  18. </el-form-item>
  19. <el-form-item prop="projectType" :rules="projectRole.projectType">
  20. <span slot="label" style="" @click="getBaseList(1010,1)"><a herf="#">项目类型</a></span>
  21. <el-input v-model="dataForm.projectType" style="width: 130px" readonly @focus="getBaseList(1010,1)"></el-input>
  22. </el-form-item>
  23. <el-form-item prop="customerName" :rules="projectRole.customerName">
  24. <span slot="label" style="" @click="getBaseList(102,1)"><a herf="#">所属客户</a></span>
  25. <el-input v-model="dataForm.customerName" style="width: 130px" readonly @focus="getBaseList(102,1)"></el-input>
  26. </el-form-item>
  27. </el-form>
  28. <el-form :inline="true" label-position="top" label-width="100px" :rules="projectRole">
  29. <el-form-item :label="'项目名称'" prop="projectName" :rules="projectRole.projectName">
  30. <el-input v-model="dataForm.projectName" style="width: 562px" ></el-input>
  31. </el-form-item>
  32. </el-form>
  33. <el-form :inline="true" label-position="top" label-width="100px" >
  34. <el-form-item :label="'项目描述'" >
  35. <el-input v-model="dataForm.projectDesc" style="width: 562px" ></el-input>
  36. </el-form-item>
  37. </el-form>
  38. <el-form :inline="true" label-position="top" label-width="100px" :rules="projectRole">
  39. <el-form-item prop="projectSourceDesc" :rules="projectRole.buDesc">
  40. <span slot="label" style="" @click="getBaseList(106,1)"><a herf="#">BU</a></span>
  41. <el-input v-model="dataForm.buDesc" style="width: 130px" readonly @focus="getBaseList(106,1)"></el-input>
  42. </el-form-item>
  43. <el-form-item prop="projectSourceDesc" :rules="projectRole.projectSourceDesc">
  44. <span slot="label" style="" @click="getBaseList(1011,1)"><a herf="#">项目来源</a></span>
  45. <el-input v-model="dataForm.projectSourceDesc" style="width: 130px" readonly @focus="getBaseList(1011,1)"></el-input>
  46. </el-form-item>
  47. <el-form-item prop="priorityDesc" :rules="projectRole.priorityDesc">
  48. <span slot="label" style="" @click="getBaseList(1012,1)"><a herf="#">优先级</a></span>
  49. <el-input v-model="dataForm.priorityDesc" style="width: 130px" readonly @focus="getBaseList(1012,1)"></el-input>
  50. </el-form-item>
  51. <el-form-item :label="'要求日期:'" prop="needDate" :rules="projectRole.needDate">
  52. <el-date-picker
  53. style="width: 130px"
  54. v-model="dataForm.needDate"
  55. type="date"
  56. value-format="yyyy-MM-dd"
  57. placeholder="选择日期">
  58. </el-date-picker>
  59. </el-form-item>
  60. </el-form>
  61. <el-form :inline="true" label-position="top" label-width="100px" :rules="projectRole">
  62. <el-form-item prop="projectManagerName" :rules="projectRole.projectManagerName">
  63. <span slot="label" style="" @click="managerChooseModal()"><a herf="#">项目经理</a></span>
  64. <el-input v-model="dataForm.projectManagerName" readonly style="width: 274px" @focus="managerChooseModal()"></el-input>
  65. </el-form-item>
  66. <el-form-item prop="projectOwnerName" :rules="projectRole.projectOwnerName">
  67. <span slot="label" style="" @click="ownerChooseModal()"><a herf="#">项目负责人</a></span>
  68. <el-input v-model="dataForm.projectOwnerName" readonly style="width: 274px" @focus="ownerChooseModal()"></el-input>
  69. </el-form-item>
  70. </el-form>
  71. <el-form :inline="true" label-position="top" label-width="100px" >
  72. <el-form-item :label="'客户应用/要求'">
  73. <el-input v-model="dataForm.customerRemark" style="width: 562px" ></el-input>
  74. </el-form-item>
  75. </el-form>
  76. <el-form :inline="true" label-position="top" label-width="100px" >
  77. <el-form-item :label="'其他要求'">
  78. <el-input v-model="dataForm.remark" style="width: 562px" ></el-input>
  79. </el-form-item>
  80. </el-form>
  81. <el-form :inline="true" label-position="top" label-width="100px" :rules="projectRole">
  82. <el-form-item prop="userRoleName" :rules="projectRole.userRoleName">
  83. <span slot="label" style="" @click="userRollModal()"><a herf="#">项目权限</a></span>
  84. <el-input v-model="dataForm.userRoleName" style="width: 562px" @focus="userRollModal()"></el-input>
  85. </el-form-item>
  86. </el-form>
  87. <span slot="footer" class="dialog-footer">
  88. <el-button type="primary" @click="dataFormSubmit()">{{'确定'}}</el-button>
  89. <el-button type="primary" @click="visible = false">{{'关闭'}}</el-button>
  90. </span>
  91. </el-dialog>
  92. <el-dialog
  93. width="530px"
  94. title="项目经理"
  95. :close-on-click-modal="false"
  96. :visible.sync="managerFlag">
  97. <el-transfer class="rq" filterable v-model="projectManagerList" :props="{
  98. key: 'operatorId',
  99. label: 'operatorName'
  100. }" :data="operatorList" :titles="['未选择', '已选择']"></el-transfer>
  101. <span slot="footer" class="dialog-footer">
  102. <div style="margin-top: 5px">
  103. <el-button type="primary" @click="saveManagerList()">确定</el-button>
  104. <el-button @click="managerFlag = false" type="primary">取消</el-button>
  105. </div>
  106. </span>
  107. </el-dialog>
  108. <el-dialog
  109. width="530px"
  110. title="项目负责人"
  111. :close-on-click-modal="false"
  112. :visible.sync="ownerFlag">
  113. <el-transfer class="rq" filterable v-model="projectOwnerList" :props="{
  114. key: 'operatorId',
  115. label: 'operatorName'
  116. }" :data="operatorList" :titles="['未选择', '已选择']"></el-transfer>
  117. <span slot="footer" class="dialog-footer">
  118. <div style="margin-top: 5px">
  119. <el-button type="primary" @click="saveOwnerList()">确定</el-button>
  120. <el-button @click="ownerFlag = false" type="primary">取消</el-button>
  121. </div>
  122. </span>
  123. </el-dialog>
  124. <el-dialog
  125. width="530px"
  126. title="权限"
  127. :close-on-click-modal="false"
  128. :visible.sync="userRoleFlag">
  129. <el-table
  130. :data="userRoleList"
  131. border
  132. :height="300"
  133. v-loading="false"
  134. style="width: 100%;">
  135. <el-table-column
  136. prop="username"
  137. header-align="center"
  138. align="center"
  139. min-width="35"
  140. label="账号">
  141. </el-table-column>
  142. <el-table-column
  143. prop="userDisplay"
  144. header-align="center"
  145. align="center"
  146. min-width="35"
  147. label="姓名">
  148. </el-table-column>
  149. <el-table-column
  150. prop=""
  151. header-align="center"
  152. align="center"
  153. min-width="30"
  154. label="">
  155. <template slot-scope="scope">
  156. <!-- 如果数据为Y显示勾选框否则不勾选 -->
  157. <el-checkbox v-model="scope.row.checkAll" @change="changeAll(scope.row)"></el-checkbox>
  158. </template>
  159. </el-table-column>
  160. <el-table-column
  161. prop=""
  162. header-align="center"
  163. align="center"
  164. min-width="30"
  165. label="查询">
  166. <template slot-scope="scope">
  167. <!-- 如果数据为Y显示勾选框否则不勾选 -->
  168. <el-checkbox v-model="scope.row.searchCheck" @change="changeCheck(scope.row,1)"></el-checkbox>
  169. </template>
  170. </el-table-column>
  171. <el-table-column
  172. prop=""
  173. header-align="center"
  174. align="center"
  175. min-width="30"
  176. label="修改">
  177. <template slot-scope="scope">
  178. <!-- 如果数据为Y显示勾选框否则不勾选 -->
  179. <el-checkbox v-model="scope.row.updateCheck" @change="changeCheck(scope.row,2)"></el-checkbox>
  180. </template>
  181. </el-table-column>
  182. <el-table-column
  183. prop=""
  184. header-align="center"
  185. align="center"
  186. min-width="30"
  187. label="下载">
  188. <template slot-scope="scope">
  189. <!-- 如果数据为Y显示勾选框否则不勾选 -->
  190. <el-checkbox v-model="scope.row.downCheck" @change="changeCheck(scope.row,3)"></el-checkbox>
  191. </template>
  192. </el-table-column>
  193. <el-table-column
  194. prop=""
  195. header-align="center"
  196. align="center"
  197. min-width="30"
  198. label="删除">
  199. <template slot-scope="scope">
  200. <!-- 如果数据为Y显示勾选框否则不勾选 -->
  201. <el-checkbox v-model="scope.row.deleteCheck" @change="changeCheck(scope.row,4)"></el-checkbox>
  202. </template>
  203. </el-table-column>
  204. </el-table>
  205. <span slot="footer" class="dialog-footer">
  206. <div style="margin-top: 5px">
  207. <el-button type="primary" @click="saveUserList()">确定</el-button>
  208. <el-button @click="userRoleFlag = false" type="primary">取消</el-button>
  209. </div>
  210. </span>
  211. </el-dialog>
  212. <Chooselist ref="baseList" @getBaseData="getBaseData"></Chooselist>
  213. </div>
  214. </template>
  215. <script>
  216. import {projectInfoSearch,
  217. searchOperatorWithSite,
  218. searchProjectTeamStr,
  219. searchUserRoll,
  220. saveProjectInfo,
  221. } from "@/api/project/project.js"
  222. import Chooselist from '@/views/modules/common/Chooselist'
  223. export default {
  224. components: {
  225. Chooselist
  226. },
  227. data () {
  228. return {
  229. tagNo:'',
  230. tagNo1:'',
  231. visible: false,
  232. treeVisible: false,
  233. managerFlag:false,
  234. userRoleFlag:false,
  235. ownerFlag:false,
  236. operatorList:[],
  237. dataForm: {
  238. id: 0,
  239. site:this.$store.state.user.site,
  240. projectLevel:1,
  241. projectId:'',
  242. projectTypeDb:'',
  243. projectType:'',
  244. customerName:'',
  245. customerId:'',
  246. projectName:'',
  247. projectDesc:'',
  248. needDate:'',
  249. priority:'',
  250. projectSource:'',
  251. priorityDesc:'',
  252. projectSourceDesc:'',
  253. projectManagerName:'',
  254. projectOwnerName:'',
  255. customerRemark:'',
  256. remark:'',
  257. userRoleName:'',
  258. projectManagerList:[],
  259. projectOwnerList:[],
  260. userRoleList:[],
  261. buNo:[],
  262. buDesc:[],
  263. },
  264. projectManagerList:[],
  265. projectOwnerList:[],
  266. userRoleList:[],
  267. projectRole: {
  268. projectLevel: [
  269. {
  270. required: true,
  271. message: ' ',
  272. trigger: 'change'
  273. }
  274. ],
  275. projectType: [
  276. {
  277. required: true,
  278. message: ' ',
  279. trigger: 'change'
  280. }
  281. ],
  282. customerName: [
  283. {
  284. required: true,
  285. message: ' ',
  286. trigger: 'change'
  287. }
  288. ],
  289. projectName: [
  290. {
  291. required: true,
  292. message: ' ',
  293. trigger: 'change'
  294. }
  295. ],
  296. buDesc: [
  297. {
  298. required: true,
  299. message: ' ',
  300. trigger: 'change'
  301. }
  302. ],
  303. projectSourceDesc: [
  304. {
  305. required: true,
  306. message: ' ',
  307. trigger: 'change'
  308. }
  309. ],
  310. priorityDesc: [
  311. {
  312. required: true,
  313. message: ' ',
  314. trigger: 'change'
  315. }
  316. ],
  317. needDate: [
  318. {
  319. required: true,
  320. message: ' ',
  321. trigger: 'change'
  322. }
  323. ],
  324. projectManagerName: [
  325. {
  326. required: true,
  327. message: ' ',
  328. trigger: 'change'
  329. }
  330. ],
  331. projectOwnerName: [
  332. {
  333. required: true,
  334. message: ' ',
  335. trigger: 'change'
  336. }
  337. ],
  338. userRoleName: [
  339. {
  340. required: true,
  341. message: ' ',
  342. trigger: 'change'
  343. }
  344. ],
  345. }
  346. }
  347. },
  348. created () {
  349. },
  350. methods: {
  351. // 获取基础数据列表S
  352. getBaseList (val, type) {
  353. this.tagNo = val
  354. this.tagNo1 = type
  355. this.$nextTick(() => {
  356. let strVal = ''
  357. if (val === 1010) {
  358. if(type==1) {
  359. strVal = this.dataForm.projectTypeDb
  360. }
  361. }
  362. if (val === 106) {
  363. if(type==1) {
  364. strVal = this.dataForm.buNo
  365. }
  366. }
  367. if (val === 102) {
  368. if(type==1) {
  369. strVal = this.dataForm.customerId
  370. }
  371. }
  372. if (val === 1011) {
  373. if(type==1) {
  374. strVal = this.dataForm.projectSource
  375. }
  376. }
  377. if (val === 1012) {
  378. if(type==1) {
  379. strVal = this.dataForm.priority
  380. }
  381. }
  382. this.$refs.baseList.init(val, strVal)
  383. })
  384. },
  385. /* 列表方法的回调 */
  386. getBaseData (val) {
  387. if (this.tagNo === 1010) {
  388. if(this.tagNo1==1) {
  389. this.dataForm.projectTypeDb = val.Base_id
  390. this.dataForm.projectType = val.Base_desc
  391. }
  392. }
  393. if (this.tagNo === 102) {
  394. if(this.tagNo1==1) {
  395. this.dataForm.customerId = val.Customer_no
  396. this.dataForm.customerName = val.Customer_desc
  397. }
  398. }
  399. if (this.tagNo === 1011) {
  400. if(this.tagNo1==1) {
  401. this.dataForm.projectSource = val.Base_id
  402. this.dataForm.projectSourceDesc = val.Base_desc
  403. }
  404. }
  405. if (this.tagNo === 1012) {
  406. if(this.tagNo1==1) {
  407. this.dataForm.priority = val.Base_id
  408. this.dataForm.priorityDesc = val.Base_desc
  409. }
  410. }
  411. if (this.tagNo === 106) {
  412. if(this.tagNo1==1) {
  413. this.dataForm.buNo = val.Bu_no
  414. this.dataForm.buDesc = val.Bu_desc
  415. }
  416. }
  417. },
  418. init (id) {
  419. this.dataForm.id = id || 0
  420. if(this.dataForm.id!=0){
  421. let inData={
  422. page: 1,
  423. limit: 10,
  424. id:id
  425. }
  426. projectInfoSearch(inData).then(({data}) => {
  427. if(data.page.list.length>0){
  428. this.dataForm= data.page.list[0];
  429. let inData={
  430. site:this.dataForm.site,
  431. projectId:this.dataForm.projectId,
  432. type:'manager',
  433. }
  434. searchProjectTeamStr(inData).then(({data}) => {
  435. this.dataForm.projectManagerList=data.rows
  436. })
  437. let inData2={
  438. site:this.dataForm.site,
  439. projectId:this.dataForm.projectId,
  440. type:'owner',
  441. }
  442. searchProjectTeamStr(inData2).then(({data}) => {
  443. this.dataForm.projectOwnerList=data.rows
  444. })
  445. let inData3={
  446. site:this.dataForm.site,
  447. projectId:this.dataForm.projectId,
  448. }
  449. searchUserRoll(inData3).then(({data}) => {
  450. this.dataForm.userRoleList=data.rows
  451. })
  452. }
  453. })
  454. }else {
  455. this.dataForm={
  456. id: 0,
  457. site:this.$store.state.user.site,
  458. projectLevel:1,
  459. projectId:'',
  460. projectTypeDb:'',
  461. projectType:'',
  462. customerName:'',
  463. customerId:'',
  464. projectName:'',
  465. projectDesc:'',
  466. needDate:'',
  467. priority:'',
  468. projectSource:'',
  469. priorityDesc:'',
  470. projectSourceDesc:'',
  471. projectManagerName:'',
  472. projectOwnerName:'',
  473. customerRemark:'',
  474. remark:'',
  475. userRoleName:'',
  476. projectManagerList:[],
  477. projectOwnerList:[],
  478. buNo:'',
  479. buDesc:'',
  480. }
  481. let inData={
  482. site:this.dataForm.site,
  483. projectId:this.dataForm.projectId,
  484. }
  485. searchUserRoll(inData).then(({data}) => {
  486. this.dataForm.userRoleList=data.rows
  487. })
  488. }
  489. this.visible = true
  490. },
  491. managerChooseModal(){
  492. let inData={
  493. site:this.dataForm.site,
  494. projectId:this.dataForm.projectId,
  495. }
  496. searchOperatorWithSite(inData).then(({data}) => {
  497. this.operatorList=data.rows
  498. })
  499. this.projectManagerList = JSON.parse(JSON.stringify(this.dataForm.projectManagerList));
  500. this.managerFlag=true
  501. },
  502. saveManagerList(){
  503. let projectManagerName='';
  504. for (let i = 0; i < this.projectManagerList.length; i++) {
  505. let select= this.operatorList.filter(item => item.operatorId === this.projectManagerList[i])
  506. if(select.length>0){
  507. projectManagerName+=select[0].operatorName+';'
  508. }
  509. }
  510. this.dataForm.projectManagerName=projectManagerName
  511. this.dataForm.projectManagerList=JSON.parse(JSON.stringify(this.projectManagerList));
  512. this.managerFlag=false
  513. },
  514. ownerChooseModal(){
  515. let inData={
  516. site:this.dataForm.site,
  517. projectId:this.dataForm.projectId,
  518. }
  519. searchOperatorWithSite(inData).then(({data}) => {
  520. this.operatorList=data.rows
  521. })
  522. this.projectOwnerList = JSON.parse(JSON.stringify(this.dataForm.projectOwnerList));
  523. this.ownerFlag=true
  524. },
  525. saveOwnerList(){
  526. let projectOwnerName='';
  527. for (let i = 0; i < this.projectOwnerList.length; i++) {
  528. let select= this.operatorList.filter(item => item.operatorId === this.projectOwnerList[i])
  529. if(select.length>0){
  530. projectOwnerName+=select[0].operatorName+';'
  531. }
  532. }
  533. this.dataForm.projectOwnerName=projectOwnerName
  534. this.dataForm.projectOwnerList=JSON.parse(JSON.stringify(this.projectOwnerList));
  535. this.ownerFlag=false
  536. },
  537. userRollModal(){
  538. this.userRoleList=JSON.parse(JSON.stringify(this.dataForm.userRoleList));
  539. for (let i = 0; i <this.userRoleList.length ; i++) {
  540. if(this.userRoleList[i].username==this.$store.state.user.name){
  541. this.userRoleList[i].searchCheck=true;
  542. this.userRoleList[i].updateCheck=true;
  543. this.userRoleList[i].downCheck=true;
  544. this.userRoleList[i].deleteCheck=true;
  545. this.userRoleList[i].searchFlag='Y'
  546. this.userRoleList[i].updateFlag='Y'
  547. this.userRoleList[i].downFlag='Y'
  548. this.userRoleList[i].deleteFlag='Y'
  549. }
  550. }
  551. this.userRoleFlag=true
  552. },
  553. saveUserList(){
  554. for (let i = 0; i <this.userRoleList.length ; i++) {
  555. if(this.userRoleList[i].username==this.$store.state.user.name){
  556. this.userRoleList[i].searchCheck=true;
  557. this.userRoleList[i].updateCheck=true;
  558. this.userRoleList[i].downCheck=true;
  559. this.userRoleList[i].deleteCheck=true;
  560. this.userRoleList[i].searchFlag='Y'
  561. this.userRoleList[i].updateFlag='Y'
  562. this.userRoleList[i].downFlag='Y'
  563. this.userRoleList[i].deleteFlag='Y'
  564. }
  565. }
  566. let name= '';
  567. for (let i = 0; i < this.userRoleList.length; i++) {
  568. if(this.userRoleList[i].searchCheck||this.userRoleList[i].updateCheck||this.userRoleList[i].downCheck||this.userRoleList[i].deleteCheck){
  569. name+=this.userRoleList[i].userDisplay+';'
  570. }
  571. }
  572. this.dataForm.userRoleName=name
  573. this.dataForm.userRoleList=JSON.parse(JSON.stringify(this.userRoleList));
  574. this.userRoleFlag=false
  575. },
  576. changeAll(row){
  577. if(row.checkAll){
  578. row.searchCheck=true;
  579. row.updateCheck=true;
  580. row.downCheck=true;
  581. row.deleteCheck=true;
  582. row.searchFlag='Y'
  583. row.updateFlag='Y'
  584. row.downFlag='Y'
  585. row.deleteFlag='Y'
  586. }else {
  587. row.searchCheck=false;
  588. row.updateCheck=false;
  589. row.downCheck=false;
  590. row.deleteCheck=false;
  591. row.searchFlag='N'
  592. row.updateFlag='N'
  593. row.downFlag='N'
  594. row.deleteFlag='N'
  595. }
  596. },
  597. changeCheck(row,type){
  598. if(type==1){
  599. if(row.searchCheck){
  600. row.searchFlag='Y'
  601. }else {
  602. row.searchFlag='N'
  603. }
  604. }
  605. if(type==2){
  606. if(row.updateCheck){
  607. row.updateFlag='Y'
  608. }else {
  609. row.updateFlag='N'
  610. }
  611. }
  612. if(type==3){
  613. if(row.downCheck){
  614. row.downFlag='Y'
  615. }else {
  616. row.downFlag='N'
  617. }
  618. }
  619. if(type==4){
  620. if(row.deleteCheck){
  621. row.deleteFlag='Y'
  622. }else {
  623. row.deleteFlag='N'
  624. }
  625. }
  626. if(row.searchCheck&&row.updateCheck&&row.downCheck&&row.deleteCheck){
  627. row.checkAll=true
  628. }else{
  629. row.checkAll=false
  630. }
  631. this.$forceUpdate();
  632. },
  633. // 表单提交
  634. dataFormSubmit () {
  635. if(this.dataForm.projectTypeDb==''||this.dataForm.projectTypeDb==null){
  636. this.$alert('请选择项目类型!', '错误', {
  637. confirmButtonText: '确定'
  638. })
  639. return false;
  640. }
  641. if(this.dataForm.customerId==''||this.dataForm.customerId==null){
  642. this.$alert('请选择所属客户!', '错误', {
  643. confirmButtonText: '确定'
  644. })
  645. return false;
  646. }
  647. if(this.dataForm.projectName==''||this.dataForm.projectName==null){
  648. this.$alert('请输入项目名称!', '错误', {
  649. confirmButtonText: '确定'
  650. })
  651. return false;
  652. }
  653. if(this.dataForm.projectSource==''||this.dataForm.projectSource==null){
  654. this.$alert('请选择项目来源!', '错误', {
  655. confirmButtonText: '确定'
  656. })
  657. return false;
  658. }
  659. if(this.dataForm.buDesc==''||this.dataForm.buDesc==null){
  660. this.$alert('请选择BU!', '错误', {
  661. confirmButtonText: '确定'
  662. })
  663. return false;
  664. }
  665. if(this.dataForm.priority==''||this.dataForm.priority==null){
  666. this.$alert('请选择优先级!', '错误', {
  667. confirmButtonText: '确定'
  668. })
  669. return false;
  670. }
  671. if(this.dataForm.needDate==''||this.dataForm.needDate==null){
  672. this.$alert('请选择要求日期!', '错误', {
  673. confirmButtonText: '确定'
  674. })
  675. return false;
  676. }
  677. if(this.dataForm.projectManagerName==''||this.dataForm.projectManagerName==null){
  678. this.$alert('请选择项目经理!', '错误', {
  679. confirmButtonText: '确定'
  680. })
  681. return false;
  682. }
  683. if(this.dataForm.projectOwnerName==''||this.dataForm.projectOwnerName==null){
  684. this.$alert('请选择项目负责人!', '错误', {
  685. confirmButtonText: '确定'
  686. })
  687. return false;
  688. }
  689. if(this.dataForm.userRoleName==''||this.dataForm.userRoleName==null){
  690. this.$alert('请选择权限!', '错误', {
  691. confirmButtonText: '确定'
  692. })
  693. return false;
  694. }
  695. saveProjectInfo(this.dataForm).then(({data}) => {
  696. if (data && data.code === 0) {
  697. this.$message.success( '操作成功')
  698. this.visible = false
  699. this.$emit('refreshDataList')
  700. } else {
  701. this.$message.error(data.msg)
  702. }
  703. })
  704. },
  705. },
  706. }
  707. </script>
  708. <style >
  709. .el-transfer-panel {
  710. border: 2px solid #17b3a3;
  711. border-radius: 4px;
  712. overflow: hidden;
  713. background: #fff;
  714. display: inline-block;
  715. vertical-align: middle;
  716. width: 200px;
  717. max-height: 100%;
  718. -webkit-box-sizing: border-box;
  719. box-sizing: border-box;
  720. position: relative;
  721. }
  722. .el-transfer-panel .el-transfer-panel__header {
  723. height: 40px;
  724. line-height: 40px;
  725. background: #17b3a3;
  726. margin: 0;
  727. padding-left: 15px;
  728. border-bottom: 1px solid #17b3a3;
  729. -webkit-box-sizing: border-box;
  730. box-sizing: border-box;
  731. color: #000;
  732. }
  733. .el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label {
  734. font-size: 14px;
  735. color: #303133;
  736. font-weight: 400;
  737. }
  738. </style>