Appearance
v2.2.0 不兼容更新
一、多个输入组件改用 null 作为清空值
- 新版本的
number 、float、time、select、远程下拉单选已统一改用null作为清空值(以往是0或组件默认的undefined,其中为0时在多数情况适用,但使用null作为默认值可确保输入框无值时显示placeholder,且有时还可能希望将0作为一个有效值) - 当您清空输入框值,并保存修改时,可能收到报错
SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'user_id' cannot be null,只需修改对应的数据表结构,允许字段值为null即可 time的模型修改器需要手动调整为兼容null值的版本,以避免保存为null又回显为0的问题,请参考示例float的模型获取器需要手动调整为兼容null值的版本,请参考示例
TIP
二、远程下拉 pk 属性的修改
think-orm更新至3.0.33后,以往的远程下拉组件初始化时,接口可能报错Column not found: 1054 Unknown column 'ba_test_aa.id' in 'where clause',在目前尚未发布的think-orm版本中已经对此进行兼容,但是该写法官方并不推荐。请修改远程下拉组件的
pk属性,由原本的完整表名.主键修改为数据模型类名称.主键即可,比如:表名 模型路径及名称 新 pk属性值旧 pk属性值ba_user app/admin/model/User.phpuser.idba_user.idba_user_group app/admin/model/UserGroup.phpuser_group.idba_user_group.idba_user_group app/admin/model/user/Group.phpgroup.idba_user_group.id可总结为:
- 忽略目录结构:模型为
/user/Group.php直接使用group.id即可 - 小写下划线分割:模型名为
UserGroup.php使用user_group.id
- 忽略目录结构:模型为
TIP
将 think-orm 版本降低至 3.0.28,或者升级至 3.0.33 以上 还可临时解决此问题
三、删除已废弃属性
删除已废弃的 baTable.table.column.click
可使用 el-table 组件本身自带的 @cell-click 或单元格自定义渲染代替,请参考文档
删除已废弃的 baTable.table.column.renderFormatter
- 可使用兼容
Element Plus的baTable.table.column.formatter代替 - 它们的参数列表略有差异:
ts
renderFormatter: (row: TableRow, field: TableColumn, value: any, column: TableColumnCtx<TableRow>, index: number) => any
formatter: (row: TableRow, column: TableColumnCtx<TableRow>, cellValue: any, index: number) => any删除已废弃的上传组件 props.attr
即 FormItem 的 input-attr.attr,可使用 input-attr 本身代替
vue
<template>
<div>
<!-- 原来的 -->
<FormItem
:input-attr="{
attr: {
disabled: true,
},
}"
:label="t('test.file')"
type="file"
v-model="state.file"
/>
<!-- 修改为 -->
<FormItem
:input-attr="{
disabled: true,
}"
:label="t('test.file')"
type="file"
v-model="state.file"
/>
<!-- 原来的 -->
<baUpload :attr="{ disabled: true }" type="image" v-model="state.image" />
<!-- 修改为 -->
<baUpload :disabled="true" type="image" v-model="state.image" />
</div>
</template>
<script setup lang="ts">
import { reactive } from 'vue'
import FormItem from '/@/components/formItem/index.vue'
import baUpload from '/@/components/baInput/components/baUpload.vue'
const state = reactive({
image: '',
file: '',
})
</script>四、其他细节
1. 后台保存时报错 记录未找到 或 方法参数错误?
原因:由于历史版本未固定 thinkphp 版本号,一旦执行 composer update 后 ThinkPHP 自动更新到了 8.1,而 BuildAdmin 代码并未随之更新则可能出现此问题。
解决方案一:更新
BuildAdmin 至最新版本后执行 composer update解决方案二:找到
composer.json 文件,固定 "topthink/framework": "8.0.4" 后重新 composer updateFilesystem::getDirFiles()方法的默认参数:由获取指定目录的.php文件改为获取指定目录的全部文件
