select-data.js 31 KB

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