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.

754 lines
25 KiB

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