From db95b21bd883df9cbbad97d86bb8e94709ffa312 Mon Sep 17 00:00:00 2001 From: jt <jt@activesoft.com.cn> Date: 星期四, 14 三月 2024 10:53:20 +0800 Subject: [PATCH] test --- pages/modal/3200_view.vue | 377 ++++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 339 insertions(+), 38 deletions(-) diff --git a/pages/modal/3200_view.vue b/pages/modal/3200_view.vue index 95d8df8..632cfe1 100644 --- a/pages/modal/3200_view.vue +++ b/pages/modal/3200_view.vue @@ -105,6 +105,7 @@ font-size: 34rpx; text-align: right; display: inline-block; + margin-bottom: 15rpx; } .dv-panel input{ vertical-align: middle; @@ -149,11 +150,13 @@ padding: 0 12px; } .view-floor{ + text-align: center; padding: 0 20rpx; + margin-top: 25rpx; /* border:1px solid red; */ } button.btn_refresh { - width:49.5%; + width:48%; margin-top: 25rpx; padding: 20rpx; line-height: 1.5; @@ -162,8 +165,9 @@ color: #fff; font-size: 38rpx; font-weight: bold; - float: left; + /* float: left; */ display: inline-block; + margin: 0 3px; } button.btn_cancel { width:49.5%; @@ -184,7 +188,7 @@ background-color: #D6FCB2; } .uni-padding-wrap{ - margin-top: 14rpx; + margin-top: -4rpx; background-color: #98DAEA; width: 52px; height: 40px; @@ -228,13 +232,13 @@ <!-- 鏅�甯冨眬 --> <view v-if="item.name!='Layout'"> <text class="txt_title" :style="{'width':item.labelWidth+'px'}">{{item.label}}锛�/text> - <span class="form-item-span" v-if="item.disabled">{{item.value}}</span> + <span class="form-item-span" v-if="item.disabled">{{item.value2?'#'+item.value+'#'+item.value2:item.value}}</span> <!-- 鏂囨湰妗�鏁板瓧妗�--> <view class="dv_input" v-if="(item.name=='Input' || item.name=='InputNumber') && !item.disabled"> <text v-if="item.setting.prefix" class="uni-icon" :class="[item.setting.prefix]" - @change="onchange(item)"></text> + @change="onChange(item)"></text> <input class="uni-input" :class="item.disabled?'input-disabled':''" :type="item.name=='Input'?'text':item.name=='InputNumber'?'number':'text'" v-model="item.value" @@ -248,14 +252,14 @@ <text v-if="item.setting.suffix" class="uni-icon" :class="[item.setting.suffix]" - @click="onchange(item)"></text> + @click="onChange(item)"></text> </view> <!-- 涓嬫媺妗�鍗曢� item.useDict?item.dict:item.selections--> <uni-data-select id="dv_select" v-if="item.name=='Select' && !item.disabled" :class="item.disabled?'input-disabled':''" v-model="item.value" :localdata="item.dict" - @change="onchange(item)" + @change="onChange(item)" :disabled="item.disabled" :clear="false" ></uni-data-select> @@ -305,12 +309,12 @@ :span="item.setting.spanList?item.setting.spanList[key]:24 / item.setting.col"> <view v-if="cols!=null" > <text class="txt_title" :style="{'width':cols.labelWidth+'px'}">{{cols.label}}锛�/text> - <span class="form-item-span" v-if="cols.disabled">{{cols.value}}</span> + <span class="form-item-span" v-if="cols.disabled">{{cols.value2?'#'+cols.value+'#'+cols.value2:cols.value}}</span> <view class="dv_input" v-if="(cols.name=='Input' || cols.name=='InputNumber') && !cols.disabled"> <text v-if="cols.setting.prefix" class="uni-icon" :class="[cols.setting.prefix]" - @change="onchange(cols)"></text> + @change="onChange(cols)"></text> <input class="uni-input" :class="cols.disabled?'input-disabled':''" :type="cols.name=='Input'?'text':cols.name=='InputNumber'?'number':'text'" v-model="cols.value" @@ -324,14 +328,14 @@ <text v-if="cols.setting.suffix" class="uni-icon" :class="[cols.setting.suffix]" - @click="onchange(cols)"></text> + @click="onChange(cols)"></text> </view> <!-- 涓嬫媺妗�鍗曢� cols.useDict?cols.dict:cols.selections--> <uni-data-select id="dv_select" v-if="cols.name=='Select' && !cols.disabled" :class="cols.disabled?'input-disabled':''" v-model="cols.value" :localdata="cols.dict" - @change="onchange(cols)" + @change="onChange(cols)" :disabled="cols.disabled" :clear="false" ></uni-data-select> @@ -383,19 +387,19 @@ </view> </view> - <view class="view-floor"> - <button type="default" @click="cancel" class="btn_cancel" - :style="{'width':param.ViewPage.Page_Button.length>1?'39.5%':'48.5%'}">杩斿洖</button> - <view v-if="param.ViewPage.Page_Button"> - <button type="default" class="btn_refresh" @click="onBtnClick(param.ViewPage.Page_Button[0])" - :style="{'width':param.ViewPage.Page_Button.length>1?'39.5%':'48.5%'}">{{param.ViewPage.Page_Button[0].ShowName}}</button> - - <view class="uni-padding-wrap" v-if="param.ViewPage.Page_Button.length>1"> - <view class="uni-btn-v"> - <a @tap="actionSheetTap"><Icon class="mobox-normal-more"/></a> - </view> - </view> - </view> + <view class="view-floor" v-if="param.ViewPage.Page_Button"> + <!-- <button type="default" @click="cancel" class="btn_cancel" + :style="{'width':param.ViewPage.Page_Button.length>1?'39.5%':'48.5%'}">杩斿洖</button> --> + <button type="default" class="btn_refresh" v-for="(btn,index) in param.ViewPage.Page_Button" + v-if="index<2" @click="onBtnClick(btn)" + :style="{'width':param.ViewPage.Page_Button.length==1?'96%':param.ViewPage.Page_Button.length>2?'39.5%':'48%'}" + >{{btn.ShowName}}</button> + + <view class="uni-padding-wrap" v-if="param.ViewPage.Page_Button.length>2"> + <view class="uni-btn-v"> + <a @tap="actionSheetTap"><Icon class="mobox-normal-more"/></a> + </view> + </view> </view> </view> </template> @@ -446,14 +450,15 @@ var eventid = this.param.ViewPage.Enter_View_Event?.id; if(eventid){ try { - var obj_attr = [{attr: 'S_ID',value:this.styleDef.form.objId}]; + var obj_attr = {'S_ID':this.styleDef.form.objId}; this.styleDef.form.attrs.forEach((attr) => { - obj_attr.push({attr: attr.name,value: attr.value}); + obj_attr[attr.name]=attr.value; }); // console.log(obj_attr); var input_param = Base64.encode(JSON.stringify(obj_attr)); this.runCustomEvent({ ed_type: 0, + start_transaction: true, class_id: this.param.DataCls.id, event_id: eventid, obj_attr, @@ -483,22 +488,45 @@ if(!ret.result.style_def.includes('"')) styledef = Base64.decode(ret.result.style_def); } $this.$data.detail2_styledef = ret.result.style_def? JSON.parse(styledef): {}; - $this.$data.detail2_styledef.SelBut_Checked = true; + $this.$data.detail2_styledef.SelBut_Checked = false; // console.log($this.$data.detail2_styledef); $this.styleDef.form.attrs.forEach((attr) => { // info[attr.name]=attr.value; - $this.detail2_styledef.form.items.forEach(ele=>{ + $this.detail2_styledef.form.items.forEach(async(ele,index)=>{ if(ele.name!='Layout'){ - if(ele.fieldId == attr.name) ele.value = attr.value; + if(ele.fieldId == attr.name){ + ele.value = attr.value; + //浠诲姟琛ㄥ彧鏈変粨搴撳簱鍖鸿揣浣嶇紪鐮侊紝鏍规嵁缂栫爜鏌ヨ鍚嶇О + if(ele.fieldId == 'S_START_WH' || ele.fieldId == 'S_END_WH') + await $this.dataObjQuery('Warehouse',"S_CODE='"+ele.value+"'",index,-1); + else if(ele.fieldId == 'S_START_AREA' || ele.fieldId == 'S_END_AREA') + await $this.dataObjQuery('Area',"S_CODE='"+ele.value+"'",index,-1); + else if(ele.fieldId == 'S_START_LOC' || ele.fieldId == 'S_END_LOC') + await $this.dataObjQuery('Location',"S_CODE='"+ele.value+"'",index,-1); + } } else if(ele.name=='Layout'){ - ele.setting.colList.forEach(col=>{ + ele.setting.colList.forEach(async(col,key)=>{ if(col){ - if(col.fieldId == attr.name) col.value = attr.value; + if(col.fieldId == attr.name){ + col.value = attr.value; + //浠诲姟琛ㄥ彧鏈変粨搴撳簱鍖鸿揣浣嶇紪鐮侊紝鏍规嵁缂栫爜鏌ヨ鍚嶇О + if(col.fieldId == 'S_START_WH' || col.fieldId == 'S_END_WH') + await $this.dataObjQuery('Warehouse',"S_CODE='"+col.value+"'",index,key); + else if(col.fieldId == 'S_START_AREA' || col.fieldId == 'S_END_AREA') + await $this.dataObjQuery('Area',"S_CODE='"+col.value+"'",index,key); + else if(col.fieldId == 'S_START_LOC' || col.fieldId == 'S_END_LOC') + await $this.dataObjQuery('Location',"S_CODE='"+col.value+"'",index,key); + } } }); } }); }); + setTimeout(function(){ + var detail2_styledef = JSON.parse(JSON.stringify($this.detail2_styledef)); + $this.detail2_styledef=[]; + $this.detail2_styledef = detail2_styledef; + },100); }else{ uni.showModal({title:"閿欒1",content:ret.err_msg,showCancel:false,confirmText:"鍙栨秷"}); } @@ -508,6 +536,136 @@ }); }, + //鏌ヨ鏁版嵁绫绘暟鎹俊鎭�+ async dataObjQuery(clsid,where,index,key){ + try{ + var $this = this; + var dataInfo={ + class_id: clsid, + attrs: [], + condition: this.toWhereBase64String(""+ where +""), + prj_rel_type: "", + order_by: this.orderby, + page_size: 99999, + page: 1, + query_id: '', + }; + this.$store.dispatch('dataObjQuery',dataInfo).then(ret=>{ + // console.log(ret); + if (ret.err_code == 0) { + if(ret.result){ + $this.detail1StyleDefList=[]; + ret.result.obj_list.forEach((obj) => { + var info ={ + S_ID:obj.id, + }; + obj.attr_list.forEach((attr) => { + info[attr.name]=attr.value; + }); + if(key != -1) + $this.detail2_styledef.form.items[index].setting.colList[key].value2=info.S_NAME; + else + $this.detail2_styledef.form.items[index].value2=info.S_NAME; + }); + // console.log($this.detail2_styledef); + } + }else{ + uni.showModal({title:"閿欒5",content:ret.err_msg,showCancel:false,confirmText:"鍙栨秷"}); + } + }).catch(ex=>{ + // console.log(ex); + uni.showModal({title:"閿欒5.1",content:ex.errMsg,showCancel:false,confirmText:"鍙栨秷"}); + }); + } catch (ex) { + var tip = typeof ex == "string" ? ex : ex.message; + uni.showModal({title:"閿欒5.2",content:tip,showCancel:false,confirmText:"鍙栨秷"}); + } + }, + + // 鍐呭鍙樺寲鍚庝簨浠�+ async onChange(event) { + try { + if (event.id) { + var obj_attr = this.detail2_styledef.form.model; + // console.log(obj_attr); + var input_param = Base64.encode( + JSON.stringify( + Object.keys(obj_attr).map((a) => ({ + attr: a, + value: obj_attr[a] || "", + })) + ) + ); + var $this = this; + var dataInfo={ + ed_type: 0, + start_transaction: true, + class_id: this.$data.detail2_styledef.form.clsId, + class_name: '', + event_id: event.id, + event_name: '', + data_obj_id: '', + obj_attr: obj_attr, + prj_id: '', + ref_cls_id: '', + rel_obj_id: '', + user_login: '', + data_json: '', + compose_info: '', + ext_info: '', + global_attr: '', + input_param: input_param, + }; + this.$store.dispatch('runCustomEvent',dataInfo).then(ret=>{ + // console.log(ret); + if (ret.err_code == 0) { + var result = ret.result; + if (result.ret != 0) { + var tip = result.err_info ? typeof result.err_info == 'string' ? result.err_info : result.err_info.join('<br/>') : ''; + if (result.ret == 801) uni.showModal({title:'鎻愮ず',content:tip,showCancel:false,confirmText:"鍙栨秷"}); + else uni.showModal({title:'鎻愮ず',content:tip+',鎻愮ず:'+result.ret,showCancel:false,confirmText:"鍙栨秷"}); + return false; + }else{ + var tip = result.info ? typeof result.info == 'string' ? result.info : result.info.join('<br/>') : ''; + if (tip) uni.showModal({title:'鎻愮ず',content:tip,showCancel:false,confirmText:"鍙栨秷"}); + + if(result.result_type == 0 && result.action){ + result.action.forEach(item=>{ + if(item.action_type == "set_dlg_attr"){ + // value = {"attr":"xxx", "value":"xxx"} + var data = item.value; + $this.$data.detail2_styledef.form.items.forEach(async (ele,index) => { + data.forEach(async (ele2,index) => { + if(ele.fieldId == ele2.attr){ + ele.value = ele2.value; + } + }); + }); + } + }); + }else{ + // this.detail2StyleDefList=[]; + if(result.info){ + uni.showModal({title:"鎻愮ず",content:result.info,showCancel:false,confirmText:"鍙栨秷"}); + } + } + } + + }else{ + uni.showModal({title:"閿欒8",content:ret.err_msg,showCancel:false,confirmText:"鍙栨秷"}); + } + }).catch(ex=>{ + // console.log(ex); + uni.showModal({title:"閿欒8.1",content:ex.errMsg,showCancel:false,confirmText:"鍙栨秷"}); + }); + } + } catch (ex) { + var tip = typeof ex == "string" ? ex : ex.message; + uni.showModal({title:"閿欒8.2",content:"鎵ц鈥滃唴瀹瑰彉鍖栧悗鈥濅簨浠跺け璐ワ細" + tip,showCancel:false,confirmText:"鍙栨秷"}); + + } + }, + //鐐瑰嚮鎸夐挳 onBtnClick(btn){ var that = this @@ -529,8 +687,9 @@ actionSheetTap() { var that = this var itemlist=[]; - this.param.ViewPage.Page_Button.forEach((btn) => { - itemlist.push(btn.ShowName); + this.param.ViewPage.Page_Button.forEach((btn,index) => { + if(index>=2) + itemlist.push(btn.ShowName); }); uni.showActionSheet({ // title: '鎸夐挳鍒楄〃', @@ -578,15 +737,16 @@ //鎵ц瑙﹀彂浜嬩欢 async triggerEvent(btn, style, enviroment) { try { - var obj_attr = [{attr: 'S_ID',value:this.styleDef.form.objId}]; + var obj_attr = {'S_ID':this.styleDef.form.objId}; style.form.attrs.forEach((attr) => { - obj_attr.push({attr: attr.name,value: attr.value}); + obj_attr[attr.name]=attr.value; }); // console.log(obj_attr); // let input_param = Base64.encode(JSON.stringify(obj_attr)); // return; this.runCustomEvent({ ed_type: 0, + start_transaction: true, class_id: btn.Cls_ID, event_id: btn.Event.ID, obj_attr: obj_attr, @@ -601,14 +761,14 @@ try { var $this = this; this.$store.dispatch('runCustomEvent',dataInfo).then(ret=>{ - // console.log(ret); + console.log(ret); if (ret.err_code == 0) { var result = ret.result; if (result.ret != 0) { var tip = result.err_info ? typeof result.err_info == 'string' ? result.err_info : result.err_info.join('<br/>') : ''; if (result.ret == 801) uni.showModal({title:'鎻愮ず',content:tip,showCancel:false,confirmText:"鍙栨秷"}); else uni.showModal({title:'鎻愮ず',content:tip+',鎻愮ず:'+result.ret,showCancel:false,confirmText:"鍙栨秷"}); - return false + return false; }else{ var tip = result.info ? typeof result.info == 'string' ? result.info : result.info.join('<br/>') : ''; if (tip) uni.showModal({title:'鎻愮ず',content:tip,showCancel:false,confirmText:"鍙栨秷"}); @@ -630,7 +790,7 @@ if (index > -1) $this.param.ViewPage.Page_Button.splice(index, 1) }) - } + } }); }else{ @@ -653,6 +813,147 @@ } }, + /** + * 鍙敮鎸乕"column1='A' or column2='B'", "column3='C' and column4='D'", "column5='E'"]杩欑鏍煎紡 + * { + * "model": 0 / 1, + * "condition": + * [ + * [ + * { }, + * { }, + * { } + * ], + * [ + * { } + * ], + * [ + * { } + * ] + * ] + * } + */ + toWhereBase64String(list) { + if (typeof list == 'string') list = [list] + var sql = [] + var seps = [' not in', ' in', '<>', '!=', '<=', '>=', '<', '=', '>', ' like'] + list.forEach(ls => { + var where = ls.trim().toLowerCase() + if (where.startsWith('(') && where.endsWith(')')) where = where.replace(/^\(/, '').replace(/\)$/, '') + if (where.includes(' and ')) { + // 浜岀骇and鏀惧湪绗竴绾ф暟缁勪腑 + where.split(' and ').forEach(li => { + var l = li.trim() + if (l.startsWith('(') && l.endsWith(')')) l = l.replace(/^\(/, '').replace(/\)$/, '') + var sep = '' + for (var i = 0; i < seps.length; i++) { + if (l.includes(seps[i])) { + sep = seps[i] + break + } + } + if (sep) { + var values = l.split(sep) + var field = values[0]?.trim().replace(/^\[/, '').replace(/\]$/, '') + var value = '' + var op = sep.trim() + + if ([' in', ' not in'].includes(sep) && values[1].includes('select ') && values[1].includes(' from ')) { + value = l.replace(field, '').replace(/^\s*(in|not in)\s*/, '').trim() + if (value.startsWith('(') && value.endsWith(')')) value = value.replace(/^\(/, '').replace(/\)$/, '').trim() + } + else { + value = values[1]?.trim().replace(/^\'/, '').replace(/\'$/, '') + + if (['in', 'not in'].includes(op)) { + value = value.replace(/^\(/, '').replace(/\)$/, '') + value = value.split(',').map(v => v.trim().replace(/^\'/, '').replace(/\'$/, '')) + } + } + sql.push([{ field, value, op }]) + } + }) + } + else if (where.includes(' or ')) { + // 浜岀骇or鏀惧湪绗簩绾у悓涓�粍鏁扮粍涓�+ var s = [] + where.split(' or ').forEach(li => { + var l = li.trim() + if (l.startsWith('(') && l.endsWith(')')) l = l.replace(/^\(/, '').replace(/\)$/, '') + var sep = '' + for (var i = 0; i < seps.length; i++) { + if (l.includes(seps[i])) { + sep = seps[i] + break + } + } + if (sep) { + var values = l.split(sep) + var field = values[0]?.trim().replace(/^\[/, '').replace(/\]$/, '') + var value = '' + var op = sep.trim() + + if ([' in', ' not in'].includes(sep) && values[1].includes('select ') && values[1].includes(' from ')) { + value = l.replace(field, '').replace(/^\s*(in|not in)\s*/, '').trim() + if (value.startsWith('(') && value.endsWith(')')) value = value.replace(/^\(/, '').replace(/\)$/, '').trim() + } + else { + value = values[1]?.trim().replace(/^\'/, '').replace(/\'$/, '') + + if (['in', 'not in'].includes(op)) { + value = value.replace(/^\(/, '').replace(/\)$/, '') + value = value.split(',').map(v => v.trim().replace(/^\'/, '').replace(/\'$/, '')) + } + } + sql.push([{ field, value, op }]) + } + }) + sql.push(s) + } + else { + var li = where + // 鍗曚竴鏌ヨ鏉′欢鐩存帴鏀惧湪绗竴绾ф暟缁勪腑 + var l = li.trim() + if (l.startsWith('(') && l.endsWith(')')) l = l.replace(/^\(/, '').replace(/\)$/, '') + var sep = '' + for (var i = 0; i < seps.length; i++) { + if (l.includes(seps[i])) { + sep = seps[i] + break + } + } + if (sep) { + var values = l.split(sep) + var field = values[0]?.trim().replace(/^\[/, '').replace(/\]$/, '') + var value = '' + var op = sep.trim() + + if ([' in', ' not in'].includes(sep) && values[1].includes('select ') && values[1].includes(' from ')) { + value = l.replace(field, '').replace(/^\s*(in|not in)\s*/, '').trim() + if (value.startsWith('(') && value.endsWith(')')) value = value.replace(/^\(/, '').replace(/\)$/, '').trim() + } + else { + value = values[1]?.trim().replace(/^\'/, '').replace(/\'$/, '') + + if (['in', 'not in'].includes(op)) { + value = value.replace(/^\(/, '').replace(/\)$/, '') + value = value.split(',').map(v => v.trim().replace(/^\'/, '').replace(/\'$/, '')) + } + } + sql.push([{ field, value, op }]) + } + } + }) + + if (sql.length > 0) + return Base64.encode(JSON.stringify({ + model: 1, + condition: sql + })) + else + return '' + }, + cancel(e){ //鍙栨秷 var eventChannel = this.$scope.eventChannel; // const eventChannel = this.getOpenerEventChannel(); -- Gitblit v1.9.1