From 7b15bbf1363982a03dd33c95f3ccdfdcfb7c1d47 Mon Sep 17 00:00:00 2001 From: cuiqian2004 <cuiqian2004@163.com> Date: 星期五, 14 三月 2025 18:20:31 +0800 Subject: [PATCH] oi-form --- pages/modal/3200.vue | 318 +++++++++------------------------------------------- 1 files changed, 57 insertions(+), 261 deletions(-) diff --git a/pages/modal/3200.vue b/pages/modal/3200.vue index eb4082f..e8899f1 100644 --- a/pages/modal/3200.vue +++ b/pages/modal/3200.vue @@ -2,26 +2,8 @@ <view class="uni-page-modal-3200"> <view class="v-content"> <!-- 琛ㄥご鏍峰紡 --> - <view class="v-headStyle" v-for="(item,index) in head_styledef.form.items" v-if="isFilter==true"> - <text class="txt_title" :style="{'width':item.labelWidth+'px'}">{{item.label}}锛�/text> - <!-- 涓嬫媺妗�鍗曢� item.useDict?item.dict:item.selections--> - <uni-data-select id="dv_select" v-if="item.name=='Select'" :class="item.disabled?'input-disabled':''" - v-model="item.value" :localdata="item.dict" @change="onChange(item)" :disabled="item.disabled" - :clear="false"></uni-data-select> - <view class="input-wrapper" v-if="item.name=='Input' || item.name=='InputNumber'"> - <text v-if="item.setting.prefix" class="uni-icon" :class="[item.setting.prefix]" - @click="onEnterChange(item)"></text> - <input class="uni-input" :class="item.disabled?'input-disabled':''" - :type="item.name=='Input'?'text':'number'" v-model="item.value" :disabled="item.disabled" - :placeholder="item.placeholder" - :style="{'width':item.setting.prefix && item.setting.suffix?'78%':item.setting.prefix || item.setting.suffix?'87%':'96%'}" - :focus="focusMateria" @focus="ontap(item)" @keyup.enter="onEnterChange(item)" - @blur="onEnterChange(item)" :maxlength="-1" /> - <text v-if="item.setting.suffix" class="uni-icon" :class="[item.setting.suffix]" - @click="onEnterChange(item)"></text> - </view> - </view> - + <OIForm ref="refBaseForm" class="v-headStyle" :form="head_styledef.form" @focus="ontap" + @change="onEnterChange" @click-prefix="onEnterChange" @click-suffix="onEnterChange"></OIForm> <view class="v-scroll-view"> <scroll-view :scroll-top="scrollTop" :scroll-y="true" class="scroll-y" @scrolltolower="scrolltolower" @scroll="scroll"> @@ -37,157 +19,14 @@ </checkbox-group> </div> <!-- HTML椤甸潰绫诲瀷鏄剧ず --> - <div class="dv-listHtml-Panel" v-if="ListHtml_Panel" v-html="ListHtml_Panel[ii]" :style="param.ListPage.CheckBox==true && param.ListPage.Click_View==true?'width:85%;': - param.ListPage.CheckBox==false && param.ListPage.Click_View==true?'width:91%;': - param.ListPage.CheckBox==true && param.ListPage.Click_View==false?'width:88%;':'width:100%;'"> + <div class="dv-listHtml-Panel" v-if="ListHtml_Panel" v-html="ListHtml_Panel[ii]" + :style="param.ListPage.CheckBox==true && param.ListPage.Click_View==true?'width:85%;': param.ListPage.CheckBox==false && param.ListPage.Click_View==true?'width:91%;':param.ListPage.CheckBox==true && param.ListPage.Click_View==false?'width:88%;':'width:100%;'"> </div> - <div class="dv-panel-input" v-if="!ListHtml_Panel" :style="param.ListPage.CheckBox==true && param.ListPage.Click_View==true?'width:85%;': - param.ListPage.CheckBox==false && param.ListPage.Click_View==true?'width:91%;': - param.ListPage.CheckBox==true && param.ListPage.Click_View==false?'width:88%;':'width:100%;'"> - <div v-for="(item,index) in style.form.items"> - <!-- 鏅�甯冨眬 --> - <view v-if="item.name!='Layout'"> - <text class="txt_title" - :style="{'width':item.labelWidth+'px'}">{{item.label}}锛�/text> - <!-- 鏂囨湰妗�鏁板瓧妗�--> - <view class="dv_input" v-if="(item.name=='Input' || item.name=='InputNumber')"> - <text v-if="item.setting.prefix" class="uni-icon" - :class="[item.setting.prefix]" @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" :disabled="item.disabled" - :placeholder="item.placeholder" - :style="{'width':item.setting.prefix && item.setting.suffix?'78%':item.setting.prefix || item.setting.suffix?'87%':'96%'}" - :focus="focusMateria" @focus="ontap(item)" @blur="onevent(item)" - :maxlength="-1" /> - <text v-if="item.setting.suffix" class="uni-icon" - :class="[item.setting.suffix]" @click="onChange(item)"></text> - </view> - <!-- 涓嬫媺妗�鍗曢� item.useDict?item.dict:item.selections--> - <uni-data-select id="dv_select" v-if="item.name=='Select'" - :class="item.disabled?'input-disabled':''" v-model="item.value" - :localdata="item.dict" @change="onChange(item)" :disabled="item.disabled" - :clear="false"></uni-data-select> - <!-- 澶氳鏂囨湰 --> - <view class="input-wrapper" v-if="item.name=='Textarea'"> - <textarea class="uni-input" :value="item.value" - :class="item.disabled?'input-disabled':''" - :placeholder="item.placeholder" @blur="onModelValue(item)" - style="height:60px;" :style="{'width':'96%'}" - :disabled="item.disabled"></textarea> - </view> - <!-- 澶嶉�妗�--> - <checkbox-group class="check_rememberPwd" v-if="item.name=='Checkbox'" - :class="item.disabled?'input-disabled':''" :disabled="item.disabled" - @change="onCheckBoxValue" :data-attr="item.fieldId"> - <label v-for="(item2) in item.selections" :key="item2.value"> - <checkbox :value="item2.value" - :checked="item.value.includes(item2.value)" /> - <text>{{item2.label}}</text> - </label> - </checkbox-group> + <div class="dv-panel-input" v-if="!ListHtml_Panel" + :style="param.ListPage.CheckBox==true && param.ListPage.Click_View==true?'width:85%;':param.ListPage.CheckBox==false && param.ListPage.Click_View==true?'width:91%;':param.ListPage.CheckBox==true && param.ListPage.Click_View==false?'width:88%;':'width:100%;'"> + <OIForm class="v-area dv-panel" :form="style.form.items" viewMode></OIForm> - <!-- 鍗曢�妗�--> - <radio-group class="check_rememberPwd" v-if="item.name=='Radio'" - :class="item.disabled?'input-disabled':''" :disabled="item.disabled" - :style="{'margin-left':'10rpx'}" @change="onModelValue(item)" - :data-attr="item.fieldId"> - <label v-for="(item2) in item.selections" :key="item2.value"> - <radio :value="item2.value" :checked="item2.value === item.value" /> - <text>{{item2.label}}</text> - </label> - </radio-group> - <!-- Switch寮�叧 --> - <switch v-if="item.name=='Switch'" :class="item.disabled?'input-disabled':''" - :disabled="item.disabled" v-model="item.value" @change="onModelValue(item)" - :style="{'margin-left':'10rpx'}" /> - <!-- 鏃ユ湡鏃堕棿 --> - <view class="input-wrapper" - v-if="(item.name=='TimePicker' || item.name=='DatePicker') && !item.disabled"> - <picker mode="date" class="date_iput" - :class="item.disabled?'input-disabled':''" :disabled="item.disabled" - :value="item.value" @change="onModelValue(item)"> - <view class="picker">{{item.value}}</view> - </picker> - </view> - </view> - <!-- 鏍呮牸甯冨眬 --> - <uni-row class="demo-uni-row" v-if="item.name=='Layout'"> - <uni-col v-for="(cols,key) in item.setting.colList" - :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> - <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> - <input class="uni-input" :class="cols.disabled?'input-disabled':''" - :type="cols.name=='Input'?'text':cols.name=='InputNumber'?'number':'text'" - v-model="cols.value" :disabled="cols.disabled" - :placeholder="cols.placeholder" - :style="{'width':cols.setting.prefix && cols.setting.suffix?'78%':cols.setting.prefix || cols.setting.suffix?'87%':'96%'}" - :focus="focusMateria" @focus="ontap(cols)" @blur="onevent(cols)" - :maxlength="-1" /> - <text v-if="cols.setting.suffix" class="uni-icon" - :class="[cols.setting.suffix]" - @click="onChange(cols)"></text> - </view> - <!-- 涓嬫媺妗�鍗曢� cols.useDict?cols.dict:cols.selections--> - <uni-data-select id="dv_select" v-if="cols.name=='Select'" - :class="cols.disabled?'input-disabled':''" v-model="cols.value" - :localdata="cols.dict" @change="onChange(cols)" - :disabled="cols.disabled" :clear="false"></uni-data-select> - <!-- 澶氳鏂囨湰 --> - <view class="input-wrapper" v-if="cols.name=='Textarea'"> - <textarea class="uni-input" :value="cols.value" - :class="cols.disabled?'input-disabled':''" - :placeholder="cols.placeholder" @blur="onModelValue(cols)" - style="height:60px;" :style="{'width':'96%'}" - :disabled="cols.disabled"></textarea> - </view> - <!-- 澶嶉�妗�--> - <checkbox-group class="check_rememberPwd" v-if="cols.name=='Checkbox'" - :class="cols.disabled?'input-disabled':''" :disabled="cols.disabled" - @change="onCheckBoxValue" :data-attr="cols.fieldId"> - <label v-for="(cols2) in cols.selections" :key="cols2.value"> - <checkbox :value="cols2.value" - :checked="cols.value.includes(cols2.value)" /> - <text>{{cols2.label}}</text> - </label> - </checkbox-group> - <!-- 鍗曢�妗�--> - <radio-group class="check_rememberPwd" v-if="cols.name=='Radio'" - :class="cols.disabled?'input-disabled':''" :disabled="cols.disabled" - :style="{'margin-left':'10rpx'}" @change="onModelValue(cols)"> - <label v-for="(cols2) in cols.selections" :key="cols2.value"> - <radio :value="cols2.value" - :checked="cols2.value === cols.value" /> - <text>{{cols2.label}}</text> - </label> - </radio-group> - <!-- Switch寮�叧 --> - <switch v-if="cols.name=='Switch'" - :class="cols.disabled?'input-disabled':''" :disabled="item.disabled" - v-model="cols.value" @change="onModelValue(cols)" - :style="{'margin-left':'10rpx'}" /> - <!-- 鏃ユ湡鏃堕棿 --> - <view class="input-wrapper" - v-if="(cols.name=='TimePicker' || cols.name=='DatePicker') && !cols.disabled"> - <picker mode="date" class="date_iput" - :class="cols.disabled?'input-disabled':''" - :disabled="item.disabled" :value="cols.value" - @change="onModelValue(cols)"> - <view class="picker">{{cols.value}}</view> - </picker> - </view> - - </view> - </uni-col> - </uni-row> - </div> </div> <div class="dv-panel-button" v-if="param.ListPage.Click_View==true"> <a @click="onViewPageClick(style)"><i class="mobox-normal-right-arrow" /></a> @@ -237,10 +76,15 @@ dataObjQuery, dataObjDel } from "@/api/data.js" + import dayjs from "dayjs"; + import OIForm from '@/components/oi-form/index.vue' export default { modules: { Base64, + }, + components: { + OIForm }, onNavigationBarButtonTap(e) { // console.log(e); @@ -954,8 +798,10 @@ uni.showModal({ title: this.translateSys("tip"), content: btn.PromptContent || this.translate("are_you_sure"), + cancelText: this.translateSys('ok'), + confirmText: this.translateSys('cancel'), success: function(res) { - if (res.confirm) { + if (res.cancel) { that.onButtonClicked(btn, style); // } else if (res.cancel) { // console.log('鐢ㄦ埛鐐瑰嚮鍙栨秷'); @@ -980,10 +826,11 @@ if (btn.Prompt) { uni.showModal({ title: this.translateSys("tip"), - content: btn.PromptContent || this.translate( - "are_you_sure"), + content: btn.PromptContent || this.translate("are_you_sure"), + cancelText: this.translateSys('ok'), + confirmText: this.translateSys('cancel'), success: function(res) { - if (res.confirm) { + if (res.cancel) { that.onButtonClicked(btn); // } else if (res.cancel) { // console.log('鐢ㄦ埛鐐瑰嚮鍙栨秷'); @@ -1076,8 +923,10 @@ uni.showModal({ title: this.translateSys("tip"), content: this.translate("confirm_delete_data"), + cancelText: this.translateSys('ok'), + confirmText: this.translateSys('cancel'), success: function(res) { - if (res.confirm) { + if (res.cancel) { var objID = style.form.objId; if (!style.form.objId.includes('{')) objID = '{' + style.form .objId + '}'; @@ -1345,12 +1194,15 @@ item.value = result.decodedata; uni.hideKeyboard(); var $this = this; - console.log(item); - if (item.oldvalue != item.value) { - item.oldvalue = item.value; + let newVal = item.value.trim() + if (!newVal) + return + if (item.oldvalue != newVal) { + item.oldvalue = newVal; + var attr = item.fieldId; - this.head_styledef.form.model[attr] = item.value; + this.head_styledef.form.model[attr] = newVal; var onChangeEvent = item.bind.onChangeEvent; //鍐呭鍙樺寲鍚庝簨浠� var onSuffixClickCallbackEvent = item.bind .onSuffixClickCallbackEvent; //鍚庡浘鏍囩偣鍑讳簨浠�@@ -1361,24 +1213,19 @@ if (onChangeEvent.id) { //鍐呭鍙樺寲鍚庝簨浠� $this.onChange(onChangeEvent); } else { - $this.where = ''; - if (item.value) - $this.where = item.fieldId + " like '%" + item - .value + "%'"; + $this.where = item.fieldId + " like '%" + newVal + "%'"; $this.query_id = ''; $this.pageindex = 1; $this.detail1StyleDefList = []; $this.loadDataGetList(); } - if (item.value) { //绗竴涓緭鍏ユ涓嶄负绌�- $this.focusMateria = true; //鍒濆鍖栵紝绗簩涓緭鍏ユfocus灞炴� - // setTimeout(function(){ - // $this.focusMateria=true; //绗簩涓緭鍏ユ鑾峰彇鐒︾偣 - setTimeout(function() { - uni.hideKeyboard(); - }, 1000); - // },500); - } + $this.focusMateria = true; //鍒濆鍖栵紝绗簩涓緭鍏ユfocus灞炴� + // setTimeout(function(){ + // $this.focusMateria=true; //绗簩涓緭鍏ユ鑾峰彇鐒︾偣 + setTimeout(function() { + uni.hideKeyboard(); + }, 1000); + // },500); // if(onSuffixClickCallbackEvent.id){ //鍚庡浘鏍囩偣鍑讳簨浠� // this.onSuffixClick(onSuffixClickCallbackEvent); // } @@ -1388,12 +1235,19 @@ } }) }, + onEnterChange(item) { //鍥炶溅锛岀偣鍑绘寜閽紝鍙栨秷鑺傜偣浜嬩欢 // console.log(item); - if (item.oldvalue != item.value) { - item.oldvalue = item.value; + let newVal = item.value + if (typeof item.value == "string") { + newVal = item.value.trim() + if (!newVal) + return + } + if (item.oldvalue != newVal) { + item.oldvalue = newVal; var attr = item.fieldId; - this.head_styledef.form.model[attr] = item.value; + this.head_styledef.form.model[attr] = newVal; var onChangeEvent = item.bind.onChangeEvent; //鍐呭鍙樺寲鍚庝簨浠� var onSuffixClickCallbackEvent = item.bind .onSuffixClickCallbackEvent; //鍚庡浘鏍囩偣鍑讳簨浠�@@ -1403,9 +1257,7 @@ if (onChangeEvent.id) { //鍐呭鍙樺寲鍚庝簨浠� this.onChange(onChangeEvent); } else { - this.where = ''; - if (item.value) - this.where = item.fieldId + " like '%" + item.value + "%'"; + this.where = item.fieldId + " like '%" + item.value + "%'"; this.query_id = ''; this.pageindex = 1; this.detail1StyleDefList = []; @@ -1580,6 +1432,7 @@ } }, + onDetail1EnterChange() {}, //鐐逛腑琛ㄥ崟 onPanelClick(value) { //鐐瑰嚮闈㈡澘楂樹寒鏄剧ず // console.log(value); @@ -2036,70 +1889,8 @@ height: calc(100vh - 30rpx); padding: 15rpx 0; - .v-headStyle:first-child { - margin-top: 15rpx; - } - - .v-headStyle .txt_title { - font-size: 34rpx; - text-align: right; - display: inline-block; - vertical-align: 24rpx; - } - - .v-headStyle input { - display: inline-block; - /* border: 1px solid #d5d5d5; */ - /* width: 65%; */ - width: 85%; - height: 52rpx; - line-height: 34rpx; - background: #FFF; - border-radius: 0 !important; - color: #2d8cf0; - padding: 10rpx 8rpx 12rpx; - font-size: 34rpx; - font-family: inherit; - box-shadow: none !important; - transition-duration: 0.1s; - margin-top: 4rpx; - } - - .v-headStyle input::-webkit-input-placeholder { - font-size: 12rpx; - } - - .input-wrapper { - border: 1px solid #d5d5d5; - display: inline-block; - width: 65%; - line-height: 22rpx; - } - - [nvue] uni-view { - position: relative; - border: 0 solid #000; - box-sizing: border-box; - } - - .uni-input { - /* border: none; */ - } - - .uni-icon { - /* border: 1px solid red; */ - width: 8%; - font-family: uniicons; - font-size: 40rpx; - font-weight: 400; - font-style: normal; - /* width: 48rpx; */ - height: 48rpx; - line-height: 48rpx; - color: #2d8cf0; - cursor: pointer; - display: inline-block; - vertical-align: 18rpx; + .v-headStyle { + width: 98%; } .v-content { @@ -2207,6 +1998,11 @@ width: calc(100% - 100px); } + .dv-panel .form-item-input { + + width: calc(100% - 100px); + } + .dv-panel-button { display: inline-block; } @@ -2257,7 +2053,7 @@ line-height: 1.5; background: #fff; // border: none; - color: #000; + color: #000; font-size: 38rpx; font-weight: bold; float: left; -- Gitblit v1.9.1