dk-form.js 24 KB

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