Appearance
JPwise-Web 混入使用指南 - Claude Code
🚀 快速开始
listMixin - 列表页面必用
javascript
import listMixin from '@/mixins/basics/list'
export default {
mixins: [listMixin],
data() {
return {
apiUrl: '/api/module/list',
loadListMethod: getPageList
}
}
}
formMixin - 表单页面必用
javascript
import formMixin from '@/mixins/basics/form'
export default {
mixins: [formMixin],
data() {
return {
apiUrl: '/api/module',
dataForm: { name: '', email: '' },
dataRule: {
name: [{ required: true, message: '名称不能为空', trigger: 'blur' }]
}
}
}
}
btnPermission - 权限控制
javascript
import btnPermission from '@/mixins/btn_permission'
export default {
mixins: [btnPermission]
// 自动提供 buttonAuthList 和 buttonAuth(name) 方法
}
CCMixin (customComponentsMixin) - 自定义组件混入
javascript
import CCMixin from '@/mixins/basics/customComponents'
export default {
mixins: [CCMixin],
// 用于管理自定义组件弹窗和窗口操作
}
ckeditorMixin - 富文本编辑器混入
javascript
import ckeditorMixin from '@/mixins/basics/ckeditor'
export default {
mixins: [ckeditorMixin],
// 用于富文本编辑器的预览数据处理
}
🔄 常用组合
标准列表页面
javascript
import listMixin from '@/mixins/basics/list'
import btnPermission from '@/mixins/btn_permission'
export default {
mixins: [listMixin, btnPermission],
data() {
return {
apiUrl: '/api/module/list',
loadListMethod: getPageList
}
}
}
标准表单页面
javascript
import formMixin from '@/mixins/basics/form'
import btnPermission from '@/mixins/btn_permission'
export default {
mixins: [formMixin, btnPermission],
data() {
return {
apiUrl: '/api/module',
dataForm: {},
dataRule: {}
}
}
}
📋 核心方法和属性
listMixin 提供
- 数据属性:
list[]
,total
,listLoading
,listQuery
- 核心方法:
InitPage()
,search()
,refresh()
,reset()
- 删除操作:
deleteRow(id)
,delBatch()
- 导出功能:
exportData()
,download()
- 页面操作:
openPage(data)
formMixin 提供
- 数据属性:
dataForm{}
,dataRule{}
,visible
,btnLoading
- 核心方法:
init(dataInfo)
,dataFormSubmit()
,saveForm()
- 生命周期:
initBefore()
,initAfter()
,getInfoAfter()
- 子表操作:
addRow()
,delRow()
,moveUp()
,moveDown()
- 流程专用:
judgeShow()
,judgeWrite()
,judgeRequired()
btnPermission 提供
- 权限属性:
buttonAuthList[]
- 权限方法:
buttonAuth(name)
- 检查按钮权限
CCMixin (customComponentsMixin) 提供
- 弹窗控制:
ccVisible
,popupType
,popupWidth_
,popupHeight_
- 组件管理:
componentData
,componentName
,componentUrl
- 核心方法:
openWindow(params)
- 打开组件窗口 - 数据处理:
getDynamicModelData(params)
- 获取动态模型数据 - 关闭操作:
close(params)
- 关闭组件窗口
ckeditorMixin 提供
- 数据属性:
previewData[]
- 预览数据数组 - 核心方法:
getPreviewData(modelId)
- 获取预览数据 - 表单操作:
updateFormData(key, value)
- 更新表单数据
🔧 配置参数
listMixin 必需配置
javascript
{
apiUrl: '/api/module/list', // 必需:API端点
loadListMethod: getPageList // 必需:加载方法
}
formMixin 必需配置
javascript
{
apiUrl: '/api/module', // 必需:API基础端点
dataForm: {}, // 必需:表单数据对象
dataRule: {} // 可选:验证规则
}
🎯 生命周期钩子
listMixin 钩子
javascript
export default {
mixins: [listMixin],
methods: {
// 初始化前执行
initPageBefore() {
console.log('加载数据前')
},
// 初始化后执行
initPageAfter() {
console.log('加载数据后')
},
// 删除前确认
delBefore(event) {
return { cancel: false } // true取消删除
}
}
}
formMixin 钩子
javascript
export default {
mixins: [formMixin],
methods: {
// 初始化前执行
initBefore(defVal) {
console.log('表单初始化前')
},
// 初始化后执行
initAfter(defVal) {
console.log('表单初始化后')
},
// 保存前确认
saveBefore({ eventType, cancel }) {
return { cancel: false } // true取消保存
}
}
}
🚫 常见错误
❌ 错误:不使用混入
javascript
// 不要这样写
export default {
data() {
return {
list: [],
loading: false
}
},
methods: {
async loadData() {
// 重复实现基础功能
}
}
}
✅ 正确:使用混入
javascript
// 应该这样写
export default {
mixins: [listMixin],
data() {
return {
apiUrl: '/api/module/list',
loadListMethod: getPageList
}
}
}
❌ 错误:配置不完整
javascript
export default {
mixins: [formMixin],
// 缺少 apiUrl 配置
}
✅ 正确:完整配置
javascript
export default {
mixins: [formMixin],
data() {
return {
apiUrl: '/api/module', // 必需配置
dataForm: {} // 必需配置
}
}
}
🔍 调试技巧
检查混入状态
javascript
mounted() {
console.log('列表数据:', this.list)
console.log('加载状态:', this.listLoading)
console.log('权限列表:', this.buttonAuthList)
}
覆盖混入方法
javascript
methods: {
// 扩展搜索功能
search(queryData, type) {
console.log('自定义搜索逻辑')
// 调用原始方法
this.$options.mixins[0].methods.search.call(this, queryData, type)
}
}