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.

1074 lines
35 KiB

  1. <script>
  2. import {getAllBuList} from "../../../api/factory/site";
  3. import {
  4. cancelPurchaseOrder,
  5. closePurchaseOrder,
  6. queryPurchaseOrder, queryPurchaseOrder2,
  7. queryPurchaseOrderHead
  8. } from "../../../api/partspare/purchaseOrder";
  9. import {
  10. getSiteAndBuByUserName,
  11. getUserRoleList,
  12. getOperatorList
  13. } from "@/api/eam/eam.js"
  14. import ExportUtil from "@/utils/export";
  15. import {
  16. searchSamplingProgrammeDetails, // 搜索抽样方案中的矩阵
  17. getPlanLists, // 获取矩阵列表
  18. saveSamplingProgrammeDetails, // 新增抽样方案中的矩阵
  19. deleteSamplingProgrammeDetails, // 删除抽样方案中的矩阵
  20. } from "@/api/qc/qc.js";
  21. import {
  22. getClassesList,
  23. querySchedulingList,
  24. saveSchedulingHeader,
  25. querySaveSchedulingRecord,
  26. deleteSchedulingRecord,
  27. editSaveSchedulingRecord
  28. } from "../../../api/scheduling/scheduling";
  29. export default {
  30. name: "scheduling",
  31. data(){
  32. return{
  33. span:3,
  34. saveSchedulingFlag: false,
  35. fastAddFlag: false,
  36. insertSchedulingFlag: false,
  37. detailData: {
  38. site: '',
  39. bu: '',
  40. adminID: '',
  41. adminName: '',
  42. roleId: '',
  43. roleName: '',
  44. },
  45. editFlag: false,
  46. initFlag: false,
  47. schedulingRecordData:{},
  48. peopleList:[],
  49. peopleList2:[],
  50. itemList1: [],
  51. itemList2: [],
  52. roleList: [],
  53. queryParams: {
  54. site: '',
  55. classesCode:'',
  56. buDesc: '',
  57. partNo: '',
  58. partDescription: '',
  59. status: '',
  60. startDate: null,
  61. endDate: null,
  62. no: 1,
  63. size: 50,
  64. purchaseOrderNo:'',
  65. isExport:'',
  66. exportBy:'',
  67. exportTime:null,
  68. status:''
  69. },
  70. saveData:{
  71. checkbox1: false,
  72. checkbox2: false
  73. },
  74. activeName:'detail',
  75. userBuList: [],
  76. classesList: [],
  77. classesList2: [],
  78. dataList: [],
  79. dataListHead:[],
  80. queryLoading: false,
  81. saveErrorFlag: false,
  82. total:0,
  83. totalHead:0,
  84. queryLineRow:{},
  85. columns:[
  86. {
  87. userId: this.$store.state.user.name,
  88. functionId: 200101107,
  89. serialNumber: '200101107Table1headNum',
  90. tableId: '200101107Table1',
  91. tableName: '备品备件采购表',
  92. columnProp: 'adminId',
  93. headerAlign: 'center',
  94. align: 'center',
  95. columnLabel: '人员编码',
  96. columnHidden: false,
  97. columnImage: false,
  98. columnSortable: false,
  99. sortLv: 0,
  100. status: true,
  101. fixed: '',
  102. columnWidth: 80
  103. },
  104. {
  105. userId: this.$store.state.user.name,
  106. functionId: 200101107,
  107. serialNumber: '200101107Table1BuDesc',
  108. tableId: '200101107Table1',
  109. tableName: '备品备件采购表',
  110. columnProp: 'adminName',
  111. headerAlign: 'center',
  112. align: 'center',
  113. columnLabel: '人员名称',
  114. columnHidden: false,
  115. columnImage: false,
  116. columnSortable: false,
  117. sortLv: 0,
  118. status: true,
  119. fixed: '',
  120. columnWidth: 80
  121. },
  122. {
  123. userId: this.$store.state.user.name,
  124. functionId: 200101107,
  125. serialNumber: '200101107Table1PartNo',
  126. tableId: '200101107Table1',
  127. tableName: '备品备件采购表',
  128. columnProp: 'isHoliday',
  129. headerAlign: 'center',
  130. align: 'left',
  131. columnLabel: '是否请假',
  132. columnHidden: false,
  133. columnImage: false,
  134. columnSortable: false,
  135. sortLv: 0,
  136. status: true,
  137. fixed: '',
  138. columnWidth: 120
  139. }
  140. ],
  141. columns_head:[
  142. {
  143. userId: this.$store.state.user.name,
  144. functionId: 200101106,
  145. serialNumber: '200101106Table1BuDesc',
  146. tableId: '200101106Table1',
  147. tableName: '备品备件采购表',
  148. columnProp: 'classesCode',
  149. headerAlign: 'center',
  150. align: 'center',
  151. columnLabel: '班次编码',
  152. columnHidden: false,
  153. columnImage: false,
  154. columnSortable: false,
  155. sortLv: 0,
  156. status: true,
  157. fixed: '',
  158. columnWidth: 80
  159. },
  160. {
  161. userId: this.$store.state.user.name,
  162. functionId: 200101106,
  163. serialNumber: '200101106Table1BuDesc',
  164. tableId: '200101106Table1',
  165. tableName: '备品备件采购表',
  166. columnProp: 'classesDescription',
  167. headerAlign: 'center',
  168. align: 'center',
  169. columnLabel: '班次名称',
  170. columnHidden: false,
  171. columnImage: false,
  172. columnSortable: false,
  173. sortLv: 0,
  174. status: true,
  175. fixed: '',
  176. columnWidth: 80
  177. },
  178. {
  179. userId: this.$store.state.user.name,
  180. functionId: 200101107,
  181. serialNumber: '200101107Table1purchaseOrderNo',
  182. tableId: '200101107Table1',
  183. tableName: '备品备件采购表',
  184. columnProp: 'date',
  185. headerAlign: 'center',
  186. align: 'center',
  187. columnLabel: '日期',
  188. columnHidden: false,
  189. columnImage: false,
  190. columnSortable: false,
  191. sortLv: 0,
  192. status: true,
  193. fixed: '',
  194. columnWidth: 80
  195. },
  196. {
  197. userId: this.$store.state.user.name,
  198. functionId: 200101107,
  199. serialNumber: '200101107Table1createTime',
  200. tableId: '200101107Table1',
  201. tableName: '备品备件采购表',
  202. columnProp: 'buNo',
  203. headerAlign: 'center',
  204. align: 'center',
  205. columnLabel: 'BU',
  206. columnHidden: false,
  207. columnImage: false,
  208. columnSortable: false,
  209. sortLv: 0,
  210. status: true,
  211. fixed: '',
  212. columnWidth: 80
  213. }
  214. ],
  215. column_people:[
  216. {
  217. userId: this.$store.state.user.name,
  218. functionId: 200101106,
  219. serialNumber: '200101106Table1BuDesc',
  220. tableId: '200101106Table1',
  221. tableName: '备品备件采购表',
  222. columnProp: 'adminID',
  223. headerAlign: 'center',
  224. align: 'center',
  225. columnLabel: '用户名',
  226. columnHidden: false,
  227. columnImage: false,
  228. columnSortable: false,
  229. sortLv: 0,
  230. status: true,
  231. fixed: '',
  232. columnWidth: 80
  233. },
  234. {
  235. userId: this.$store.state.user.name,
  236. functionId: 200101107,
  237. serialNumber: '200101107Table1purchaseOrderNo',
  238. tableId: '200101107Table1',
  239. tableName: '备品备件采购表',
  240. columnProp: 'adminName',
  241. headerAlign: 'center',
  242. align: 'center',
  243. columnLabel: '姓名',
  244. columnHidden: false,
  245. columnImage: false,
  246. columnSortable: false,
  247. sortLv: 0,
  248. status: true,
  249. fixed: '',
  250. columnWidth: 80
  251. }
  252. ]
  253. }
  254. },
  255. methods:{
  256. getBuList() {
  257. let tempData = {
  258. username: this.$store.state.user.name,
  259. }
  260. getSiteAndBuByUserName(tempData).then(({data}) => {
  261. if (data.code === 0) {
  262. this.userBuList = data.rows
  263. }
  264. })
  265. },
  266. // 获取用户角色
  267. getUserRoleList () {
  268. getUserRoleList().then(({data}) => {
  269. if (data.code === 0) {
  270. this.roleList = data.rows
  271. } else {
  272. this.roleList = []
  273. }
  274. })
  275. },
  276. getPeopleList(){
  277. this.insertSchedulingFlag = true
  278. this.getOperatorList()
  279. this.fastAddFlag = true
  280. },
  281. // 获取机修人员列表
  282. async getOperatorList () {
  283. this.detailData.bu = '2_01-Label'
  284. //默认查询 角色:机修人员
  285. let filterList = this.roleList.filter(item => item.roleName === '机修人员')
  286. if (filterList.length > 0) {
  287. this.detailData.roleId = filterList[0].roleId
  288. }
  289. // 查询人员
  290. await getOperatorList(this.detailData).then(({data}) => {
  291. if (data && data.code === 0) {
  292. this.itemList1 = data.rows
  293. let arrAdminId = []
  294. if (this.initFlag){
  295. this.dataList.forEach(data => {
  296. arrAdminId.push(data.adminId)
  297. })
  298. } else {
  299. this.peopleList.forEach(data => {
  300. arrAdminId.push(data.adminID)
  301. })
  302. }
  303. this.itemList1 = this.itemList1.filter(item =>
  304. !arrAdminId.includes(item.adminID)
  305. )
  306. if (this.itemList2.length > 0){
  307. arrAdminId = []
  308. this.itemList2.forEach(data => {
  309. arrAdminId.push(data.adminID)
  310. })
  311. this.itemList1 = this.itemList1.filter(item =>
  312. !arrAdminId.includes(item.adminID)
  313. )
  314. }
  315. // this.itemList1.forEach(val => {
  316. // // 回显选中的人员
  317. // if (tempDataList.includes(val.adminID)) {
  318. // this.$nextTick(() => this.$refs.operatorTable.toggleRowSelection(val, true))
  319. // }
  320. // })
  321. } else {
  322. this.$alert(data.msg, '错误', {
  323. confirmButtonText: '确定'
  324. })
  325. }
  326. })
  327. },
  328. BUChanged(){
  329. let split = this.queryParams.bu.split('_')
  330. let params;
  331. if (split.length < 2){
  332. params = {
  333. site: null,
  334. buNo: null
  335. }
  336. }else {
  337. params = {
  338. site: split[0],
  339. buNo: split[1]
  340. }
  341. }
  342. getClassesList(params).then(({data}) => {
  343. if (data.code === 0) {
  344. this.classesList = data.rows
  345. } else {
  346. this.$message.warning(data.msg)
  347. }
  348. }).catch((error)=>{
  349. this.$message.error(error)
  350. })
  351. },
  352. insertBUChanged(){
  353. let split = this.saveData.bu.split('_')
  354. let params;
  355. if (split.length < 2){
  356. params = {
  357. site: null,
  358. buNo: null
  359. }
  360. }else {
  361. params = {
  362. site: split[0],
  363. buNo: split[1]
  364. }
  365. }
  366. getClassesList(params).then(({data}) => {
  367. if (data.code === 0) {
  368. this.classesList2 = data.rows
  369. } else {
  370. this.$message.warning(data.msg)
  371. }
  372. }).catch((error)=>{
  373. this.$message.error(error)
  374. })
  375. },
  376. getClassesList() {
  377. let params = {
  378. site: null,
  379. buNo: null
  380. }
  381. getClassesList(params).then(({data}) => {
  382. if (data.code === 0) {
  383. this.classesList = data.rows
  384. } else {
  385. this.$message.warning(data.msg)
  386. }
  387. }).catch((error)=>{
  388. this.$message.error(error)
  389. })
  390. },
  391. changeData(row){
  392. this.queryLoading = true
  393. this.queryLineRow = JSON.parse(JSON.stringify(row));
  394. querySaveSchedulingRecord(this.queryLineRow).then((data)=>{
  395. this.dataList = data.data.rows
  396. this.queryLoading = false
  397. }).catch((error)=>{
  398. this.$message.error(error)
  399. this.queryLoading = false
  400. })
  401. },
  402. handleQuery(){
  403. // 点击查询时,清空子表数据
  404. this.dataList = []
  405. this.queryLoading = true
  406. querySchedulingList(this.queryParams).then(({data})=>{
  407. if (data && data.code === 0) {
  408. this.dataListHead = data.rows
  409. this.totalHead = data.total
  410. } else {
  411. this.$message.warning(data.msg)
  412. }
  413. this.queryLoading = false
  414. }).catch((error)=>{
  415. this.$message.error(error)
  416. this.queryLoading = false
  417. })
  418. },
  419. // 关闭后刷新列表
  420. refreshDetailList () {
  421. searchSamplingProgrammeDetails(this.detailData).then(({data}) => {
  422. this.detailList = data.rows
  423. })
  424. },
  425. // 可选项目
  426. itemClickRow1 (row) {
  427. this.$refs.itemTable1.toggleRowSelection(row)
  428. },
  429. // 已有项目
  430. itemClickRow2 (row) {
  431. this.$refs.itemTable2.toggleRowSelection(row)
  432. },
  433. selectionItem1 (val) {
  434. this.itemSelections1 = val
  435. },
  436. selectionItem2 (val) {
  437. this.itemSelections2 = val
  438. },
  439. selectFlag () {
  440. return true
  441. },
  442. // 添加矩阵
  443. addItem () {
  444. if (this.itemSelections1 == null || this.itemSelections1.length === 0) {
  445. this.$message.warning('请选择可选人员!')
  446. return
  447. }
  448. let arrAdminId = []
  449. this.itemSelections1.forEach(data => {
  450. arrAdminId.push(data.adminID)
  451. })
  452. this.itemList1 = this.itemList1.filter(item =>
  453. !arrAdminId.includes(item.adminID)
  454. );
  455. if (this.insertSchedulingFlag) {
  456. this.peopleList2 = this.itemSelections1
  457. this.itemList2 = this.itemSelections1
  458. this.peopleList2.forEach(row => {
  459. row.isHoliday = 'N'; // 默认选中第一个选项
  460. });
  461. } else {
  462. this.itemList2 = this.itemSelections1
  463. this.peopleList = this.itemSelections1
  464. }
  465. // let inData = {
  466. // samplingProgrammeNo: this.detailData.samplingProgrammeNo,
  467. // planList: this.itemSelections1,
  468. // site: this.detailData.site,
  469. // buNo: this.detailData.buNo,
  470. // updateBy: this.$store.state.user.name,
  471. // }
  472. // saveSamplingProgrammeDetails(inData).then(({data}) => {
  473. // if (data && data.code === 0) {
  474. // getPlanLists(this.detailData).then(({data}) => {
  475. // this.itemList1 = data.row1
  476. // this.itemList2 = data.row2
  477. // })
  478. // this.itemSelections1 = []
  479. // } else {
  480. // this.$alert(data.msg, '错误', {
  481. // confirmButtonText: '确定'
  482. // })
  483. // }
  484. // })
  485. },
  486. // 删除矩阵
  487. deleteItem () {
  488. if (this.itemSelections2 == null || this.itemSelections2.length === 0) {
  489. this.$message.warning('请选择已有人员!')
  490. return
  491. }
  492. this.itemList1.push(...this.itemSelections2)
  493. this.itemList2 = this.itemList2.filter(item => !this.itemSelections2.includes(item))
  494. this.peopleList = this.itemList2
  495. this.peopleList2 = this.itemList2
  496. },
  497. deletePeopleList(row){
  498. this.peopleList = this.peopleList.filter(item => row.adminID != item.adminID);
  499. },
  500. saveScheduling(){
  501. this.saveData = {}
  502. this.peopleList = []
  503. this.classesList2 = []
  504. this.saveSchedulingFlag = true;
  505. },
  506. async saveHeaderFunction(){
  507. if (this.saveData.bu == null || this.saveData.bu === ''){
  508. this.$message.warning("请选择BU")
  509. return
  510. }
  511. if (this.saveData.classesCode == null || this.saveData.classesCode === ''){
  512. this.$message.warning("请选择班次")
  513. return
  514. }
  515. if (this.saveData.startDate == null || this.saveData.startDate === ''){
  516. this.$message.warning("请选择开始日期")
  517. return
  518. }
  519. if (this.saveData.endDate == null || this.saveData.endDate === ''){
  520. this.$message.warning("请选择结束日期")
  521. return
  522. }
  523. if (this.saveData.endDate < this.saveData.startDate){
  524. this.$message.warning("结束日期不能小于开始日期")
  525. return
  526. }
  527. this.queryLoading= true;
  528. let tempData = {
  529. ...this.saveData,
  530. peopleList: this.peopleList,
  531. }
  532. await saveSchedulingHeader(tempData).then(({data})=>{
  533. if (data.code==0){
  534. this.$message.success(data.msg)
  535. this.queryLoading = false
  536. } else {
  537. this.$message.error(data.msg)
  538. this.saveErrorFlag = true
  539. this.queryLoading = false
  540. }
  541. })
  542. if (this.saveErrorFlag){
  543. return
  544. }
  545. this.saveSchedulingFlag = false;
  546. this.queryLoading = false
  547. this.handleQuery();
  548. },
  549. handleQueryBySize(val){
  550. this.queryParams.size = val;
  551. this.handleQuery();
  552. },
  553. handleQueryByPage(val){
  554. this.queryParams.no = val;
  555. this.handleQuery();
  556. },
  557. addPeopleModal () {
  558. this.insertSchedulingFlag = false
  559. this.itemSelections1 = null
  560. this.itemSelections2 = null
  561. this.itemList2 = this.peopleList
  562. this.getOperatorList()
  563. this.fastAddFlag = true
  564. },
  565. editCancel(row){
  566. this.schedulingRecordData.editId = 1
  567. this.schedulingRecordData.id = row.id
  568. this.schedulingRecordData.adminId = row.adminId
  569. this.schedulingRecordData.adminName = row.adminName
  570. this.$set(this.schedulingRecordData,'isHoliday',row.isHoliday)
  571. this.insertSchedulingFlag = false
  572. this.initFlag = false
  573. this.editFlag = true
  574. },
  575. editSureCancel(){
  576. if (this.schedulingRecordData.adminId == null || this.schedulingRecordData.adminId === ''){
  577. if (this.peopleList2.length<1){
  578. this.$message.warning("请选择新增人员")
  579. return
  580. }
  581. }
  582. let params = {
  583. ...this.schedulingRecordData,
  584. peopleList : this.peopleList2
  585. }
  586. editSaveSchedulingRecord(params).then(({data})=>{
  587. this.$message.success(data.msg)
  588. })
  589. this.handleQuery()
  590. this.changeData(this.queryLineRow)
  591. this.editFlag = false
  592. this.schedulingRecordData = {}
  593. },
  594. deletePeopleList2(row){
  595. this.peopleList2 = this.peopleList2.filter(item => row.adminID != item.adminID);
  596. this.itemList2 = this.peopleList2
  597. },
  598. deleteCancel(row){
  599. this.$confirm('确定删除该条记录吗?',{
  600. confirmButtonText: '确定',
  601. cancelButtonText: '取消',
  602. type: 'warning'
  603. }).then(()=>{
  604. deleteSchedulingRecord(row).then(({data})=>{
  605. if (data && data.code === 0) {
  606. this.$message.success(data.msg)
  607. this.handleQuery()
  608. this.changeData(this.queryLineRow)
  609. } else {
  610. this.$message.warning(data.msg)
  611. }
  612. }).catch((error)=>{
  613. this.$message.error(error)
  614. })
  615. })
  616. },
  617. insertSchedulingRecord(){
  618. if (this.queryLineRow.id==null||this.queryLineRow.id==''){
  619. this.$message.warning("请先选中您要新增的排班")
  620. return
  621. }
  622. this.itemList1 = null
  623. this.itemList2 = null
  624. this.itemSelections1 = null
  625. this.itemSelections2 = null
  626. this.schedulingRecordData = {
  627. editId: 0,
  628. adminId: '',
  629. adminName: '',
  630. isHoliday: 'N',
  631. headId: this.queryLineRow.id
  632. }
  633. this.peopleList2 = []
  634. this.initFlag = true
  635. this.editFlag = true
  636. },
  637. async exportExcel() {
  638. if(this.queryLineRow.id==null||this.queryLineRow.id==''){
  639. this.$message.warning("请先选中您要导出的采购订单")
  640. return
  641. }
  642. ExportUtil.export(
  643. "/purchase/order/downloadPo",
  644. this.queryLineRow, this.queryLineRow.purchaseOrderNo+"采购单.xlsx"
  645. );
  646. this.handleQuery()
  647. },
  648. },
  649. watch:{
  650. queryLoading(newVal,oldVal){
  651. if (newVal === true){
  652. setTimeout(()=>{
  653. this.queryLoading=false
  654. },3000)
  655. }
  656. }
  657. },
  658. created() {
  659. this.getBuList();
  660. this.handleQuery();
  661. this.getClassesList();
  662. this.getUserRoleList();
  663. }
  664. }
  665. </script>
  666. <template>
  667. <div class="box-container">
  668. <el-form label-position="top" :model="queryParams" >
  669. <el-row :gutter="10">
  670. <el-col :span="span">
  671. <el-form-item label="BU" prop="bu" >
  672. <el-select v-model="queryParams.bu" placeholder="请选择" clearable @change="BUChanged()" style="width: 221px">
  673. <el-option
  674. v-for = "i in userBuList"
  675. :key = "i.buNo"
  676. :label = "i.sitename"
  677. :value = "i.buNo">
  678. <span style="float: left;width: 100px">{{ i.sitename }}</span>
  679. <span style="float: right; color: #8492a6;white-space:nowrap;overflow:hidden;text-overflow:ellipsis; font-size: 11px;width: 60px">
  680. {{ i.buDesc }}
  681. </span>
  682. </el-option>
  683. </el-select>
  684. </el-form-item>
  685. </el-col>
  686. <el-col :span="span" style="margin-left: 70px">
  687. <el-form-item label="班次">
  688. <el-select v-model="queryParams.classesCode" placeholder="请选择" clearable >
  689. <el-option
  690. v-for = "i in classesList"
  691. :key = "i.code"
  692. :label = "i.code +' '+i.description"
  693. :value = "i.code">
  694. </el-option>
  695. </el-select>
  696. </el-form-item>
  697. </el-col>
  698. <el-col :span="span*2">
  699. <el-form-item label="日期区间">
  700. <el-date-picker
  701. style="width: 47.5%"
  702. v-model="queryParams.startDate"
  703. type="date"
  704. format="yyyy-MM-dd"
  705. value-format="yyyy-MM-dd"
  706. placeholder="选择日期">
  707. </el-date-picker>
  708. <span style="text-align: center">-</span>
  709. <el-date-picker
  710. style="width: 47.5%"
  711. v-model="queryParams.endDate"
  712. type="date"
  713. format="yyyy-MM-dd"
  714. value-format="yyyy-MM-dd"
  715. placeholder="选择日期">
  716. </el-date-picker>
  717. </el-form-item>
  718. </el-col>
  719. <el-col :span="span">
  720. <el-form-item label=" ">
  721. <el-button type="primary" @click="handleQuery">查询</el-button>
  722. <el-button type="primary" @click="saveScheduling">新增</el-button>
  723. </el-form-item>
  724. </el-col>
  725. </el-row>
  726. </el-form>
  727. <!-- 主表信息-->
  728. <div style="height: 40%">
  729. <el-table :data="dataListHead" border
  730. highlight-current-row
  731. height="100%" ref="table"
  732. v-loading="queryLoading"
  733. @row-click="changeData">
  734. <el-table-column
  735. v-for="(item,index) in columns_head" :key="index"
  736. :sortable="item.columnSortable"
  737. :prop="item.columnProp"
  738. :header-align="item.headerAlign"
  739. :show-overflow-tooltip="item.showOverflowTooltip"
  740. :align="item.align"
  741. :fixed="item.fixed===''?false:item.fixed"
  742. :min-width="item.columnWidth"
  743. :label="item.columnLabel">
  744. <template slot-scope="scope">
  745. <span v-if="!item.columnHidden">{{ scope.row[item.columnProp] }}</span>
  746. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
  747. </template>
  748. </el-table-column>
  749. <!-- <el-table-column label="操作" align="center" width="100">-->
  750. <!-- <a @click="exportExcel()" type="primary" style="margin-left: 2px">{{'导出'}}</a>-->
  751. <!-- </el-table-column>-->
  752. </el-table>
  753. </div>
  754. <!-- 子表明细-->
  755. <el-tabs style="font-size: 12px;" class="customer-tab" v-model="activeName" type="border-card">
  756. <el-tab-pane label="明细" name="detail">
  757. <!-- <el-button @click="exportExcel()" type="primary" style="margin-left: 2px;margin-top: 0px">{{'导出'}}</el-button>-->
  758. <el-button @click="insertSchedulingRecord()" type="primary" style="margin-left: 2px;margin-top: 0px">{{'新增'}}</el-button>
  759. <el-table
  760. :data="dataList" border
  761. v-loading="queryLoading"
  762. height="390px"
  763. ref="table">
  764. <el-table-column
  765. v-for="(item,index) in columns" :key="index"
  766. :sortable="item.columnSortable"
  767. :prop="item.columnProp"
  768. :header-align="item.headerAlign"
  769. :show-overflow-tooltip="item.showOverflowTooltip"
  770. :align="item.align"
  771. :fixed="item.fixed==''?false:item.fixed"
  772. :min-width="item.columnWidth"
  773. :label="item.columnLabel">
  774. <template slot-scope="scope">
  775. <template v-if="item.columnProp === 'ttlAmount' || item.columnProp === 'sumPrice'">
  776. <span>{{!!scope.row[item.columnProp]?scope.row[item.columnProp].toFixed(2):''}}</span>
  777. </template>
  778. <template v-else>
  779. <span v-if="!item.columnHidden">{{ scope.row[item.columnProp] }}</span>
  780. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
  781. </template>
  782. </template>
  783. </el-table-column>
  784. <el-table-column label="操作" align="center" width="100">
  785. <template slot-scope="scope">
  786. <a @click="editCancel(scope.row)">编辑</a>
  787. <a @click="deleteCancel(scope.row)">删除</a>
  788. </template>
  789. </el-table-column>
  790. </el-table>
  791. </el-tab-pane>
  792. </el-tabs>
  793. <!-- 新增dialog-->
  794. <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" v-drag title="新增班次" :visible.sync="saveSchedulingFlag" width="420px">
  795. <el-form :inline="true" label-position="top">
  796. <el-form-item label="BU" prop="bu" >
  797. <el-select v-model="saveData.bu" placeholder="请选择" @change="insertBUChanged()" style="width: 221px">
  798. <el-option
  799. v-for = "i in userBuList"
  800. :key = "i.buNo"
  801. :label = "i.sitename"
  802. :value = "i.buNo">
  803. <span style="float: left;width: 100px">{{ i.sitename }}</span>
  804. <span style="float: right; color: #8492a6;white-space:nowrap;overflow:hidden;text-overflow:ellipsis; font-size: 11px;width: 60px">
  805. {{ i.buDesc }}
  806. </span>
  807. </el-option>
  808. </el-select>
  809. </el-form-item>
  810. <el-form-item label="班次">
  811. <el-select v-model="saveData.classesCode" placeholder="请选择" clearable >
  812. <el-option
  813. v-for = "i in classesList2"
  814. :key = "i.code"
  815. :label = "i.code+' '+i.description"
  816. :value = "i.code">
  817. </el-option>
  818. </el-select>
  819. </el-form-item>
  820. </el-form>
  821. <el-form :inline="true" label-position="top">
  822. <el-form-item label="开始日期" >
  823. <el-date-picker
  824. v-model="saveData.startDate"
  825. type="date"
  826. format="yyyy-MM-dd"
  827. value-format="yyyy-MM-dd"
  828. placeholder="选择日期">
  829. </el-date-picker>
  830. </el-form-item>
  831. <el-form-item label=" " >
  832. <el-checkbox v-model="saveData.checkbox1">包含周六</el-checkbox>
  833. </el-form-item>
  834. <el-form-item label="结束日期" >
  835. <el-date-picker
  836. v-model="saveData.endDate"
  837. type="date"
  838. format="yyyy-MM-dd"
  839. value-format="yyyy-MM-dd"
  840. placeholder="选择日期">
  841. </el-date-picker>
  842. </el-form-item>
  843. <el-form-item label=" " >
  844. <el-checkbox v-model="saveData.checkbox2">包含周日</el-checkbox>
  845. </el-form-item>
  846. </el-form>
  847. <el-form :inline="true" label-position="top">
  848. <el-form-item :label="' '">
  849. <el-button type="primary" @click="addPeopleModal()">新增</el-button>
  850. </el-form-item>
  851. </el-form>
  852. <el-table
  853. :height="300"
  854. :data="peopleList"
  855. v-loading="queryLoading"
  856. border
  857. style="width: 100%;">
  858. <el-table-column
  859. v-for="(item,index) in column_people" :key="index"
  860. :sortable="item.columnSortable"
  861. :prop="item.columnProp"
  862. :header-align="item.headerAlign"
  863. :show-overflow-tooltip="item.showOverflowTooltip"
  864. :align="item.align"
  865. :fixed="item.fixed==''?false:item.fixed"
  866. :min-width="item.columnWidth"
  867. :label="item.columnLabel">
  868. <template slot-scope="scope">
  869. <span v-if="!item.columnHidden">{{ scope.row[item.columnProp] }}</span>
  870. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
  871. </template>
  872. </el-table-column>
  873. <el-table-column
  874. fixed="right"
  875. header-align="center"
  876. align="center"
  877. width="80"
  878. label="操作">
  879. <template slot-scope="scope">
  880. <a type="text" size="small" @click="deletePeopleList(scope.row)">删除</a>
  881. </template>
  882. </el-table-column>
  883. </el-table>
  884. <span slot="footer" class="dialog-footer">
  885. <el-button @click="saveSchedulingFlag = false">取消</el-button>
  886. <el-button type="primary" @click="saveHeaderFunction()">确定</el-button>
  887. </span>
  888. </el-dialog>
  889. <!-- 人员详情->快速新增 -->
  890. <el-dialog title="新增" @close="refreshDetailList" :close-on-click-modal="false" v-drag :visible.sync="fastAddFlag" width="900px">
  891. <div style="font-size: 12px">
  892. <el-form :inline="true" label-position="top" :model="detailData">
  893. <el-form-item :label="'所属角色'">
  894. <el-select v-model="detailData.roleId" placeholder="请选择" style="width: 120px">
  895. <el-option
  896. v-for = "i in roleList"
  897. :key = "i.roleId"
  898. :label = "i.roleName"
  899. :value = "i.roleId">
  900. </el-option>
  901. </el-select>
  902. </el-form-item>
  903. <el-form-item :label="'人员编码'">
  904. <el-input v-model="detailData.adminID" clearable style="width: 120px"></el-input>
  905. </el-form-item>
  906. <el-form-item :label="'人员姓名'">
  907. <el-input v-model="detailData.adminName" clearable style="width: 120px"></el-input>
  908. </el-form-item>
  909. <el-form-item :label="' '">
  910. <el-button type="primary" @click="getOperatorList">查询</el-button>
  911. </el-form-item>
  912. </el-form>
  913. </div>
  914. <el-container style="margin-top: 0px;">
  915. <el-main style="width: 400px;padding: 0px">
  916. <span style="font-size: 12px" >可选人员</span>
  917. <el-table
  918. height="400px"
  919. :data="itemList1"
  920. border
  921. ref="itemTable1"
  922. @row-click="itemClickRow1"
  923. @selection-change="selectionItem1"
  924. highlight-current-row
  925. style="width: 100%">
  926. <el-table-column
  927. type="selection"
  928. header-align="center"
  929. align="center"
  930. :selectable="selectFlag"
  931. width="50">
  932. </el-table-column>
  933. <el-table-column
  934. prop="adminID"
  935. header-align="center"
  936. align="center"
  937. min-width="110"
  938. label="人员编码">
  939. </el-table-column>
  940. <el-table-column
  941. prop="adminName"
  942. header-align="center"
  943. align="center"
  944. min-width="170"
  945. label="人员名称">
  946. </el-table-column>
  947. </el-table>
  948. </el-main>
  949. <el-main style="width: 100px;padding: 0px">
  950. <div style="margin-top: 182px;margin-left: 18px">
  951. <el-button type="primary" @click="addItem()">添加>></el-button>
  952. </div>
  953. <div style="margin-top: 15px;margin-left: 18px">
  954. <el-button type="primary" @click="deleteItem()">删除<<</el-button>
  955. </div>
  956. </el-main>
  957. <el-main style="width: 400px;padding: 0px">
  958. <span style="font-size: 12px">选中人员</span>
  959. <el-table
  960. height="400px"
  961. :data="itemList2"
  962. border
  963. ref="itemTable2"
  964. @row-click="itemClickRow2"
  965. @selection-change="selectionItem2"
  966. highlight-current-row
  967. style="width: 100%">
  968. <el-table-column
  969. type="selection"
  970. header-align="center"
  971. align="center"
  972. :selectable="selectFlag"
  973. width="50">
  974. </el-table-column>
  975. <el-table-column
  976. prop="adminID"
  977. header-align="center"
  978. align="center"
  979. min-width="110"
  980. label="人员编码">
  981. </el-table-column>
  982. <el-table-column
  983. prop="adminName"
  984. header-align="center"
  985. align="center"
  986. min-width="170"
  987. label="人员名称">
  988. </el-table-column>
  989. </el-table>
  990. </el-main>
  991. </el-container>
  992. <el-footer style="height:40px;margin-top: 20px;text-align:center">
  993. <el-button type="primary" @click="fastAddFlag = false">关闭</el-button>
  994. </el-footer>
  995. </el-dialog>
  996. <el-dialog :title="initFlag?'新增':'编辑'" :close-on-click-modal="false" :close-on-press-escape="false" v-drag :visible.sync="editFlag" width="420px">
  997. <el-form :inline="true" label-position="top">
  998. <el-button type="primary" v-if="initFlag" @click="getPeopleList">新增</el-button>
  999. <el-form-item label="人员编码" prop="adminID" v-if="!initFlag">
  1000. <el-input v-model="schedulingRecordData.adminId" disabled style="width: 221px"></el-input>
  1001. </el-form-item>
  1002. <el-form-item label="人员名称" v-if="!initFlag">
  1003. <el-input v-model="schedulingRecordData.adminName" disabled style="width: 221px"></el-input>
  1004. </el-form-item>
  1005. <el-form-item label="是否请假" v-if="!initFlag">
  1006. <el-select filterable v-model="schedulingRecordData.isHoliday" style="width: 100px">
  1007. <el-option label="请假" value="Y"></el-option>
  1008. <el-option label="工作" value="N"></el-option>
  1009. </el-select>
  1010. </el-form-item>
  1011. </el-form>
  1012. <el-table
  1013. v-if="initFlag"
  1014. :height="300"
  1015. :data="peopleList2"
  1016. v-loading="queryLoading"
  1017. border
  1018. style="width: 100%;">
  1019. <el-table-column
  1020. v-for="(item,index) in column_people" :key="index"
  1021. :sortable="item.columnSortable"
  1022. :prop="item.columnProp"
  1023. :header-align="item.headerAlign"
  1024. :show-overflow-tooltip="item.showOverflowTooltip"
  1025. :align="item.align"
  1026. :fixed="item.fixed==''?false:item.fixed"
  1027. :min-width="item.columnWidth"
  1028. :label="item.columnLabel">
  1029. <template slot-scope="scope">
  1030. <span v-if="!item.columnHidden">{{ scope.row[item.columnProp] }}</span>
  1031. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
  1032. </template>
  1033. </el-table-column>
  1034. <el-table-column label="是否请假" align="center" width="100">
  1035. <template slot-scope="scope">
  1036. <el-select filterable v-model="scope.row.isHoliday" style="width: 100px">
  1037. <el-option label="请假" value="Y"></el-option>
  1038. <el-option label="工作" value="N"></el-option>
  1039. </el-select>
  1040. </template>
  1041. </el-table-column>
  1042. <el-table-column
  1043. fixed="right"
  1044. header-align="center"
  1045. align="center"
  1046. width="80"
  1047. label="操作">
  1048. <template slot-scope="scope">
  1049. <a type="text" size="small" @click="deletePeopleList2(scope.row)">删除</a>
  1050. </template>
  1051. </el-table-column>
  1052. </el-table>
  1053. <span slot="footer" class="dialog-footer">
  1054. <el-button @click="editFlag = false;initFlag=false">取消</el-button>
  1055. <el-button type="primary" @click="editSureCancel()">确定</el-button>
  1056. </span>
  1057. </el-dialog>
  1058. </div>
  1059. </template>
  1060. <style scoped>
  1061. </style>