| | |
| | | <style> |
| | | .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-content{ |
| | | height: 945rpx; |
| | | overflow: auto; |
| | | /* border:1px solid red; */ |
| | | } |
| | | .view-content{ |
| | | margin-top: 10rpx; |
| | | } |
| | | .dv-panel-bkcolor{ |
| | | background-color:#efefef; |
| | | } |
| | | .dv-panel{ |
| | | background-color:#efefef; |
| | | padding: 20rpx 20rpx 4rpx 0px; |
| | | border-radius: 12rpx; |
| | | margin-bottom: 20rpx; |
| | | text-align: right; |
| | | } |
| | | .dv-panel-input{ |
| | | vertical-align: middle; |
| | | width: 91%; |
| | | display: inline-block; |
| | | text-align: left; |
| | | } |
| | | .dv-panel-buticon{ |
| | | line-height: 50rpx; |
| | | text-align: left; |
| | | /* font-size: 17px; */ |
| | | padding: 0 30rpx; |
| | | } |
| | | .dv-panel-buticon .btn-padding{ |
| | | padding: 20rpx; |
| | | display: inline-block; |
| | | vertical-align: middle; |
| | | } |
| | | .dv-panel-buticon a i { |
| | | font-size: 44rpx; |
| | | } |
| | | .dv-panel-buticon button{ |
| | | min-width: 120rpx; |
| | | font-size: 32rpx; |
| | | padding: 20rpx 20rpx; |
| | | line-height: 1; |
| | | background: #4D6AF4; |
| | | border: none; |
| | | color: #fff; |
| | | font-weight: bold; |
| | | border-radius: 8rpx; |
| | | } |
| | | .dv-panel .txt_title{ |
| | | font-size: 34rpx; |
| | | text-align: right; |
| | | display: inline-block; |
| | | } |
| | | .dv-panel input{ |
| | | vertical-align: middle; |
| | | display: inline-block; |
| | | border: 2rpx solid #d5d5d5; |
| | | width: 68%; |
| | | height: 52rpx; |
| | | line-height: 34rpx; |
| | | background: #FFF; |
| | | border-radius: 14rpx !important; |
| | | color: #2d8cf0; |
| | | padding: 6rpx 8rpx 8rpx; |
| | | font-size: 32rpx; |
| | | font-family: inherit; |
| | | box-shadow: none !important; |
| | | transition-duration: 0.1s; |
| | | margin-top: 0rpx; |
| | | } |
| | | .dv-panel input::-webkit-input-placeholder { |
| | | font-size: 10rpx; |
| | | } |
| | | .dv-panel .form-item-span{ |
| | | vertical-align: text-top; |
| | | color: #2d8cf0; |
| | | white-space: normal; |
| | | word-break: break-all; |
| | | display: inline-block; |
| | | width: calc(100% - 100px); |
| | | } |
| | | .dv-panel-button{ |
| | | display: inline-block; |
| | | } |
| | | .dv-panel-button checkbox-group { |
| | | display: inline-block; |
| | | } |
| | | .dv-panel-button a i { |
| | | font-size: 36rpx; |
| | | } |
| | | .dv-panel-button button { |
| | | height: 50rpx; |
| | | font-size: 26rpx; |
| | | padding: 0 24rpx; |
| | | } |
| | | .view-floor{ |
| | | padding: 0 20rpx; |
| | | /* border:1px solid red; */ |
| | | } |
| | | button.btn_refresh { |
| | | width:49.5%; |
| | | margin-top: 25rpx; |
| | | padding: 20rpx; |
| | | line-height: 1.5; |
| | | background: #4D6AF4; |
| | | border: none; |
| | | color: #fff; |
| | | font-size: 38rpx; |
| | | font-weight: bold; |
| | | float: left; |
| | | display: inline-block; |
| | | } |
| | | button.btn_cancel { |
| | | width:49.5%; |
| | | margin-top: 25rpx; |
| | | padding: 20rpx; |
| | | line-height: 1.5; |
| | | background: #fff; |
| | | border: none; |
| | | color: #000; |
| | | font-size: 38rpx; |
| | | font-weight: bold; |
| | | float: left; |
| | | display: inline-block; |
| | | margin-right: 20rpx; |
| | | } |
| | | |
| | | .bk-active{ |
| | | background-color: #D6FCB2; |
| | | } |
| | | .uni-padding-wrap{ |
| | | margin-top: 14rpx; |
| | | background-color: #98DAEA; |
| | | width: 104rpx; |
| | | height: 80rpx; |
| | | text-align: center; |
| | | border-radius: 54rpx; |
| | | padding: 24rpx 0 0 0; |
| | | float: right; |
| | | display: inline-block; |
| | | } |
| | | .uni-padding-wrap a{ |
| | | font-size: 40rpx; |
| | | } |
| | | #dv_select{ |
| | | display: inline-block; |
| | | width: 66%; |
| | | 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: 0rpx; |
| | | vertical-align: 20rpx; |
| | | } |
| | | #dv_select .uni-select{ |
| | | border: 2rpx solid #ccc; |
| | | border-radius: 0 !important; |
| | | color: #2d8cf0; |
| | | } |
| | | #dv_select .uni-select__input-text{ |
| | | color: #2d8cf0; |
| | | } |
| | | .input-disabled{ |
| | | background-color: #f3f3f3 !important; |
| | | } |
| | | </style> |
| | | <style lang="scss"> |
| | | .demo-uni-row { |
| | | margin-bottom: 0px; |
| | | display: block; |
| | | } |
| | | ::v-deep .uni-row { |
| | | margin-bottom: 0px; |
| | | } |
| | | .view-tabpage ::v-deep .uni-row { |
| | | margin-bottom: 5px; |
| | | } |
| | | .demo-uni-col { |
| | | height: 36px; |
| | | border-radius: 5px; |
| | | } |
| | | .demo-uni-row .uni-input{ |
| | | width: calc(100% - 120px); |
| | | } |
| | | |
| | | </style> |
| | | |
| | | <template> |
| | | <view class="content"> |
| | | <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)" |
| | | /> |
| | | <text v-if="item.setting.suffix" |
| | | class="uni-icon" |
| | | :class="[item.setting.suffix]" |
| | | @click="onEnterChange(item)"></text> |
| | | </view> |
| | | </view> |
| | | |
| | | <view class="view-content" id="tabpanel"> |
| | | <view class="dv-panel dv-panel-bkcolor" v-for="(style,ii) in detail1StyleDefList" |
| | | @click="onPanelClick(ii)" |
| | | :id="'panel'+style.form.htmlobjId" |
| | | :class="activelist[ii].active==true?'bk-active':''"> |
| | | <div class="dv-panel-button" v-if="param.ListPage.CheckBox==true"> |
| | | <checkbox-group> |
| | | <label> |
| | | <checkbox :value="style.SelBut_Checked" :checked="style.SelBut_Checked" /> |
| | | </label> |
| | | </checkbox-group> |
| | | </div> |
| | | <div class="dv-panel-input" |
| | | :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> |
| | | <span class="form-item-span" v-if="item.disabled">{{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> |
| | | <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)" |
| | | /> |
| | | <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' && !item.disabled" |
| | | :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' && !item.disabled"> |
| | | <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':''" |
| | | @change="onModelValue(item)" |
| | | :data-ischeck="item.value" |
| | | :disabled="item.disabled" |
| | | :style="{'margin-left':'10rpx'}"> |
| | | <label> |
| | | <checkbox :value="item.value" :checked="item.value"/> |
| | | <text>{{item.label}}</text> |
| | | </label> |
| | | </checkbox-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> |
| | | <span class="form-item-span" v-if="cols.disabled">{{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> |
| | | <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)" |
| | | /> |
| | | <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' && !cols.disabled" |
| | | :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' && !cols.disabled"> |
| | | <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="item.disabled" |
| | | @change="onModelValue(cols)" |
| | | :data-ischeck="cols.value" |
| | | :style="{'margin-left':'10rpx'}"> |
| | | <label> |
| | | <checkbox :value="cols.value" :checked="cols.value"/> |
| | | <text>{{cols.label}}</text> |
| | | </label> |
| | | </checkbox-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> |
| | | </div> |
| | | <div class="dv-panel-buticon" v-if="param.ListPage.ListItem_Button" > |
| | | <view class="btn-padding" v-for="(btn,key) in param.ListPage.ListItem_Button"> |
| | | <a @click="onBtnClick(btn,style)" :title="btn.ShowName" v-if="btn.Style=='img'"> |
| | | <i :class="btn.Img" /> |
| | | </a> |
| | | <button type="default" @click="onBtnClick(btn,style)" class="btn-padding" v-else-if="btn.Style=='text'">{{btn.ShowName}}</button> |
| | | </view> |
| | | </div> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | <view class="view-floor"> |
| | | <button type="default" @click="cancel" class="btn_cancel" |
| | | :style="{'width':param.ListPage.Page_Button.length>0?'39.5%':'48.5%'}">关闭</button> |
| | | <button type="default" @click="Refresh" class="btn_refresh" |
| | | :style="{'width':param.ListPage.Page_Button.length>0?'39.5%':'48.5%'}">刷新</button> |
| | | <view class="uni-padding-wrap" v-if="param.ListPage.Page_Button.length>0"> |
| | | <view class="uni-btn-v"> |
| | | <a @tap="actionSheetTap"><Icon class="mobox-normal-more"/></a> |
| | | <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)" /> |
| | | <text v-if="item.setting.suffix" class="uni-icon" :class="[item.setting.suffix]" |
| | | @click="onEnterChange(item)"></text> |
| | | </view> |
| | | </view> |
| | | |
| | | <view class="v-scroll-view"> |
| | | <scroll-view :scroll-top="scrollTop" :scroll-y="true" class="scroll-y" @scrolltolower="scrolltolower" |
| | | @scroll="scroll"> |
| | | <view class="view-content" id="tabpanel"> |
| | | <view class="dv-panel dv-panel-bkcolor" v-for="(style,ii) in detail1StyleDefList" :key="ii" |
| | | @click="onPanelClick(ii)" :id="'panel'+style.form.htmlobjId" |
| | | :class="activeItem == style?'bk-active':''"> |
| | | <div class="dv-panel-button" v-if="param.ListPage.CheckBox==true"> |
| | | <checkbox-group> |
| | | <label> |
| | | <checkbox :value="style.SelBut_Checked" :checked="style.SelBut_Checked" /> |
| | | </label> |
| | | </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> |
| | | <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)" /> |
| | | <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':''" @change="onModelValue(item)" |
| | | :data-ischeck="item.value" :disabled="item.disabled" |
| | | :style="{'margin-left':'10rpx'}"> |
| | | <label> |
| | | <checkbox :value="item.value" :checked="item.value" /> |
| | | <text>{{item.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="onModelValue(item)"> |
| | | <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)" /> |
| | | <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="item.disabled" |
| | | @change="onModelValue(cols)" :data-ischeck="cols.value" |
| | | :style="{'margin-left':'10rpx'}"> |
| | | <label> |
| | | <checkbox :value="cols.value" :checked="cols.value" /> |
| | | <text>{{cols.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> |
| | | </div> |
| | | <div class="dv-panel-buticon" v-if="param.ListPage.ListItem_Button"> |
| | | <view class="btn-padding" v-for="(btn,key) in param.ListPage.ListItem_Button"> |
| | | <a @click="onBtnClick(btn,style)" :title="btn.ShowName" v-if="btn.Style=='img'"> |
| | | <i :class="btn.Img" /> |
| | | </a> |
| | | <button type="default" @click="onBtnClick(btn,style)" class="btn-padding" |
| | | v-else-if="btn.Style=='text'">{{btn.ShowName}}</button> |
| | | </view> |
| | | </div> |
| | | </view> |
| | | </view> |
| | | </scroll-view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | <view class="view-floor"> |
| | | <button type="default" @click="cancel" class="btn_cancel" |
| | | :style="{'width':param.ListPage.Page_Button.length>0?'39.5%':'48.5%'}">{{translateSys("close")}}</button> |
| | | <button type="default" @click="Refresh" class="btn_refresh" :class="refreshing?'btn_disabled':''" |
| | | :disabled="refreshing" |
| | | :style="{'width':param.ListPage.Page_Button.length>0?'39.5%':'48.5%'}">{{translateSys("refresh")}}</button> |
| | | <view class="uni-padding-wrap" v-if="param.ListPage.Page_Button.length>0"> |
| | | <view class="uni-btn-v"> |
| | | <a @tap="actionSheetTap"> |
| | | <Icon class="mobox-normal-more" /> |
| | | </a> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | import Base64 from '../../components/js-base64/base64.js' |
| | | export default { |
| | | modules:{ |
| | | Base64, |
| | | }, |
| | | onNavigationBarButtonTap(e) { |
| | | // console.log(e); |
| | | // e.text="\ue924"; |
| | | // console.log(e.fontSize); |
| | | if(this.isFilter) |
| | | this.isFilter=false; |
| | | else |
| | | this.isFilter=true; |
| | | }, |
| | | data() { |
| | | return { |
| | | title:'新增', |
| | | isFilter:true, |
| | | param: {}, |
| | | focusMateria:false, |
| | | styledef:{}, |
| | | head_styledef:{ |
| | | form:{ |
| | | items:[] |
| | | } |
| | | }, |
| | | detail1_styledef:{}, |
| | | detail1StyleDefList:[], |
| | | detail2_styledef:{}, |
| | | detail2StyleDefList:[], |
| | | items: [], |
| | | active_id:'', |
| | | activelist:[], |
| | | wheres:'', |
| | | orderby:'', |
| | | }; |
| | | }, |
| | | async onLoad(options) { |
| | | // console.log(options); |
| | | uni.setNavigationBarTitle({ title: options.titlename}); //设置顶部标题 |
| | | this.$data.title = options.titlename; |
| | | this.$data.param = JSON.parse(options.param); |
| | | this.isFilter=true; |
| | | if(this.param.ShowFilter) |
| | | this.isFilter=false; |
| | | //获取数据类的自定义表单参数 |
| | | this.Head_UIStyleGetInfo(this.param.DataCls.id,this.param.Query_Panel.id); |
| | | await this.Detail1_UIstyleGetInfo(this.param.DataCls.id,this.param.ListPage.ListItem_UIDef.id); |
| | | this.orderby = this.param.Order?this.param.Order:'T_CREATE Desc'; |
| | | if(this.param.Query_Event){ |
| | | await this.onSearChange(this.param.DataCls.id,this.param.Query_Event.id); |
| | | } else{ |
| | | this.wheres = this.param.Condition; |
| | | await this.loadDataGetList(); |
| | | } |
| | | console.log(this.$data.param); |
| | | //页面初始化获取焦点 |
| | | // this.focusMateria=true; |
| | | }, |
| | | methods: { |
| | | async Head_UIStyleGetInfo(class_id,style_id){ //获取自定义表单样式 |
| | | var $this = this; |
| | | var dataInfo={ |
| | | class_id:class_id, |
| | | ui_style_id:style_id, |
| | | }; |
| | | // console.log(dataInfo); |
| | | this.$store.dispatch('UIStyleGetInfo',dataInfo).then(ret=>{ |
| | | // console.log(ret); |
| | | if (ret.err_code == 0) { |
| | | var styledef=""; |
| | | if(ret.result.style_def){ |
| | | //mobox2的style_def是json字符串 |
| | | styledef = ret.result.style_def.replace(/\\/g,""); |
| | | //mobox3的style_def是base64字符串 |
| | | if(!ret.result.style_def.includes('"')) styledef = Base64.decode(ret.result.style_def); |
| | | } |
| | | $this.$data.head_styledef = ret.result.style_def? JSON.parse(styledef): {}; |
| | | // this.form = this.head_styledef.form.model; |
| | | // console.log($this.$data.head_styledef); |
| | | $this.head_styledef.form.items.forEach(async (ele,index) => { |
| | | console.log(ele.useDict); |
| | | if(ele.useDict==true){ //判断useDict是否使用字典 |
| | | await this.DictGetInfo(ele.bind.dict,index,'mast'); |
| | | } |
| | | }); |
| | | |
| | | }else{ |
| | | uni.showModal({title:"错误1",content:ret.err_msg,showCancel:false,confirmText:"取消"}); |
| | | } |
| | | }).catch(ex=>{ |
| | | // console.log(ex); |
| | | uni.showModal({title:"错误1.1",content:ex.errMsg,showCancel:false,confirmText:"取消"}); |
| | | }); |
| | | |
| | | }, |
| | | async Detail1_UIstyleGetInfo(class_id,style_id){ //获取自定义表单样式 |
| | | var $this = this; |
| | | var dataInfo={ |
| | | class_id:class_id, |
| | | ui_style_id:style_id, |
| | | }; |
| | | this.$store.dispatch('UIStyleGetInfo',dataInfo).then(ret=>{ |
| | | console.log(ret); |
| | | if (ret.err_code == 0) { |
| | | var styledef=""; |
| | | if(ret.result.style_def){ |
| | | //mobox2的style_def是json字符串 |
| | | styledef = ret.result.style_def.replace(/\\/g,""); |
| | | //mobox3的style_def是base64字符串 |
| | | if(!ret.result.style_def.includes('"')) styledef = Base64.decode(ret.result.style_def); |
| | | } |
| | | $this.$data.detail1_styledef = ret.result.style_def? JSON.parse(styledef): {}; |
| | | $this.$data.detail1_styledef.SelBut_Checked = true; |
| | | // console.log($this.$data.detail1_styledef); |
| | | // $this.$data.detail1StyleDefList.push($this.$data.detail1_styledef); |
| | | // var aa = JSON.stringify(this.detail1_styledef); |
| | | // $this.$data.detail1StyleDefList.push(JSON.parse(aa)); |
| | | // console.log($this.$data.detail1StyleDefList); |
| | | |
| | | }else{ |
| | | uni.showModal({title:"错误2",content:ret.err_msg,showCancel:false,confirmText:"取消"}); |
| | | } |
| | | }).catch(ex=>{ |
| | | // console.log(ex); |
| | | uni.showModal({title:"错误2.1",content:ex.errMsg,showCancel:false,confirmText:"取消"}); |
| | | }); |
| | | |
| | | }, |
| | | async DictGetInfo(dict,index,type){ //Mobox3得到得到字典信息字典项列表 |
| | | this.data=[]; |
| | | var $this = this; |
| | | var dataInfo ={ |
| | | dict_id: dict.id, |
| | | dict_name: dict.name |
| | | }; |
| | | // console.log(dataInfo); |
| | | this.$store.dispatch('DictGetInfo',dataInfo).then(async (success)=>{ |
| | | console.log(success); |
| | | if (success.err_code == 0) { |
| | | if(type=='mast'){ |
| | | var list=[]; |
| | | var itemName=''; |
| | | success.result.dict_item_list.forEach((item) => { |
| | | if(item.is_default=='1') |
| | | itemName = item.name; |
| | | list.push({ |
| | | text:item.value, |
| | | value:item.name, |
| | | }); |
| | | }); |
| | | //有默认值,显示默认值 |
| | | if(itemName){ |
| | | $this.head_styledef.form.items[index].value=itemName; |
| | | var attr = $this.head_styledef.form.items[index].fieldId; |
| | | $this.head_styledef.form.model[attr] = itemName; |
| | | import Base64 from '../../components/js-base64/base64.js' |
| | | import classUtils from "@/js/utils.js" |
| | | import { |
| | | appGetInfo, |
| | | dictGetInfo |
| | | } from "@/api/mobox.js" |
| | | import { |
| | | getUIStyleInfo, |
| | | runCustomEvent, |
| | | dataObjQuery, |
| | | dataObjDel |
| | | } from "@/api/data.js" |
| | | |
| | | export default { |
| | | modules: { |
| | | Base64, |
| | | }, |
| | | onNavigationBarButtonTap(e) { |
| | | // console.log(e); |
| | | // e.text="\ue924"; |
| | | // console.log(e.fontSize); |
| | | if (this.isFilter) |
| | | this.isFilter = false; |
| | | else |
| | | this.isFilter = true; |
| | | }, |
| | | onBackPress(e) { |
| | | // console.log("监听返回按钮事件",e); |
| | | var eventChannel = this.$scope.eventChannel; |
| | | // const eventChannel = this.getOpenerEventChannel(); |
| | | eventChannel.emit('view_3201', ""); |
| | | // uni.navigateBack({ |
| | | // delta:1 ,//返回层数,2则上上页 |
| | | // }); |
| | | // return true; |
| | | }, |
| | | data() { |
| | | return { |
| | | title: this.translateSys('add2'), |
| | | isFilter: true, |
| | | param: {}, |
| | | focusMateria: false, |
| | | styledef: {}, |
| | | head_styledef: { |
| | | form: { |
| | | items: [] |
| | | } |
| | | $this.head_styledef.form.items[index].dict=list; |
| | | // $this.head_styledef.form.items[index].dictitem=success.result; |
| | | // this.$store.commit("classAttrList", $this.$data.classAttrList); |
| | | }else{ |
| | | // $this.$data.subClassAttrList[index].attr_list[key].dictitem=success.result; |
| | | // this.$store.commit("subClassAttrList", $this.$data.subClassAttrList); |
| | | } |
| | | |
| | | }else{ |
| | | uni.showModal({title:"错误3.1",content:success.err_msg,showCancel:false,confirmText:"取消"}); |
| | | } |
| | | }).catch(ex=>{ |
| | | // console.log(ex); |
| | | uni.showModal({title:"错误3",content:ex.errMsg,showCancel:false,confirmText:"取消"}); |
| | | }); |
| | | }, |
| | | // 执行查询事件 |
| | | async onSearChange(clsid,eventid) { |
| | | try { |
| | | if (event.id) { |
| | | var $this = this; |
| | | var dataInfo={ |
| | | ed_type: 0, |
| | | start_transaction: true, |
| | | class_id: clsid, |
| | | event_id: eventid, |
| | | }; |
| | | 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_query_condition"){ |
| | | var value = item.value; |
| | | $this.wheres = value.condition; |
| | | $this.orderby = value.order?value.order:$this.orderby; |
| | | $this.loadDataGetList(); |
| | | } |
| | | |
| | | }); |
| | | }else{ |
| | | // this.detail2StyleDefList=[]; |
| | | if(result.info){ |
| | | uni.showModal({title:"提示",content:result.info,showCancel:false,confirmText:"取消"}); |
| | | } |
| | | } |
| | | } |
| | | |
| | | }else{ |
| | | uni.showModal({title:"错误4",content:ret.err_msg,showCancel:false,confirmText:"取消"}); |
| | | } |
| | | }).catch(ex=>{ |
| | | // console.log(ex); |
| | | uni.showModal({title:"错误4.1",content:ex.errMsg,showCancel:false,confirmText:"取消"}); |
| | | }); |
| | | } |
| | | } catch (ex) { |
| | | var tip = typeof ex == "string" ? ex : ex.message; |
| | | uni.showModal({title:"错误4.2",content:"执行“查询事件”事件失败:" + tip,showCancel:false,confirmText:"取消"}); |
| | | |
| | | } |
| | | }, |
| | | //查询数据类数据信息 |
| | | async loadDataGetList(where){ |
| | | try{ |
| | | //条件查询 |
| | | var condition = this.wheres; |
| | | if(where){ |
| | | if(condition) condition +=' and '; |
| | | condition+=where; |
| | | } |
| | | // console.log(condition); |
| | | // console.log(this.orderby); |
| | | var $this = this; |
| | | var dataInfo={ |
| | | class_id: this.param.DataCls.id, |
| | | attrs: [], |
| | | condition: this.toWhereBase64String(""+ condition +""), |
| | | 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) { |
| | | // var list=[]; |
| | | if(ret.result){ |
| | | $this.detail1StyleDefList=[]; |
| | | ret.result.obj_list.forEach((obj) => { |
| | | var styleStr = JSON.stringify($this.detail1_styledef); |
| | | var detailStyle = JSON.parse(styleStr); |
| | | // var info ={ |
| | | // S_ID:obj.id, |
| | | // }; |
| | | obj.attr_list.forEach((attr) => { |
| | | // info[attr.name]=attr.value; |
| | | detailStyle.form.items.forEach(ele=>{ |
| | | if(ele.name!='Layout'){ |
| | | if(ele.fieldId == attr.name) ele.value = attr.value; |
| | | } else if(ele.name=='Layout'){ |
| | | ele.setting.colList.forEach(col=>{ |
| | | if(col){ |
| | | if(col.fieldId == attr.name) col.value = attr.value; |
| | | } |
| | | }); |
| | | } |
| | | }); |
| | | }); |
| | | |
| | | detailStyle.form.htmlobjId = obj.id?obj.id.replace(/-/g,'').replace('{','').replace('}',''):'null'; |
| | | detailStyle.form.objId = obj.id; |
| | | detailStyle.form.attrs = obj.attr_list; |
| | | $this.detail1StyleDefList.push(detailStyle); |
| | | $this.activelist.push({active:false}); |
| | | //list.push(info); |
| | | }); |
| | | // console.log($this.detail1StyleDefList); |
| | | } |
| | | |
| | | |
| | | |
| | | }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:"取消"}); |
| | | } |
| | | }, |
| | | |
| | | //刷新 |
| | | Refresh(value){ |
| | | //刷新当前页面 |
| | | // location.reload(); |
| | | uni.redirectTo({ |
| | | url:'../modal/3200?param='+JSON.stringify(this.$data.param)+"&titlename="+this.$data.title |
| | | }); |
| | | }, |
| | | //点击显示浏览对象显示页面 |
| | | async onViewPageClick(style){ |
| | | if(this.param.ViewPage){ |
| | | if(this.param.ViewPage.View_UIDef){ |
| | | this.styledef = style; |
| | | var $this = this; |
| | | uni.navigateTo({ |
| | | url:'../modal/3200_view?param='+JSON.stringify(this.param)+"&titlename="+this.title+"&style="+JSON.stringify(style), |
| | | events: { |
| | | // 为指定事件添加一个监听器,获取被打开页面传送到当前页面的数据 |
| | | ExitViewEvent: function(data) { |
| | | console.log(data); |
| | | //退出页面后事件 |
| | | var eventid = $this.param.ViewPage.Exit_View_Event?.id; |
| | | if(eventid){ |
| | | try { |
| | | var obj_attr = {'S_ID':$this.styledef.form.objId}; |
| | | $this.styledef.form.attrs.forEach((attr) => { |
| | | 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, |
| | | input_param, |
| | | }); |
| | | } catch (ex) { |
| | | var tip = typeof ex == "string" ? ex : ex.message; |
| | | uni.showModal({title:"错误",content:tip,showCancel:false,confirmText:"取消"}); |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | }); |
| | | } |
| | | } |
| | | }, |
| | | //点击按钮 |
| | | onBtnClick(btn,style){ |
| | | var that = this |
| | | if (btn.Prompt) { |
| | | uni.showModal({ |
| | | title: '提示', |
| | | content: btn.PromptContent || "是否确定?", |
| | | success: function (res) { |
| | | if (res.confirm) { |
| | | that.onButtonClicked(btn,style); |
| | | // } else if (res.cancel) { |
| | | // console.log('用户点击取消'); |
| | | } |
| | | } |
| | | }); |
| | | } else that.onButtonClicked(btn,style); |
| | | }, |
| | | //点击按钮列表 |
| | | actionSheetTap() { |
| | | var that = this |
| | | var itemlist=[]; |
| | | this.param.ListPage.Page_Button.forEach((btn) => { |
| | | itemlist.push(btn.ShowName); |
| | | }); |
| | | uni.showActionSheet({ |
| | | // title: '按钮列表', |
| | | itemList: itemlist, |
| | | success: (e) => { |
| | | console.log(e.tapIndex); |
| | | var btn = that.param.ListPage.Page_Button[e.tapIndex]; |
| | | if (btn.Prompt) { |
| | | uni.showModal({ |
| | | title: '提示', |
| | | content: btn.PromptContent || "是否确定?", |
| | | success: function (res) { |
| | | if (res.confirm) { |
| | | that.onButtonClicked(btn); |
| | | // } else if (res.cancel) { |
| | | // console.log('用户点击取消'); |
| | | detail1_styledef: {}, |
| | | detail1StyleDefList: [], |
| | | items: [], |
| | | active_id: '', |
| | | //activelist: [], |
| | | activeItem: {}, |
| | | where: '', |
| | | wheres: '', |
| | | orderby: '', |
| | | query_id: '', |
| | | pageindex: 1, |
| | | page_size: 10, |
| | | page_count: 0, |
| | | scrollTop: 0, |
| | | old: { |
| | | scrollTop: 0 |
| | | }, |
| | | isScroll: true, |
| | | //获取数据类的HTML页面 |
| | | ListHtml_Panel: "", |
| | | ListPageHtml_Show: { |
| | | name: "", |
| | | event: { |
| | | id: "", |
| | | name: "" |
| | | } |
| | | }, |
| | | refreshing: false |
| | | }; |
| | | }, |
| | | async onLoad(options) { |
| | | // console.log(options); |
| | | uni.setNavigationBarTitle({ |
| | | title: options.titlename |
| | | }); //设置顶部标题 |
| | | this.$data.title = options.titlename; |
| | | this.$data.param = JSON.parse(options.param); |
| | | |
| | | |
| | | this.styledef = {}; |
| | | this.head_styledef = { |
| | | form: { |
| | | items: [] |
| | | } |
| | | }; |
| | | this.detail1_styledef = {}; |
| | | this.detail1StyleDefList = []; |
| | | this.ListHtml_Panel = ""; |
| | | this.ListPageHtml_Show = { |
| | | name: "", |
| | | event: { |
| | | id: "", |
| | | name: "" |
| | | } |
| | | }; |
| | | this.items = []; |
| | | this.active_id = ''; |
| | | this.activeItem = {}; |
| | | //this.activelist = []; |
| | | |
| | | if (this.param.ListPage.ListItem_UIDef?.ui_type == "HTML页面") { |
| | | // HTML页面 |
| | | //获取数据类的HTML页面 |
| | | await this.Html_UIstyleGetInfo(this.param.DataCls.id, this.param.ListPage.ListItem_UIDef.id, options |
| | | .paramValue); |
| | | } else { |
| | | await this.Detail1_UIstyleGetInfo(this.param.DataCls.id, this.param.ListPage.ListItem_UIDef.id); |
| | | |
| | | await this.initial(options.paramValue); |
| | | } |
| | | // this.isFilter=true; |
| | | // if(this.param.ShowFilter) |
| | | // this.isFilter=false; |
| | | // //获取数据类的自定义表单参数 |
| | | // if(this.param.Query_Panel){ |
| | | // this.Head_UIStyleGetInfo(this.param.DataCls.id,this.param.Query_Panel.id); |
| | | // } |
| | | // if(this.param.ListPage.ListItem_UIDef?.ui_type=="HTML页面"){ |
| | | // // HTML页面 |
| | | // //获取数据类的HTML页面 |
| | | // await this.Html_UIstyleGetInfo(this.param.DataCls.id,this.param.ListPage.ListItem_UIDef.id); |
| | | // }else{ |
| | | // await this.Detail1_UIstyleGetInfo(this.param.DataCls.id,this.param.ListPage.ListItem_UIDef.id); |
| | | // } |
| | | // this.orderby = this.param.Order?this.param.Order:'T_CREATE Desc'; |
| | | // if(this.param.Query_Event){ |
| | | // await this.onSearChange(this.param.DataCls.id,this.param.Query_Event.id); |
| | | // } else{ |
| | | // this.wheres = this.param.Condition; |
| | | // this.pageindex = 1; |
| | | // this.page_size = 3; |
| | | // this.query_id = ""; |
| | | // await this.loadDataGetList(); |
| | | // } |
| | | // console.log(this.$data.param); |
| | | //页面初始化获取焦点 |
| | | // this.focusMateria=true; |
| | | }, |
| | | methods: { |
| | | // |
| | | setData: function(obj) { |
| | | let that = this; |
| | | let keys = []; |
| | | let val, data; |
| | | |
| | | Object.keys(obj).forEach(function(key) { |
| | | keys = key.split("."); |
| | | val = obj[key]; |
| | | data = that.$data; |
| | | keys.forEach(function(key2, index) { |
| | | if (index + 1 == keys.length) { |
| | | that.$set(data, key2, val); |
| | | } else { |
| | | if (!data[key2]) { |
| | | that.$set(data, key2, {}); |
| | | } |
| | | } |
| | | data = data[key2]; |
| | | }); |
| | | } else that.onButtonClicked(btn); |
| | | } |
| | | }) |
| | | }, |
| | | //处理相关按钮 |
| | | async onButtonClicked(btn,style) { |
| | | style = style || ''; |
| | | try { |
| | | var enviroment = { |
| | | button: "top", |
| | | button_name: btn.ShowName, |
| | | cls_id: btn.Cls_ID, |
| | | function: "3200", |
| | | master: {}, |
| | | }; |
| | | if (btn.FunCode == "Add" || btn.FunCode == "Modify") { |
| | | if (btn.Edit_dlg.Model == "small"){ |
| | | this.showAddSmallDialog(btn, style, enviroment); |
| | | } |
| | | } else if (btn.FunCode == "Delete") { |
| | | this.DeleteObj(btn, style, enviroment); |
| | | // } else if (btn.FunCode == "TriggerEvent") { |
| | | // this.triggerEvent(btn, style, enviroment); |
| | | } else { |
| | | uni.showModal({title:"提示",content:"未实现",showCancel:false,confirmText:"取消"}); |
| | | } |
| | | } catch (ex) { |
| | | var tip = typeof ex == "string" ? ex : ex.message; |
| | | uni.showModal({title:"错误",content:tip,showCancel:false,confirmText:"取消"}); |
| | | } |
| | | }, |
| | | //新增修改小窗口数据 |
| | | showAddSmallDialog(btn, style, enviroment){ |
| | | var data={ |
| | | Add_BtnName: btn.ShowName, |
| | | EditDlgMode: btn.Edit_dlg.Model, |
| | | clsid: this.param.DataCls.id, |
| | | cls_name: this.param.DataCls.name, |
| | | Edit_dlg: btn.Edit_dlg |
| | | }; |
| | | var $this = this; |
| | | uni.navigateTo({ |
| | | url:'../modal/3018?param='+JSON.stringify(data)+"&titlename="+btn.Edit_dlg.Name+"&type=addDataObj", |
| | | events: { |
| | | // 为指定事件添加一个监听器,获取被打开页面传送到当前页面的数据 |
| | | addDataObj: function(data) { |
| | | console.log(data); |
| | | $this.Refresh(); |
| | | }, |
| | | } |
| | | }); |
| | | }, |
| | | //删除数据对象 |
| | | DeleteObj(btn, style, enviroment){ |
| | | // console.log(style); |
| | | var $this = this; |
| | | uni.showModal({ |
| | | title: '提示', |
| | | content: '确定删除该数据!', |
| | | success: function (res) { |
| | | if (res.confirm) { |
| | | var objID=style.form.objId; |
| | | if(!style.form.objId.includes('{')) objID = '{'+style.form.objId+'}'; |
| | | |
| | | var dataInfo={ |
| | | class_id: btn.Cls_ID, |
| | | class_name: '', |
| | | obj_id: objID |
| | | }; |
| | | // console.log(dataInfo); |
| | | $this.$store.dispatch('dataObjDel',dataInfo).then(ret=>{ |
| | | // console.log(ret); |
| | | if (ret.err_code == 0) { |
| | | //执行后处理事件 |
| | | $this.AfterProcess_Event(btn.clsId, btm.AfterProcess_Event, enviroment); |
| | | //清除当前列表数据 |
| | | $this.detail1StyleDefList.forEach((ele,index)=>{ |
| | | if(ele.form.objId == objID){ |
| | | $this.detail1StyleDefList.splice(index,1); |
| | | } |
| | | }); |
| | | uni.showModal({title:"提示",content:"删除成功!",showCancel:false,confirmText:"取消"}); |
| | | |
| | | }else{ |
| | | uni.showModal({title:"错误6.1",content:ret.err_msg,showCancel:false,confirmText:"取消"}); |
| | | }); |
| | | }, |
| | | |
| | | //初始化 |
| | | async initial(paramValue) { |
| | | this.refreshing = true |
| | | this.isFilter = true; |
| | | if (this.param.ShowFilter) |
| | | this.isFilter = false; |
| | | //获取数据类的自定义表单参数 |
| | | if (this.param.Query_Panel) { |
| | | await this.Head_UIStyleGetInfo(this.param.DataCls.id, this.param.Query_Panel.id); |
| | | //传入参数值 |
| | | if (paramValue) { |
| | | const attrs = paramValue.attrs || []; |
| | | (this.$data.head_styledef?.form?.items || []).forEach(async (ele, index) => { |
| | | if (ele.name != "Layout") { |
| | | attrs.forEach(async (ele2, index2) => { |
| | | if (ele.fieldId == ele2.name) { |
| | | ele.value = ele2.value; |
| | | } |
| | | }); |
| | | } else { |
| | | ele.setting.colList.forEach(async (col) => { |
| | | if (col) { |
| | | attrs.forEach(async (ele2, |
| | | index2) => { |
| | | if (col.fieldId == ele2.name) { |
| | | col.value = ele2.value; |
| | | } |
| | | }); |
| | | } |
| | | }); |
| | | } |
| | | }) |
| | | } |
| | | }).catch(ex=>{ |
| | | } |
| | | this.orderby = this.param.Order ? this.param.Order : 'T_CREATE Desc'; |
| | | if (this.param.Query_Event) { |
| | | await this.onSearChange(this.param.DataCls.id, this.param.Query_Event.id); |
| | | } else { |
| | | this.wheres = this.param.Condition; |
| | | this.pageindex = 1; |
| | | this.page_size = 3; |
| | | this.query_id = ""; |
| | | this.detail1StyleDefList = []; |
| | | await this.loadDataGetList(); |
| | | } |
| | | this.refreshing = false |
| | | |
| | | }, |
| | | //滚动到底部后懒加载数据 |
| | | async scrolltolower(e) { |
| | | // console.log(e) |
| | | if (this.isScroll) { //判断刷新一次后不会持续刷新 |
| | | if (this.page_count == this.pageindex) { |
| | | return; |
| | | } |
| | | this.pageindex += 1; |
| | | if (this.where || this.page_count == 1) { |
| | | this.query_id = ""; |
| | | this.detail1StyleDefList = []; |
| | | } |
| | | await this.loadDataGetList(); |
| | | } |
| | | }, |
| | | scroll: function(e) { |
| | | // console.log(e.detail.scrollTop) |
| | | this.old.scrollTop = e.detail.scrollTop |
| | | }, |
| | | async Head_UIStyleGetInfo(class_id, style_id) { //获取自定义表单样式 |
| | | try { |
| | | var $this = this; |
| | | var dataInfo = { |
| | | class_id: class_id, |
| | | ui_style_id: style_id, |
| | | }; |
| | | // console.log(dataInfo); |
| | | const result = await getUIStyleInfo(dataInfo) |
| | | var styledef = ""; |
| | | if (result.style_def) { |
| | | //mobox2的style_def是json字符串 |
| | | styledef = result.style_def.replace(/\\/g, ""); |
| | | //mobox3的style_def是base64字符串 |
| | | if (!result.style_def.includes('"')) styledef = Base64.decode(result |
| | | .style_def); |
| | | } |
| | | $this.$data.head_styledef = result.style_def ? JSON.parse(styledef) : {}; |
| | | // this.form = this.head_styledef.form.model; |
| | | // console.log($this.$data.head_styledef); |
| | | if ($this.head_styledef.form?.items) { |
| | | $this.head_styledef.form.items.forEach(async (ele, index) => { |
| | | console.log(ele.useDict); |
| | | if (ele.useDict == true) { //判断useDict是否使用字典 |
| | | await this.DictGetInfo(ele.bind.dict, index, 'mast'); |
| | | } |
| | | }); |
| | | |
| | | } |
| | | } catch (ex) { |
| | | // console.log(ex); |
| | | uni.showModal({title:"错误6",content:ex.errMsg,showCancel:false,confirmText:"取消"}); |
| | | }); |
| | | } else if (res.cancel) { |
| | | |
| | | } |
| | | } |
| | | }); |
| | | |
| | | }, |
| | | //执行后处理事件 |
| | | async AfterProcess_Event(clsId, afterProcess_Event, enviroment){ |
| | | try { |
| | | if (afterProcess_Event.ID) { |
| | | //执行后处理事件 |
| | | await this.runCustomEvent({ |
| | | ed_type: 0, |
| | | start_transaction: true, |
| | | class_id: clsId, |
| | | event_id: afterProcess_Event.ID, |
| | | }); |
| | | } |
| | | } catch (ex) { |
| | | var tip = typeof ex == "string" ? ex : ex.message; |
| | | uni.showModal({title:"错误7",content:tip,showCancel:false,confirmText:"取消"}); |
| | | } |
| | | }, |
| | | let tip = typeof ex.errMsg == "string" ? ex.errMsg : ex |
| | | uni.showModal({ |
| | | title: this.translateSys("error") + "1.1", |
| | | content: tip, |
| | | showCancel: false, |
| | | confirmText: this.translateSys("cancel") |
| | | }); |
| | | } |
| | | |
| | | ontap(item){ //扫码功能 |
| | | // var $ele = e; |
| | | //console.log(e.target) |
| | | getApp().onScan((result)=>{ |
| | | console.log(result.decodedata); |
| | | item.value = result.decodedata; |
| | | uni.hideKeyboard(); |
| | | var $this = this; |
| | | |
| | | console.log(item); |
| | | if(item.oldvalue != item.value){ |
| | | item.oldvalue = item.value; |
| | | var attr = item.fieldId; |
| | | this.head_styledef.form.model[attr] = item.value; |
| | | var onChangeEvent = item.bind.onChangeEvent; //内容变化后事件 |
| | | var onSuffixClickCallbackEvent = item.bind.onSuffixClickCallbackEvent; //后图标点击事件 |
| | | var onSuffixClickEvent = item.bind.onSuffixClickEvent; //后图标点击回调 |
| | | var isflag = false; |
| | | |
| | | if(onChangeEvent.id){ //内容变化后事件 |
| | | $this.onChange(onChangeEvent); |
| | | } else{ |
| | | var where =''; |
| | | if(item.value) |
| | | where =item.fieldId+" like '%"+item.value+"%'"; |
| | | $this.loadDataGetList(where); |
| | | } |
| | | if(item.value){ //第一个输入框不为空 |
| | | $this.focusMateria = true; //初始化,第二个输入框focus属性 |
| | | // setTimeout(function(){ |
| | | // $this.focusMateria=true; //第二个输入框获取焦点 |
| | | setTimeout(function(){ |
| | | uni.hideKeyboard(); |
| | | },100); |
| | | // },500); |
| | | } |
| | | // if(onSuffixClickCallbackEvent.id){ //后图标点击事件 |
| | | // this.onSuffixClick(onSuffixClickCallbackEvent); |
| | | // } |
| | | // if(onSuffixClickEvent.id){ //后图标点击回调 |
| | | // this.onSuffixClickCallback(onSuffixClickEvent); |
| | | // } |
| | | } |
| | | }) |
| | | }, |
| | | onEnterChange(item){ //回车,点击按钮,取消节点事件 |
| | | // console.log(item); |
| | | if(item.oldvalue != item.value){ |
| | | item.oldvalue = item.value; |
| | | var attr = item.fieldId; |
| | | this.head_styledef.form.model[attr] = item.value; |
| | | var onChangeEvent = item.bind.onChangeEvent; //内容变化后事件 |
| | | var onSuffixClickCallbackEvent = item.bind.onSuffixClickCallbackEvent; //后图标点击事件 |
| | | var onSuffixClickEvent = item.bind.onSuffixClickEvent; //后图标点击回调 |
| | | var isflag = false; |
| | | |
| | | if(onChangeEvent.id){ //内容变化后事件 |
| | | this.onChange(onChangeEvent); |
| | | } else{ |
| | | var where =''; |
| | | if(item.value) |
| | | where =item.fieldId+" like '%"+item.value+"%'"; |
| | | this.loadDataGetList(where); |
| | | } |
| | | // if(onSuffixClickCallbackEvent.id){ //后图标点击事件 |
| | | // this.onSuffixClick(onSuffixClickCallbackEvent); |
| | | // } |
| | | // if(onSuffixClickEvent.id){ //后图标点击回调 |
| | | // this.onSuffixClickCallback(onSuffixClickEvent); |
| | | // } |
| | | } |
| | | }, |
| | | // 内容变化后事件 |
| | | async onChange(event) { |
| | | try { |
| | | if (event.id) { |
| | | var obj_attr = this.head_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.head_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.head_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:"取消"}); |
| | | } |
| | | } |
| | | }, |
| | | async Detail1_UIstyleGetInfo(class_id, style_id) { //获取自定义表单样式 |
| | | try { |
| | | var $this = this; |
| | | var dataInfo = { |
| | | class_id: class_id, |
| | | ui_style_id: style_id, |
| | | }; |
| | | // console.log(dataInfo); |
| | | const result = await getUIStyleInfo(dataInfo) |
| | | var styledef = ""; |
| | | if (result.style_def) { |
| | | //mobox2的style_def是json字符串 |
| | | styledef = result.style_def.replace(/\\/g, ""); |
| | | //mobox3的style_def是base64字符串 |
| | | if (!result.style_def.includes('"')) styledef = Base64.decode(result |
| | | .style_def); |
| | | } |
| | | |
| | | }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:"取消"}); |
| | | |
| | | } |
| | | }, |
| | | //点中表单 |
| | | onPanelClick(value){ //点击面板高亮显示 |
| | | // console.log(value); |
| | | this.activelist.forEach(ele=>{ |
| | | ele.active = false; |
| | | }); |
| | | this.activelist[value].active = true; |
| | | }, |
| | | |
| | | //事件处理 |
| | | async runCustomEvent(dataInfo) { |
| | | try { |
| | | var $this = this; |
| | | 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 == "goback_to_pre_page"){ //返回上一页 |
| | | var value = item.value; |
| | | uni.navigateBack({ |
| | | delta:1 ,//返回层数,2则上上页 |
| | | $this.$data.detail1_styledef = result.style_def ? JSON.parse(styledef) : {}; |
| | | $this.$data.detail1_styledef.SelBut_Checked = false; |
| | | } catch (ex) { |
| | | // console.log(ex); |
| | | let tip = typeof ex.errMsg == "string" ? ex.errMsg : ex |
| | | uni.showModal({ |
| | | title: this.translateSys("error") + "1.1", |
| | | content: tip, |
| | | showCancel: false, |
| | | confirmText: this.translateSys("cancel") |
| | | }); |
| | | } |
| | | |
| | | |
| | | }, |
| | | async Html_UIstyleGetInfo(class_id, style_id, paramValue) { //获取自定义表单样式 |
| | | try { |
| | | var $this = this; |
| | | var dataInfo = { |
| | | class_id: class_id, |
| | | ui_style_id: style_id, |
| | | }; |
| | | // console.log(dataInfo); |
| | | const result = await getUIStyleInfo(dataInfo) |
| | | var styledef = ""; |
| | | if (result.style_def) { |
| | | //mobox2的style_def是json字符串 |
| | | styledef = result.style_def.replace(/\\/g, ""); |
| | | //mobox3的style_def是base64字符串 |
| | | if (!result.style_def.includes('"')) styledef = Base64.decode(result |
| | | .style_def); |
| | | } |
| | | // console.log(styledef); |
| | | $this.ListPageHtml_Show = result.style_def ? JSON.parse(styledef) : {}; |
| | | // console.log($this.ListPageHtml_Show); |
| | | |
| | | $this.initial(paramValue); |
| | | } catch (ex) { |
| | | // console.log(ex); |
| | | let tip = typeof ex.errMsg == "string" ? ex.errMsg : ex |
| | | uni.showModal({ |
| | | title: this.translateSys("error") + "1.1", |
| | | content: tip, |
| | | showCancel: false, |
| | | confirmText: this.translateSys("cancel") |
| | | }); |
| | | } |
| | | }, |
| | | async DictGetInfo(dict, index, type) { //Mobox3得到得到字典信息字典项列表 |
| | | this.data = []; |
| | | var $this = this; |
| | | var dataInfo = { |
| | | dict_id: dict.id, |
| | | dict_name: dict.name |
| | | }; |
| | | try { |
| | | const result = await dictGetInfo(dataInfo) |
| | | if (type == 'mast') { |
| | | var list = []; |
| | | var itemName = ''; |
| | | (result.dict_item_list || []).forEach((item) => { |
| | | if (item.is_default == '1') |
| | | itemName = item.name; |
| | | list.push({ |
| | | text: item.name, |
| | | value: item.id, |
| | | }); |
| | | }); |
| | | //有默认值,显示默认值 |
| | | if (itemName) { |
| | | $this.head_styledef.form.items[index].value = itemName; |
| | | var attr = $this.head_styledef.form.items[index].fieldId; |
| | | $this.head_styledef.form.model[attr] = itemName; |
| | | } |
| | | $this.head_styledef.form.items[index].dict = list; |
| | | var head_styledef = JSON.parse(JSON.stringify($this.head_styledef)); |
| | | $this.head_styledef = []; |
| | | $this.head_styledef = head_styledef; |
| | | } |
| | | } catch (ex) { |
| | | // console.log(ex); |
| | | uni.showModal({ |
| | | title: this.translateSys("error") + "3", |
| | | content: ex.errMsg, |
| | | showCancel: false, |
| | | confirmText: this.translateSys("cancel") |
| | | }); |
| | | } |
| | | }, |
| | | |
| | | // 执行查询事件 |
| | | async onSearChange(clsid, eventid) { |
| | | try { |
| | | if (eventid) { |
| | | var $this = this; |
| | | var dataInfo = { |
| | | ed_type: 0, |
| | | start_transaction: true, |
| | | class_id: clsid, |
| | | event_id: eventid, |
| | | }; |
| | | var result = await runCustomEvent(dataInfo) |
| | | // console.log(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) { |
| | | if (this.param.Only_Script_Error) { |
| | | let pos = tip.indexOf(":"); |
| | | if (pos > -1) tip = tip.substring(pos + 1); |
| | | } |
| | | uni.showModal({ |
| | | title: this.translateSys("tip"), |
| | | content: tip, |
| | | showCancel: false, |
| | | confirmText: this.translateSys("cancel") |
| | | }); |
| | | } else uni.showModal({ |
| | | title: this.translateSys("tip"), |
| | | content: tip + ',' + this.translateSys('tip') + ':' + result |
| | | .ret, |
| | | showCancel: false, |
| | | confirmText: this.translateSys("cancel") |
| | | }); |
| | | return false; |
| | | } else { |
| | | var tip = result.info ? typeof result.info == 'string' ? result.info : |
| | | result.info.join('<br/>') : ''; |
| | | if (tip) uni.showModal({ |
| | | title: this.translateSys("tip"), |
| | | content: tip, |
| | | showCancel: false, |
| | | confirmText: this.translateSys("cancel") |
| | | }); |
| | | |
| | | if (result.result_type == 0 && result.action) { |
| | | result.action.forEach(item => { |
| | | if (item.action_type == "set_query_condition") { |
| | | var value = item.value; |
| | | $this.wheres = value.condition; |
| | | $this.orderby = value.order ? value.order : $this |
| | | .orderby; |
| | | $this.pageindex = 1; |
| | | $this.query_id = ""; |
| | | $this.detail1StyleDefList = []; |
| | | $this.loadDataGetList(); |
| | | } |
| | | |
| | | }); |
| | | } else { |
| | | if (result.info) { |
| | | uni.showModal({ |
| | | title: this.translateSys("tip"), |
| | | content: result.info, |
| | | showCancel: false, |
| | | confirmText: this.translateSys("cancel") |
| | | }); |
| | | } else if(item.action_type == "hidden_button"){ //隐藏按钮 |
| | | var value = item.value; |
| | | value.forEach(btn => { |
| | | var index = $this.param.ListPage.Page_Button.findIndex(button => button.ShowName == btn) |
| | | if (index > -1) |
| | | $this.param.ListPage.Page_Button.splice(index, 1) |
| | | }) |
| | | // } else if(item.action_type == "refresh_cur_row"){ // |
| | | // var value = item.value; |
| | | |
| | | } else{ |
| | | uni.showModal({title:"提示",content:"当前action_type:"+item.action_type+"未处理",showCancel:false,confirmText:"取消"}); |
| | | } |
| | | }); |
| | | }else{ |
| | | // this.detail2StyleDefList=[]; |
| | | if(result.info){ |
| | | uni.showModal({title:"提示",content:result.info,showCancel:false,confirmText:"取消"}); |
| | | } |
| | | } |
| | | } |
| | | |
| | | }else{ |
| | | uni.showModal({title:"错误9",content:ret.err_msg,showCancel:false,confirmText:"取消"}); |
| | | } |
| | | }).catch(ex=>{ |
| | | // console.log(ex); |
| | | uni.showModal({title:"错误9.1",content:ex.errMsg,showCancel:false,confirmText:"取消"}); |
| | | }); |
| | | } catch (ex) { |
| | | var tip = typeof ex == "string" ? ex : ex.message; |
| | | uni.showModal({title:"错误9.2",content:"执行事件失败:" + tip,showCancel:false,confirmText:"取消"}); |
| | | |
| | | } |
| | | }, |
| | | |
| | | cancel(e){ //取消 |
| | | uni.navigateBack({ |
| | | delta:1 //返回层数,2则上上页 |
| | | }); |
| | | }, |
| | | /** |
| | | * 只支持["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 '' |
| | | } |
| | | } catch (ex) { |
| | | var tip = typeof ex == "string" ? ex : ex.message; |
| | | uni.showModal({ |
| | | title: this.translateSys("error") + "4.2", |
| | | content: this.translate("execute_query_event_failed") + this.translateSys( |
| | | "comma") + |
| | | tip, |
| | | showCancel: false, |
| | | confirmText: this.translateSys("cancel") |
| | | }); |
| | | |
| | | }, |
| | | }; |
| | | } |
| | | }, |
| | | //查询数据类数据信息 |
| | | async loadDataGetList() { |
| | | try { |
| | | uni.showLoading({ |
| | | title: this.translateSys("loading"), |
| | | mask: true |
| | | }); |
| | | //条件查询 |
| | | var condition = this.wheres; |
| | | if (this.where) { |
| | | if (condition) condition += ' and '; |
| | | condition += this.where; |
| | | } |
| | | // console.log(condition); |
| | | // console.log(this.orderby); |
| | | var $this = this; |
| | | var dataInfo = { |
| | | class_id: this.param.DataCls.id, |
| | | attrs: [], |
| | | condition: this.toWhereBase64String("" + condition + ""), |
| | | prj_rel_type: "", |
| | | order_by: this.orderby, |
| | | page_size: this.page_size, |
| | | page: this.pageindex, |
| | | query_id: this.query_id, |
| | | }; |
| | | dataObjQuery(dataInfo).then(result => { |
| | | console.log(result); |
| | | uni.hideLoading(); |
| | | |
| | | // var list=[]; |
| | | $this.query_id = ''; |
| | | if (result) { |
| | | $this.page_count = result.page_count; |
| | | if (result.page_count > 1) $this.query_id = result.query_id; |
| | | // console.log($this.ListPageHtml_Show.event); |
| | | if ($this.ListPageHtml_Show.event.id) { |
| | | const detail1StyleDefList = $this.detail1StyleDefList |
| | | result.obj_list.forEach((obj) => { |
| | | var info = { |
| | | id: obj.id, |
| | | }; |
| | | obj.attr_list.forEach((attr) => { |
| | | info[attr.name] = attr.value; |
| | | }); |
| | | var detailStyle = { |
| | | SelBut_Checked: false, |
| | | form: {}, |
| | | info: info |
| | | }; |
| | | detailStyle.form.htmlobjId = obj.id ? obj.id.replace( |
| | | /-/g, '') |
| | | .replace('{', '').replace('}', '') : 'null'; |
| | | detailStyle.form.objId = obj.id; |
| | | detailStyle.form.attrs = obj.attr_list; |
| | | detail1StyleDefList.push(detailStyle); |
| | | // $this.activelist.push({ |
| | | // active: false |
| | | // }); |
| | | }); |
| | | // console.log(this.detail1StyleDefList); |
| | | |
| | | $this.setData({ |
| | | detail1StyleDefList: detail1StyleDefList |
| | | }) |
| | | |
| | | var jsonlist = []; |
| | | $this.detail1StyleDefList.forEach(attr => { |
| | | jsonlist.push({ |
| | | id: attr.info.id, |
| | | attrs: Object.keys(attr.info).map((a) => ({ |
| | | attr: a, |
| | | value: attr.info[a] || "", |
| | | })) |
| | | }); |
| | | }); |
| | | // console.log(jsonlist); |
| | | var data_json = Base64.encode(JSON.stringify(jsonlist)); |
| | | var eventid = $this.ListPageHtml_Show.event.id; |
| | | if (!$this.ListPageHtml_Show.event.id.includes('{')) |
| | | eventid = '{' + $this.ListPageHtml_Show.event.id + '}'; |
| | | //HTML页面事件 |
| | | $this.runCustomEvent({ |
| | | ed_type: 0, |
| | | start_transaction: true, |
| | | class_id: $this.param.DataCls.id, |
| | | event_id: eventid, |
| | | data_json, |
| | | }); |
| | | } else { |
| | | // $this.detail1StyleDefList=[]; |
| | | const detail1StyleDefList = [] |
| | | result.obj_list.forEach((obj) => { |
| | | var styleStr = JSON.stringify($this.detail1_styledef); |
| | | var detailStyle = JSON.parse(styleStr); |
| | | // var info ={ |
| | | // S_ID:obj.id, |
| | | // }; |
| | | obj.attr_list.forEach((attr) => { |
| | | // info[attr.name]=attr.value; |
| | | detailStyle.form.items.forEach(ele => { |
| | | if (ele.name != 'Layout') { |
| | | if (ele.fieldId == attr |
| | | .name) ele |
| | | .value = attr.value; |
| | | } else if (ele.name == |
| | | 'Layout') { |
| | | ele.setting.colList |
| | | .forEach( |
| | | col => { |
| | | if (col) { |
| | | if (col |
| | | .fieldId == |
| | | attr |
| | | .name) |
| | | col |
| | | .value = |
| | | attr |
| | | .value; |
| | | } |
| | | }); |
| | | } |
| | | }); |
| | | }); |
| | | |
| | | detailStyle.form.htmlobjId = obj.id ? obj.id.replace( |
| | | /-/g, '') |
| | | .replace('{', '').replace('}', '') : 'null'; |
| | | detailStyle.form.objId = obj.id; |
| | | detailStyle.form.attrs = obj.attr_list; |
| | | detail1StyleDefList.push(detailStyle); |
| | | // $this.activelist.push({ |
| | | // active: false |
| | | // }); |
| | | //list.push(info); |
| | | }); |
| | | $this.setData({ |
| | | detail1StyleDefList: detail1StyleDefList |
| | | }) |
| | | } |
| | | |
| | | // 解决view层不同步的问题 |
| | | // $this.scrollTop = $this.old.scrollTop; |
| | | $this.isScroll = false; |
| | | setTimeout(function() { |
| | | $this.isScroll = true; |
| | | }, 1000); |
| | | // console.log($this.detail1StyleDefList); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | }).catch(ex => { |
| | | // console.log(ex); |
| | | uni.showModal({ |
| | | title: this.translateSys("error") + "5.1", |
| | | content: ex.errMsg, |
| | | showCancel: false, |
| | | confirmText: this.translateSys("cancel") |
| | | }); |
| | | }); |
| | | } catch (ex) { |
| | | var tip = typeof ex == "string" ? ex : ex.message; |
| | | uni.showModal({ |
| | | title: this.translateSys("error") + "5.2", |
| | | content: tip, |
| | | showCancel: false, |
| | | confirmText: this.translateSys("cancel") |
| | | }); |
| | | } |
| | | }, |
| | | |
| | | //刷新 |
| | | Refresh(value) { |
| | | //刷新当前页面 |
| | | this.initial(); |
| | | // uni.redirectTo({ |
| | | // url:'../modal/3200?param='+JSON.stringify(this.$data.param)+"&titlename="+this.$data.title, |
| | | // }); |
| | | }, |
| | | //点击显示浏览对象显示页面 |
| | | async onViewPageClick(style) { |
| | | if (this.param.ViewPage) { |
| | | if (this.param.ViewPage.View_UIDef) { |
| | | this.styledef = style; |
| | | var $this = this; |
| | | uni.navigateTo({ |
| | | url: '../modal/3200_view?param=' + JSON.stringify(this.param) + |
| | | "&titlename=" + |
| | | this.title + "&style=" + JSON.stringify(style), |
| | | events: { |
| | | // 为指定事件添加一个监听器,获取被打开页面传送到当前页面的数据 |
| | | ExitViewEvent: function(data) { |
| | | console.log(data); |
| | | //退出页面后事件 |
| | | var eventid = $this.param.ViewPage.Exit_View_Event?.id; |
| | | if (eventid) { |
| | | try { |
| | | var obj_attr = { |
| | | 'S_ID': $this.styledef.form.objId |
| | | }; |
| | | $this.styledef.form.attrs.forEach((attr) => { |
| | | 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, |
| | | data_obj_id: $this.styledef.form.objId, |
| | | obj_attr, |
| | | input_param, |
| | | }); |
| | | } catch (ex) { |
| | | var tip = typeof ex == "string" ? ex : ex.message; |
| | | uni.showModal({ |
| | | title: this.translateSys("error"), |
| | | content: tip, |
| | | showCancel: false, |
| | | confirmText: this.translateSys( |
| | | "cancel") |
| | | }); |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | }); |
| | | } |
| | | } |
| | | }, |
| | | //点击按钮 |
| | | onBtnClick(btn, style) { |
| | | var that = this |
| | | if (btn.Prompt) { |
| | | uni.showModal({ |
| | | title: this.translateSys("tip"), |
| | | content: btn.PromptContent || this.translate("are_you_sure"), |
| | | success: function(res) { |
| | | if (res.confirm) { |
| | | that.onButtonClicked(btn, style); |
| | | // } else if (res.cancel) { |
| | | // console.log('用户点击取消'); |
| | | } |
| | | } |
| | | }); |
| | | } else that.onButtonClicked(btn, style); |
| | | }, |
| | | //点击按钮列表 |
| | | actionSheetTap() { |
| | | var that = this |
| | | var itemlist = []; |
| | | this.param.ListPage.Page_Button.forEach((btn) => { |
| | | itemlist.push(btn.ShowName); |
| | | }); |
| | | uni.showActionSheet({ |
| | | // title: '按钮列表', |
| | | itemList: itemlist, |
| | | success: (e) => { |
| | | console.log(e.tapIndex); |
| | | var btn = that.param.ListPage.Page_Button[e.tapIndex]; |
| | | if (btn.Prompt) { |
| | | uni.showModal({ |
| | | title: this.translateSys("tip"), |
| | | content: btn.PromptContent || this.translate( |
| | | "are_you_sure"), |
| | | success: function(res) { |
| | | if (res.confirm) { |
| | | that.onButtonClicked(btn); |
| | | // } else if (res.cancel) { |
| | | // console.log('用户点击取消'); |
| | | } |
| | | } |
| | | }); |
| | | } else that.onButtonClicked(btn); |
| | | } |
| | | }) |
| | | }, |
| | | //处理相关按钮 |
| | | async onButtonClicked(btn, style) { |
| | | style = style || ''; |
| | | try { |
| | | var enviroment = { |
| | | button: "top", |
| | | button_name: btn.ShowName, |
| | | cls_id: btn.Cls_ID, |
| | | function: "3200", |
| | | master: {}, |
| | | }; |
| | | if (btn.FunCode == "Add" || btn.FunCode == "Modify") { |
| | | if (btn.Edit_dlg.Model == "small") { |
| | | this.showAddSmallDialog(btn, style, enviroment); |
| | | } else { |
| | | uni.showModal({ |
| | | title: this.translateSys("tip"), |
| | | content: this.translateSys("unrealized"), |
| | | showCancel: false, |
| | | confirmText: this.translateSys("cancel") |
| | | }); |
| | | } |
| | | } else if (btn.FunCode == "Delete") { |
| | | this.DeleteObj(btn, style, enviroment); |
| | | // } else if (btn.FunCode == "TriggerEvent") { |
| | | // this.triggerEvent(btn, style, enviroment); |
| | | } else if (btn.FunCode == "TriggerEvent") { |
| | | this.TriggerEvent(btn, style, enviroment); |
| | | // } else if (btn.FunCode == "TriggerEvent") { |
| | | // this.triggerEvent(btn, style, enviroment); |
| | | } else if (btn.FunCode == "RelatedFunction") { |
| | | this.RelatedFunction(btn, style, enviroment); |
| | | // } else if (btn.FunCode == "TriggerEvent") { |
| | | // this.triggerEvent(btn, style, enviroment); |
| | | } else { |
| | | uni.showModal({ |
| | | title: this.translateSys("tip"), |
| | | content: this.translateSys("unrealized"), |
| | | showCancel: false, |
| | | confirmText: this.translateSys("cancel") |
| | | }); |
| | | } |
| | | } catch (ex) { |
| | | var tip = typeof ex == "string" ? ex : ex.message; |
| | | uni.showModal({ |
| | | title: this.translateSys("error"), |
| | | content: tip, |
| | | showCancel: false, |
| | | confirmText: this.translateSys("cancel") |
| | | }); |
| | | } |
| | | }, |
| | | //新增修改小窗口数据 |
| | | showAddSmallDialog(btn, style, enviroment) { |
| | | var data = { |
| | | Add_BtnName: btn.ShowName, |
| | | EditDlgMode: btn.Edit_dlg.Model, |
| | | clsid: this.param.DataCls.id, |
| | | cls_name: this.param.DataCls.name, |
| | | Edit_dlg: btn.Edit_dlg |
| | | }; |
| | | var $this = this; |
| | | uni.navigateTo({ |
| | | url: '../modal/3018?param=' + JSON.stringify(data) + "&titlename=" + btn |
| | | .Edit_dlg.Name + |
| | | "&type=addDataObj", |
| | | events: { |
| | | // 为指定事件添加一个监听器,获取被打开页面传送到当前页面的数据 |
| | | addDataObj: function(data) { |
| | | console.log(data); |
| | | $this.Refresh(); |
| | | }, |
| | | } |
| | | }); |
| | | }, |
| | | //删除数据对象 |
| | | DeleteObj(btn, style, enviroment) { |
| | | // console.log(style); |
| | | var $this = this; |
| | | uni.showModal({ |
| | | title: this.translateSys("tip"), |
| | | content: this.translate("confirm_delete_data"), |
| | | success: function(res) { |
| | | if (res.confirm) { |
| | | var objID = style.form.objId; |
| | | if (!style.form.objId.includes('{')) objID = '{' + style.form |
| | | .objId + '}'; |
| | | |
| | | var dataInfo = { |
| | | class_id: btn.Cls_ID, |
| | | class_name: '', |
| | | obj_id: objID |
| | | }; |
| | | // console.log(dataInfo); |
| | | |
| | | dataObjDel(dataInfo).then(ret => { |
| | | //执行后处理事件 |
| | | $this.AfterProcess_Event(btn.clsId, btm |
| | | .AfterProcess_Event, |
| | | enviroment); |
| | | //清除当前列表数据 |
| | | $this.detail1StyleDefList.forEach((ele, |
| | | index) => { |
| | | if (ele.form.objId == objID) { |
| | | $this.detail1StyleDefList |
| | | .splice(index, 1); |
| | | } |
| | | }); |
| | | uni.showModal({ |
| | | title: this.translateSys("tip"), |
| | | content: this.translate( |
| | | "delete_success"), |
| | | showCancel: false, |
| | | confirmText: this.translateSys( |
| | | "cancel") |
| | | }); |
| | | }).catch(ex => { |
| | | // console.log(ex); |
| | | uni.showModal({ |
| | | title: this.translateSys("error") + |
| | | "6", |
| | | content: ex.errMsg, |
| | | showCancel: false, |
| | | confirmText: this.translateSys( |
| | | "cancel") |
| | | }); |
| | | }); |
| | | } else if (res.cancel) { |
| | | |
| | | } |
| | | } |
| | | }); |
| | | |
| | | }, |
| | | //执行事件 |
| | | async TriggerEvent(btn, style, enviroment) { //执行触发事件 |
| | | try { |
| | | let obj_attr = { |
| | | S_ID: this.styledef.form.objId |
| | | }; |
| | | style.form.attrs.forEach((attr) => { |
| | | obj_attr[attr.name] = attr.value; |
| | | }); |
| | | |
| | | if (!this.ListPageHtml_Show.event.id) { |
| | | //判断没有HTML页面事件 |
| | | this.head_styledef.form.items.forEach(async (ele, index) => { |
| | | if (ele.name != "Layout") { |
| | | if (!obj_attr[ele.fieldId]) { |
| | | obj_attr[ele.fieldId] = ele.value; |
| | | } |
| | | } else if (ele.name == "Layout") { |
| | | ele.setting.colList.forEach(async (col, key) => { |
| | | if (col) { |
| | | if (!obj_attr[col.fieldId]) { |
| | | obj_attr[col.fieldId] = col |
| | | .value; |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | const dataInfo = { |
| | | ed_type: 0, |
| | | start_transaction: true, |
| | | class_id: btn.clsId, |
| | | event_id: btn.event.id, |
| | | data_obj_id: this.styledef.form.objId, |
| | | obj_attr: obj_attr, |
| | | } |
| | | var result = await runCustomEvent(dataInfo) |
| | | 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) { |
| | | if (this.param.Only_Script_Error) { |
| | | let pos = tip.indexOf(":"); |
| | | if (pos > -1) tip = tip.substring(pos + 1); |
| | | } |
| | | uni.showModal({ |
| | | title: this.translateSys("tip"), |
| | | content: tip, |
| | | showCancel: false, |
| | | confirmText: this.translateSys("cancel") |
| | | }); |
| | | } else uni.showModal({ |
| | | title: this.translateSys("tip"), |
| | | content: tip + ',' + this.translateSys('tip') + |
| | | ':' + |
| | | result |
| | | .ret, |
| | | showCancel: false, |
| | | confirmText: this.translateSys("cancel") |
| | | }); |
| | | return false; |
| | | } else { |
| | | var tip = result.info ? typeof result.info == 'string' ? |
| | | result |
| | | .info : |
| | | result.info.join('<br/>') : ''; |
| | | if (tip) uni.showModal({ |
| | | title: this.translateSys("tip"), |
| | | content: tip, |
| | | showCancel: false, |
| | | confirmText: this.translateSys("cancel") |
| | | }); |
| | | |
| | | } |
| | | } catch (ex) { |
| | | var tip = typeof ex == "string" ? ex : ex.message; |
| | | uni.showModal({ |
| | | title: this.translateSys("error"), |
| | | content: tip, |
| | | showCancel: false, |
| | | confirmText: this.translateSys("cancel") |
| | | }); |
| | | this.showError(ex); |
| | | } |
| | | }, |
| | | //跳转 |
| | | async RelatedFunction(btn, style, enviroment) { |
| | | |
| | | try { |
| | | const defCode = btn.Related_Function?.Def_Code |
| | | var $this = this; |
| | | if ( |
| | | defCode == "3018" || |
| | | defCode == "3037" || |
| | | defCode == "3200" || |
| | | defCode == "3201" || |
| | | defCode == "5600" || |
| | | defCode == "5601" || |
| | | defCode == "5602" |
| | | ) { |
| | | |
| | | let name = defCode |
| | | if (defCode == "3018" || defCode == "3037") |
| | | name = defCode + "_2" |
| | | var json = { |
| | | app_id: [btn.Related_Function.ID], |
| | | }; |
| | | console.log("RelatedFunction2", json); |
| | | const result = await appGetInfo(json) |
| | | if ((result || []).length > 0) { |
| | | var app = result[0]; |
| | | var param = ""; |
| | | var appName = app.list_name || app.name |
| | | .Name; |
| | | var paramStr = app.param |
| | | if (paramStr) { |
| | | //mobox2的param是json字符串 |
| | | param = paramStr.replace(/\\/g, ""); |
| | | //mobox3的param是base64字符串 |
| | | if (!paramStr.includes('"')) param = Base64.decode( |
| | | paramStr); |
| | | } |
| | | if (!param) { |
| | | uni.showModal({ |
| | | title: this.translateSys("tip"), |
| | | content: this.translate( |
| | | 'tip_no_app_param'), |
| | | showCancel: false, |
| | | confirmText: this.translateSys( |
| | | "cancel") |
| | | }); |
| | | return; |
| | | } |
| | | |
| | | uni.navigateTo({ |
| | | url: '../modal/' + name + '?param=' + |
| | | param + "&titlename=" + |
| | | appName + |
| | | "&type=relatedFunction¶mValue=" + |
| | | JSON.stringify(style |
| | | .form), |
| | | events: { |
| | | relatedFunction: function(data) { |
| | | console.log(data); |
| | | $this.Refresh(); |
| | | }, |
| | | } |
| | | }); |
| | | } else { |
| | | uni.showModal({ |
| | | title: this.translateSys("error"), |
| | | content: this.translate( |
| | | "function_not_exist"), |
| | | showCancel: false, |
| | | confirmText: this.translateSys("cancel") |
| | | }); |
| | | } |
| | | |
| | | } else { |
| | | uni.showModal({ |
| | | title: this.translateSys("error"), |
| | | content: this.translate("cannot_related_function"), |
| | | showCancel: false, |
| | | confirmText: this.translateSys("cancel") |
| | | }); |
| | | |
| | | } |
| | | } catch (ex) { |
| | | console.log(ex); |
| | | let exStr = JSON.stringify(ex) |
| | | if (exStr == "{}") |
| | | exStr = ex |
| | | let tip = typeof ex.errMsg == "string" ? ex.errMsg : exStr |
| | | uni.showModal({ |
| | | title: this.translateSys("error"), |
| | | content: tip, |
| | | showCancel: false, |
| | | confirmText: this.translateSys("cancel") |
| | | }); |
| | | return undefined |
| | | } |
| | | }, |
| | | //执行后处理事件 |
| | | async AfterProcess_Event(clsId, afterProcess_Event, enviroment) { |
| | | try { |
| | | if (afterProcess_Event.ID) { |
| | | //执行后处理事件 |
| | | await this.runCustomEvent({ |
| | | ed_type: 0, |
| | | start_transaction: true, |
| | | class_id: clsId, |
| | | event_id: afterProcess_Event.ID, |
| | | }); |
| | | } |
| | | } catch (ex) { |
| | | var tip = typeof ex == "string" ? ex : ex.message; |
| | | uni.showModal({ |
| | | title: this.translateSys("error") + "7", |
| | | content: tip, |
| | | showCancel: false, |
| | | confirmText: this.translateSys("cancel") |
| | | }); |
| | | } |
| | | }, |
| | | |
| | | ontap(item) { //扫码功能 |
| | | // var $ele = e; |
| | | //console.log(e.target) |
| | | getApp().onScan((result) => { |
| | | console.log(result.decodedata); |
| | | item.value = result.decodedata; |
| | | uni.hideKeyboard(); |
| | | var $this = this; |
| | | |
| | | console.log(item); |
| | | if (item.oldvalue != item.value) { |
| | | item.oldvalue = item.value; |
| | | var attr = item.fieldId; |
| | | this.head_styledef.form.model[attr] = item.value; |
| | | var onChangeEvent = item.bind.onChangeEvent; //内容变化后事件 |
| | | var onSuffixClickCallbackEvent = item.bind |
| | | .onSuffixClickCallbackEvent; //后图标点击事件 |
| | | var onSuffixClickEvent = item.bind |
| | | .onSuffixClickEvent; //后图标点击回调 |
| | | var isflag = false; |
| | | |
| | | if (onChangeEvent.id) { //内容变化后事件 |
| | | $this.onChange(onChangeEvent); |
| | | } else { |
| | | $this.where = ''; |
| | | if (item.value) |
| | | $this.where = item.fieldId + " like '%" + item |
| | | .value + "%'"; |
| | | $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); |
| | | } |
| | | // if(onSuffixClickCallbackEvent.id){ //后图标点击事件 |
| | | // this.onSuffixClick(onSuffixClickCallbackEvent); |
| | | // } |
| | | // if(onSuffixClickEvent.id){ //后图标点击回调 |
| | | // this.onSuffixClickCallback(onSuffixClickEvent); |
| | | // } |
| | | } |
| | | }) |
| | | }, |
| | | onEnterChange(item) { //回车,点击按钮,取消节点事件 |
| | | // console.log(item); |
| | | if (item.oldvalue != item.value) { |
| | | item.oldvalue = item.value; |
| | | var attr = item.fieldId; |
| | | this.head_styledef.form.model[attr] = item.value; |
| | | var onChangeEvent = item.bind.onChangeEvent; //内容变化后事件 |
| | | var onSuffixClickCallbackEvent = item.bind |
| | | .onSuffixClickCallbackEvent; //后图标点击事件 |
| | | var onSuffixClickEvent = item.bind.onSuffixClickEvent; //后图标点击回调 |
| | | var isflag = false; |
| | | |
| | | if (onChangeEvent.id) { //内容变化后事件 |
| | | this.onChange(onChangeEvent); |
| | | } else { |
| | | this.where = ''; |
| | | if (item.value) |
| | | this.where = item.fieldId + " like '%" + item.value + "%'"; |
| | | this.query_id = ''; |
| | | this.pageindex = 1; |
| | | this.detail1StyleDefList = []; |
| | | this.loadDataGetList(); |
| | | } |
| | | // if(onSuffixClickCallbackEvent.id){ //后图标点击事件 |
| | | // this.onSuffixClick(onSuffixClickCallbackEvent); |
| | | // } |
| | | // if(onSuffixClickEvent.id){ //后图标点击回调 |
| | | // this.onSuffixClickCallback(onSuffixClickEvent); |
| | | // } |
| | | } |
| | | }, |
| | | // 内容变化后事件 |
| | | async onChange(event) { |
| | | try { |
| | | if (event.id) { |
| | | var obj_attr = this.head_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.head_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, |
| | | }; |
| | | runCustomEvent(dataInfo).then(result => { |
| | | // console.log(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) { |
| | | if (this.param.Only_Script_Error) { |
| | | let pos = tip.indexOf(":"); |
| | | if (pos > -1) tip = tip.substring( |
| | | pos + 1); |
| | | } |
| | | uni.showModal({ |
| | | title: this.translateSys( |
| | | "tip"), |
| | | content: tip, |
| | | showCancel: false, |
| | | confirmText: this |
| | | .translateSys("cancel") |
| | | }); |
| | | } else uni.showModal({ |
| | | title: this.translateSys( |
| | | "tip"), |
| | | content: tip + ',' + this |
| | | .translateSys('tip') + |
| | | ':' + |
| | | result |
| | | .ret, |
| | | showCancel: false, |
| | | confirmText: this.translateSys( |
| | | "cancel") |
| | | }); |
| | | return false; |
| | | } else { |
| | | var tip = result.info ? typeof result |
| | | .info == 'string' ? result |
| | | .info : |
| | | result.info.join('<br/>') : ''; |
| | | if (tip) uni.showModal({ |
| | | title: this.translateSys( |
| | | "tip"), |
| | | content: tip, |
| | | showCancel: false, |
| | | confirmText: this.translateSys( |
| | | "cancel") |
| | | }); |
| | | |
| | | 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 |
| | | .head_styledef.form |
| | | .items |
| | | .forEach( |
| | | async ( |
| | | ele, |
| | | index |
| | | ) => { |
| | | data.forEach( |
| | | async (ele2, |
| | | index |
| | | ) => { |
| | | if (ele |
| | | .fieldId == |
| | | ele2 |
| | | .attr |
| | | ) { |
| | | ele.value = |
| | | ele2 |
| | | .value; |
| | | } |
| | | }); |
| | | }); |
| | | } |
| | | }); |
| | | } else { |
| | | if (result.info) { |
| | | uni.showModal({ |
| | | title: this |
| | | .translateSys( |
| | | "tip"), |
| | | content: result.info, |
| | | showCancel: false, |
| | | confirmText: this |
| | | .translateSys( |
| | | "cancel") |
| | | }); |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | }).catch(ex => { |
| | | // console.log(ex); |
| | | uni.showModal({ |
| | | title: this.translateSys("error") + |
| | | "8.1", |
| | | content: ex.errMsg, |
| | | showCancel: false, |
| | | confirmText: this.translateSys( |
| | | "cancel") |
| | | }); |
| | | }); |
| | | } |
| | | } catch (ex) { |
| | | var tip = typeof ex == "string" ? ex : ex.message; |
| | | uni.showModal({ |
| | | title: this.translateSys("error") + "8.2", |
| | | content: this.translate( |
| | | 'execute_after_change_event_failed') + this |
| | | .translateSys( |
| | | "comma") + |
| | | this.translate('reason') + this.translateSys( |
| | | "colon") + tip, |
| | | showCancel: false, |
| | | confirmText: this.translateSys("cancel") |
| | | }); |
| | | |
| | | } |
| | | }, |
| | | //点中表单 |
| | | onPanelClick(value) { //点击面板高亮显示 |
| | | // console.log(value); |
| | | this.setData({ |
| | | activeItem: this.detail1StyleDefList[value] |
| | | }) |
| | | // this.activelist.forEach(ele => { |
| | | // ele.active = false; |
| | | // }); |
| | | // this.activelist[value].active = true; |
| | | }, |
| | | |
| | | //事件处理 |
| | | async runCustomEvent(dataInfo) { |
| | | try { |
| | | var $this = this; |
| | | runCustomEvent(dataInfo).then(result => { |
| | | console.log(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) { |
| | | if (this.param.Only_Script_Error) { |
| | | let pos = tip.indexOf(":"); |
| | | if (pos > -1) tip = tip.substring( |
| | | pos + 1); |
| | | } |
| | | uni.showModal({ |
| | | title: this.translateSys( |
| | | "tip"), |
| | | content: tip, |
| | | showCancel: false, |
| | | confirmText: this |
| | | .translateSys("cancel") |
| | | }); |
| | | } else uni.showModal({ |
| | | title: this.translateSys( |
| | | "tip"), |
| | | content: tip + ',' + this |
| | | .translateSys('tip') + |
| | | ':' + |
| | | result.ret, |
| | | showCancel: false, |
| | | confirmText: this.translateSys( |
| | | "cancel") |
| | | }); |
| | | return false; |
| | | } else { |
| | | var tip = result.info ? typeof result |
| | | .info == 'string' ? result |
| | | .info : result |
| | | .info.join('<br/>') : ''; |
| | | if (tip) uni.showModal({ |
| | | title: this.translateSys( |
| | | "tip"), |
| | | content: tip, |
| | | showCancel: false, |
| | | confirmText: this.translateSys( |
| | | "cancel") |
| | | }); |
| | | |
| | | if (result.result_type == 0 && result |
| | | .action) { |
| | | result.action.forEach(item => { |
| | | if (item.action_type == |
| | | "goback_to_pre_page" |
| | | ) { //返回上一页 |
| | | var value = item.value; |
| | | uni.navigateBack({ |
| | | delta: 1, //返回层数,2则上上页 |
| | | }); |
| | | } else if (item |
| | | .action_type == |
| | | "hidden_button" |
| | | ) { //隐藏按钮 |
| | | var value = item.value; |
| | | value.forEach(btn => { |
| | | var index = |
| | | $this |
| | | .param |
| | | .ListPage |
| | | .Page_Button |
| | | .findIndex( |
| | | button => |
| | | button |
| | | .ShowName == |
| | | btn |
| | | ) |
| | | if (index > |
| | | -1) |
| | | $this |
| | | .param |
| | | .ListPage |
| | | .Page_Button |
| | | .splice( |
| | | index, |
| | | 1) |
| | | }) |
| | | // } else if(item.action_type == "refresh_cur_row"){ // |
| | | // var value = item.value; |
| | | } else if (item |
| | | .action_type == |
| | | "set_panel_html" |
| | | ) { //显示Html页面 |
| | | // var value = item.value; |
| | | $this.ListHtml_Panel = |
| | | item.value; |
| | | // $this.detail1StyleDefList.forEach((ele,index)=>{ |
| | | // ele.ListHtml_Panel = item.value[index]; |
| | | // }); |
| | | |
| | | } else { |
| | | uni.showModal({ |
| | | title: this |
| | | .translateSys( |
| | | "tip" |
| | | ), |
| | | content: this |
| | | .translateSys( |
| | | "quotation_mark_left" |
| | | ) + |
| | | item |
| | | .action_type + |
| | | this |
| | | .translateSys( |
| | | "quotation_mark_right" |
| | | ) + |
| | | this |
| | | .translate( |
| | | "tip_action_unprocessed" |
| | | ), |
| | | showCancel: false, |
| | | confirmText: this |
| | | .translateSys( |
| | | "cancel" |
| | | ) |
| | | }); |
| | | } |
| | | }); |
| | | } else { |
| | | if (result.info) { |
| | | uni.showModal({ |
| | | title: this |
| | | .translateSys( |
| | | "tip"), |
| | | content: result.info, |
| | | showCancel: false, |
| | | confirmText: this |
| | | .translateSys( |
| | | "cancel") |
| | | }); |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | }).catch(ex => { |
| | | // console.log(ex); |
| | | uni.showModal({ |
| | | title: this.translateSys("error") + |
| | | "9.1", |
| | | content: ex.errMsg, |
| | | showCancel: false, |
| | | confirmText: this.translateSys( |
| | | "cancel") |
| | | }); |
| | | }); |
| | | } catch (ex) { |
| | | var tip = typeof ex == "string" ? ex : ex.message; |
| | | uni.showModal({ |
| | | title: this.translateSys("error") + "9.2", |
| | | content: this.translate('execute_event_failed') + |
| | | this.translateSys( |
| | | "comma") + |
| | | this.translate('reason') + this.translateSys( |
| | | "colon") + tip, |
| | | showCancel: false, |
| | | confirmText: this.translateSys("cancel") |
| | | }); |
| | | |
| | | } |
| | | }, |
| | | |
| | | cancel(e) { //取消 |
| | | // var eventChannel = this.$scope.eventChannel; |
| | | // // const eventChannel = this.getOpenerEventChannel(); |
| | | // eventChannel.emit('view_3201',""); |
| | | uni.navigateBack({ |
| | | delta: 1, //返回层数,2则上上页 |
| | | }); |
| | | }, |
| | | /** |
| | | * 只支持["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() |
| | | if (where.startsWith('(') && where.endsWith(')')) |
| | | where = where.replace( |
| | | /^\(/, |
| | | '').replace( |
| | | /\)$/, '') |
| | | if (where.toLowerCase().includes(' and ')) { |
| | | // 二级and放在第一级数组中 |
| | | where.split(/ and /i).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.toLowerCase().includes(seps[ |
| | | i])) { |
| | | sep = seps[i] |
| | | break |
| | | } |
| | | } |
| | | if (sep) { |
| | | var values = l.split(new RegExp( |
| | | sep, 'i')) |
| | | var field = values[0]?.trim() |
| | | .replace(/^\[/, '') |
| | | .replace( |
| | | /\]$/, '') |
| | | var value = '' |
| | | var op = sep.trim() |
| | | |
| | | if ([' in', ' not in'].includes( |
| | | sep) && values[1] |
| | | ?.toLowerCase().includes( |
| | | 'select ') && values[1] |
| | | ?.toLowerCase() |
| | | .includes( |
| | | ' from ')) { |
| | | value = l.replace(field, '') |
| | | .replace( |
| | | /^\s*(in|not in)\s*/i, |
| | | '').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.toLowerCase().includes(' or ')) { |
| | | // 二级or放在第二级同一组数组中 |
| | | var s = [] |
| | | where.split(/ or /i).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.toLowerCase().includes(seps[ |
| | | i])) { |
| | | sep = seps[i] |
| | | break |
| | | } |
| | | } |
| | | if (sep) { |
| | | var values = l.split(new RegExp( |
| | | sep, 'i')) |
| | | var field = values[0]?.trim() |
| | | .replace(/^\[/, '') |
| | | .replace( |
| | | /\]$/, '') |
| | | var value = '' |
| | | var op = sep.trim() |
| | | |
| | | if ([' in', ' not in'].includes( |
| | | sep) && values[1] |
| | | ?.toLowerCase().includes( |
| | | 'select ') && values[1] |
| | | ?.toLowerCase() |
| | | .includes( |
| | | ' from ')) { |
| | | value = l.replace(field, '') |
| | | .replace( |
| | | /^\s*(in|not in)\s*/i, |
| | | '').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.toLowerCase().includes(seps[i])) { |
| | | sep = seps[i] |
| | | break |
| | | } |
| | | } |
| | | if (sep) { |
| | | var values = l.split(new RegExp(sep, 'i')) |
| | | var field = values[0]?.trim().replace(/^\[/, |
| | | '').replace(/\]$/, '') |
| | | var value = '' |
| | | var op = sep.trim() |
| | | |
| | | if ([' in', ' not in'].includes(sep) && values[ |
| | | 1]?.toLowerCase() |
| | | .includes('select ') && |
| | | values[1]?.toLowerCase().includes(' from ') |
| | | ) { |
| | | value = l.replace(field, '').replace( |
| | | /^\s*(in|not in)\s*/i, '') |
| | | .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 '' |
| | | }, |
| | | translate(t) { |
| | | if (typeof this.$t == "function") return this.$t(`page.${t}`) |
| | | else return t; |
| | | }, |
| | | translateSys(t) { |
| | | if (typeof this.$t == "function") return this.$t(`sys.${t}`) |
| | | else return t; |
| | | }, |
| | | |
| | | }, |
| | | }; |
| | | </script> |
| | | <style lang="less"> |
| | | .uni-page-modal-3200 { |
| | | display: flex; |
| | | flex-direction: column; |
| | | 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-content { |
| | | flex: 1; |
| | | display: flex; |
| | | width: 100%; |
| | | flex-direction: column; |
| | | min-height: 100px; |
| | | overflow: hidden; |
| | | /* border:0.1px solid red; */ |
| | | } |
| | | |
| | | .view-content { |
| | | width: 100%; |
| | | display: flex; |
| | | margin-top: 10rpx; |
| | | flex-direction: column; |
| | | |
| | | } |
| | | |
| | | .dv-panel-bkcolor { |
| | | background-color: #efefef; |
| | | } |
| | | |
| | | .dv-panel { |
| | | background-color: #efefef; |
| | | padding: 20rpx 20rpx 20rpx 0px; |
| | | border-radius: 12rpx; |
| | | margin-bottom: 20rpx; |
| | | text-align: right; |
| | | } |
| | | |
| | | .dv-listHtml-Panel, |
| | | .dv-panel-input { |
| | | vertical-align: middle; |
| | | width: 91%; |
| | | display: inline-block; |
| | | text-align: left; |
| | | } |
| | | |
| | | .dv-panel-buticon { |
| | | line-height: 0rpx; |
| | | text-align: left; |
| | | /* font-size: 17px; */ |
| | | padding: 0 30rpx; |
| | | } |
| | | |
| | | .dv-panel-buticon .btn-padding { |
| | | padding: 10rpx 20rpx; |
| | | display: inline-block; |
| | | vertical-align: middle; |
| | | } |
| | | |
| | | |
| | | .dv-panel-buticon a i { |
| | | font-size: 38rpx; |
| | | } |
| | | |
| | | .dv-panel-buticon button { |
| | | min-width: 120rpx; |
| | | font-size: 32rpx; |
| | | padding: 20rpx 20rpx 0rpx 20rpx; |
| | | line-height: 1; |
| | | background: #4D6AF4; |
| | | border: none; |
| | | color: #fff; |
| | | font-weight: bold; |
| | | border-radius: 8rpx; |
| | | } |
| | | |
| | | .dv-panel .txt_title { |
| | | font-size: 34rpx; |
| | | text-align: right; |
| | | display: inline-block; |
| | | } |
| | | |
| | | .dv-panel input { |
| | | vertical-align: middle; |
| | | display: inline-block; |
| | | border: 2rpx solid #d5d5d5; |
| | | width: 68%; |
| | | height: 52rpx; |
| | | line-height: 34rpx; |
| | | background: #FFF; |
| | | border-radius: 14rpx !important; |
| | | color: #2d8cf0; |
| | | padding: 6rpx 8rpx 8rpx; |
| | | font-size: 32rpx; |
| | | font-family: inherit; |
| | | box-shadow: none !important; |
| | | transition-duration: 0.1s; |
| | | margin-top: 0rpx; |
| | | } |
| | | |
| | | .dv-panel input::-webkit-input-placeholder { |
| | | font-size: 10rpx; |
| | | } |
| | | |
| | | .dv-panel .form-item-span { |
| | | vertical-align: text-top; |
| | | color: #2d8cf0; |
| | | white-space: normal; |
| | | word-break: break-all; |
| | | display: inline-block; |
| | | width: calc(100% - 100px); |
| | | } |
| | | |
| | | .dv-panel-button { |
| | | display: inline-block; |
| | | } |
| | | |
| | | .dv-panel-button checkbox-group { |
| | | display: inline-block; |
| | | } |
| | | |
| | | .dv-panel-button uni-checkbox .uni-checkbox-input { |
| | | width: 34rpx; |
| | | height: 34rpx; |
| | | } |
| | | |
| | | .dv-panel-button a i { |
| | | font-size: 36rpx; |
| | | } |
| | | |
| | | .dv-panel-button button { |
| | | height: 50rpx; |
| | | font-size: 26rpx; |
| | | padding: 0 24rpx; |
| | | } |
| | | |
| | | .view-floor { |
| | | width: calc(100% - 20rpx); |
| | | padding: 10rpx; |
| | | /* border:1px solid red; */ |
| | | } |
| | | |
| | | button.btn_refresh { |
| | | width: 49.5%; |
| | | margin-top: 25rpx; |
| | | padding: 20rpx; |
| | | line-height: 1.5; |
| | | background: #4D6AF4; |
| | | border: none; |
| | | color: #fff; |
| | | font-size: 38rpx; |
| | | font-weight: bold; |
| | | float: left; |
| | | display: inline-block; |
| | | } |
| | | |
| | | button.btn_cancel { |
| | | width: 49.5%; |
| | | margin-top: 25rpx; |
| | | padding: 20rpx; |
| | | line-height: 1.5; |
| | | background: #fff; |
| | | border: none; |
| | | color: #000; |
| | | font-size: 38rpx; |
| | | font-weight: bold; |
| | | float: left; |
| | | display: inline-block; |
| | | margin-right: 20rpx; |
| | | } |
| | | |
| | | button.btn_disabled { |
| | | background-color: #ddd; |
| | | color: #888; |
| | | } |
| | | |
| | | .bk-active { |
| | | background-color: #D6FCB2; |
| | | } |
| | | |
| | | .uni-padding-wrap { |
| | | margin-top: 20rpx; |
| | | background-color: #98DAEA; |
| | | width: 104rpx; |
| | | height: 80rpx; |
| | | text-align: center; |
| | | border-radius: 54rpx; |
| | | padding: 24rpx 0 0 0; |
| | | float: right; |
| | | display: inline-block; |
| | | } |
| | | |
| | | .uni-padding-wrap a { |
| | | font-size: 40rpx; |
| | | } |
| | | |
| | | #dv_select { |
| | | display: inline-block; |
| | | width: 66%; |
| | | 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: 0rpx; |
| | | vertical-align: 20rpx; |
| | | } |
| | | |
| | | #dv_select .uni-select { |
| | | border: 2rpx solid #ccc; |
| | | border-radius: 0 !important; |
| | | color: #2d8cf0; |
| | | } |
| | | |
| | | #dv_select .uni-select__input-text { |
| | | color: #2d8cf0; |
| | | } |
| | | |
| | | .input-disabled { |
| | | background-color: #f3f3f3 !important; |
| | | } |
| | | |
| | | .dv_panel_condent { |
| | | background-color: #D6FCB2; |
| | | padding: 20rpx; |
| | | border-radius: 12rpx; |
| | | } |
| | | |
| | | .dv_panel_attr { |
| | | margin-bottom: 10rpx; |
| | | } |
| | | |
| | | .dv_panel_attr .dv_inline { |
| | | display: inline-block; |
| | | text-align: center; |
| | | } |
| | | |
| | | .dv_panel_attr i { |
| | | vertical-align: 25px; |
| | | margin: 0 10px; |
| | | } |
| | | |
| | | .dv_panel_attr .dv_inline p { |
| | | background: #4D6AF4; |
| | | color: #fff; |
| | | padding: 10rpx 15rpx; |
| | | line-height: 1.5; |
| | | border-radius: 10rpx; |
| | | } |
| | | |
| | | .v-scroll-view { |
| | | flex: 1; |
| | | overflow: hidden; |
| | | width: 98%; |
| | | } |
| | | |
| | | .scroll-y { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | |
| | | .scroll-view_H { |
| | | white-space: nowrap; |
| | | width: 100%; |
| | | } |
| | | |
| | | .dv_panel_content { |
| | | margin: 0 10px; |
| | | } |
| | | |
| | | .dv_panel_content .dv_panel_attr { |
| | | margin-bottom: 5px; |
| | | } |
| | | |
| | | .dv_panel_content .dv_panel_attr i { |
| | | vertical-align: super; |
| | | margin: 0 10px; |
| | | } |
| | | |
| | | .dv_panel_content .dv_panel_attr .circel_node {} |
| | | |
| | | /* 是菱形的 */ |
| | | .dv_panel_content .dv_panel_attr .dv_diamond_node p { |
| | | width: 50px; |
| | | height: 50px; |
| | | background-color: #4D6AF4; |
| | | transform: rotate(45deg); |
| | | -ms-transform: rotate(45deg); |
| | | -moz-transform: rotate(45deg); |
| | | -webkit-transform: rotate(45deg); |
| | | -o-transform: rotate(45deg); |
| | | margin: 15px auto; |
| | | padding: 9px; |
| | | // line-height: 28px; |
| | | text-align: center; |
| | | } |
| | | |
| | | .dv_panel_content .dv_panel_attr .dv_diamond_node p span { |
| | | color: #fff; |
| | | transform: rotate(-45deg); |
| | | display: inline-block; |
| | | text-align: center; |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | // white-space: nowrap; |
| | | } |
| | | |
| | | /* 默认形 */ |
| | | .dv_panel_content .dv_panel_attr .dv_box_node, |
| | | .dv_panel_content .dv_panel_attr .dv_diamond_node { |
| | | vertical-align: middle; |
| | | display: inline-block; |
| | | text-align: center; |
| | | width: 100px; |
| | | } |
| | | |
| | | .dv_panel_content .dv_panel_attr .dv_box_node p { |
| | | background: #4D6AF4; |
| | | color: #fff; |
| | | padding: 3px 7px; |
| | | line-height: 1.5; |
| | | border-radius: 5px; |
| | | } |
| | | |
| | | .demo-uni-row { |
| | | margin-bottom: 0px; |
| | | display: block; |
| | | } |
| | | |
| | | ::v-deep .uni-row { |
| | | margin-bottom: 0px; |
| | | } |
| | | |
| | | .view-tabpage ::v-deep .uni-row { |
| | | margin-bottom: 5px; |
| | | } |
| | | |
| | | .demo-uni-col { |
| | | height: 36px; |
| | | border-radius: 5px; |
| | | } |
| | | |
| | | .demo-uni-row .uni-input { |
| | | width: calc(100% - 120px); |
| | | } |
| | | } |
| | | </style> |