select-data.js 34 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270
  1. const app = getApp();
  2. const api = require('@/utils/api.js');
  3. const Constants = require('@/utils/Constants.js')
  4. const mixins = require('@/mixins/index.js')
  5. Page({
  6. mixins: [mixins],
  7. /**
  8. * 页面的初始数据
  9. */
  10. data: {
  11. showPop: false,
  12. // gradeCode: app.globalData.company.gradeCode,
  13. active: 0,
  14. // 选择数据
  15. choosedData: [],
  16. // // 是否显示tab
  17. // tabFlag: false,
  18. // 页签默认在第一个
  19. // 查询条件
  20. searchContent: null,
  21. // 路由
  22. routeObjName: 'common',
  23. // pop使用
  24. routeObjNamePop: '',
  25. // 列表区(内容)
  26. contentList: null,
  27. // 方法名
  28. method: null,
  29. // 字典类型
  30. dictCode: null,
  31. // 标题
  32. title: null,
  33. // 弹出pop的标题
  34. popTitle: null,
  35. // 需要调到的新建路由
  36. addUrl: null,
  37. // 是否多选
  38. chooseFlag: false,
  39. // 供应商类别
  40. supTypeList: null,
  41. // 提示信息
  42. placeholder: [],
  43. // tab页签
  44. tagList: [],
  45. // 用于多选
  46. valueKey: null,
  47. labelKey: null,
  48. // 多选时是否允许重复
  49. repeatFlag: false,
  50. // 简单标识
  51. simpleFlag: false,
  52. // 弹出新建
  53. popContent: null,
  54. // 是否有默认值
  55. defaultFlag: false,
  56. // 状态
  57. status: null,
  58. // 控制是否显示状态
  59. statusFlag: false,
  60. // 确定按钮
  61. buttonList: [{
  62. name: 'confirm',
  63. title: '确定'
  64. }],
  65. // 新加的数据
  66. addItem: null,
  67. // 其他查询条件
  68. otherSearchParam: null,
  69. },
  70. /**
  71. * @desc : 调到新建
  72. * @author : 姜永辉
  73. * @date : 2022/5/23 15:16
  74. */
  75. toAdd() {
  76. let addUrl = this.data.addUrl
  77. // 如果链接有值,跳转
  78. if (addUrl) {
  79. let _this = this
  80. wx.navigateTo({
  81. url: this.data.addUrl,
  82. events: {
  83. // 保存成功后刷新页面
  84. refresh: function (data) {
  85. // 刷新一览界面
  86. _this.searchData();
  87. }
  88. },
  89. success: function (res) {
  90. // 通过eventChannel向被打开页面传送数据 TODO 测试例子url是写死的,实际中,需要从route中读取
  91. res.eventChannel.emit('params', {
  92. item: {
  93. defaultSupplier: _this.data.item.defaultSupplier
  94. },
  95. formType: _this.data.chooseRoute.type,
  96. backFlag: true
  97. })
  98. }
  99. })
  100. } else if (this.data.popContent && this.data.popContent.length > 0) {
  101. let popContent = this.data.popContent
  102. popContent.forEach(it => {
  103. if (it.code == 'decimalPlaces') {
  104. let formData = this.data.formData ? JSON.parse(this.data.formData) : {
  105. decimalPlaces: 1
  106. }
  107. this.setData({
  108. formData: JSON.stringify(formData)
  109. })
  110. }
  111. })
  112. this.setData({
  113. showPop: true
  114. })
  115. }
  116. },
  117. /**
  118. * @desc : 选择数据
  119. * @author : 周兴
  120. * @date : 2024/3/25 15:16
  121. */
  122. chooseData(e) {
  123. let list = e.detail.list;
  124. let item = e.detail.item;
  125. let valueKey = this.data.valueKey;
  126. if (!valueKey) {
  127. this.setData({
  128. choosedData: list
  129. })
  130. } else {
  131. let choosedData = this.data.choosedData
  132. // 不允许重复
  133. if (!this.data.repeatFlag) {
  134. if (e.detail.checked) { // 勾选
  135. let filters = choosedData.filter(it => it[valueKey] == item[valueKey])
  136. if (!filters || filters.length == 0) {
  137. choosedData.push(item);
  138. }
  139. } else { // 取消勾选
  140. choosedData = choosedData.filter(it => it[valueKey] != item[valueKey])
  141. }
  142. } else {
  143. if (e.detail.checked) { // 勾选
  144. // 可以重复
  145. choosedData.push(item);
  146. }
  147. }
  148. this.setData({
  149. choosedData: choosedData
  150. })
  151. }
  152. },
  153. /**
  154. * @desc : 确定事件-返回数据
  155. * @author : 周兴
  156. * @date : 2024/3/25 15:16
  157. */
  158. confirm() {
  159. let list = [...this.data.choosedData]
  160. let id = list.map(it => it[this.data.valueKey])
  161. let name = list.map(it => it[this.data.labelKey])
  162. const eventChannel = this.getOpenerEventChannel();
  163. eventChannel.emit('bindData', {
  164. data: {
  165. list,
  166. id,
  167. name
  168. }
  169. })
  170. wx.navigateBack({
  171. delta: 1
  172. })
  173. },
  174. /**
  175. * @desc : 点击事件-返回数据
  176. * @author : 周兴
  177. * @date : 2024/5/8 15:16
  178. */
  179. choose(e) {
  180. // 如果选择框开启就走确定模式
  181. if (this.data.chooseFlag) {
  182. return;
  183. }
  184. let item = e.currentTarget.dataset.item
  185. let index = e.currentTarget.dataset.index
  186. let tableData = this.data.tableData
  187. tableData.forEach(res => {
  188. res.checked = false
  189. })
  190. tableData[index].checked = true
  191. this.setData({
  192. tableData: tableData
  193. })
  194. // 执行点击事件
  195. this._toDetail(item);
  196. },
  197. /**
  198. * @desc : 点击事件-返回数据
  199. * @author : 姜永辉
  200. * @date : 2022/5/23 15:16
  201. */
  202. toDetail(e) {
  203. // 如果选择框开启就走确定模式
  204. if (this.data.chooseFlag) {
  205. return;
  206. }
  207. let item = e.detail.item
  208. let tableData = this.data.tableData
  209. tableData.forEach(res => {
  210. res.checked = false
  211. })
  212. tableData[e.detail.index].checked = true
  213. this.setData({
  214. tableData: tableData
  215. })
  216. // 执行点击事件
  217. this._toDetail(item);
  218. },
  219. /**
  220. * @desc : 执行点击事件(私有方法)
  221. * @author : 周兴
  222. * @date : 2024/5/9 15:16
  223. */
  224. _toDetail(item) {
  225. // 读取传入的单据类型
  226. let route = this.data.chooseRoute
  227. let data = {}
  228. switch (route.type) {
  229. // 部门
  230. case Constants.chooseType.org:
  231. data = {
  232. id: item.orgId,
  233. name: item.orgName
  234. }
  235. break;
  236. // 员工
  237. case Constants.chooseType.staff:
  238. data = {
  239. id: item.staffId,
  240. name: item.staffName,
  241. orgId: item.orgId,
  242. orgName: item.orgName,
  243. staffPhone: item.staffPhone,
  244. }
  245. break;
  246. // 角色
  247. case Constants.chooseType.role:
  248. data = {
  249. id: item.roleId,
  250. name: item.roleName,
  251. }
  252. break;
  253. //渠道
  254. case Constants.chooseType.saleChannel:
  255. data = {
  256. id: item.channelId,
  257. name: item.channelName,
  258. code: item.channelCode
  259. }
  260. break;
  261. //发票抬头
  262. case Constants.chooseType.invoiceType:
  263. data = {
  264. id: item.cpId,
  265. name: item.cpName,
  266. taxNo: item.taxNo,
  267. setId: item.setId,
  268. }
  269. break;
  270. //资金账户
  271. case Constants.chooseType.moneyAccount:
  272. data = {
  273. id: item.macId,
  274. name: item.macName,
  275. code: item.macCode
  276. }
  277. break;
  278. //客户来源
  279. case Constants.chooseType.cusFrom:
  280. data = {
  281. id: item.dataId,
  282. name: item.dataValue,
  283. code: item.dataCode
  284. }
  285. break;
  286. // 供应商
  287. case Constants.chooseType.supplier:
  288. case Constants.chooseType.outSupplier:
  289. data = {
  290. id: item.supId,
  291. name: item.supName,
  292. item: item
  293. }
  294. break;
  295. // 对象类型
  296. case Constants.chooseType.objectType:
  297. data = {
  298. id: item.objId,
  299. name: item.objName,
  300. objType: item.objType
  301. }
  302. break;
  303. // 仓库
  304. case Constants.chooseType.warehouse:
  305. data = {
  306. id: item.whId,
  307. name: item.whName
  308. }
  309. break;
  310. case Constants.chooseType.inventorySku:
  311. data = {
  312. id: item.whId,
  313. name: item.whName,
  314. item: item
  315. }
  316. break;
  317. // 品牌
  318. case Constants.chooseType.brand:
  319. data = {
  320. id: item.brandId,
  321. name: item.brandName
  322. }
  323. break;
  324. // 系列 刘尧 2024.05.29
  325. case Constants.chooseType.series:
  326. data = {
  327. id: item.seriesId,
  328. name: item.seriesName
  329. }
  330. break;
  331. // 计量单位 刘尧 2024.05.29
  332. case Constants.chooseType.unit:
  333. data = {
  334. id: item.unitId,
  335. name: item.unitName,
  336. decimalPlaces: item.decimalPlaces
  337. }
  338. break;
  339. // 系统数据
  340. case Constants.chooseType.kindData:
  341. data = {
  342. id: item.kindCode,
  343. name: item.kindName
  344. }
  345. break;
  346. // 数据字典
  347. case Constants.chooseType.dictionary:
  348. data = {
  349. id: item.dataId,
  350. name: item.dataValue,
  351. dictCode: item.dictCode,
  352. dataCode: item.dataCode,
  353. flgDefault: item.flgDefault,
  354. }
  355. break;
  356. // 系统数据
  357. case Constants.chooseType.kindType:
  358. data = {
  359. id: item.id,
  360. name: item.kindName,
  361. kindType: item.kindType,
  362. kindCode: item.kindCode,
  363. flgDefault: item.flgDefault,
  364. }
  365. break;
  366. default:
  367. data = {}
  368. break;
  369. }
  370. const eventChannel = this.getOpenerEventChannel();
  371. eventChannel.emit('bindData', {
  372. data: data
  373. })
  374. wx.navigateBack({
  375. delta: 1
  376. })
  377. },
  378. /**
  379. * @desc : 设置查询参数
  380. * @date : 2024/3/25 15:49
  381. * @author : 周兴
  382. */
  383. setSearchParams(params) {
  384. params.flgValid = true
  385. // 字典类别
  386. if (this.data.dictCode) {
  387. params.dictCode = this.data.dictCode
  388. }
  389. // 系统数据
  390. if (this.data.kindType) {
  391. params.kindType = this.data.kindType
  392. }
  393. if (this.data.otherSearchParam) {
  394. Object.assign(params, this.data.otherSearchParam)
  395. }
  396. let chooseType = this.data.chooseRoute.type;
  397. // 供应商
  398. if (chooseType == Constants.chooseType.supplier) {
  399. params.supType = "";
  400. let active = this.data.active
  401. // params.supType = Constants.kindCode.supplierPur;
  402. params.supTypeList = this.data.supTypeList;
  403. if (active == 1) { //采购供应商
  404. params.supType = Constants.kindCode.supplierPur;
  405. } else if (active == 2) { //服务供应商
  406. params.supType = Constants.kindCode.supplierService;
  407. }
  408. }
  409. // 外协供应商
  410. if (chooseType == Constants.chooseType.outSupplier) {
  411. params.supType = Constants.kindCode.supplierOutsourcing;
  412. }
  413. //跟据色号公司skuid判断库存
  414. if (chooseType == Constants.chooseType.inventorySku) {
  415. params.skuId = this.data.item.skuId
  416. params.nonStdCode = this.data.item.nonStdCode
  417. params.cpId = app.globalData.company.cpId
  418. }
  419. if (chooseType == Constants.chooseType.saleChannel) {
  420. params.dataSourceCode = Constants.chooseType.saleChannel
  421. }
  422. if (chooseType == Constants.chooseType.cusFrom) {
  423. params.dataSourceCode = Constants.chooseType.cusFrom
  424. }
  425. if (chooseType == Constants.chooseType.inventorySku) {
  426. params.flgValid = true
  427. }
  428. if (chooseType == Constants.chooseType.warehouse) {
  429. params.flgValid = true
  430. }
  431. return params
  432. },
  433. /**
  434. * @desc : 删除已选
  435. * @date : 2024年3月26日
  436. * @author : 周兴
  437. */
  438. delChoosed(e) {
  439. let choosedData = this.data.choosedData;
  440. choosedData = choosedData.filter((it, index) => index != e.detail.index)
  441. this.setData({
  442. choosedData: choosedData
  443. })
  444. },
  445. /**
  446. * @desc : 查询数据
  447. * @date : 2024年3月23日
  448. * @author : 周兴
  449. */
  450. getData(params) {
  451. let service = app.globalData[this.data.routeObjName + 'Service'];
  452. return this.excute(service, service[this.data.method], params);
  453. },
  454. /**
  455. * @desc : 保存数据
  456. * @date : 2024年5月9日
  457. * @author : 周兴
  458. */
  459. editItems(e) {
  460. let data = e.detail.form
  461. // 基础资料的传值
  462. data.dictCode = this.data.dictCode
  463. this.setData({
  464. formData: JSON.stringify(data)
  465. })
  466. //执行保存编辑操作
  467. this.save({})
  468. },
  469. /**
  470. * @desc : 执行保存
  471. * @date : 2024年5月9日
  472. * @author : 周兴
  473. */
  474. saveData(params) {
  475. let routeObjNamePop = this.data.routeObjNamePop
  476. if (!routeObjNamePop) return;
  477. this.setData({
  478. addItem: null
  479. })
  480. let service = app.globalData[routeObjNamePop + 'Service']
  481. let defaultFlag = this.data.defaultFlag;
  482. // 没有默认值就直接保存
  483. if (!defaultFlag) {
  484. return this.excute(service, service.insert, params).then(res => {
  485. if (res.data.code === Constants.SUCESS_CODE) {
  486. wx.showToast({
  487. title: '保存成功',
  488. image: '/static/image/success.png',
  489. duration: 2000
  490. })
  491. if (res.data.data) {
  492. setTimeout(() => {
  493. // 多选就选中
  494. if (this.data.chooseFlag) {
  495. this.setData({
  496. addItem: res.data.data
  497. })
  498. this.searchData();
  499. } else {
  500. // 执行点击事件
  501. this._toDetail(res.data.data)
  502. }
  503. }, 2000)
  504. }
  505. }
  506. })
  507. } else {
  508. this.isFlgDefaultSave(service).then(it => {
  509. //存在默认
  510. Dialog.confirm({
  511. message: mixins.$t('defaultInfo'),
  512. }).then(() => {
  513. return this.excute(service, service.insert, params).then(res => {
  514. if (res.data.code === Constants.SUCESS_CODE) {
  515. wx.showToast({
  516. title: '保存成功',
  517. image: '/static/image/success.png',
  518. duration: 2000
  519. })
  520. if (res.data.data) {
  521. setTimeout(() => {
  522. // 执行点击事件
  523. this._toDetail(res.data.data)
  524. }, 2000)
  525. }
  526. }
  527. })
  528. }).catch(() => {
  529. // this.setData({
  530. // dataItem: null
  531. // })
  532. // //清除组件数据
  533. // this.selectComponent('#popup').setFormNull()
  534. return
  535. });
  536. })
  537. }
  538. },
  539. /**
  540. * @desc : 新建默认设置提示
  541. * @author : 于继渤
  542. * @date : 2022/5/26 20:16
  543. */
  544. isFlgDefaultSave(service) {
  545. return new Promise((resolve, reject) => {
  546. this.excute(service, service.selectByCond, {
  547. flgDefault: true
  548. }).then(res => {
  549. if (res.data.data.list && res.data.data.list.length > 0) {
  550. resolve(false)
  551. } else {
  552. resolve(true)
  553. }
  554. })
  555. })
  556. },
  557. /**
  558. * @desc : tab切换(列表和已选)
  559. * @date : 2024/3/25 15:49
  560. * @author : 周兴
  561. */
  562. changeTag(e) {
  563. this.setData({
  564. active: e.detail.index
  565. })
  566. },
  567. /**
  568. * @desc : 切换tab
  569. * @date : 2024/2/1 15:49
  570. * @author : 周兴
  571. */
  572. onChangeTabs(e) {
  573. let index = e.detail.detail.index
  574. this.setData({
  575. active: index,
  576. })
  577. // 查询
  578. this.searchData()
  579. },
  580. /**
  581. * @desc : stickyView的高度
  582. * @date : 2024年3月23日
  583. * @author : 周兴
  584. */
  585. queryHeight() {
  586. let _this = this
  587. var query = wx.createSelectorQuery();
  588. query.select('#stickyView').boundingClientRect(function (rect) {
  589. var height = rect.height; // 获取元素的高度
  590. _this.setData({
  591. heightList: height + 20
  592. })
  593. }).exec();
  594. },
  595. /**
  596. * @desc : 生命周期函数(初始加载)
  597. * @date : 2024年3月23日
  598. * @author : 周兴
  599. */
  600. loadInit(e) {
  601. // // stickyView的高度
  602. // this.queryHeight()
  603. let route = this.data.chooseRoute;
  604. if (!route || !route.type) {
  605. return;
  606. }
  607. let title;
  608. // 读取传入的单据类型
  609. let chooseType = route.type
  610. //
  611. let dataItemData = {}
  612. switch (chooseType) {
  613. // 角色
  614. case Constants.chooseType.role:
  615. title = "角色"
  616. this.setData({
  617. addUrl: '/package-basic-data/pages/role/add/add',
  618. routeObjName: 'common',
  619. method: 'getRole',
  620. valueKey: 'roleId',
  621. title: 'roleName',
  622. chooseFlag: route.chooseFlag,
  623. simpleFlag: true,
  624. contentList: [{
  625. name: 'roleCode',
  626. title: '编码'
  627. }, ],
  628. placeholder: ['roleName']
  629. })
  630. break;
  631. // 部门
  632. case Constants.chooseType.org:
  633. title = "部门"
  634. this.setData({
  635. addUrl: app.globalData.company.gradeCode == Constants.gradeCode.STD ? null : '/package-basic-data/pages/org/org',
  636. routeObjName: 'common',
  637. method: 'getOrg',
  638. valueKey: 'orgId',
  639. title: 'orgName',
  640. simpleFlag: true,
  641. // contentList: [{
  642. // name: 'orgCode',
  643. // title: '部门编码'
  644. // },],
  645. placeholder: ['orgName']
  646. })
  647. break;
  648. // 员工
  649. case Constants.chooseType.staff:
  650. title = "员工"
  651. this.setData({
  652. addUrl: '/package-basic-data/pages/staff/add/add',
  653. routeObjName: 'common',
  654. method: 'getStaff',
  655. valueKey: 'staffId',
  656. title: 'staffName',
  657. contentList: [{
  658. name: 'staffCode',
  659. title: '员工工号'
  660. },
  661. {
  662. name: 'orgName',
  663. title: '部门'
  664. },
  665. ],
  666. placeholder: ['staffName']
  667. })
  668. break;
  669. //客户来源
  670. case Constants.chooseType.cusFrom:
  671. title = "客户来源"
  672. this.setData({
  673. routeObjName: 'common',
  674. method: 'getInitData',
  675. valueKey: 'dataId',
  676. title: 'dataValue',
  677. contentList: [{
  678. name: 'dataCode',
  679. title: '来源编码'
  680. },
  681. {
  682. name: 'dataValue',
  683. title: '来源名称'
  684. },
  685. ],
  686. placeholder: ['sourceName']
  687. })
  688. break;
  689. // 资金账户
  690. case Constants.chooseType.moneyAccount:
  691. title = "资金账户"
  692. this.setData({
  693. routeObjName: 'common',
  694. pageFlag: false,
  695. method: 'getMac',
  696. valueKey: 'macId',
  697. title: 'macName',
  698. contentList: [{
  699. name: 'macCode',
  700. title: '账户编码'
  701. },
  702. {
  703. name: 'macName',
  704. title: '账户名称'
  705. },
  706. ],
  707. placeholder: ['moneyAccount']
  708. })
  709. break;
  710. // 资金账户
  711. case Constants.chooseType.invoiceType:
  712. title = "发票抬头"
  713. this.setData({
  714. addUrl: '/package-basic-data/pages/invoice-header/add/add',
  715. routeObjName: 'receiptSet',
  716. pageFlag: false,
  717. method: 'getdata',
  718. valueKey: 'cpId',
  719. title: 'cpName',
  720. contentList: [{
  721. name: 'taxNo',
  722. title: mixins.$t('companyTaxNumber')
  723. }, ],
  724. placeholder: ['receiptSet']
  725. })
  726. break;
  727. //销售渠道
  728. case Constants.chooseType.saleChannel:
  729. title = "销售渠道"
  730. this.setData({
  731. routeObjName: 'common',
  732. method: 'getInitData',
  733. valueKey: 'channelId',
  734. title: 'channelName',
  735. simpleFlag: true,
  736. placeholder: ['channelName']
  737. })
  738. break;
  739. // 供应商
  740. case Constants.chooseType.supplier:
  741. case Constants.chooseType.outSupplier:
  742. title = "供应商"
  743. this.setData({
  744. addUrl: '/package-purchase/pages/supplier-list/add/add',
  745. routeObjName: 'supplier',
  746. method: 'selectByCond',
  747. title: 'supName',
  748. valueKey: 'supId',
  749. labelKey: 'supName',
  750. chooseFlag: route.chooseFlag,
  751. supTypeList: route.supTypeList,
  752. placeholder: ['supplier']
  753. })
  754. if (this.data.item.defaultSupplier) {
  755. this.setData({
  756. contentList: [{
  757. name: 'returnAddress',
  758. title: '供应商地址'
  759. },
  760. {
  761. name: 'payableResidue',
  762. title: '供应商欠款'
  763. },
  764. ],
  765. })
  766. } else {
  767. this.setData({
  768. contentList: [{
  769. name: 'supTypeName',
  770. title: '供应商类别'
  771. },
  772. {
  773. name: 'returnAddress',
  774. title: '供应商地址'
  775. },
  776. //bug 7524 跟采购订单保持一致
  777. // {
  778. // name: 'balance',
  779. // title: '余额'
  780. // },
  781. {
  782. name: 'payableResidue',
  783. title: '供应商欠款'
  784. },
  785. ],
  786. })
  787. }
  788. // 多选时就不要有其他的tag标签
  789. // if (!route.chooseFlag) {
  790. // this.setData({
  791. // tagList: [{
  792. // title: mixins.$t("all") //全部
  793. // }, {
  794. // title: mixins.$t("procurementSupplier") //采购供应商
  795. // }, {
  796. // title: mixins.$t("serviceProvider") // 服务供应商
  797. // }],
  798. // })
  799. // }
  800. break;
  801. // 仓库
  802. case Constants.chooseType.warehouse:
  803. title = "仓库"
  804. dataItemData['supervisor'] = app.globalData.user.staffName
  805. dataItemData['contactPhone'] = app.globalData.user.userPhone
  806. this.setData({
  807. routeObjName: 'common',
  808. routeObjNamePop: 'warehouse',
  809. method: 'getWarehouseListBy',
  810. valueKey: 'whId',
  811. title: 'whName',
  812. simpleFlag: true,
  813. contentList: [{
  814. name: 'supervisor',
  815. title: '仓库主管'
  816. },
  817. {
  818. name: 'contactPhone',
  819. title: '联系电话'
  820. },
  821. ],
  822. placeholder: ['whName'],
  823. popContent: [
  824. // { code: 'whCode', type: 'str', title: mixins.$t('whCode'), required: false, readonly: true, },
  825. {
  826. code: 'whName',
  827. type: 'str',
  828. title: mixins.$t('whName'),
  829. required: true
  830. },
  831. {
  832. name: 'supervisor',
  833. code: 'supervisor',
  834. title: mixins.$t("supervisor"),
  835. type: 'choose',
  836. required: true,
  837. urlKey: 'chooseStaff'
  838. },
  839. {
  840. code: 'contactPhone',
  841. type: 'str',
  842. title: mixins.$t('contactPhone'),
  843. required: true
  844. },
  845. {
  846. code: 'remarks',
  847. type: 'textarea',
  848. title: mixins.$t('remarks'),
  849. required: false
  850. }
  851. ],
  852. //设置默认主管
  853. dataItem: JSON.stringify(dataItemData)
  854. })
  855. break;
  856. case Constants.chooseType.inventorySku:
  857. title = "库存"
  858. this.setData({
  859. routeObjName: 'common',
  860. method: 'getInventory',
  861. title: 'skuName',
  862. contentList: [{
  863. name: 'skuCode',
  864. title: '商品编码'
  865. },
  866. {
  867. name: 'whName',
  868. title: '库区'
  869. },
  870. {
  871. name: 'nonStdCode',
  872. title: '色号'
  873. },
  874. {
  875. name: 'usableQty',
  876. title: '可售量'
  877. },
  878. {
  879. name: 'invQty',
  880. title: '库存量'
  881. },
  882. {
  883. name: 'outingQty',
  884. title: '占库量'
  885. },
  886. {
  887. name: 'freezeQty',
  888. title: '冻结量'
  889. },
  890. ],
  891. placeholder: ['whName']
  892. })
  893. break;
  894. // 品牌
  895. case Constants.chooseType.brand:
  896. title = "品牌"
  897. this.setData({
  898. routeObjName: 'common',
  899. routeObjNamePop: 'goodsBrand',
  900. method: 'goodsBrandListNoPage',
  901. chooseFlag: route.chooseFlag,
  902. repeatFlag: route.repeatFlag,
  903. valueKey: 'brandId',
  904. pageFlag: false,
  905. popTitle: mixins.$t('add') + title,
  906. title: 'brandName',
  907. simpleFlag: true,
  908. // contentList: [{
  909. // name: 'brandCode',
  910. // title: '品牌编码'
  911. // },
  912. // {
  913. // name: 'brandName',
  914. // title: '品牌名称'
  915. // },
  916. // ],
  917. placeholder: ['brandName']
  918. })
  919. // 标准版没有供应商
  920. if (this.data.gradeCode == Constants.gradeCode.STD) {
  921. this.setData({
  922. popContent: [{
  923. code: 'brandName',
  924. type: 'str',
  925. title: mixins.$t('brandName'),
  926. required: true
  927. },
  928. {
  929. code: 'remarks',
  930. type: 'textarea',
  931. title: mixins.$t('remarks'),
  932. required: false
  933. }
  934. ],
  935. })
  936. } else {
  937. this.setData({
  938. popContent: [{
  939. code: 'brandName',
  940. type: 'str',
  941. title: mixins.$t('brandName'),
  942. required: true
  943. },
  944. {
  945. code: 'supplierIds',
  946. name: 'supplierNames',
  947. title: 'supplier',
  948. type: 'choose',
  949. dropType: 'supplier',
  950. urlKey: '',
  951. code: 'supplierIds',
  952. formMode: 'index',
  953. idKey: 'roleId',
  954. title: mixins.$t('supplier')
  955. },
  956. {
  957. code: 'remarks',
  958. type: 'textarea',
  959. title: mixins.$t('remarks'),
  960. required: false
  961. }
  962. ],
  963. })
  964. }
  965. break;
  966. // 系列 刘尧 2024.05.29
  967. case Constants.chooseType.series:
  968. title = "系列"
  969. this.setData({
  970. routeObjName: 'common',
  971. routeObjNamePop: 'goodsSeries',
  972. method: 'getGoodsSeriesNoPage',
  973. chooseFlag: route.chooseFlag,
  974. repeatFlag: route.repeatFlag,
  975. valueKey: 'seriesId',
  976. pageFlag: false,
  977. popTitle: mixins.$t('add') + title,
  978. title: 'seriesName',
  979. simpleFlag: true,
  980. placeholder: ['seriesName'],
  981. popContent: [{
  982. code: 'seriesName',
  983. type: 'str',
  984. title: mixins.$t('seriesName'),
  985. required: true
  986. },
  987. {
  988. code: 'remarks',
  989. type: 'textarea',
  990. title: mixins.$t('remarks'),
  991. required: false
  992. }
  993. ]
  994. })
  995. break;
  996. // 计量单位 刘尧 2024.05.29
  997. case Constants.chooseType.unit:
  998. title = "单位"
  999. dataItemData['decimalPlaces'] = 0
  1000. this.setData({
  1001. routeObjName: 'common',
  1002. routeObjNamePop: 'unit',
  1003. method: 'getUnitNoPage',
  1004. status: 'decimalPlacesStr',
  1005. chooseFlag: route.chooseFlag,
  1006. repeatFlag: route.repeatFlag,
  1007. statusFlag: true,
  1008. valueKey: 'unitId',
  1009. pageFlag: false,
  1010. popTitle: mixins.$t('add') + title,
  1011. title: 'unitName',
  1012. simpleFlag: true,
  1013. placeholder: ['unitName'],
  1014. popContent: [{
  1015. code: 'unitName',
  1016. type: 'str',
  1017. title: mixins.$t('unitName'),
  1018. required: true
  1019. },
  1020. {
  1021. code: 'decimalPlaces',
  1022. max: 6,
  1023. type: 'number',
  1024. sign: "",
  1025. digits: 0,
  1026. title: mixins.$t('decimalPlaces'),
  1027. required: true,
  1028. formatThousandth: false,
  1029. content: 0
  1030. },
  1031. {
  1032. code: 'remarks',
  1033. type: 'textarea',
  1034. title: mixins.$t('remarks'),
  1035. required: false
  1036. }
  1037. ],
  1038. //设置小数位数
  1039. dataItem: JSON.stringify(dataItemData)
  1040. })
  1041. break;
  1042. // 数据字典
  1043. case Constants.chooseType.dictionary:
  1044. title = "数据字典"
  1045. let dictCode = route.dictCode
  1046. this.setData({
  1047. addUrl: '/package-basic-data/pages/basic-data/basic-data',
  1048. routeObjName: 'common',
  1049. method: 'getDictionaryData',
  1050. routeObjNamePop: 'basicData',
  1051. dictCode: route.dictCode,
  1052. chooseFlag: route.chooseFlag,
  1053. repeatFlag: route.repeatFlag,
  1054. simpleFlag: true,
  1055. pageFlag: false,
  1056. valueKey: 'dataId',
  1057. title: 'dataValue',
  1058. contentList: [{
  1059. name: 'dataCode',
  1060. title: '数据编码'
  1061. },
  1062. {
  1063. name: 'dictCode',
  1064. title: '字典项目'
  1065. },
  1066. ],
  1067. placeholder: ['dicName'],
  1068. })
  1069. if (dictCode == mixins.$t('reasonStorageSys')) {
  1070. let popContent = [{
  1071. code: 'dataValue',
  1072. type: 'str',
  1073. title: mixins.$t('reasonName'),
  1074. required: true
  1075. },
  1076. {
  1077. code: 'remarks',
  1078. type: 'textarea',
  1079. title: mixins.$t('remarks'),
  1080. required: false,
  1081. },
  1082. ]
  1083. this.setData({
  1084. popContent
  1085. })
  1086. }
  1087. break;
  1088. // 系统数据
  1089. case Constants.chooseType.kindData:
  1090. title = "系统数据"
  1091. this.setData({
  1092. pageFlag: false,
  1093. routeObjName: 'common',
  1094. method: 'getDataKind',
  1095. kindType: route.kindType,
  1096. valueKey: 'kindCode',
  1097. title: 'kindName',
  1098. chooseFlag: route.chooseFlag,
  1099. repeatFlag: route.repeatFlag,
  1100. contentList: [{
  1101. name: 'kindCode',
  1102. title: '数据代码'
  1103. },
  1104. {
  1105. name: 'kindName',
  1106. title: '数据名称'
  1107. },
  1108. ],
  1109. placeholder: ['sensitiveName']
  1110. })
  1111. break;
  1112. // 对象类型
  1113. case Constants.chooseType.objectType:
  1114. this.setData({
  1115. title: 'objName',
  1116. routeObjName: 'common',
  1117. method: 'getSupplierAndCustomerData',
  1118. })
  1119. if (!route.objectType) {
  1120. title = "对象类型"
  1121. this.setData({
  1122. contentList: [{
  1123. name: 'objCode',
  1124. title: '对象编码'
  1125. },
  1126. {
  1127. name: 'objTypeName',
  1128. title: '对象'
  1129. },
  1130. {
  1131. name: 'addressFull',
  1132. title: '地址'
  1133. },
  1134. {
  1135. name: 'phone',
  1136. title: '电话'
  1137. }
  1138. ],
  1139. searchContent: [{
  1140. code: 'supplier-customer',
  1141. title: '选择对象',
  1142. searchType: Constants.searchType.switch,
  1143. list: [{
  1144. code: 'supplier',
  1145. title: '供应商',
  1146. value: 1,
  1147. },
  1148. {
  1149. code: 'customer',
  1150. title: '客户',
  1151. value: 2
  1152. }
  1153. ]
  1154. }],
  1155. placeholder: ['customerName', 'supplierName', 'address', 'telephone']
  1156. })
  1157. } else {
  1158. // 客户
  1159. if (route.objectType == 'customer') {
  1160. title = "客户"
  1161. this.setData({
  1162. contentList: [{
  1163. name: 'phone',
  1164. title: '客户电话'
  1165. },
  1166. {
  1167. name: 'addressFull',
  1168. title: '客户地址'
  1169. }
  1170. ],
  1171. placeholder: ['customerName', 'address', 'telephone'],
  1172. otherSearchParam: {
  1173. 'supplier-customerList': "2"
  1174. }
  1175. })
  1176. } else {
  1177. // 供应商
  1178. title = "供应商"
  1179. this.setData({
  1180. contentList: [{
  1181. name: 'phone',
  1182. title: '供应商电话'
  1183. },
  1184. {
  1185. name: 'addressFull',
  1186. title: '供应商地址'
  1187. }
  1188. ],
  1189. placeholder: ['supplierName', 'address', 'telephone'],
  1190. otherSearchParam: {
  1191. 'supplier-customerList': "1"
  1192. }
  1193. })
  1194. }
  1195. }
  1196. break;
  1197. default:
  1198. break;
  1199. }
  1200. // 多选,数据回显到已选列表
  1201. if (this.data.chooseFlag && this.data.item && this.data.item.data) {
  1202. this.setData({
  1203. choosedData: this.data.item.data
  1204. })
  1205. }
  1206. wx.setNavigationBarTitle({
  1207. title: '选择' + title,
  1208. })
  1209. // 调取查询
  1210. this.searchData();
  1211. },
  1212. /**
  1213. * @desc : 对获取到的数据进行处理
  1214. * @date : 2024年5月29日
  1215. * @author : 刘尧
  1216. */
  1217. handleSearchData(tableData) {
  1218. let addItem = this.data.addItem
  1219. let valueKey = this.data.valueKey
  1220. let choosedData = this.data.choosedData
  1221. tableData.forEach(item => {
  1222. if (addItem && valueKey) {
  1223. if (item[valueKey] == addItem[valueKey]) {
  1224. item.checked = true;
  1225. choosedData.push({
  1226. ...item
  1227. });
  1228. }
  1229. }
  1230. // 判断数据中是否存在计量单位的小数位数字段
  1231. if (item && (item.decimalPlaces || item.decimalPlaces === 0)) {
  1232. item.decimalPlacesStr = '小数:' + item.decimalPlaces
  1233. }
  1234. if (this.data.item.defaultSupplier) {
  1235. // todo
  1236. const targetData = this.data.contentList.filter(res => res.title === '供应商欠款')
  1237. item[targetData[0].name] = item.payableResidue - item.paymentResidue
  1238. }
  1239. if (this.data.routeObjName == 'supplier') {
  1240. // item.balance = item.paymentResidue - item.payableResidue //bug 7524 跟采购订单保持一致
  1241. item.payableResidue = item.payableResidue - item.paymentResidue
  1242. }
  1243. })
  1244. this.setData({
  1245. tableData: tableData,
  1246. choosedData: choosedData
  1247. })
  1248. if (this.data.item.defaultSupplier) {
  1249. wx.setNavigationBarTitle({
  1250. title: '选择采购供应商',
  1251. })
  1252. }
  1253. }
  1254. })