From 00c011fc0571caad2bec578fe4ce2f101ab0500e Mon Sep 17 00:00:00 2001
From: cuiqian2004 <cuiqian2004@163.com>
Date: 星期五, 01 八月 2025 18:04:08 +0800
Subject: [PATCH] test
---
pages/modal/3200.vue | 996 +++++++++++++++++++++++++++++-----------------------------
1 files changed, 497 insertions(+), 499 deletions(-)
diff --git a/pages/modal/3200.vue b/pages/modal/3200.vue
index ea41501..543fc25 100644
--- a/pages/modal/3200.vue
+++ b/pages/modal/3200.vue
@@ -1,27 +1,9 @@
<template>
- <view class="uni-page-modal-3200">
+ <view class="uni-page-modal-3200" :class="largeMode?'large-mode':''">
<view class="v-content">
<!-- 琛ㄥご鏍峰紡 -->
- <view class="v-headStyle" v-for="(item,index) in head_styledef.form.items" v-if="isFilter==true">
- <text class="txt_title" :style="{'width':item.labelWidth+'px'}">{{item.label}}锛�/text>
- <!-- 涓嬫媺妗�鍗曢� item.useDict?item.dict:item.selections-->
- <uni-data-select id="dv_select" v-if="item.name=='Select'" :class="item.disabled?'input-disabled':''"
- v-model="item.value" :localdata="item.dict" @change="onChange(item)" :disabled="item.disabled"
- :clear="false"></uni-data-select>
- <view class="input-wrapper" v-if="item.name=='Input' || item.name=='InputNumber'">
- <text v-if="item.setting.prefix" class="uni-icon" :class="[item.setting.prefix]"
- @click="onEnterChange(item)"></text>
- <input class="uni-input" :class="item.disabled?'input-disabled':''"
- :type="item.name=='Input'?'text':'number'" v-model="item.value" :disabled="item.disabled"
- :placeholder="item.placeholder"
- :style="{'width':item.setting.prefix && item.setting.suffix?'78%':item.setting.prefix || item.setting.suffix?'87%':'96%'}"
- :focus="focusMateria" @focus="ontap(item)" @keyup.enter="onEnterChange(item)"
- @blur="onEnterChange(item)" :maxlength="-1" />
- <text v-if="item.setting.suffix" class="uni-icon" :class="[item.setting.suffix]"
- @click="onEnterChange(item)"></text>
- </view>
- </view>
-
+ <OIForm ref="refBaseForm" class="v-headStyle" :form="head_styledef.form" @on-focus="ontap"
+ @on-change="onEnterChange" @on-click-prefix="onEnterChange" @on-click-suffix="onEnterChange"></OIForm>
<view class="v-scroll-view">
<scroll-view :scroll-top="scrollTop" :scroll-y="true" class="scroll-y" @scrolltolower="scrolltolower"
@scroll="scroll">
@@ -37,157 +19,14 @@
</checkbox-group>
</div>
<!-- HTML椤甸潰绫诲瀷鏄剧ず -->
- <div class="dv-listHtml-Panel" v-if="ListHtml_Panel" v-html="ListHtml_Panel[ii]" :style="param.ListPage.CheckBox==true && param.ListPage.Click_View==true?'width:85%;':
- param.ListPage.CheckBox==false && param.ListPage.Click_View==true?'width:91%;':
- param.ListPage.CheckBox==true && param.ListPage.Click_View==false?'width:88%;':'width:100%;'">
+ <div class="dv-listHtml-Panel" v-if="ListHtml_Panel" v-html="ListHtml_Panel[ii]"
+ :style="param.ListPage.CheckBox==true && param.ListPage.Click_View==true?'width:85%;': param.ListPage.CheckBox==false && param.ListPage.Click_View==true?'width:91%;':param.ListPage.CheckBox==true && param.ListPage.Click_View==false?'width:88%;':'width:100%;'">
</div>
- <div class="dv-panel-input" v-if="!ListHtml_Panel" :style="param.ListPage.CheckBox==true && param.ListPage.Click_View==true?'width:85%;':
- param.ListPage.CheckBox==false && param.ListPage.Click_View==true?'width:91%;':
- param.ListPage.CheckBox==true && param.ListPage.Click_View==false?'width:88%;':'width:100%;'">
- <div v-for="(item,index) in style.form.items">
- <!-- 鏅�甯冨眬 -->
- <view v-if="item.name!='Layout'">
- <text class="txt_title"
- :style="{'width':item.labelWidth+'px'}">{{item.label}}锛�/text>
- <!-- 鏂囨湰妗�鏁板瓧妗�-->
- <view class="dv_input" v-if="(item.name=='Input' || item.name=='InputNumber')">
- <text v-if="item.setting.prefix" class="uni-icon"
- :class="[item.setting.prefix]" @change="onChange(item)"></text>
- <input class="uni-input" :class="item.disabled?'input-disabled':''"
- :type="item.name=='Input'?'text':item.name=='InputNumber'?'number':'text'"
- v-model="item.value" :disabled="item.disabled"
- :placeholder="item.placeholder"
- :style="{'width':item.setting.prefix && item.setting.suffix?'78%':item.setting.prefix || item.setting.suffix?'87%':'96%'}"
- :focus="focusMateria" @focus="ontap(item)" @blur="onevent(item)"
- :maxlength="-1" />
- <text v-if="item.setting.suffix" class="uni-icon"
- :class="[item.setting.suffix]" @click="onChange(item)"></text>
- </view>
- <!-- 涓嬫媺妗�鍗曢� item.useDict?item.dict:item.selections-->
- <uni-data-select id="dv_select" v-if="item.name=='Select'"
- :class="item.disabled?'input-disabled':''" v-model="item.value"
- :localdata="item.dict" @change="onChange(item)" :disabled="item.disabled"
- :clear="false"></uni-data-select>
- <!-- 澶氳鏂囨湰 -->
- <view class="input-wrapper" v-if="item.name=='Textarea'">
- <textarea class="uni-input" :value="item.value"
- :class="item.disabled?'input-disabled':''"
- :placeholder="item.placeholder" @blur="onModelValue(item)"
- style="height:60px;" :style="{'width':'96%'}"
- :disabled="item.disabled"></textarea>
- </view>
- <!-- 澶嶉�妗�-->
- <checkbox-group class="check_rememberPwd" v-if="item.name=='Checkbox'"
- :class="item.disabled?'input-disabled':''" :disabled="item.disabled"
- @change="onCheckBoxValue" :data-attr="item.fieldId">
- <label v-for="(item2) in item.selections" :key="item2.value">
- <checkbox :value="item2.value"
- :checked="item.value.includes(item2.value)" />
- <text>{{item2.label}}</text>
- </label>
- </checkbox-group>
+ <div class="dv-panel-input" v-if="!ListHtml_Panel"
+ :style="param.ListPage.CheckBox==true && param.ListPage.Click_View==true?'width:85%;':param.ListPage.CheckBox==false && param.ListPage.Click_View==true?'width:91%;':param.ListPage.CheckBox==true && param.ListPage.Click_View==false?'width:88%;':'width:100%;'">
+ <OIForm class="v-area dv-panel" :form="style.form.items" viewMode></OIForm>
- <!-- 鍗曢�妗�-->
- <radio-group class="check_rememberPwd" v-if="item.name=='Radio'"
- :class="item.disabled?'input-disabled':''" :disabled="item.disabled"
- :style="{'margin-left':'10rpx'}" @change="onModelValue(item)"
- :data-attr="item.fieldId">
- <label v-for="(item2) in item.selections" :key="item2.value">
- <radio :value="item2.value" :checked="item2.value === item.value" />
- <text>{{item2.label}}</text>
- </label>
- </radio-group>
- <!-- Switch寮�叧 -->
- <switch v-if="item.name=='Switch'" :class="item.disabled?'input-disabled':''"
- :disabled="item.disabled" v-model="item.value" @change="onModelValue(item)"
- :style="{'margin-left':'10rpx'}" />
- <!-- 鏃ユ湡鏃堕棿 -->
- <view class="input-wrapper"
- v-if="(item.name=='TimePicker' || item.name=='DatePicker') && !item.disabled">
- <picker mode="date" class="date_iput"
- :class="item.disabled?'input-disabled':''" :disabled="item.disabled"
- :value="item.value" @change="onModelValue(item)">
- <view class="picker">{{item.value}}</view>
- </picker>
- </view>
- </view>
- <!-- 鏍呮牸甯冨眬 -->
- <uni-row class="demo-uni-row" v-if="item.name=='Layout'">
- <uni-col v-for="(cols,key) in item.setting.colList"
- :span="item.setting.spanList?item.setting.spanList[key]:24 / item.setting.col">
- <view v-if="cols!=null">
- <text class="txt_title"
- :style="{'width':cols.labelWidth+'px'}">{{cols.label}}锛�/text>
- <view class="dv_input"
- v-if="(cols.name=='Input' || cols.name=='InputNumber') && !cols.disabled">
- <text v-if="cols.setting.prefix" class="uni-icon"
- :class="[cols.setting.prefix]"
- @change="onChange(cols)"></text>
- <input class="uni-input" :class="cols.disabled?'input-disabled':''"
- :type="cols.name=='Input'?'text':cols.name=='InputNumber'?'number':'text'"
- v-model="cols.value" :disabled="cols.disabled"
- :placeholder="cols.placeholder"
- :style="{'width':cols.setting.prefix && cols.setting.suffix?'78%':cols.setting.prefix || cols.setting.suffix?'87%':'96%'}"
- :focus="focusMateria" @focus="ontap(cols)" @blur="onevent(cols)"
- :maxlength="-1" />
- <text v-if="cols.setting.suffix" class="uni-icon"
- :class="[cols.setting.suffix]"
- @click="onChange(cols)"></text>
- </view>
- <!-- 涓嬫媺妗�鍗曢� cols.useDict?cols.dict:cols.selections-->
- <uni-data-select id="dv_select" v-if="cols.name=='Select'"
- :class="cols.disabled?'input-disabled':''" v-model="cols.value"
- :localdata="cols.dict" @change="onChange(cols)"
- :disabled="cols.disabled" :clear="false"></uni-data-select>
- <!-- 澶氳鏂囨湰 -->
- <view class="input-wrapper" v-if="cols.name=='Textarea'">
- <textarea class="uni-input" :value="cols.value"
- :class="cols.disabled?'input-disabled':''"
- :placeholder="cols.placeholder" @blur="onModelValue(cols)"
- style="height:60px;" :style="{'width':'96%'}"
- :disabled="cols.disabled"></textarea>
- </view>
- <!-- 澶嶉�妗�-->
- <checkbox-group class="check_rememberPwd" v-if="cols.name=='Checkbox'"
- :class="cols.disabled?'input-disabled':''" :disabled="cols.disabled"
- @change="onCheckBoxValue" :data-attr="cols.fieldId">
- <label v-for="(cols2) in cols.selections" :key="cols2.value">
- <checkbox :value="cols2.value"
- :checked="cols.value.includes(cols2.value)" />
- <text>{{cols2.label}}</text>
- </label>
- </checkbox-group>
- <!-- 鍗曢�妗�-->
- <radio-group class="check_rememberPwd" v-if="cols.name=='Radio'"
- :class="cols.disabled?'input-disabled':''" :disabled="cols.disabled"
- :style="{'margin-left':'10rpx'}" @change="onModelValue(cols)">
- <label v-for="(cols2) in cols.selections" :key="cols2.value">
- <radio :value="cols2.value"
- :checked="cols2.value === cols.value" />
- <text>{{cols2.label}}</text>
- </label>
- </radio-group>
- <!-- Switch寮�叧 -->
- <switch v-if="cols.name=='Switch'"
- :class="cols.disabled?'input-disabled':''" :disabled="item.disabled"
- v-model="cols.value" @change="onModelValue(cols)"
- :style="{'margin-left':'10rpx'}" />
- <!-- 鏃ユ湡鏃堕棿 -->
- <view class="input-wrapper"
- v-if="(cols.name=='TimePicker' || cols.name=='DatePicker') && !cols.disabled">
- <picker mode="date" class="date_iput"
- :class="cols.disabled?'input-disabled':''"
- :disabled="item.disabled" :value="cols.value"
- @change="onModelValue(cols)">
- <view class="picker">{{cols.value}}</view>
- </picker>
- </view>
-
- </view>
- </uni-col>
- </uni-row>
- </div>
</div>
<div class="dv-panel-button" v-if="param.ListPage.Click_View==true">
<a @click="onViewPageClick(style)"><i class="mobox-normal-right-arrow" /></a>
@@ -216,7 +55,7 @@
<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" />
+ <text class="mobox-normal-more" />
</a>
</view>
</view>
@@ -225,7 +64,9 @@
</template>
<script>
- import Base64 from '../../components/js-base64/base64.js'
+ import {
+ Base64
+ } from '@/js/Base64.js';
import classUtils from "@/js/utils.js"
import {
appGetInfo,
@@ -237,10 +78,14 @@
dataObjQuery,
dataObjDel
} from "@/api/data.js"
+ import dayjs from "dayjs";
+ import OIForm from '@/components/oi-form/index.vue'
+ import buttonClickMixin from '@/mixins/button-click.js';
export default {
- modules: {
- Base64,
+ mixins: [buttonClickMixin],
+ components: {
+ OIForm
},
onNavigationBarButtonTap(e) {
// console.log(e);
@@ -263,6 +108,7 @@
},
data() {
return {
+ largeMode: getApp().globalData.largeMode || false,
title: this.translateSys('add2'),
isFilter: true,
param: {},
@@ -308,8 +154,8 @@
uni.setNavigationBarTitle({
title: options.titlename
}); //璁剧疆椤堕儴鏍囬
- this.$data.title = options.titlename;
- this.$data.param = JSON.parse(options.param);
+ this.title = options.titlename;
+ this.param = JSON.parse(options.param);
this.styledef = {};
@@ -367,7 +213,7 @@
// this.query_id = "";
// await this.loadDataGetList();
// }
- // console.log(this.$data.param);
+ // console.log(this.param);
//椤甸潰鍒濆鍖栬幏鍙栫劍鐐� // this.focusMateria=true;
},
@@ -407,7 +253,7 @@
//浼犲叆鍙傛暟鍊� if (paramValue) {
const attrs = paramValue.attrs || [];
- (this.$data.head_styledef?.form?.items || []).forEach(async (ele, index) => {
+ (this.head_styledef?.form?.items || []).forEach(async (ele, index) => {
if (ele.name != "Layout") {
attrs.forEach(async (ele2, index2) => {
if (ele.fieldId == ele2.name) {
@@ -479,9 +325,9 @@
if (!result.style_def.includes('"')) styledef = Base64.decode(result
.style_def);
}
- $this.$data.head_styledef = result.style_def ? JSON.parse(styledef) : {};
+ $this.head_styledef = result.style_def ? JSON.parse(styledef) : {};
// this.form = this.head_styledef.form.model;
- // console.log($this.$data.head_styledef);
+ // console.log($this.head_styledef);
if ($this.head_styledef.form?.items) {
$this.head_styledef.form.items.forEach(async (ele, index) => {
console.log(ele.useDict);
@@ -496,7 +342,8 @@
$this.head_styledef.form
.model[ele.fieldId] = itemName;
}
- $this.head_styledef.form.items[index].dict = selections.map((a) => {
+ $this.head_styledef.form.items[index].selections = selections.map((
+ a) => {
return {
value: a.value,
text: a.label
@@ -507,6 +354,25 @@
}
});
+ const app = getApp()
+ if (app.globalData.bindClasses) {
+ $this.head_styledef.form.items.push({
+ name: "Input",
+ label: this.translate("classes"),
+ labelWidth: 100,
+ disabled: true,
+ value: app.globalData.classes,
+ setting: {
+ width: 100,
+ height: 50,
+ },
+ bind: {
+ attr: "",
+ },
+ fieldId: "S_CLASSES",
+ })
+ $this.head_styledef.form.model["S_CLASSES"] = app.globalData.classes
+ }
}
} catch (ex) {
@@ -516,7 +382,7 @@
title: this.translateSys("error") + "1.1",
content: tip,
showCancel: false,
- confirmText: this.translateSys("cancel")
+ confirmText: this.translateSys('close')
});
}
@@ -538,8 +404,8 @@
if (!result.style_def.includes('"')) styledef = Base64.decode(result
.style_def);
}
- $this.$data.detail1_styledef = result.style_def ? JSON.parse(styledef) : {};
- $this.$data.detail1_styledef.SelBut_Checked = false;
+ $this.detail1_styledef = result.style_def ? JSON.parse(styledef) : {};
+ $this.detail1_styledef.SelBut_Checked = false;
} catch (ex) {
// console.log(ex);
let tip = typeof ex.errMsg == "string" ? ex.errMsg : ex
@@ -547,7 +413,7 @@
title: this.translateSys("error") + "1.1",
content: tip,
showCancel: false,
- confirmText: this.translateSys("cancel")
+ confirmText: this.translateSys('close')
});
}
@@ -582,7 +448,7 @@
title: this.translateSys("error") + "1.1",
content: tip,
showCancel: false,
- confirmText: this.translateSys("cancel")
+ confirmText: this.translateSys('close')
});
}
},
@@ -623,7 +489,7 @@
title: this.translateSys("error") + "3",
content: ex.errMsg,
showCancel: false,
- confirmText: this.translateSys("cancel")
+ confirmText: this.translateSys('close')
});
}
},
@@ -642,7 +508,7 @@
var result = await runCustomEvent(dataInfo)
// console.log(result);
- if (result.ret != 0) {
+ if (result.ret != 0&& result.ret != 1) {
var tip = result.err_info ? typeof result.err_info == 'string' ? result
.err_info : result.err_info.join('<br/>') : '';
if (result.ret == 801) {
@@ -654,48 +520,66 @@
title: this.translateSys("tip"),
content: tip,
showCancel: false,
- confirmText: this.translateSys("cancel")
+ confirmText: this.translateSys('close')
});
} else uni.showModal({
title: this.translateSys("tip"),
content: tip + ',' + this.translateSys('tip') + ':' + result
.ret,
showCancel: false,
- confirmText: this.translateSys("cancel")
+ confirmText: this.translateSys('close')
});
return false;
} else {
var tip = result.info ? typeof result.info == 'string' ? result.info :
result.info.join('<br/>') : '';
+ tip = tip || result.err_info
if (tip) uni.showModal({
title: this.translateSys("tip"),
content: tip,
showCancel: false,
- confirmText: this.translateSys("cancel")
+ confirmText: this.translateSys('close')
});
+ if ([0, 2, 3, 4, -1].includes(result.result_type)) {
+ if (result.result_type == 2) {
- 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 (typeof result.result == 'string') {
+ if (result.result) {
+ uni.showModal({
+ title: this.translateSys('tip'),
+ content: result.result,
+ showCancel: false,
+ confirmText: this.translateSys('close')
+ });
}
+ }
+ try {
+ var actionList = result.action || []
+ actionList.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")
});
+ } catch (ex) {
+ let actionList = (result.action || []).map(a => a.action_type).join(';')
+ let tip = typeof ex == 'string' ? ex : ex.message
+ tip = `鎵ц鑴氭湰杩斿洖鐨�{actionList}鏃跺嚭鐜板紓甯革紝璇锋鏌ヨ剼鏈繑鍥炵殑鏁版嵁鏍煎紡鏄惁姝g‘銆�{tip}`
+ uni.showModal({
+ title: this.translateSys('tip'),
+ content: tip,
+ showCancel: false,
+ confirmText: this.translateSys('close')
+ });
+ console.log(ex)
+ return
}
}
}
@@ -708,7 +592,7 @@
"comma") +
tip,
showCancel: false,
- confirmText: this.translateSys("cancel")
+ confirmText: this.translateSys('close')
});
}
@@ -872,7 +756,7 @@
title: this.translateSys("error") + "5.1",
content: ex.errMsg,
showCancel: false,
- confirmText: this.translateSys("cancel")
+ confirmText: this.translateSys('close')
});
});
} catch (ex) {
@@ -881,7 +765,7 @@
title: this.translateSys("error") + "5.2",
content: tip,
showCancel: false,
- confirmText: this.translateSys("cancel")
+ confirmText: this.translateSys('close')
});
}
},
@@ -891,7 +775,7 @@
//鍒锋柊褰撳墠椤甸潰
this.initial();
// uni.redirectTo({
- // url:'../modal/3200?param='+JSON.stringify(this.$data.param)+"&titlename="+this.$data.title,
+ // url:'../modal/3200?param='+JSON.stringify(this.param)+"&titlename="+this.title,
// });
},
//鐐瑰嚮鏄剧ず娴忚瀵硅薄鏄剧ず椤甸潰
@@ -937,7 +821,7 @@
content: tip,
showCancel: false,
confirmText: this.translateSys(
- "cancel")
+ 'close')
});
}
}
@@ -954,15 +838,24 @@
uni.showModal({
title: this.translateSys("tip"),
content: btn.PromptContent || this.translate("are_you_sure"),
+ cancelText: this.translateSys('ok'),
+ confirmText: this.translateSys('cancel'),
success: function(res) {
- if (res.confirm) {
+ if (res.cancel) {
that.onButtonClicked(btn, style);
// } else if (res.cancel) {
// console.log('鐢ㄦ埛鐐瑰嚮鍙栨秷');
}
}
});
- } else that.onButtonClicked(btn, style);
+ } else {
+ this.handleButtonClick((done) => {
+ that.onButtonClicked(btn, style);
+ setTimeout(() => {
+ done(); // 閲嶇疆鐘舵�
+ }, 1000);
+ });
+ }
},
//鐐瑰嚮鎸夐挳鍒楄〃
actionSheetTap() {
@@ -980,10 +873,11 @@
if (btn.Prompt) {
uni.showModal({
title: this.translateSys("tip"),
- content: btn.PromptContent || this.translate(
- "are_you_sure"),
+ content: btn.PromptContent || this.translate("are_you_sure"),
+ cancelText: this.translateSys('ok'),
+ confirmText: this.translateSys('cancel'),
success: function(res) {
- if (res.confirm) {
+ if (res.cancel) {
that.onButtonClicked(btn);
// } else if (res.cancel) {
// console.log('鐢ㄦ埛鐐瑰嚮鍙栨秷');
@@ -1013,7 +907,7 @@
title: this.translateSys("tip"),
content: this.translateSys("unrealized"),
showCancel: false,
- confirmText: this.translateSys("cancel")
+ confirmText: this.translateSys('close')
});
}
} else if (btn.FunCode == "Delete") {
@@ -1033,7 +927,7 @@
title: this.translateSys("tip"),
content: this.translateSys("unrealized"),
showCancel: false,
- confirmText: this.translateSys("cancel")
+ confirmText: this.translateSys('close')
});
}
} catch (ex) {
@@ -1042,7 +936,7 @@
title: this.translateSys("error"),
content: tip,
showCancel: false,
- confirmText: this.translateSys("cancel")
+ confirmText: this.translateSys('close')
});
}
},
@@ -1076,8 +970,10 @@
uni.showModal({
title: this.translateSys("tip"),
content: this.translate("confirm_delete_data"),
+ cancelText: this.translateSys('ok'),
+ confirmText: this.translateSys('cancel'),
success: function(res) {
- if (res.confirm) {
+ if (res.cancel) {
var objID = style.form.objId;
if (!style.form.objId.includes('{')) objID = '{' + style.form
.objId + '}';
@@ -1108,7 +1004,7 @@
"delete_success"),
showCancel: false,
confirmText: this.translateSys(
- "cancel")
+ 'close')
});
}).catch(ex => {
// console.log(ex);
@@ -1118,7 +1014,7 @@
content: ex.errMsg,
showCancel: false,
confirmText: this.translateSys(
- "cancel")
+ 'close')
});
});
} else if (res.cancel) {
@@ -1181,7 +1077,7 @@
title: this.translateSys("tip"),
content: tip,
showCancel: false,
- confirmText: this.translateSys("cancel")
+ confirmText: this.translateSys('close')
});
} else uni.showModal({
title: this.translateSys("tip"),
@@ -1190,7 +1086,7 @@
result
.ret,
showCancel: false,
- confirmText: this.translateSys("cancel")
+ confirmText: this.translateSys('close')
});
return false;
} else {
@@ -1198,11 +1094,12 @@
result
.info :
result.info.join('<br/>') : '';
+ tip = tip || result.err_info
if (tip) uni.showModal({
title: this.translateSys("tip"),
content: tip,
showCancel: false,
- confirmText: this.translateSys("cancel")
+ confirmText: this.translateSys('close')
});
}
@@ -1212,7 +1109,7 @@
title: this.translateSys("error"),
content: tip,
showCancel: false,
- confirmText: this.translateSys("cancel")
+ confirmText: this.translateSys('close')
});
this.showError(ex);
}
@@ -1261,7 +1158,7 @@
'tip_no_app_param'),
showCancel: false,
confirmText: this.translateSys(
- "cancel")
+ 'close')
});
return;
}
@@ -1286,7 +1183,7 @@
content: this.translate(
"function_not_exist"),
showCancel: false,
- confirmText: this.translateSys("cancel")
+ confirmText: this.translateSys('close')
});
}
@@ -1295,7 +1192,7 @@
title: this.translateSys("error"),
content: this.translate("cannot_related_function"),
showCancel: false,
- confirmText: this.translateSys("cancel")
+ confirmText: this.translateSys('close')
});
}
@@ -1309,7 +1206,7 @@
title: this.translateSys("error"),
content: tip,
showCancel: false,
- confirmText: this.translateSys("cancel")
+ confirmText: this.translateSys('close')
});
return undefined
}
@@ -1332,7 +1229,7 @@
title: this.translateSys("error") + "7",
content: tip,
showCancel: false,
- confirmText: this.translateSys("cancel")
+ confirmText: this.translateSys('close')
});
}
},
@@ -1341,16 +1238,17 @@
// var $ele = e;
//console.log(e.target)
getApp().onScan((result) => {
- console.log(result.decodedata);
- item.value = result.decodedata;
+ console.log(result);
+ item.value = result;
uni.hideKeyboard();
var $this = this;
-
console.log(item);
- if (item.oldvalue != item.value) {
- item.oldvalue = item.value;
+ let newVal = item.value.trim()
+ if (newVal) {
+ item.oldvalue = newVal;
+
var attr = item.fieldId;
- this.head_styledef.form.model[attr] = item.value;
+ this.head_styledef.form.model[attr] = newVal;
var onChangeEvent = item.bind.onChangeEvent; //鍐呭鍙樺寲鍚庝簨浠� var onSuffixClickCallbackEvent = item.bind
.onSuffixClickCallbackEvent; //鍚庡浘鏍囩偣鍑讳簨浠�@@ -1361,24 +1259,19 @@
if (onChangeEvent.id) { //鍐呭鍙樺寲鍚庝簨浠� $this.onChange(onChangeEvent);
} else {
- $this.where = '';
- if (item.value)
- $this.where = item.fieldId + " like '%" + item
- .value + "%'";
+ $this.where = item.fieldId + " like '%" + newVal + "%'";
$this.query_id = '';
$this.pageindex = 1;
$this.detail1StyleDefList = [];
$this.loadDataGetList();
}
- if (item.value) { //绗竴涓緭鍏ユ涓嶄负绌�- $this.focusMateria = true; //鍒濆鍖栵紝绗簩涓緭鍏ユfocus灞炴�
- // setTimeout(function(){
- // $this.focusMateria=true; //绗簩涓緭鍏ユ鑾峰彇鐒︾偣
- setTimeout(function() {
- uni.hideKeyboard();
- }, 1000);
- // },500);
- }
+ $this.focusMateria = true; //鍒濆鍖栵紝绗簩涓緭鍏ユfocus灞炴�
+ // setTimeout(function(){
+ // $this.focusMateria=true; //绗簩涓緭鍏ユ鑾峰彇鐒︾偣
+ setTimeout(function() {
+ uni.hideKeyboard();
+ }, 1000);
+ // },500);
// if(onSuffixClickCallbackEvent.id){ //鍚庡浘鏍囩偣鍑讳簨浠� // this.onSuffixClick(onSuffixClickCallbackEvent);
// }
@@ -1388,12 +1281,19 @@
}
})
},
+
onEnterChange(item) { //鍥炶溅锛岀偣鍑绘寜閽紝鍙栨秷鑺傜偣浜嬩欢
// console.log(item);
- if (item.oldvalue != item.value) {
- item.oldvalue = item.value;
+ let newVal = item.value
+ if (typeof item.value == "string") {
+ newVal = item.value.trim()
+ if (!newVal)
+ return
+ }
+ if (item.oldvalue != newVal) {
+ item.oldvalue = newVal;
var attr = item.fieldId;
- this.head_styledef.form.model[attr] = item.value;
+ this.head_styledef.form.model[attr] = newVal;
var onChangeEvent = item.bind.onChangeEvent; //鍐呭鍙樺寲鍚庝簨浠� var onSuffixClickCallbackEvent = item.bind
.onSuffixClickCallbackEvent; //鍚庡浘鏍囩偣鍑讳簨浠�@@ -1403,9 +1303,7 @@
if (onChangeEvent.id) { //鍐呭鍙樺寲鍚庝簨浠� this.onChange(onChangeEvent);
} else {
- this.where = '';
- if (item.value)
- this.where = item.fieldId + " like '%" + item.value + "%'";
+ this.where = item.fieldId + " like '%" + item.value + "%'";
this.query_id = '';
this.pageindex = 1;
this.detail1StyleDefList = [];
@@ -1437,7 +1335,7 @@
var dataInfo = {
ed_type: 0,
start_transaction: true,
- class_id: this.$data.head_styledef.form.clsId,
+ class_id: this.head_styledef.form.clsId,
class_name: '',
event_id: event.id,
event_name: '',
@@ -1455,7 +1353,7 @@
};
runCustomEvent(dataInfo).then(result => {
// console.log(result);
- if (result.ret != 0) {
+ if (result.ret != 0&& result.ret != 1) {
var tip = result.err_info ? typeof result
.err_info ==
'string' ?
@@ -1474,7 +1372,7 @@
content: tip,
showCancel: false,
confirmText: this
- .translateSys("cancel")
+ .translateSys('close')
});
} else uni.showModal({
title: this.translateSys(
@@ -1486,7 +1384,7 @@
.ret,
showCancel: false,
confirmText: this.translateSys(
- "cancel")
+ 'close')
});
return false;
} else {
@@ -1494,59 +1392,78 @@
.info == 'string' ? result
.info :
result.info.join('<br/>') : '';
+ tip = tip || result.err_info
if (tip) uni.showModal({
title: this.translateSys(
"tip"),
content: tip,
showCancel: false,
confirmText: this.translateSys(
- "cancel")
+ 'close')
});
+ if ([0, 2, 3, 4, -1].includes(result.result_type)) {
+ if (result.result_type == 2) {
- 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 (typeof result.result == 'string') {
+ if (result.result) {
+ uni.showModal({
+ title: this.translateSys('tip'),
+ content: result.result,
+ showCancel: false,
+ confirmText: this.translateSys('close')
+ });
}
- });
- } else {
- if (result.info) {
+ }
+ try {
+ var actionlist = result.action || []
+ for (var j = 0; j < actionlist.length; j++) {
+ var action = actionlist[j];
+ var action_type = action.action_type;
+ var value = action.value;
+ if (action_type == "set_dlg_attr") {
+ if (value) {
+ this.setFormValues(value)
+ }
+ } else if (action_type == "set_subtable_page_content") {
+ if (value.clear_confirm != false && value.clear == true &&
+ $this.detail1StyleDefList.length > 0
+ ) { //鍒ゆ柇鏄惁娓呯┖椤电鍐呭,姝e湪鐮佺洏鏄惁鏈夋暟鎹�+ uni.showModal({
+ title: this.translateSys('tip'),
+ content: this.translate(
+ "are_you_sure_clear_data"),
+ cancelText: $this.translateSys('ok'),
+ confirmText: $this.translateSys('cancel'),
+ success: function(res) {
+ if (res.cancel) {
+ $this.detail1StyleDefList = [];
+ $this.viewAceionContent(value);
+ } else if (res.confirm) {
+ $this.detail1StyleDefList = [];
+ $this.viewAceionContent(value);
+ }
+ }
+ });
+ } else {
+ $this.detail1StyleDefList = [];
+ $this.viewAceionContent(value);
+ }
+ }
+ }
+
+ } catch (ex) {
+ let actionList = (result.action || []).map(a => a.action_type).join(
+ ';')
+ let tip = typeof ex == 'string' ? ex : ex.message
+ tip = `鎵ц鑴氭湰杩斿洖鐨�{actionList}鏃跺嚭鐜板紓甯革紝璇锋鏌ヨ剼鏈繑鍥炵殑鏁版嵁鏍煎紡鏄惁姝g‘銆�{tip}`
uni.showModal({
- title: this
- .translateSys(
- "tip"),
- content: result.info,
+ title: this.translateSys('tip'),
+ content: tip,
showCancel: false,
- confirmText: this
- .translateSys(
- "cancel")
+ confirmText: this.translateSys('close')
});
+ console.log(ex)
+ return
}
}
}
@@ -1560,7 +1477,7 @@
content: ex.errMsg,
showCancel: false,
confirmText: this.translateSys(
- "cancel")
+ 'close')
});
});
}
@@ -1575,11 +1492,165 @@
this.translate('reason') + this.translateSys(
"colon") + tip,
showCancel: false,
- confirmText: this.translateSys("cancel")
+ confirmText: this.translateSys('close')
});
}
},
+ setFormValues(attrs) {
+ const head_styledef = this.head_styledef
+ if (JSON.stringify(attrs) == '{}') {
+ return;
+ }
+ attrs.forEach(async (attr, key) => {
+ if (attr.choice_list) {
+ var dictItemList = [];
+ attr.choice_list.forEach(async (val, index) => {
+ dictItemList.push({
+ text: val,
+ value: val
+ });
+ });
+ head_styledef.form.items.forEach(async (attr_item, index) => {
+ if (attr_item.name != "Layout") {
+ if (attr_item.fieldId == attr.attr) {
+ if (attr_item.useDict) {
+ attr_item.dict = dictItemList;
+ } else {
+ attr_item.selections = dictItemList;
+ }
+ }
+ } else if (attr_item.name == "Layout") {
+ attr_item.setting.colList.forEach((col) => {
+ if (col) {
+ if (col.fieldId == attr.attr) {
+ if (col.useDict) {
+ col.dict = dictItemList;
+ } else {
+ col.selections = dictItemList;
+ }
+ }
+ }
+ });
+ }
+ });
+ }
+ if (!head_styledef.form.model[attr.attr]) {
+ head_styledef.form.model[attr.attr] = attr.value;
+ }
+ head_styledef.form.items.forEach(async (ele) => {
+ if (ele.name != "Layout") {
+ if (ele.fieldId == attr.attr) {
+ ele.value = attr.value;
+ ele.oldvalue = attr.value;
+ if (ele.name == "Input") {
+ if (attr.prompt) ele.placeholder = attr.prompt;
+ }
+ if (attr.enable !== undefined) {
+ if (attr.enable) ele.disabled = false;
+ else ele.disabled = true;
+ }
+ }
+ } else if (ele.name == "Layout") {
+ ele.setting.colList.forEach((col) => {
+ if (col) {
+ if (col.fieldId == attr.attr) {
+ col.value = attr.value;
+ col.oldvalue = attr.value;
+ if (col.name == "Input") {
+ if (attr.prompt) col.placeholder = attr.prompt;
+ }
+ if (attr.enable !== undefined) {
+ if (attr.enable) col.disabled = false;
+ else col.disabled = true;
+ }
+ }
+ }
+ });
+ }
+
+ })
+ //鍒ゆ柇琛ㄥ崟閲屾槸鍚︽湁杩斿洖瀛楁锛屾病鏈夊氨瑁呰浇鍒癿odel閲岋紝鐐瑰嚮纭畾鎻愪氦鐨勬椂鍊欏甫涓婅繖浜涙暟鎹�+ })
+ console.log(head_styledef)
+ this.setData({
+ head_styledef: head_styledef
+ })
+ },
+ //鍔犺浇宸茬爜鐩樺唴瀹�+ viewAceionContent(data) {
+ var $this = this;
+ if (JSON.stringify(data.content) == '{}') {
+ return;
+ }
+ var styleStr = JSON.stringify($this.detail1_styledef);
+ data.content.forEach(cont => {
+ let detailStyle = JSON.parse(styleStr);
+ if (detailStyle.form) {
+
+
+ detailStyle.SelBut_Checked = data.checkbox ?? true;
+
+ detailStyle.form.objId = cont.id;
+ detailStyle.form.htmlobjId = cont.id ? cont.id.replace(/-/g,
+ '')
+ .replace('{', '').replace('}',
+ '') : 'null';
+ detailStyle.form.attrs = cont.attrs;
+ cont.attrs.forEach(attr => {
+ detailStyle.form.items.forEach(ele => {
+ if (ele.name != 'Layout') {
+ if (ele.fieldId == attr.attr)
+ ele.value = attr.value;
+ } else if (ele.name == 'Layout') {
+ ele.setting.colList.forEach(
+ col => {
+ if (col) {
+ if (col.fieldId ==
+ attr.attr)
+ col.value = attr.value;
+ }
+ });
+ }
+ });
+ });
+ //濡傛灉 clear = false 鍒欎笉闇�娓呴櫎锛屾牴鎹甶d鍒ゆ柇鏄惁瀛樺湪锛屼笉瀛樺湪鎻掑叆鍒伴〉闈紝濡傛灉瀛樺湪鐢ㄦ柊鐨勫睘鎬ц鐩�+ if (data.clear == false) {
+ var isflag = true;
+ $this.detail1StyleDefList.forEach((style, index) => {
+ if (style.form.objId == detailStyle.form.objId) {
+ cont.attrs.forEach(attr => {
+ style.form.items.forEach(ele => {
+ if (ele.name != 'Layout') {
+ if (ele.fieldId == attr.attr)
+ ele.value = attr.value;
+ } else if (ele.name == 'Layout') {
+ ele.setting.colList.forEach(
+ col => {
+ if (col) {
+ if (col.fieldId ==
+ attr
+ .attr)
+ col.value =
+ attr.value;
+ }
+ });
+ }
+ });
+ });
+ isflag = false;
+ }
+ });
+ if (isflag) $this.detail1StyleDefList.push(detailStyle); //寰呭垎鎷�+ } else {
+ $this.detail1StyleDefList.push(detailStyle); //寰呭垎鎷�+ }
+ }
+ });
+
+ },
+
+ onDetail1EnterChange() {},
//鐐逛腑琛ㄥ崟
onPanelClick(value) { //鐐瑰嚮闈㈡澘楂樹寒鏄剧ず
// console.log(value);
@@ -1599,7 +1670,7 @@
runCustomEvent(dataInfo).then(result => {
console.log(result);
- if (result.ret != 0) {
+ if (result.ret != 0&& result.ret != 1) {
var tip = result.err_info ? typeof result
.err_info ==
'string' ?
@@ -1618,7 +1689,7 @@
content: tip,
showCancel: false,
confirmText: this
- .translateSys("cancel")
+ .translateSys('close')
});
} else uni.showModal({
title: this.translateSys(
@@ -1629,7 +1700,7 @@
result.ret,
showCancel: false,
confirmText: this.translateSys(
- "cancel")
+ 'close')
});
return false;
} else {
@@ -1637,107 +1708,122 @@
.info == 'string' ? result
.info : result
.info.join('<br/>') : '';
+ tip = tip || result.err_info
if (tip) uni.showModal({
title: this.translateSys(
"tip"),
content: tip,
showCancel: false,
confirmText: this.translateSys(
- "cancel")
+ 'close')
});
+ if ([0, 2, 3, 4, -1].includes(result.result_type)) {
+ if (result.result_type == 2) {
- 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, //杩斿洖灞傛暟锛�鍒欎笂涓婇〉
- });
- } 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 {
+ } else if (typeof result.result == 'string') {
+ if (result.result) {
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"
- ),
+ title: this.translateSys('tip'),
+ content: result.result,
showCancel: false,
- confirmText: this
- .translateSys(
- "cancel"
- )
+ confirmText: this.translateSys('close')
});
}
- });
- } else {
- if (result.info) {
- uni.showModal({
- title: this
- .translateSys(
- "tip"),
- content: result.info,
- showCancel: false,
- confirmText: this
- .translateSys(
- "cancel")
+ }
+ try {
+ var actionList = result.action || []
+ actionList.forEach(item => {
+ if (item.action_type ==
+ "goback_to_pre_page"
+ ) { //杩斿洖涓婁竴椤�+ var value = item.value;
+ uni.navigateBack({
+ delta: 1, //杩斿洖灞傛暟锛�鍒欎笂涓婇〉
+ });
+ } 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(
+ 'close'
+ )
+ });
+ }
});
+
+ } catch (ex) {
+ let actionList = (result.action || []).map(a => a.action_type).join(';')
+ let tip = typeof ex == 'string' ? ex : ex.message
+ tip = `鎵ц鑴氭湰杩斿洖鐨�{actionList}鏃跺嚭鐜板紓甯革紝璇锋鏌ヨ剼鏈繑鍥炵殑鏁版嵁鏍煎紡鏄惁姝g‘銆�{tip}`
+ uni.showModal({
+ title: this.translateSys('tip'),
+ content: tip,
+ showCancel: false,
+ confirmText: this.translateSys('close')
+ });
+ console.log(ex)
+ return
}
}
+
}
@@ -1749,7 +1835,7 @@
content: ex.errMsg,
showCancel: false,
confirmText: this.translateSys(
- "cancel")
+ 'close')
});
});
} catch (ex) {
@@ -1762,7 +1848,7 @@
this.translate('reason') + this.translateSys(
"colon") + tip,
showCancel: false,
- confirmText: this.translateSys("cancel")
+ confirmText: this.translateSys('close')
});
}
@@ -2036,70 +2122,8 @@
height: calc(100vh - 30rpx);
padding: 15rpx 0;
- .v-headStyle:first-child {
- margin-top: 15rpx;
- }
-
- .v-headStyle .txt_title {
- font-size: 34rpx;
- text-align: right;
- display: inline-block;
- vertical-align: 24rpx;
- }
-
- .v-headStyle input {
- display: inline-block;
- /* border: 1px solid #d5d5d5; */
- /* width: 65%; */
- width: 85%;
- height: 52rpx;
- line-height: 34rpx;
- background: #FFF;
- border-radius: 0 !important;
- color: #2d8cf0;
- padding: 10rpx 8rpx 12rpx;
- font-size: 34rpx;
- font-family: inherit;
- box-shadow: none !important;
- transition-duration: 0.1s;
- margin-top: 4rpx;
- }
-
- .v-headStyle input::-webkit-input-placeholder {
- font-size: 12rpx;
- }
-
- .input-wrapper {
- border: 1px solid #d5d5d5;
- display: inline-block;
- width: 65%;
- line-height: 22rpx;
- }
-
- [nvue] uni-view {
- position: relative;
- border: 0 solid #000;
- box-sizing: border-box;
- }
-
- .uni-input {
- /* border: none; */
- }
-
- .uni-icon {
- /* border: 1px solid red; */
- width: 8%;
- font-family: uniicons;
- font-size: 40rpx;
- font-weight: 400;
- font-style: normal;
- /* width: 48rpx; */
- height: 48rpx;
- line-height: 48rpx;
- color: #2d8cf0;
- cursor: pointer;
- display: inline-block;
- vertical-align: 18rpx;
+ .v-headStyle {
+ width: 98%;
}
.v-content {
@@ -2138,6 +2162,16 @@
width: 91%;
display: inline-block;
text-align: left;
+
+ .uni-forms-item {
+ padding-bottom: 5rpx;
+ margin-bottom: 0;
+
+ .uni-forms-item__label {
+ height: 20px !important;
+ padding: 0 10rpx 0 0 !important;
+ }
+ }
}
.dv-panel-buticon {
@@ -2170,42 +2204,6 @@
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;
@@ -2241,7 +2239,7 @@
margin-top: 25rpx;
padding: 20rpx;
line-height: 1.5;
- background: #4D6AF4;
+ background: #27A6E1;
border: none;
color: #fff;
font-size: 38rpx;
@@ -2256,7 +2254,7 @@
padding: 20rpx;
line-height: 1.5;
background: #fff;
- border: none;
+ // border: none;
color: #000;
font-size: 38rpx;
font-weight: bold;
--
Gitblit v1.9.1