update operationComponent
This commit is contained in:
parent
183335f9fe
commit
f9ad79f6bc
@ -1,30 +1,30 @@
|
||||
// import i18n from '@/i18n'
|
||||
|
||||
export default {
|
||||
name: 'TableOperations',
|
||||
name: "TableOperations",
|
||||
props: {
|
||||
injectData: {
|
||||
type: Object,
|
||||
default: () => ({})
|
||||
}
|
||||
default: () => ({}),
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
btnTypes: {
|
||||
add: 'primary',
|
||||
delete: 'danger',
|
||||
detail: 'info'
|
||||
add: "primary",
|
||||
delete: "danger",
|
||||
detail: "info",
|
||||
// add more...
|
||||
},
|
||||
colors: {
|
||||
delete: '#FF5454',
|
||||
preview: '#f09843',
|
||||
design: '#99089f',
|
||||
'destroy-order': '#FF5454',
|
||||
'confirm-order': '#37d97f',
|
||||
'end-order': '#f09843',
|
||||
'move-to-top': '#8833ff',
|
||||
'move-to-bottom': '#8833ff',
|
||||
delete: "#FF5454",
|
||||
preview: "#f09843",
|
||||
design: "#99089f",
|
||||
"destroy-order": "#FF5454",
|
||||
"confirm-order": "#37d97f",
|
||||
"end-order": "#f09843",
|
||||
"move-to-top": "#8833ff",
|
||||
"move-to-bottom": "#8833ff",
|
||||
// 'view-trend': 'red'
|
||||
// add more...
|
||||
},
|
||||
@ -36,19 +36,19 @@ export default {
|
||||
// viewAttr: i18n.t('viewattr'),
|
||||
// preview: i18n.t('preview'),
|
||||
// design: i18n.t('design'),
|
||||
copy: '复制',
|
||||
edit: '编辑',
|
||||
detail: '详情',
|
||||
delete: '删除',
|
||||
viewAttr: '查看属性',
|
||||
preview: '预览',
|
||||
view: '查看',
|
||||
design: '设计',
|
||||
'view-trend': '查看趋势',
|
||||
'add-sub': '添加子类'
|
||||
copy: "复制",
|
||||
edit: "编辑",
|
||||
detail: "详情",
|
||||
delete: "删除",
|
||||
viewAttr: "查看属性",
|
||||
preview: "预览",
|
||||
view: "查看",
|
||||
design: "设计",
|
||||
"view-trend": "查看趋势",
|
||||
"add-sub": "添加子类",
|
||||
// add more...
|
||||
}
|
||||
}
|
||||
},
|
||||
};
|
||||
},
|
||||
// mounted() {
|
||||
// console.log('inject data', this.injectData)
|
||||
@ -56,63 +56,74 @@ export default {
|
||||
methods: {
|
||||
// 发射事件
|
||||
emit(opt) {
|
||||
let emitFull = false
|
||||
let eventType = 'default'
|
||||
let customField
|
||||
if (typeof opt === 'object') {
|
||||
eventType = opt.name
|
||||
customField = opt.emitField || 'id'
|
||||
emitFull = opt.emitFull || false
|
||||
let emitFull = false;
|
||||
let eventType = "default";
|
||||
let customField;
|
||||
if (typeof opt === "object") {
|
||||
eventType = opt.name;
|
||||
customField = opt.emitField || "id";
|
||||
emitFull = opt.emitFull || false;
|
||||
} else {
|
||||
eventType = opt
|
||||
eventType = opt;
|
||||
}
|
||||
|
||||
/** 处理 toRouter */
|
||||
let payload = { type: eventType, data: emitFull ? this.injectData : customField ? this.injectData[customField] : this.injectData.id }
|
||||
if ('url' in opt) {
|
||||
payload.url = this.injectData.url
|
||||
let payload = { type: eventType, data: emitFull ? this.injectData : customField ? this.injectData[customField] : this.injectData.id };
|
||||
if ("url" in opt) {
|
||||
payload.url = this.injectData.url;
|
||||
}
|
||||
if ('toRouter' in opt) {
|
||||
payload.toRouter = opt.toRouter
|
||||
if ("toRouter" in opt) {
|
||||
payload.toRouter = opt.toRouter;
|
||||
}
|
||||
// this.$emit('emit-data', { type: eventType, data: emitFull ? this.injectData : customField ? this.injectData[customField] : this.injectData.id, url: this.injectData.url, toRouter: opt.toRouter })
|
||||
this.$emit('emit-data', payload)
|
||||
}
|
||||
this.$emit("emit-data", payload);
|
||||
},
|
||||
},
|
||||
render: function (h) {
|
||||
let btns = []
|
||||
let btns = [];
|
||||
for (const opt of this.injectData.head?.options) {
|
||||
const optIsObj = typeof opt === 'object'
|
||||
const optIsObj = typeof opt === "object";
|
||||
|
||||
if (optIsObj) {
|
||||
// 注意:为空字符串或null/undefined都会不验证权限
|
||||
if (!opt.permission || (opt.permission && this.$hasPermission(opt.permission))) {
|
||||
// 检查可用状态
|
||||
let shouldDisabled = false;
|
||||
if ("enable" in opt && typeof opt.enable === "function") {
|
||||
shouldDisabled = opt.enable(this.injectData);
|
||||
}
|
||||
btns.push(
|
||||
h('el-button',
|
||||
h(
|
||||
"el-button",
|
||||
{
|
||||
props: { type: opt.type ?? 'text', icon: opt.icon ? `el-icon-${opt.icon}` : '', title: opt.label ?? opt.name },
|
||||
style: { color: opt.color || this.colors[opt.name] || '#0b58ff' },
|
||||
on: { click: this.emit.bind(null, opt) }
|
||||
props: {
|
||||
type: opt.type ?? "text",
|
||||
icon: opt.icon ? `el-icon-${opt.icon}` : "",
|
||||
title: opt.label ?? opt.name,
|
||||
disabled: shouldDisabled,
|
||||
},
|
||||
style: { color: opt.color || this.colors[opt.name] || "#0b58ff" },
|
||||
on: { click: this.emit.bind(null, opt) },
|
||||
},
|
||||
opt.icon ? opt.showText ? this.text[opt.name] ?? opt.label : '' : opt.label ?? this.text[opt.name]
|
||||
opt.icon ? (opt.showText ? this.text[opt.name] ?? opt.label : "") : opt.label ?? this.text[opt.name]
|
||||
)
|
||||
)
|
||||
);
|
||||
}
|
||||
} else {
|
||||
// 此时 opt 是一个 string,且默认有操作权限
|
||||
btns.push(
|
||||
h('el-button',
|
||||
h(
|
||||
"el-button",
|
||||
{
|
||||
props: { type: 'text' },
|
||||
style: { color: this.colors[opt] || '#0b58ff' },
|
||||
on: { click: this.emit.bind(null, opt) }
|
||||
props: { type: "text" },
|
||||
style: { color: this.colors[opt] || "#0b58ff" },
|
||||
on: { click: this.emit.bind(null, opt) },
|
||||
},
|
||||
this.text[opt] ?? opt
|
||||
)
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
return h('span', null, btns)
|
||||
}
|
||||
}
|
||||
return h("span", null, btns);
|
||||
},
|
||||
};
|
||||
|
@ -31,7 +31,7 @@ export default function () {
|
||||
fixed: "right",
|
||||
width: 160,
|
||||
subcomponent: TableOperaionComponent,
|
||||
options: ['add', 'edit']
|
||||
options: ['add', { name: 'edit', enable: injectRow => { return 'task' in injectRow && injectRow.task === 'Manual'} }] // 只有 injectRow.task 为手动时,才允许编辑
|
||||
},
|
||||
];
|
||||
|
||||
|
@ -26,20 +26,6 @@ export default {
|
||||
return this.$route.params.id || "";
|
||||
},
|
||||
},
|
||||
// urls: {
|
||||
// type: Object,
|
||||
// required: true,
|
||||
// default: () => ({
|
||||
// /** 列表 url **/ list: null,
|
||||
// /** 分页 url **/ page: null,
|
||||
// /** 编辑保存 url **/ edit: null,
|
||||
// /** 删除条目 url **/ delete: null,
|
||||
// /** 详情 url **/ detail: null,
|
||||
// /** 导出 url **/ export: null,
|
||||
// /** 导入 url **/ import: null,
|
||||
// /** 其他 url **/ other: null,
|
||||
// }),
|
||||
// },
|
||||
data() {
|
||||
const { tableConfig, headFormConfigs, urls, dialogConfigs } = initConfig.call(this);
|
||||
return {
|
||||
|
Loading…
Reference in New Issue
Block a user