| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436 |
- /*******************************************************************************
- * Copyright(c) 2024 dongke All rights reserved. / Confidential
- * 类的信息:
- * 1.程序名称:
- * 2.功能描述:表单-(基础数据)
- * 编辑履历:
- * 作者 日期 版本 修改内容
- * 周兴 2024-1-30 1.00 新建
- *******************************************************************************/
- const common = require('@/utils/common');
- const Constants = require('@/utils/Constants');
- const util = require('@/utils/util.js')
- const chooseLocation = requirePlugin('chooseLocation');
- const app = getApp();
- Component({
- /**
- * 组件的属性列表
- */
- properties: {
- // 区域
- cardList: {
- type: Array,
- value: []
- },
- // 内容
- contentObj: {
- type: Object,
- },
- // 结果集
- value: {
- type: String,
- observer: function (newVal) {
- if (newVal) {
- this.setData({
- form: JSON.parse(newVal) || {}
- })
- }
- }
- },
- routeObjName: {
- type: String,
- }
- },
- /**
- * 组件的初始数据
- */
- data: {
- // 是否显示pop
- show: false,
- mutishow: false,
- showDate: false,
- $t: app.globalData.lang,
- routeUrl: app.globalData['routeUrl'],
- item: null,
- index: null,
- card: null,
- // 下拉类型
- dropType: null,
- dropCode: null,
- dropName: null,
- // 根据值控制组件的显示隐藏
- changeObj: null,
- form: {}
- },
- lifetimes: {
- attached: function () {
- },
- detached: function () {
- // 在组件实例被从页面节点树移除时执行
- },
- },
- pageLifetimes: {
- /**
- * @desc : 生命周期函数--监听页面显示
- * @author : 周兴
- * @date : 2024/2/19 12:16
- */
- show: function () {
- const location = chooseLocation.getLocation();
- // console.log('loc', location);
- let form = this.data.form
- if (location) {
- form['address'] = location;
- // 如果有校验信息就清除掉
- let card = this.data.card;
- let index = this.data.index;
- let contentObj = this.data.contentObj;
- if (card && contentObj[card][index]?.errMsg) {
- contentObj[card][index].errMsg = undefined;
- this.setData({
- contentObj: contentObj
- })
- }
- }
- this.setData({
- value: JSON.stringify(form),
- form: form
- })
- }
- },
- /**
- * 组件的方法列表
- */
- methods: {
- /**
- * @desc : 打开下拉
- * @author : 周兴
- * @date : 2024/1/26 11:46
- */
- open(e) {
- let item = e.currentTarget.dataset;
- this.setData({
- dropCode: item.key,
- dropName: item.name,
- dropType: item.type,
- index: item.index,
- card: item.card
- })
- console.log('ee', e);
- // 单选
- if (item.item.type == 'drop') {
- this.setData({
- show: true,
- changeObj: item.item.changeObj,
- })
- // 多选
- } else if (item.item.type == 'mutidrop') {
- this.setData({
- mutishow: true
- })
- } else if (item.item.type == 'choose') {
- let that = this
- // 跳转链接
- if (item.item.urlKey) {
- let url = this.data.routeUrl[this.data.routeObjName][item.item.urlKey].url
- // TODO
- // url = '/package-base-select/pages/select-customers/select-customers'
- if (url) {
- wx.navigateTo({
- url: url,
- events: {
- // 回调后
- bindData: function (data) {
- that.triggerEvent("chooseData", { code: item.key, data: data })
- }
- },
- success: function (res) {
- console.log('item', that.data.form)
- // 通过eventChannel向被打开页面传送数据
- that.data.form.formMode = item.item.formMode
- that.data.form.id = that.data.form[item.item.idKey]
- that.data.form.chooseType = item.item.chooseType
- res.eventChannel.emit('params', that.data.form)
- }
- })
- }
- }
- }
- },
- /**
- * @desc : 非空校验
- * @author : 周兴
- * @date : 2024/2/20 11:46
- */
- validData() {
- let flag = true;
- let cardList = this.data.cardList;
- if (!cardList || cardList.length == 0) {
- return flag;
- }
- let form = this.data.form;
- let contentObj = this.data.contentObj;
- cardList.forEach(card => {
- if (contentObj[card]) {
- contentObj[card].forEach(item => {
- let title = this.$t(item.title ? item.title : item.code)
- // 如果必须输入,就要进行判断
- if (item.required && !form[item.code]) {
- item.errMsg = title + '不为空'
- flag = false;
- }
- })
- }
- })
- this.setData({
- contentObj: contentObj
- })
- return flag;
- },
- /**
- * @desc : 选择数据
- * @author : 周兴
- * @date : 2024/1/26 11:46
- */
- chooseData(e) {
- let contentObj = this.data.contentObj;
- let form = this.data.form
- if (e.detail.ids) {
- form[this.data.dropCode + 's'] = e.detail.ids;
- form[this.data.dropName + 's'] = e.detail.names;
- } else {
- form[this.data.dropCode] = e.detail.value;
- form[this.data.dropName] = e.detail.text;
- }
- let card = this.data.card;
- // 选择后清空校验提示信息
- if (card && contentObj[card][this.data.index]?.errMsg && e.detail) {
- contentObj[card][this.data.index].errMsg = undefined;
- }
- this.setData({
- value: JSON.stringify(form),
- form: form,
- contentObj: contentObj
- })
- // 是否根据值进行控制其他组件显示、隐藏
- let changeObj = this.data.changeObj
- let key = util.getKeyByValue(Constants.supType, e.detail.value);
- if (changeObj && changeObj[key]) {
- // 显示
- if (changeObj[key]['visible']) {
- changeObj[key]['visible'].forEach(it => {
- let index = contentObj[card].findIndex(t => t.code == it)
- console.log('index', index);
- if (contentObj[card][index]) {
- contentObj[card][index].hide = false
- }
- })
- }
- // 隐藏
- if (changeObj[key]['hide']) {
- changeObj[key]['hide'].forEach(it => {
- let index = contentObj[card].findIndex(t => t.code == it)
- console.log('index', index);
- if (contentObj[card][index]) {
- contentObj[card][index].hide = true
- }
- })
- }
- }
- this.setData({
- contentObj: contentObj
- })
- // 如果处理id,name还需要赋值其他,需要在页面事件中自行处理
- this.triggerEvent("chooseData", { code: this.data.dropCode, list: e.detail.list })
- },
- /**
- * @desc : 打开日期pop
- * @author : 周兴
- * @date : 2024/1/26 11:46
- */
- openDatePop(e) {
- let item = e.currentTarget.dataset;
- this.setData({
- showDate: true,
- index: item.index,
- key: item.key,
- card: item.card
- })
- },
- /**
- * @desc : 关闭日期pop
- * @author : 周兴
- * @date : 2024/1/26 11:46
- */
- cancelDatePop() {
- this.setData({
- showDate: false
- })
- },
- /**
- * @desc : 选择日期
- * @author : 周兴
- * @date : 2024/1/26 11:46
- */
- chooseDate(e) {
- let form = this.data.form;
- let index = this.data.index;
- let card = this.data.card;
- let code = this.data.key;
- form[code + '_time'] = e.detail
- form[code] = util.toDateStr(e.detail);
- let contentObj = this.data.contentObj;
- if (card && contentObj[card][index]?.errMsg && e.detail) {
- contentObj[card][index].errMsg = undefined;
- }
- this.setData({
- value: JSON.stringify(form),
- form: form,
- contentObj: contentObj,
- showDate: false
- })
- },
- /**
- * @desc : 修改输入框的值
- * @author : 周兴
- * @date : 2024/2/2 11:46
- */
- changeField(e) {
- let ds = e.currentTarget.dataset
- let key = ds.key
- let item = ds.item
- let form = this.data.form
- form[key] = e.detail
- let contentObj = this.data.contentObj;
- // 输入值后清空校验提示信息
- if (item.errMsg && e.detail) {
- contentObj[ds.card][ds.index].errMsg = undefined;
- }
- this.setData({
- value: JSON.stringify(form),
- form: form,
- contentObj: contentObj
- })
- },
- /**
- * @desc : 修改数值输入框的值
- * @author : 周兴
- * @date : 2024/2/2 11:46
- */
- changeNumberField(e) {
- let ds = e.currentTarget.dataset
- let key = ds.key
- let item = ds.item
- let form = this.data.form
- form[key] = e.detail.value
- let contentObj = this.data.contentObj;
- // 输入值后清空校验提示信息
- if (item.errMsg && e.detail) {
- contentObj[ds.card][ds.index].errMsg = undefined;
- }
- this.setData({
- value: JSON.stringify(form),
- form: form,
- contentObj: contentObj
- })
- },
- /**
- * @desc : 修改电话的值
- * @author : 周兴
- * @date : 2024/2/2 11:46
- */
- changePhone(e) {
- let ds = e.currentTarget.dataset;
- let key = ds.key;
- let index = ds.index;
- let card = ds.card;
- let form = this.data.form
- form[key] = e.detail.detail
- let contentObj = this.data.contentObj;
- if (card && contentObj[card][index]?.errMsg && e.detail.detail) {
- contentObj[card][index].errMsg = undefined;
- }
- this.setData({
- value: JSON.stringify(form),
- form: form,
- contentObj: contentObj
- })
- },
- /**
- * @desc : 给电话赋值错误信息
- * @author : 周兴
- * @date : 2024/2/20 11:46
- */
- changePhoneblur(e) {
- let ds = e.currentTarget.dataset
- let errMsg = e.detail.errMsg;
- let card = ds.card;
- let index = ds.index;
- let contentObj = this.data.contentObj;
- if (errMsg && card && contentObj[card][index]) {
- contentObj[card][index].errMsg = errMsg;
- this.setData({
- errMsg: errMsg
- })
- }
- },
- /**
- * @desc : 小程序地图调用
- * @author : 周兴
- * @date : 2024/2/18 18:16
- */
- onClickWxchartAddress(e) {
- // 跳转新建地图实例
- common.onClickWxchartAddress();
- let item = e.currentTarget.dataset;
- this.setData({
- index: item.index,
- card: item.card
- })
- },
- /**
- * @desc : 改变选择框内容
- * @author : 周兴
- * @date : 2024/1/26 11:46
- */
- onChange(e) {
- let key = e.currentTarget.dataset.key
- let checkFlag = e.currentTarget.dataset.value
- let form = this.data.form
- form[key] = !checkFlag
- this.setData({
- value: JSON.stringify(form),
- form: form
- })
- },
- /**
- * @desc : 改变选择框内容
- * @author : 周兴
- * @date : 2024/1/26 11:46
- */
- changeTabs(e) {
- let key = e.currentTarget.dataset.key
- let id = e.detail.id
- let form = this.data.form
- form[key] = id
- this.setData({
- value: JSON.stringify(form),
- form: form
- })
- },
- /**
- * @desc : 获取语言的方法
- * @author : 周兴
- * @date : 2024/1/19
- */
- $t(name) {
- if (this.data.$t[name]) {
- return this.data.$t[name];
- } else {
- return name;
- }
- },
- },
- })
|