dk-form.js 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895
  1. /*******************************************************************************
  2. * Copyright(c) 2024 dongke All rights reserved. / Confidential
  3. * 类的信息:
  4. * 1.程序名称:
  5. * 2.功能描述:表单-(基础数据)
  6. * 编辑履历:
  7. * 作者 日期 版本 修改内容
  8. * 周兴 2024-1-30 1.00 新建
  9. *******************************************************************************/
  10. const common = require('@/utils/common');
  11. const Constants = require('@/utils/Constants');
  12. const util = require('@/utils/util.js')
  13. const chooseLocation = requirePlugin('chooseLocation');
  14. const config = require('@/config/config.js')
  15. const app = getApp();
  16. Component({
  17. //class暴露 方便外部修改内部样式 -2024/06/11 于继渤
  18. // externalClasses: ['dk-card-class','dk-card-outer-class'],
  19. /**
  20. * 组件的属性列表
  21. */
  22. properties: {
  23. // 区域
  24. cardList: {
  25. type: Array,
  26. value: []
  27. },
  28. transparentStyle:{
  29. type: Boolean,
  30. value: false
  31. },
  32. uploaderMAX: {
  33. type: Number,
  34. value: 5
  35. },
  36. // 表名,用于上传附件
  37. table: {
  38. type: String,
  39. },
  40. // 内容
  41. contentObj: {
  42. type: Object,
  43. },
  44. // 结果集
  45. value: {
  46. type: String,
  47. observer: function (newVal) {
  48. if (newVal) {
  49. this.setData({
  50. form: JSON.parse(newVal) || {}
  51. })
  52. } else {
  53. this.setData({
  54. form: {}
  55. })
  56. }
  57. }
  58. },
  59. routeObjName: {
  60. type: String,
  61. }
  62. },
  63. /**
  64. * 组件的初始数据
  65. */
  66. data: {
  67. // 是否显示pop
  68. show: false,
  69. mutishow: false,
  70. showDate: false,
  71. showDateDay: false,
  72. showDateTime: false,
  73. currentDate: new Date().getTime(),
  74. $t: app.globalData.lang,
  75. routeUrl: app.globalData['routeUrl'],
  76. item: null,
  77. index: null,
  78. card: null,
  79. // 下拉类型
  80. dropType: null,
  81. dropCode: null,
  82. dropName: null,
  83. // 根据值控制组件的显示隐藏
  84. changeObj: null,
  85. form: {},
  86. maxSize: Constants.uploadFileConfig.maxSize,
  87. checked: false
  88. },
  89. lifetimes: {
  90. attached: function () { },
  91. detached: function () {
  92. // 在组件实例被从页面节点树移除时执行
  93. // 清空地址信息
  94. chooseLocation.setLocation(null);
  95. },
  96. },
  97. pageLifetimes: {
  98. /**
  99. * @desc : 生命周期函数--监听页面显示
  100. * @author : 周兴
  101. * @date : 2024/2/19 12:16
  102. */
  103. show: function () {
  104. const location = chooseLocation.getLocation();
  105. let form = this.data.form
  106. if (location) {
  107. form['address'] = location;
  108. form['addressName'] = location.name;
  109. form['addressFull'] = form['addressFull'] ? form['addressFull'] : location.address + location.name;
  110. form['addressGcj02'] = {
  111. latitude: location.latitude,
  112. longitude: location.longitude
  113. };
  114. form['addressArea'] = {
  115. province: location.province,
  116. city: location.city,
  117. district: location.district == undefined || !location.district ? location.city : location.district
  118. }
  119. // 如果有校验信息就清除掉
  120. let card = this.data.card;
  121. let index = this.data.index;
  122. let contentObj = this.data.contentObj;
  123. if (card && contentObj[card][index]?.errMsg) {
  124. contentObj[card][index].errMsg = undefined;
  125. this.setData({
  126. contentObj: contentObj
  127. })
  128. }
  129. }
  130. this.setData({
  131. value: JSON.stringify(form),
  132. form: form
  133. })
  134. }
  135. },
  136. /**
  137. * 组件的方法列表
  138. */
  139. methods: {
  140. /**
  141. * @desc : 显示tip
  142. * @author : 周兴
  143. * @date : 2024/4/25 11:46
  144. */
  145. showTip(e) {
  146. let item = e.currentTarget.dataset.item
  147. if (item.tip) {
  148. util.showToast(item.tip);
  149. }
  150. },
  151. /**
  152. * @desc : 外漏str的点击事件
  153. * @author : 周兴
  154. * @date : 2024/1/26 11:46
  155. */
  156. openStr(e){
  157. let item = e.currentTarget.dataset;
  158. this.triggerEvent("openStr", { code: item.key,})
  159. },
  160. /**
  161. * @desc : 打开下拉
  162. * @author : 周兴
  163. * @date : 2024/1/26 11:46
  164. */
  165. open(e) {
  166. let item = e.currentTarget.dataset;
  167. console.log('item',item)
  168. if (item.item.readonly) {
  169. return
  170. }
  171. this.setData({
  172. dropCode: item.key,
  173. dropName: item.name,
  174. dropType: item.type,
  175. index: item.index,
  176. card: item.card
  177. })
  178. console.log('ee', e);
  179. // 单选
  180. if (item.item.type == 'drop') {
  181. this.setData({
  182. show: true,
  183. changeObj: item.item.changeObj,
  184. })
  185. // 多选
  186. } else if (item.item.type == 'mutidrop') {
  187. this.setData({
  188. mutishow: true
  189. })
  190. } else if (item.item.type == 'choose' || item.item.type == 'chooseAndStr') {
  191. let that = this
  192. console.log(item, this.data.routeObjName, this.data.routeUrl);
  193. that.setData({
  194. changeObj: item.item.changeObj,
  195. })
  196. // 跳转链接
  197. if (item.item.urlKey) {
  198. let route = this.data.routeUrl[this.data.routeObjName][item.item.urlKey]
  199. let url = route.url
  200. // TODO
  201. // url = '/package-base-select/pages/select-customers/select-customers'
  202. if (url) {
  203. wx.navigateTo({
  204. url: url,
  205. events: {
  206. // 回调后
  207. bindData: function (data) {
  208. let contentObj = that.data.contentObj
  209. // 是否根据值进行控制其他组件显示、隐藏
  210. let changeObj = that.data.changeObj
  211. let key = data.data ? data.data.id : null;
  212. let card = that.data.card;
  213. if (changeObj && changeObj[key]) {
  214. // 显示
  215. if (changeObj[key]['visible']) {
  216. changeObj[key]['visible'].forEach(it => {
  217. let index = contentObj[card].findIndex(t => t.code == it)
  218. console.log('index', index);
  219. if (contentObj[card][index]) {
  220. contentObj[card][index].hide = false
  221. }
  222. })
  223. }
  224. // 隐藏
  225. if (changeObj[key]['hide']) {
  226. changeObj[key]['hide'].forEach(it => {
  227. let index = contentObj[card].findIndex(t => t.code == it)
  228. console.log('index', index);
  229. if (contentObj[card][index]) {
  230. contentObj[card][index].hide = true
  231. }
  232. })
  233. }
  234. }
  235. that.setData({
  236. contentObj: contentObj
  237. })
  238. that.triggerEvent("chooseData", {
  239. code: item.key,
  240. data: data
  241. })
  242. }
  243. },
  244. success: function (res) {
  245. console.log('item', that.data.form)
  246. let data = {
  247. item: {
  248. data: item.item.datalist || []
  249. },
  250. route: route,
  251. formMode: item.item.formMode,
  252. id: that.data.form[item.item.idKey],
  253. chooseType: item.item.chooseType
  254. }
  255. if (that.data.form[item.item.code]) {
  256. data[item.item.code] = that.data.form[item.item.code]
  257. }
  258. // 通过eventChannel向被打开页面传送数据
  259. // that.data.form.formMode = item.item.formMode
  260. // that.data.form.id = that.data.form[item.item.idKey]
  261. // that.data.form.chooseType = item.item.chooseType
  262. res.eventChannel.emit('params', data)
  263. }
  264. })
  265. }
  266. }
  267. }
  268. },
  269. /**
  270. * @desc : 非空校验
  271. * @author : 周兴
  272. * @date : 2024/2/20 11:46
  273. */
  274. validData() {
  275. let flag = true;
  276. let cardList = this.data.cardList;
  277. if (!cardList || cardList.length == 0) {
  278. return flag;
  279. }
  280. let form = this.data.form;
  281. let contentObj = this.data.contentObj;
  282. cardList.forEach(card => {
  283. if (contentObj[card]) {
  284. contentObj[card].forEach(item => {
  285. let title = this.$t(item.title ? item.title : item.code)
  286. // 如果必须输入,就要进行判断
  287. if (item.required && !form[item.code]) {
  288. item.errMsg = title + '不为空'
  289. flag = false;
  290. }
  291. // 电话校验
  292. console.log(item.type,item.required,form[item.code]);
  293. if (item.type == 'phone' && item.required && form[item.code]) {
  294. // 联系电话格式错误
  295. var myreg = Constants.Mobile_Phone_Number_Regular_Expression
  296. if (!myreg.test(form[item.code])) {
  297. item.errMsg = title + '格式错误'
  298. flag = false;
  299. }
  300. }
  301. })
  302. }
  303. })
  304. this.setData({
  305. contentObj: contentObj
  306. })
  307. return flag;
  308. },
  309. /**
  310. * @desc : 默认隐藏或者显示列 四个参数(1.contentObj 要改变的对象列表 2. 对象列表需要改变的块名 3.改变块 里的 changeObj 改变规则 4.规则里的 规则名)
  311. * @author : 周兴
  312. * @date : 2024/1/26 11:46
  313. */
  314. defaultvisibleOrHide(contentObj, card, changeObj, key) {
  315. // 是否根据值进行控制其他组件显示、隐藏
  316. if (changeObj && changeObj[key]) {
  317. // 显示
  318. if (changeObj[key]['visible']) {
  319. changeObj[key]['visible'].forEach(it => {
  320. let index = contentObj[card].findIndex(t => t.code == it)
  321. console.log('index', index);
  322. if (contentObj[card][index]) {
  323. contentObj[card][index].hide = false
  324. }
  325. })
  326. }
  327. // 隐藏
  328. if (changeObj[key]['hide']) {
  329. changeObj[key]['hide'].forEach(it => {
  330. let index = contentObj[card].findIndex(t => t.code == it)
  331. console.log('index', index);
  332. if (contentObj[card][index]) {
  333. contentObj[card][index].hide = true
  334. }
  335. })
  336. }
  337. }
  338. this.setData({
  339. contentObj: contentObj
  340. })
  341. },
  342. /**
  343. * @desc : 选择数据
  344. * @author : 周兴
  345. * @date : 2024/1/26 11:46
  346. */
  347. chooseData(e) {
  348. console.log("chooseData-dkform",e.detail);
  349. let contentObj = this.data.contentObj;
  350. let form = this.data.form
  351. if (e.detail.ids) {
  352. form[this.data.dropCode + 's'] = e.detail.ids;
  353. form[this.data.dropName + 's'] = e.detail.names;
  354. } else {
  355. form[this.data.dropCode] = e.detail.value;
  356. form[this.data.dropName] = e.detail.text;
  357. }
  358. let card = this.data.card;
  359. // 选择后清空校验提示信息
  360. if (card && contentObj[card][this.data.index]?.errMsg && e.detail) {
  361. contentObj[card][this.data.index].errMsg = undefined;
  362. }
  363. this.setData({
  364. value: JSON.stringify(form),
  365. form: form,
  366. contentObj: contentObj
  367. })
  368. // 是否根据值进行控制其他组件显示、隐藏
  369. let changeObj = this.data.changeObj
  370. let key = e.detail.value //util.getKeyByValue(Constants.kindCode, e.detail.value);
  371. if (changeObj && changeObj[key]) {
  372. // 显示
  373. if (changeObj[key]['visible']) {
  374. changeObj[key]['visible'].forEach(it => {
  375. let index = contentObj[card].findIndex(t => t.code == it)
  376. console.log('index', index);
  377. if (contentObj[card][index]) {
  378. contentObj[card][index].hide = false
  379. }
  380. })
  381. }
  382. // 隐藏
  383. if (changeObj[key]['hide']) {
  384. changeObj[key]['hide'].forEach(it => {
  385. let index = contentObj[card].findIndex(t => t.code == it)
  386. console.log('index', index);
  387. if (contentObj[card][index]) {
  388. contentObj[card][index].hide = true
  389. }
  390. })
  391. }
  392. }
  393. this.setData({
  394. contentObj: contentObj
  395. })
  396. // 如果处理id,name还需要赋值其他,需要在页面事件中自行处理
  397. this.triggerEvent("chooseData", {
  398. code: this.data.dropCode,
  399. //初始欠款的为空
  400. list: e.detail.list?e.detail.list:e.detail.item
  401. })
  402. },
  403. /**
  404. * @desc : 打开日期pop
  405. * @author : 周兴
  406. * @date : 2024/1/26 11:46
  407. */
  408. openDatePop(e) {
  409. let item = e.currentTarget.dataset;
  410. if (item.item.readonly) {
  411. return
  412. }
  413. this.setData({
  414. showDate: true,
  415. index: item.index,
  416. key: item.key,
  417. card: item.card
  418. })
  419. },
  420. openDatePopDay(e){
  421. let item = e.currentTarget.dataset;
  422. if (item.item.readonly) {
  423. return
  424. }
  425. this.setData({
  426. showDateDay: true,
  427. index: item.index,
  428. key: item.key,
  429. card: item.card,
  430. dropDateCode: e.currentTarget.dataset.key
  431. })
  432. },
  433. /**
  434. * @desc : 选择筛选中的日期
  435. * @author : 周兴
  436. * @date : 2024/1/29 08:59
  437. */
  438. pickDateCommit(e) {
  439. let form = this.data.form
  440. let date = e.detail.date[0] + '~' + e.detail.date[1]
  441. form[this.data.dropDateCode] = date
  442. form[this.data.dropDateCode + 'Start'] = e.detail.date[0];
  443. form[this.data.dropDateCode + 'End'] = e.detail.date[1];
  444. this.setData({
  445. form: form,
  446. value: JSON.stringify(form)
  447. })
  448. },
  449. /**
  450. * @desc : 关闭日期pop
  451. * @author : 周兴
  452. * @date : 2024/1/26 11:46
  453. */
  454. cancelDatePop() {
  455. this.setData({
  456. showDate: false
  457. })
  458. },
  459. /**
  460. * @desc : 选择日期
  461. * @author : 周兴
  462. * @date : 2024/1/26 11:46
  463. */
  464. chooseDate(e) {
  465. let form = this.data.form;
  466. let index = this.data.index;
  467. let card = this.data.card;
  468. let code = this.data.key;
  469. form[code + '_time'] = e.detail
  470. form[code] = util.toDateStr(e.detail);
  471. let contentObj = this.data.contentObj;
  472. if (card && contentObj[card][index]?.errMsg && e.detail) {
  473. contentObj[card][index].errMsg = undefined;
  474. }
  475. this.setData({
  476. value: JSON.stringify(form),
  477. form: form,
  478. contentObj: contentObj,
  479. showDate: false
  480. })
  481. },
  482. /**
  483. * @desc : 修改输入框的值
  484. * @author : 周兴
  485. * @date : 2024/2/2 11:46
  486. */
  487. changeField(e) {
  488. let ds = e.currentTarget.dataset
  489. let key = ds.key
  490. let item = ds.item
  491. let form = this.data.form
  492. if (e.detail) {
  493. form[key] = e.detail;
  494. } else {
  495. delete form[key]
  496. }
  497. let contentObj = this.data.contentObj;
  498. // 输入值后清空校验提示信息
  499. if (item.errMsg && e.detail) {
  500. contentObj[ds.card][ds.index].errMsg = undefined;
  501. }
  502. this.setData({
  503. form: form,
  504. contentObj: contentObj
  505. })
  506. },
  507. /**
  508. * @desc : 失去焦点,把值传出
  509. * @author : 周兴
  510. * @date : 2024/2/2 11:46
  511. */
  512. blurField(e) {
  513. this.setData({
  514. value: JSON.stringify(this.data.form)
  515. })
  516. },
  517. /**
  518. * @desc : 清空输入框的值
  519. * @author : 周兴
  520. * @date : 2024/2/2 11:46
  521. */
  522. clearField(e) {
  523. console.log('eee', e);
  524. let ds = e.currentTarget.dataset
  525. let key = ds.key
  526. let form = this.data.form
  527. form[key] = undefined
  528. this.setData({
  529. value: JSON.stringify(form),
  530. form: form
  531. })
  532. // 如果要清除其他值,需要调用
  533. this.triggerEvent("clear", {
  534. code: ds.key
  535. })
  536. },
  537. /**
  538. * @desc : 清空选单的值
  539. * @author : 周兴
  540. * @date : 2024/2/2 11:46
  541. */
  542. clearChoose(e) {
  543. let ds = e.currentTarget.dataset
  544. let key = ds.key
  545. let name = ds.name
  546. let form = this.data.form
  547. if (ds.item.readonly) {
  548. return
  549. }
  550. form[key] = undefined
  551. form[name] = undefined
  552. this.setData({
  553. value: JSON.stringify(form),
  554. form: form
  555. })
  556. // 如果要清除其他值,需要调用
  557. this.triggerEvent("clear", {
  558. code: ds.key
  559. })
  560. },
  561. /**
  562. * @desc : 清空地址的值
  563. * @author : 周兴
  564. * @date : 2024/2/2 11:46
  565. */
  566. clearAddress(e) {
  567. let form = this.data.form
  568. delete form['address']
  569. delete form['addressName'];
  570. delete form['addressFull'];
  571. delete form['addressGcj02'];
  572. delete form['addressArea'];
  573. this.setData({
  574. value: JSON.stringify(form),
  575. form: form
  576. })
  577. // 如果要清除其他值,需要调用
  578. this.triggerEvent("clear", {
  579. code: ds.key
  580. })
  581. },
  582. /**
  583. * @desc : 清空日期的值
  584. * @author : 周兴
  585. * @date : 2024/2/2 11:46
  586. */
  587. clearDate(e) {
  588. let ds = e.currentTarget.dataset
  589. if (ds.item.readonly) {
  590. return
  591. }
  592. let key = ds.key
  593. let form = this.data.form
  594. form[key] = undefined
  595. form[key + '_time'] = undefined
  596. this.setData({
  597. value: JSON.stringify(form),
  598. form: form
  599. })
  600. },
  601. /**
  602. * @desc : 修改数值输入框的值
  603. * @author : 周兴
  604. * @date : 2024/2/2 11:46
  605. */
  606. changeNumberField(e) {
  607. let ds = e.currentTarget.dataset
  608. let key = ds.key
  609. let item = ds.item
  610. let form = this.data.form
  611. form[key] = e.detail.value
  612. let contentObj = this.data.contentObj;
  613. // 输入值后清空校验提示信息
  614. if (item.errMsg && e.detail) {
  615. contentObj[ds.card][ds.index].errMsg = undefined;
  616. }
  617. this.setData({
  618. value: JSON.stringify(form),
  619. form: form,
  620. contentObj: contentObj
  621. })
  622. // 如果要清除其他值,需要调用
  623. this.triggerEvent("changeNumberField", {
  624. code: ds.key
  625. })
  626. },
  627. /**
  628. * @desc : 修改电话的值
  629. * @author : 周兴
  630. * @date : 2024/2/2 11:46
  631. */
  632. changePhone(e) {
  633. let ds = e.currentTarget.dataset;
  634. let key = ds.key;
  635. let index = ds.index;
  636. let card = ds.card;
  637. let form = this.data.form
  638. form[key] = e.detail.detail
  639. let contentObj = this.data.contentObj;
  640. if (card && contentObj[card][index]?.errMsg && e.detail.detail) {
  641. contentObj[card][index].errMsg = undefined;
  642. }
  643. this.setData({
  644. value: JSON.stringify(form),
  645. form: form,
  646. contentObj: contentObj
  647. })
  648. },
  649. /**
  650. * @desc : 给电话赋值错误信息
  651. * @author : 周兴
  652. * @date : 2024/2/20 11:46
  653. */
  654. changePhoneblur(e) {
  655. let ds = e.currentTarget.dataset
  656. let errMsg = e.detail.errMsg;
  657. let card = ds.card;
  658. let index = ds.index;
  659. let contentObj = this.data.contentObj;
  660. if (errMsg && card && contentObj[card][index]) {
  661. contentObj[card][index].errMsg = errMsg;
  662. this.setData({
  663. errMsg: errMsg
  664. })
  665. }
  666. this.triggerEvent('changePhoneblur', e)
  667. },
  668. /**
  669. * @desc : 小程序地图调用
  670. * @author : 周兴
  671. * @date : 2024/2/18 18:16
  672. */
  673. onClickWxchartAddress(e) {
  674. // 跳转新建地图实例
  675. common.onClickWxchartAddress();
  676. let item = e.currentTarget.dataset;
  677. this.setData({
  678. index: item.index,
  679. card: item.card
  680. })
  681. },
  682. /**
  683. * @desc : 改变选择框内容
  684. * @author : 周兴
  685. * @date : 2024/1/26 11:46
  686. */
  687. onChange(e) {
  688. let key = e.currentTarget.dataset.key
  689. let item = e.currentTarget.dataset.item
  690. let checkFlag = e.currentTarget.dataset.value
  691. let form = this.data.form
  692. if (item && item.readonly) {
  693. return
  694. }
  695. form[key] = !checkFlag
  696. this.setData({
  697. value: JSON.stringify(form),
  698. form: form
  699. })
  700. this.triggerEvent("onSwitchChange", {
  701. code: key,
  702. checkFlag: checkFlag
  703. })
  704. },
  705. /**
  706. * @desc : 改变选择框内容
  707. * @author : 周兴
  708. * @date : 2024/1/26 11:46
  709. */
  710. changeTabs(e) {
  711. let key = e.currentTarget.dataset.key
  712. let id = e.detail.id
  713. let form = this.data.form
  714. form[key] = id
  715. this.setData({
  716. value: JSON.stringify(form),
  717. form: form
  718. })
  719. this.triggerEvent("changeTab", {
  720. code: key,
  721. id: id
  722. })
  723. },
  724. /**
  725. * @desc : 打开日期pop
  726. * @author : 周兴
  727. * @date : 2024/1/26 11:46
  728. */
  729. openDatePopTime(e) {
  730. let item = e.currentTarget.dataset;
  731. this.setData({
  732. showDateTime: true,
  733. index: item.index,
  734. key: item.key,
  735. card: item.card
  736. })
  737. },
  738. /**
  739. * @desc : 关闭日期pop
  740. * @author : 周兴
  741. * @date : 2024/1/26 11:46
  742. */
  743. cancelDatePopTime() {
  744. this.setData({
  745. showDateTime: false
  746. })
  747. },
  748. /**
  749. * @desc : 选择日期
  750. * @author : 周兴
  751. * @date : 2024/1/26 11:46
  752. */
  753. chooseDateTime(e) {
  754. let form = this.data.form;
  755. let index = this.data.index;
  756. let card = this.data.card;
  757. let code = this.data.key;
  758. form[code + '_time'] = e.detail
  759. form[code] = util.formatDataTime(new Date(e.detail));
  760. let contentObj = this.data.contentObj;
  761. if (card && contentObj[card][index]?.errMsg && e.detail) {
  762. contentObj[card][index].errMsg = undefined;
  763. }
  764. this.setData({
  765. value: JSON.stringify(form),
  766. form: form,
  767. contentObj: contentObj,
  768. showDateTime: false
  769. })
  770. },
  771. /**
  772. * @desc : 是点击事件
  773. * @author : 于继渤
  774. * @date : 2024/1/26 11:46
  775. */
  776. onChangeCheckedBoxYes(e) {
  777. let form = this.data.form;
  778. let code = e.currentTarget.dataset.key;
  779. form[code] = e.detail
  780. this.setData({
  781. value: JSON.stringify(form),
  782. form: form,
  783. })
  784. },
  785. /**
  786. * @desc : 否点击事件
  787. * @author : 于继渤
  788. * @date : 2024/1/26 11:46
  789. */
  790. onChangeCheckedBoxNo(e) {
  791. let form = this.data.form;
  792. let code = e.currentTarget.dataset.key;
  793. form[code] = !e.detail
  794. this.setData({
  795. value: JSON.stringify(form),
  796. form: form,
  797. })
  798. },
  799. /**
  800. * @desc : 上传附件超出大小
  801. * @author : 周兴
  802. * @date : 2024/3/27 16:16
  803. */
  804. overSize(e) {
  805. util.showToast('文件超出' + Constants.uploadFileConfig.maxSizeMB);
  806. },
  807. /**
  808. * @desc : 删除图片
  809. * @author : 周兴
  810. * @date : 2024/4/29 18:16
  811. */
  812. deleteImg(e) {
  813. let form = this.data.form;
  814. let index = e.detail.index;
  815. let arr = form['annexPaths']
  816. arr.splice(index, 1);
  817. this.setData({
  818. form: form,
  819. value: JSON.stringify(form)
  820. })
  821. },
  822. /**
  823. * @desc : 上传附件
  824. * @author : 周兴
  825. * @date : 2024/3/27 16:16
  826. */
  827. afterRead(e) {
  828. // this.setData({
  829. // uploadFileFlag:true
  830. // })
  831. const _this = this;
  832. const {
  833. file
  834. } = e.detail;
  835. // 配置存放的文件夹 公司code - 表名 - 年月 -- 日
  836. let folder = app.globalData.company.cpCode + '/' + this.data.table + '/' + new Date().toYearMonth2() + '/' + new Date().toDay()
  837. let url = config.upload_url;
  838. url = url.replace('mdm-server', 'mdm-server' + '-' + app.globalData.company.svcCode.replace('_', '-'))
  839. file.forEach(res => {
  840. // 当设置 mutiple 为 true 时, file 为数组格式,否则为对象格式
  841. wx.uploadFile({
  842. url: url,
  843. filePath: res.path,
  844. name: 'file',
  845. formData: {
  846. 'folder': folder
  847. },
  848. header: {
  849. 'Authorization': 'Bearer ' + app.globalData.token
  850. },
  851. success(res) {
  852. let data = JSON.parse(res.data)
  853. if (data.code === 200) {
  854. _this.setData({
  855. uploadFileFlag: false
  856. })
  857. let form = _this.data.form
  858. let annexPaths = form['annexPaths'] || []
  859. data.data.url = config.image_url + data.data.path
  860. annexPaths.push(data.data)
  861. form.annexPaths = annexPaths;
  862. _this.setData({
  863. form: form,
  864. value: JSON.stringify(form)
  865. })
  866. console.log('ff', _this.data.form);
  867. }
  868. },
  869. })
  870. })
  871. },
  872. /**
  873. * @desc : 获取语言的方法
  874. * @author : 周兴
  875. * @date : 2024/1/19
  876. */
  877. $t(name) {
  878. if (this.data.$t[name]) {
  879. return this.data.$t[name];
  880. } else {
  881. return name;
  882. }
  883. },
  884. },
  885. })