dk-label-multiple-select.js 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823
  1. /*******************************************************************************
  2. * Copyright(c) 2022 dongke All rights reserved. / Confidential
  3. * 类的信息:
  4. * 1.程序名称:
  5. * 编辑履历:
  6. * 作者 日期 版本 修改内容
  7. * 于继渤 2022-5-28 1.00 筛选多选标签
  8. * 作者 日期 版本 修改内容
  9. * 于继渤 2022-5-31 1.01 完善抛出事件
  10. *******************************************************************************/
  11. const app = getApp()
  12. const Constants = require('../../../utils/Constants.js');
  13. const api = require('../../../utils/api.js');
  14. Component({
  15. /**
  16. * 组件的属性列表
  17. */
  18. properties: {
  19. typeName: {
  20. type: String,
  21. default: ''
  22. },
  23. oneSelectFlag: {
  24. type: Boolean,
  25. default: false
  26. },
  27. show: {
  28. type: Boolean,
  29. default: true,
  30. observer: function (newVal) {
  31. let show = this.properties.show
  32. if (show) {
  33. let stowList = this.data.stowList;
  34. let moreList = this.data.moreList;
  35. if (stowList.length == 0 && moreList.length == 0) {
  36. let dataSourceCode = this.data.dataSourceCode
  37. let typeName = this.data.typeName
  38. // 从数据库中取值
  39. if (this.data.loadDataFlag) {
  40. this.getData(dataSourceCode).then(res => {
  41. // 赋值逻辑
  42. let list = res.data
  43. list.forEach(function (item) {
  44. if (!item.id) {
  45. item.id = item.code
  46. }
  47. })
  48. if (list == null || list.length <= 0) return
  49. list.forEach(item => {
  50. item.infotype = 'default'
  51. })
  52. if (list.length > 4) {
  53. //收起内容(不包含前4个)
  54. stowList = list.slice(5, list.length - 1)
  55. moreList = list.slice(0, 4)
  56. } else {
  57. //更多 前4个
  58. moreList = list
  59. }
  60. this.setData({
  61. stowList: stowList,
  62. moreList: moreList
  63. })
  64. })
  65. }
  66. }
  67. }
  68. }
  69. }
  70. },
  71. options: {
  72. multipleSlots: true, //插槽
  73. },
  74. /**
  75. * 组件的初始数据
  76. */
  77. data: {
  78. stowList: [],
  79. moreList: [],
  80. dataList: [],
  81. dataListTemp: [],
  82. loadDataFlag: true, // 是否从数据库加载数据
  83. },
  84. /**
  85. * 组件生命周期
  86. */
  87. lifetimes: {
  88. attached: function () {
  89. let dataSourceCode = ''
  90. let typeName = this.data.typeName
  91. let name = ''
  92. if (typeName === 'other') {
  93. dataSourceCode = 'other'
  94. name = '其他'
  95. }
  96. if (typeName === 'salesChannel') {
  97. dataSourceCode = 'saleChannel'
  98. name = '销售渠道'
  99. this.getdata(dataSourceCode).then(res => {
  100. let list = res.data
  101. if (list == null || list.length <= 0) return
  102. let datalist = []
  103. list.forEach(item2 => {
  104. let item = {
  105. id: item2.channelId,
  106. name: item2.channelName,
  107. infotype: 'default'
  108. }
  109. datalist.push(item)
  110. })
  111. this.setData({
  112. moreList: datalist,
  113. moreFlag: false,
  114. loadDataFlag: false
  115. })
  116. })
  117. }
  118. if (typeName === 'org') {
  119. dataSourceCode = 'org'
  120. name = '业务部门'
  121. }
  122. //收付款类型
  123. if (typeName === 'rpType') {
  124. dataSourceCode = 'rpType'
  125. name = '收付款类型'
  126. let stowList = [{
  127. name: '收款',
  128. id: '收付款类型-收款',
  129. infotype: 'default'
  130. },
  131. {
  132. name: '付款',
  133. id: '收付款类型-付款',
  134. infotype: 'default'
  135. },
  136. ];
  137. this.setData({
  138. moreList: stowList,
  139. moreFlag: false,
  140. loadDataFlag: false
  141. })
  142. }
  143. //业务员
  144. if (typeName === 'staff') {
  145. dataSourceCode = 'staff'
  146. name = '业务员'
  147. }
  148. //入库类型-标准版没有采购
  149. if (typeName === 'intoTypeSt') {
  150. dataSourceCode = 'intoType'
  151. name = '入库类型'
  152. let stowList = [
  153. {
  154. name: '销退回库',
  155. id: '出库类型-销退回库',
  156. infotype: 'default'
  157. },
  158. {
  159. name: '其他入库',
  160. id: '入库类型-其他入库',
  161. infotype: 'default'
  162. },
  163. {
  164. name: '期初入库',
  165. id: '入库类型-期初入库',
  166. infotype: 'default'
  167. },
  168. ];
  169. this.setData({
  170. moreList: stowList,
  171. moreFlag: false,
  172. loadDataFlag: false
  173. })
  174. }
  175. //入库类型
  176. if (typeName === 'intoType') {
  177. dataSourceCode = 'intoType'
  178. name = '入库类型'
  179. let stowList = [{
  180. name: '采购入库',
  181. id: '入库类型-采购入库',
  182. infotype: 'default'
  183. },
  184. {
  185. name: '销退回库',
  186. id: '出库类型-销退回库',
  187. infotype: 'default'
  188. },
  189. {
  190. name: '其他入库',
  191. id: '入库类型-其他入库',
  192. infotype: 'default'
  193. },
  194. {
  195. name: '期初入库',
  196. id: '入库类型-期初入库',
  197. infotype: 'default'
  198. },
  199. ];
  200. this.setData({
  201. moreList: stowList,
  202. moreFlag: false,
  203. loadDataFlag: false
  204. })
  205. }
  206. //出库进度
  207. if (typeName === 'outStatus') {
  208. dataSourceCode = 'outStatus'
  209. name = '出库进度'
  210. let stowList = [
  211. {
  212. name: '出库中',
  213. id: '出库状态-出库中',
  214. infotype: 'default'
  215. },
  216. {
  217. name: '已出库',
  218. id: '出库状态-已出库',
  219. infotype: 'default'
  220. }
  221. ];
  222. this.setData({
  223. moreList: stowList,
  224. moreFlag: false,
  225. loadDataFlag: false
  226. })
  227. }
  228. //入库进度
  229. if (typeName === 'intoStatus') {
  230. dataSourceCode = 'intoStatus'
  231. name = '入库进度'
  232. let stowList = [{
  233. name: '待入库',
  234. id: '入库状态-待入库',
  235. infotype: 'default'
  236. },
  237. {
  238. name: '入库中',
  239. id: '入库状态-入库中',
  240. infotype: 'default'
  241. },
  242. {
  243. name: '已入库',
  244. id: '入库状态-已入库',
  245. infotype: 'default'
  246. }
  247. ];
  248. this.setData({
  249. moreList: stowList,
  250. moreFlag: false,
  251. loadDataFlag: false
  252. })
  253. }
  254. // 收支类型
  255. if (typeName === 'recType'){
  256. dataSourceCode = 'recType'
  257. name = '收支类型'
  258. this.setData({
  259. moreFlag: false,
  260. loadDataFlag: true
  261. })
  262. this.getdata(dataSourceCode).then(res => {
  263. let list = res.data
  264. if (list == null || list.length <= 0) return
  265. let datalist = []
  266. if (typeName === 'recType') {
  267. list.forEach(item2 => {
  268. let item = {
  269. id: item2.kindCode,
  270. name: item2.kindName,
  271. infotype: 'default'
  272. }
  273. datalist.push(item)
  274. })
  275. }
  276. this.setData({
  277. moreList: datalist,
  278. moreFlag: false,
  279. loadDataFlag: false
  280. })
  281. })
  282. }
  283. // 资金账户
  284. if(typeName === 'moneyAccount'){
  285. dataSourceCode = 'moneyAccount'
  286. name = '资金账户'
  287. this.getdata(dataSourceCode).then(res => {
  288. let list = res.data
  289. if (list == null || list.length <= 0) return
  290. let datalist = []
  291. if (typeName === 'moneyAccount') {
  292. list.forEach(item2 => {
  293. let item = {
  294. id: item2.macCode,
  295. name: item2.macName,
  296. infotype: 'default'
  297. }
  298. datalist.push(item)
  299. })
  300. }
  301. this.setData({
  302. moreList: datalist,
  303. moreFlag: false,
  304. loadDataFlag: false
  305. })
  306. })
  307. }
  308. //入库类型
  309. if (typeName === 'receiptType') {
  310. dataSourceCode = 'entryType'
  311. name = '入库类型'
  312. }
  313. //入库原因
  314. if (typeName === 'intoReason') {
  315. dataSourceCode = 'inReason'
  316. name = '入库原因'
  317. let stowList = [{
  318. name: '盘盈入库',
  319. id: '10112024-0314-0000-0000-000010d79635',
  320. infotype: 'default'
  321. },
  322. ];
  323. this.setData({
  324. moreList: stowList,
  325. moreFlag: false,
  326. loadDataFlag: false
  327. })
  328. }
  329. //出库类型
  330. if (typeName === 'outType') {
  331. dataSourceCode = 'outType'
  332. name = '出库类型'
  333. let stowList = [{
  334. name: '销售出库',
  335. id: '出库类型-销售出库',
  336. infotype: 'default'
  337. },
  338. {
  339. name: '采退出库',
  340. id: '入库类型-采退出库',
  341. infotype: 'default'
  342. },
  343. {
  344. name: '其他出库',
  345. id: '出库类型-其他出库',
  346. infotype: 'default'
  347. },
  348. ];
  349. this.setData({
  350. moreList: stowList,
  351. moreFlag: false,
  352. loadDataFlag: false
  353. })
  354. }
  355. //出库类型-报表
  356. if (typeName === 'outTypeR') {
  357. dataSourceCode = 'outType'
  358. name = '出库类型'
  359. let stowList = [{
  360. name: '销售出库',
  361. id: '出库类型-销售出库',
  362. infotype: 'default'
  363. },
  364. {
  365. name: '采退出库',
  366. id: '入库类型-采退出库',
  367. infotype: 'default'
  368. },
  369. {
  370. name: '其他出库',
  371. id: '出库类型-其他出库',
  372. infotype: 'default'
  373. },
  374. {
  375. name: '调整出库',
  376. id: '出库类型-调整出库',
  377. infotype: 'default'
  378. },
  379. {
  380. name: '盘亏出库',
  381. id: '出库类型-盘亏出库',
  382. infotype: 'default'
  383. },
  384. ];
  385. this.setData({
  386. moreList: stowList,
  387. moreFlag: false,
  388. loadDataFlag: false
  389. })
  390. }
  391. //出库原因
  392. if (typeName === 'outReason') {
  393. dataSourceCode = 'outReason'
  394. name = '出库原因'
  395. let stowList = [{
  396. name: '破损出库',
  397. id: '10112024-0312-0000-0000-00000f5759fd',
  398. infotype: 'default'
  399. },
  400. ];
  401. this.setData({
  402. moreList: stowList,
  403. moreFlag: false,
  404. loadDataFlag: false
  405. })
  406. }
  407. //采购入库状态
  408. if (typeName === 'inInventoryStatus') {
  409. dataSourceCode = 'inInventoryStatus'
  410. name = '入库状态'
  411. let stowList = [{
  412. name: '待入库',
  413. id: '入库状态-入库中',
  414. infotype: 'default'
  415. },
  416. {
  417. name: '已入库',
  418. id: '入库状态-已入库',
  419. infotype: 'default'
  420. }
  421. ];
  422. this.setData({
  423. moreList: stowList,
  424. moreFlag: false,
  425. loadDataFlag: false
  426. })
  427. }
  428. //采购状态
  429. if (typeName === 'purchaseStatus') {
  430. dataSourceCode = 'purchaseStatus'
  431. name = '采购状态'
  432. let stowList = [{
  433. name: '暂存',
  434. id: 0,
  435. infotype: 'default'
  436. },
  437. {
  438. name: '成交',
  439. id: 1,
  440. infotype: 'default'
  441. },
  442. {
  443. name: '出库中',
  444. id: 2,
  445. infotype: 'default'
  446. },
  447. {
  448. name: '待入库',
  449. id: 3,
  450. infotype: 'default'
  451. },
  452. {
  453. name: '已入库',
  454. id: 4,
  455. infotype: 'default'
  456. }
  457. ];
  458. this.setData({
  459. moreList: stowList,
  460. moreFlag: false,
  461. loadDataFlag: false
  462. })
  463. }
  464. //退货状态
  465. if (typeName === 'outInventoryStatus') {
  466. dataSourceCode = 'outInventoryStatus'
  467. name = '退货状态'
  468. let stowList = [{
  469. name: '审批中',
  470. id: 0,
  471. infotype: 'default'
  472. },
  473. {
  474. name: '未出库',
  475. id: 1,
  476. infotype: 'default'
  477. },
  478. {
  479. name: '已出库',
  480. id: 2,
  481. infotype: 'default'
  482. },
  483. {
  484. name: '已退货',
  485. id: 3,
  486. infotype: 'default'
  487. }
  488. ];
  489. this.setData({
  490. moreList: stowList,
  491. moreFlag: false,
  492. loadDataFlag: false
  493. })
  494. }
  495. if (typeName === 'purchaseAccordingStatus') {
  496. dataSourceCode = 'purchaseAccordingStatus'
  497. name = '采购状态'
  498. let stowList = [
  499. {
  500. name: '成交',
  501. id: 0,
  502. infotype: 'info'
  503. },
  504. {
  505. name: '出库中',
  506. id: 1,
  507. infotype: 'default'
  508. }
  509. ];
  510. this.setData({
  511. moreList: stowList,
  512. moreFlag: false,
  513. loadDataFlag: false
  514. })
  515. }
  516. //收款进度
  517. if (typeName === 'rpType') {
  518. dataSourceCode = 'rpType'
  519. name = '收付款类型'
  520. let stowList = [{
  521. name: '收款',
  522. id: '收付款类型-收款',
  523. infotype: 'default'
  524. },
  525. {
  526. name: '退收款',
  527. id: '收付款类型-收款',
  528. infotype: 'default'
  529. }
  530. ];
  531. this.setData({
  532. moreList: stowList,
  533. moreFlag: false,
  534. loadDataFlag: false
  535. })
  536. }
  537. //客户接待
  538. if (typeName === 'followStatus') {
  539. dataSourceCode = 'followStatus'
  540. name = '接待类型'
  541. let stowList = [{
  542. name: '留资接待',
  543. id: '跟进状态-报备',
  544. infotype: 'default'
  545. },
  546. {
  547. name: '陌生接待',
  548. id: '跟进状态-接待',
  549. infotype: 'default'
  550. }
  551. ]
  552. this.setData({
  553. moreList: stowList,
  554. moreFlag: false,
  555. loadDataFlag: false
  556. })
  557. }
  558. //盘点状态
  559. if (typeName === 'coilingState') {
  560. dataSourceCode = 'coilingState'
  561. name = '盘点状态'
  562. let stowList = [{
  563. name: '暂存',
  564. id: '盘点状态-暂存',
  565. infotype: 'default'
  566. },
  567. {
  568. name: '完成',
  569. id: '盘点状态-完成',
  570. infotype: 'default'
  571. },
  572. ];
  573. this.setData({
  574. moreList: stowList,
  575. moreFlag: false,
  576. loadDataFlag: false
  577. })
  578. }
  579. //调整类型
  580. if (typeName === 'transferType') {
  581. dataSourceCode = 'transferType'
  582. name = '调整类型'
  583. let stowList = [{
  584. name: '仓库调整',
  585. id: '调整类型-仓库调整',
  586. infotype: 'default'
  587. },
  588. {
  589. name: '批次调整',
  590. id: '调整类型-批次调整',
  591. infotype: 'default'
  592. },
  593. ];
  594. this.setData({
  595. moreList: stowList,
  596. moreFlag: false,
  597. loadDataFlag: false
  598. })
  599. }
  600. //冻结状态
  601. if (typeName === 'freezeStatus') {
  602. dataSourceCode = 'freezeStatus'
  603. name = '冻结状态'
  604. let stowList = [{
  605. name: '全部冻结',
  606. id: '冻结状态-全部冻结',
  607. infotype: 'default'
  608. },
  609. {
  610. name: '全部解冻',
  611. id: '冻结状态-全部解冻',
  612. infotype: 'default'
  613. },
  614. ];
  615. this.setData({
  616. moreList: stowList,
  617. moreFlag: false,
  618. loadDataFlag: false
  619. })
  620. }
  621. this.setData({
  622. dataSourceCode: dataSourceCode,
  623. name: name
  624. })
  625. },
  626. detached: function () {
  627. // 在组件实例被从页面节点树移除时执行
  628. },
  629. },
  630. /**
  631. * 组件的方法列表
  632. */
  633. methods: {
  634. /**
  635. * @desc : 筛选更多触发事件
  636. * @author : 于继渤
  637. * @date : 2022/5/28 08:50
  638. */
  639. onChangeMore(e) {
  640. if (this.data.stowList.length == 0) {
  641. return
  642. }
  643. this.setData({
  644. moreFlag: !this.data.moreFlag
  645. })
  646. },
  647. /**
  648. * @desc : 点击标签事件
  649. * @author : 于继渤
  650. * @date : 2022/5/28 08:50
  651. */
  652. onClickTag(e) {
  653. let key = e.currentTarget.dataset.key
  654. let typekey = e.currentTarget.dataset.typekey
  655. let index = e.currentTarget.dataset.index
  656. let moreList = this.data.moreList
  657. let stowList = this.data.stowList
  658. if (key === 'more') {
  659. if (moreList[index].infotype === 'default') {
  660. moreList[index].infotype = 'info'
  661. } else if (moreList[index].infotype === 'info') {
  662. moreList[index].infotype = 'default'
  663. }
  664. }
  665. if (key === 'stow') {
  666. if (stowList[index].infotype === 'default') {
  667. stowList[index].infotype = 'info'
  668. } else if (stowList[index].infotype === 'info') {
  669. stowList[index].infotype = 'default'
  670. }
  671. }
  672. this.setData({
  673. moreList: moreList,
  674. stowList: stowList
  675. })
  676. let dataList = this.data.dataList
  677. if (moreList.length > 0) {
  678. moreList.forEach(res1 => {
  679. if (res1.infotype === 'info') {
  680. dataList.push(res1)
  681. }
  682. })
  683. }
  684. if (this.data.oneSelectFlag) {
  685. moreList.forEach(itt => {
  686. if (itt.name == moreList[index].name) {
  687. itt.infotype = 'info'
  688. } else {
  689. itt.infotype = 'default'
  690. }
  691. })
  692. this.setData({
  693. moreList: moreList
  694. })
  695. }
  696. if (stowList.length > 0) {
  697. stowList.forEach(res2 => {
  698. if (res2.infotype === 'info') {
  699. dataList.push(res2)
  700. }
  701. })
  702. }
  703. let dataListTemp = []
  704. dataList.forEach(res3 => {
  705. if (res3.infotype == 'info') {
  706. dataListTemp.push(res3.id)
  707. }
  708. })
  709. dataList = dataList.filter((item, index) => {
  710. return dataList.indexOf(item) === index
  711. })
  712. this.triggerEvent('onClickTag', {
  713. dataList: Array.from(new Set(dataListTemp)),
  714. key: typekey
  715. })
  716. },
  717. /**
  718. * @desc : 重置事件
  719. * @author : 于继渤
  720. * @date : 2022/5/28 08:50
  721. */
  722. clearForm() {
  723. let moreList = this.data.moreList
  724. let stowList = this.data.stowList
  725. if (moreList.length > 0) {
  726. moreList.forEach(res => {
  727. res.infotype = 'default'
  728. })
  729. }
  730. if (stowList.length > 0) {
  731. stowList.forEach(res => {
  732. res.infotype = 'default'
  733. })
  734. }
  735. this.setData({
  736. moreList: moreList,
  737. stowList: stowList,
  738. dataList: []
  739. })
  740. },
  741. /**
  742. * @desc : 筛选数据源获取
  743. * @author : 于继渤
  744. * @date : 2022/5/28 08:50
  745. */
  746. getData(dataSourceCode) {
  747. let param = {
  748. dataSourceCode: dataSourceCode
  749. }
  750. return new Promise((resolve, reject) => {
  751. api.request(Constants.BASIC_COMMON_API + 'get_wx_init_data', 'POST', param).then(res => {
  752. if (res.data.code === 200) {
  753. resolve(res.data)
  754. } else {
  755. reject(res.data)
  756. }
  757. })
  758. })
  759. },
  760. /**
  761. * 查询数据
  762. * @param {*} e
  763. */
  764. getdata: function (DataSourceCode) {
  765. let param = {
  766. dataSourceCode: DataSourceCode
  767. }
  768. if(DataSourceCode === 'moneyAccount'){
  769. return new Promise((resolve, reject) => {
  770. api.request(Constants.BASIC_COMMON_API + 'get_mac', 'POST', param).then(res => {
  771. if (res.data.code === 200) {
  772. resolve(res.data)
  773. } else {
  774. reject(res.data)
  775. }
  776. })
  777. })
  778. }
  779. return new Promise((resolve, reject) => {
  780. api.request(Constants.BASIC_COMMON_API + 'get_init_data', 'POST', param).then(res => {
  781. if (res.data.code === 200) {
  782. resolve(res.data)
  783. } else {
  784. reject(res.data)
  785. }
  786. })
  787. })
  788. },
  789. }
  790. })