| | |
| | | <template> |
| | | <view class="uni-page-modal-3200-view"> |
| | | <view class="uni-page-modal-3200-view" :class="largeMode?'large-mode':''"> |
| | | <view class="v-content"> |
| | | <view class="dv-panel dv-panel-bkcolor"> |
| | | <div class="dv-panel-input"> |
| | | <!-- HTML页面类型显示 --> |
| | | <div class="dv-viewHtml-Panel" v-if="ViewHtml_Panel" v-html="ViewHtml_Panel"> |
| | | <!-- <div> |
| | | <label class="item-label">任务编码:</label> |
| | | <span class="item-span">TA240318-00005</span> |
| | | </div> --> |
| | | </div> |
| | | <view class="dv-viewHtml-Panel" v-if="ViewHtml_Panel" v-html="ViewHtml_Panel"></view> |
| | | |
| | | <!-- 自定义表单类型显示 --> |
| | | <div v-if="!ViewHtml_Panel"> |
| | | <div v-for="(item,index) in detail2_styledef.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]" |
| | | @click="onEnterChange(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)" @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> |
| | | <!-- 下拉框-单选 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="onEnterChange(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="onEnterChange(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" :data-index="index"> |
| | | <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> |
| | | <!-- 单选框 --> |
| | | <radio-group class="check_rememberPwd" v-if="item.name=='Radio'" |
| | | :class="item.disabled?'input-disabled':''" :disabled="item.disabled" |
| | | :style="{'margin-left':'10rpx'}" @change="onRadioBoxValue" :data-attr="item.fieldId" |
| | | :data-index="index"> |
| | | <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') "> |
| | | <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 class="input-wrapper" |
| | | v-if="(item.name=='TimePicker' || item.name=='DatePicker' || item.name=='DatePickerRange') "> |
| | | <OIDatePicker v-if="item.name=='DatePicker'" |
| | | :class="item.disabled?'input-disabled':''" :disabled="item.disabled" |
| | | v-model="item.value" :placeholder="item.placeholder" |
| | | :defaultToday="item.setting.defaultToday" :format="item.setting.format" |
| | | @change="onModelValue(item)" /> |
| | | <OIDatePickerRange v-if="item.name=='DatePickerRange'" |
| | | :rangeSeparator="item.setting.separator" :format="item.setting.format" |
| | | :class="item.disabled?'input-disabled':''" :disabled="item.disabled" |
| | | v-model="item.value" :placeholder="item.placeholder" |
| | | @change="onModelValue(item)" /> |
| | | <OITimePicker v-if="item.name=='TimePicker'" |
| | | :class="item.disabled?'input-disabled':''" :disabled="item.disabled" |
| | | v-model="item.value" :placeholder="item.placeholder" |
| | | @change="onModelValue(item)" /> |
| | | </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') "> |
| | | <text v-if="cols.setting.prefix" class="uni-icon" |
| | | :class="[cols.setting.prefix]" |
| | | @click="onEnterChange(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="onEnterChange(cols)" |
| | | @keyup.enter="onEnterChange(cols)" :maxlength="-1" /> |
| | | <text v-if="cols.setting.suffix" class="uni-icon" |
| | | :class="[cols.setting.suffix]" |
| | | @click="onEnterChange(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="onEnterChange(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="onEnterChange(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" :data-index="index" |
| | | :data-iindex="key"> |
| | | <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="onRadioBoxValue" |
| | | :data-attr="cols.fieldId" :data-index="index" :data-iindex="key"> |
| | | <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="cols.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> --> |
| | | <OIDatePicker v-if="cols.name=='DatePicker'" |
| | | :class="cols.disabled?'input-disabled':''" :disabled="cols.disabled" |
| | | v-model="cols.value" :placeholder="cols.placeholder" |
| | | :defaultToday="cols.setting.defaultToday" :format="cols.setting.format" |
| | | @change="onModelValue(cols)" /> |
| | | <OIDatePickerRange v-if="cols.name=='DatePickerRange'" |
| | | :rangeSeparator="cols.setting.separator" :format="cols.setting.format" |
| | | :class="cols.disabled?'input-disabled':''" :disabled="cols.disabled" |
| | | v-model="cols.value" :placeholder="cols.placeholder" |
| | | @change="onModelValue(cols)" /> |
| | | <OITimePicker v-if="cols.name=='TimePicker'" |
| | | :class="cols.disabled?'input-disabled':''" :disabled="cols.disabled" |
| | | v-model="cols.value" :placeholder="cols.placeholder" |
| | | @change="onModelValue(cols)" /> |
| | | </view> |
| | | <OIForm :form="detail2_styledef.form" viewMode></OIForm> |
| | | |
| | | </view> |
| | | </uni-col> |
| | | </uni-row> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </view> |
| | |
| | | <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" /> |
| | | <text class="mobox-normal-more" /> |
| | | </a> |
| | | </view> |
| | | </view> |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import Base64 from '../../components/js-base64/base64.js' |
| | | import { |
| | | Base64 |
| | | } from '@/js/Base64.js'; |
| | | import classUtils from "@/js/utils.js" |
| | | import { |
| | | appGetInfo, |
| | |
| | | runCustomEvent, |
| | | dataObjQuery |
| | | } from "@/api/data.js" |
| | | import OIDatePicker from '@/components/oi-date-time-picker/oi-date-picker.vue' |
| | | import OIDatePickerRange from '@/components/oi-date-time-picker/oi-date-picker-range.vue' |
| | | import OITimePicker from '@/components/oi-date-time-picker/oi-time-picker.vue' |
| | | import OIForm from '@/components/oi-form/index.vue' |
| | | import buttonClickMixin from '@/mixins/button-click.js'; |
| | | |
| | | export default { |
| | | modules: { |
| | | Base64, |
| | | }, |
| | | mixins: [buttonClickMixin], |
| | | components: { |
| | | OIDatePicker, |
| | | OIDatePickerRange, |
| | | OITimePicker |
| | | OIForm |
| | | }, |
| | | onBackPress(e) { |
| | | // console.log("监听返回按钮事件",e); |
| | | var eventChannel = this.$scope.eventChannel; |
| | | const eventChannel = this.getOpenerEventChannel(); |
| | | // const eventChannel = this.getOpenerEventChannel(); |
| | | eventChannel.emit('ExitViewEvent', ""); |
| | | // uni.navigateBack({ |
| | |
| | | }, |
| | | data() { |
| | | return { |
| | | largeMode: getApp().globalData.largeMode || false, |
| | | title: this.translateSys('add2'), |
| | | param: {}, |
| | | styleDef: { |
| | |
| | | uni.setNavigationBarTitle({ |
| | | title: options.titlename |
| | | }); //设置顶部标题 |
| | | this.$data.title = options.titlename; |
| | | this.$data.param = JSON.parse(options.param); |
| | | console.log(this.$data.param); |
| | | this.$data.styleDef = JSON.parse(options.style); |
| | | // console.log(this.$data.styleDef); |
| | | this.title = options.titlename; |
| | | this.param = JSON.parse(options.param); |
| | | console.log(this.param); |
| | | this.styleDef = JSON.parse(options.style); |
| | | // console.log(this.styleDef); |
| | | if (this.param.ViewPage.View_UIDef.ui_type == "HTML页面") { |
| | | // HTML页面 |
| | | //获取数据类的HTML页面 |
| | |
| | | if (!result.style_def.includes('"')) styledef = Base64.decode(result |
| | | .style_def); |
| | | } |
| | | $this.$data.detail2_styledef = result.style_def ? JSON.parse(styledef) : {}; |
| | | $this.$data.detail2_styledef.SelBut_Checked = false; |
| | | // console.log($this.$data.detail2_styledef); |
| | | $this.detail2_styledef = result.style_def ? JSON.parse(styledef) : {}; |
| | | $this.detail2_styledef.SelBut_Checked = false; |
| | | // console.log($this.detail2_styledef); |
| | | if ($this.detail2_styledef.form?.items) { |
| | | $this.styleDef.form.attrs.forEach((attr) => { |
| | | // info[attr.name]=attr.value; |
| | |
| | | } |
| | | } |
| | | }); |
| | | } else that.onButtonClicked(btn); |
| | | } else { |
| | | this.handleButtonClick((done) => { |
| | | that.onButtonClicked(btn); |
| | | setTimeout(() => { |
| | | done(); // 重置状态 |
| | | }, 1000); |
| | | }); |
| | | |
| | | } |
| | | }, |
| | | //点击按钮列表 |
| | | actionSheetTap() { |
| | |
| | | result.action.forEach(item => { |
| | | if (item.action_type == "goback_to_pre_page") { //返回上一页 |
| | | var value = item.value; |
| | | // const eventChannel = this.$scope.eventChannel; |
| | | // const eventChannel = this.getOpenerEventChannel(); |
| | | // // const eventChannel = this.getOpenerEventChannel(); |
| | | // eventChannel.emit('ExitViewEvent',""); |
| | | uni.navigateBack({ |
| | |
| | | }, |
| | | |
| | | cancel(e) { //取消 |
| | | var eventChannel = this.$scope.eventChannel; |
| | | const eventChannel = this.getOpenerEventChannel(); |
| | | // const eventChannel = this.getOpenerEventChannel(); |
| | | eventChannel.emit('ExitViewEvent', ""); |
| | | uni.navigateBack({ |
| | |
| | | width: 100%; |
| | | display: inline-block; |
| | | text-align: left; |
| | | |
| | | .uni-forms-item { |
| | | padding-bottom: 5rpx; |
| | | margin-bottom: 0; |
| | | |
| | | .uni-forms-item__label { |
| | | height: 20px !important; |
| | | padding: 0 10rpx 0 0 !important; |
| | | } |
| | | } |
| | | } |
| | | |
| | | .dv-panel-buticon { |