//1、此文件中的代码都是对基础业务进行扩展,也只能在此处编写代码,其他地方编写的代码会被代码生成器生成的代码覆盖
|
//2、此文件中的方法会与serviceFilter.js进行合并,终终执行的就是此文件中的方法
|
//3、components为扩展组件,可自定义页面的头部、body及尾部的额外显示的内容,分别对应的组件为:
|
//gridHeader、gridBody、gridFooter、modelHeader、modelBody、modelFooter共6个组件位置,如果不需要扩展组件,请忽略此处
|
//4、text为界面显示额外描述信息
|
//5、buttons->view/box/detail分别为查询界面、弹出框、弹出框明细表额外扩展的按钮
|
//6、methods为整个页面所有方法的业务代码扩展,如果需要在界面上的操作前、后编写业务,请覆盖此方法
|
//7、methods方法中可获取任意vue对象、方法、属性,可查看ViewGridConfig路径下的js文件及ViewGrid.vue的data属性
|
//如手动刷新表数据:this.search();
|
//获取表的列配置信息:this.columns 明细表表的配置信息this.detail.columns
|
//8、获取子组件gridHeader、gridBody、gridFooter、modelHeader、modelBody、modelFooter则使用
|
//this.$refs.gridHeader获取gridHeader为自己扩展的对象
|
//9、在子组件gridHeader、gridBody、gridFooter、modelHeader、modelBody、modelFooter的方法中调用并获得父组件
|
// this.$emit("parentCall", $vue => {}) //$vue为父组件对象,具体使用参考order->GridHeader.vue文件
|
|
//10、子父件传参除8、9方式,另可使用已封装的vuex,使用方式:this.$store.getters.data().xxx = this;使用实例:App_News.js
|
|
//此处的下面的属性与方法都是对基础业务代码的扩展,如果不需要扩展则忽略对应的方法也不要写在下面
|
//serviceFilter.js
|
//所的文件都最终会合并到ViewGrid.vue文件中
|
|
import { h, resolveComponent } from 'vue';
|
import gridHeader from "./SellOrderComponents/GridHeader.vue"
|
import gridFooter from "./SellOrderComponents/GridFooter.vue"
|
import modelFooter from "./SellOrderComponents/ModelFooter.vue"
|
import modelBody from "./SellOrderComponents/ModelBody.vue"
|
let extension = {
|
components: {//动态扩充组件或组件路径
|
//表单header、content、footer对应位置扩充的组件
|
gridHeader: gridHeader,
|
gridBody: {
|
render() {
|
return [
|
h(resolveComponent('el-alert'), {
|
style: { 'margin-bottom': '12px' },
|
'show-icon': true, type: 'warning',
|
closable: false, title: '一对一全部由代码生成不需要写任何代码,点击新建或编辑查看明细表,可根据需要实现扩展gridHeader、gridBody、gridFooter、modelHeader、modelBody、modelFooter任意位置'
|
}, ''),
|
]
|
}
|
},
|
gridFooter: gridFooter,
|
//弹出框(修改、编辑、查看)header、content、footer对应位置扩充的组件
|
modelHeader: "",
|
modelBody: modelBody,
|
modelFooter: modelFooter,
|
},
|
text: "示例覆盖全部可扩展方法,前台扩展文件SellOrder.js,后台Partial->SellOrdeService.cs",
|
//this.filterPermission('表名','权限值,如:Add')来判断页面上是否有某个按钮的权限
|
buttons: { //根据需要自行实现扩展按钮
|
//注:没有编辑或新建权限的情况下,是不会显示此处添加的扩展按钮,如果仍需要显示此处的按钮,可以把按钮在methods的onInited方法中添加,如:this.boxButtons.push(...)
|
view: [//ViewGrid查询界面按钮
|
|
],
|
box: //新建、编辑弹出框按钮
|
[//ViewGrid查询界面按钮
|
{
|
name: "点我1",
|
icon: 'el-icon-delete',
|
value: 'Edit',
|
class: '',
|
type: 'success',
|
index: 1,//显示的位置
|
onClick: function () {
|
this.$message.error("扩展的明细Box按钮,可设置index值指定显示位置,可使用this.$refs拿到包括自定义扩展的所有组件");
|
}
|
}],
|
detail: //新建、编辑弹出框明细表table表按钮
|
[//ViewGrid查询界面按钮
|
{
|
name: "点我2",
|
icon: 'el-icon-delete',
|
value: 'Edit',
|
class: '',
|
type: 'success',
|
index: 1,//显示的位置
|
onClick: function () {
|
this.$message.error("扩展的明细table按钮,可设置index值指定显示位置");
|
}
|
}]
|
},//扩展的按钮
|
methods: {
|
//扩展方法使用示例,根据需要实行下面的方法
|
getServiceDate() {
|
this.http.post("/api/SellOrder/getServiceDate", {}, '正在调用后台数据').then(date => {
|
this.$message.error("从后台获取的服务器时间是:" + date);
|
})
|
},
|
mounted() {
|
//this.$message.success('mounted方法执行时,你可以此处编写业务逻辑');
|
},
|
//方式1,通过select选择触发显示与隐藏
|
onInit() {
|
|
this.buttons.splice(1,0,...[
|
{
|
name: "点我弹出框",
|
icon: 'md-create',
|
value: 'Edit',
|
class: '',
|
type: 'primary',
|
index: 1,//显示的位置
|
onClick: function () { //扩展按钮执行事件
|
//this可以获取所有属性,包括this.$refs.gridHeader/gridBody等获取扩展组件对象
|
// this.$message("测试扩展按钮");
|
this.$refs.gridHeader.open1();
|
}
|
}, {
|
name: "调用后台",
|
icon: 'md-create',
|
value: 'Edit',
|
class: '',
|
type: 'primary',
|
index: 1,//显示的位置
|
onClick: function () { //扩展按钮执行事件
|
this.getServiceDate();
|
}
|
}
|
])
|
|
//获取订单类型select配置,当前订单类型select改变值时,动态设置Remark,SellNo两个字段是否显示
|
var orderTypeOption = this.getFormOption("OrderType");
|
orderTypeOption.onChange = (val) => {
|
//当订单类型select改变值时,如果选中的是发货(对应字典编号为2),emark,SellNo隐藏,否则显示出来
|
this.getFormOption("Remark").hidden = val == "2"
|
// var sellNoOption = this.getFormOption("SellNo").hidden = val == "2"
|
}
|
|
//点击单元格编辑与结束编辑(默认是点击单元格编辑,鼠标离开结束编辑)
|
this.detailOptions.clickEdit = true;
|
|
|
//设置主表合计
|
this.summary = true;
|
//设置明细表合计
|
this.detailOptions.summary = true;
|
//表格设置为单选
|
// this.single=true;
|
// this.detailOptions.single=true;
|
//设置编辑表单数量字段的最小与最大值
|
this.editFormOptions.forEach(x => {
|
x.forEach(item => {
|
//设置输入的数量的最小值与最大值(默认是1)
|
if (item.field == "Qty") {
|
item.min = 10;
|
item.max =100000;
|
}
|
});
|
})
|
|
//动态修改table并给列添加事件
|
this.columns.forEach(x => {
|
if (x.field == "Qty") {
|
x.formatter = (row) => {
|
return '<a style="color:#2196F3;">' + row.Qty + "(弹出框)" + '</a>'
|
}
|
x.click = (row, column, event) => {
|
this.$refs.gridHeader.open2(row)
|
}
|
}
|
})
|
|
//动态设置查询界面table高度
|
this.tableHeight = 300;
|
|
},
|
onInited() {
|
this.detailOptions.columnIndex=false;
|
this.detailOptions.ck=true;
|
//设置主表求字段,后台需要实现SummaryExpress方法
|
this.columns.forEach(x => {
|
if (x.field == 'Qty'||x.field=='Weight') {
|
x.summary = true;
|
}
|
})
|
//设置明细表高度
|
this.detailOptions.height = 220;
|
this.boxOptions.height = document.body.clientHeight * 0.90;
|
//设置明细表求字和段,后台需要实现GetDetailSummary方法
|
this.detailOptions.columns.forEach(x => {
|
if (x.field == 'Weight' || x.field == 'Qty') {
|
x.summary = true;
|
}
|
})
|
// this.$message.success('create方法执行后', desc: '你可以SellOrder.js中编写业务逻辑,其他方法同样适用' });
|
},
|
searchBefore(param) { //查询ViewGird表数据前,param查询参数
|
//你可以指定param查询的参数,处如果返回false,则不会执行查询
|
// this.$message.success(this.table.cnName + ',查询前' });
|
// console.log("扩展的"this.detailOptions.cnName + '触发loadDetailTableBefore');
|
return true;
|
},
|
searchAfter(result) { //查询ViewGird表数据后param查询参数,result回返查询的结果
|
// this.$notify({
|
// title: '查询结果',
|
// message: '返回的对象:' + JSON.stringify(result),
|
// type: 'success'
|
// });
|
return true;
|
},
|
searchDetailBefore(param) {//查询从表表数据前,param查询参数
|
// this.$message.success(this.detailOptions.cnName + '查询前' });
|
return true;
|
},
|
searchDetailAfter(data) {//查询从表后param查询参数,result回返查询的结果
|
// this.$notify({
|
// title: '明细查询结果',
|
// message: '返回的对象:' + JSON.stringify(data),
|
// type: 'success'
|
// });
|
return true;
|
},
|
delBefore(ids, rows) { //查询界面的表删除前 ids为删除的id数组,rows删除的行
|
let auditStatus = rows.some(x => { return x.AuditStatus > 0 });
|
// if (auditStatus) {
|
// this.$message.error('只能删除未审核的数据')
|
// return false;
|
// }
|
this.$message.success('删除前,选择的Id:' + ids.join(','));
|
return true;
|
},
|
delAfter(result) {//查询界面的表删除后
|
return true;
|
},
|
delDetailRow(rows) { //弹出框删除明细表的行数据(只是对table操作,并没有操作后台)
|
console.log(rows)
|
return true;
|
},
|
addBefore(formData) { //新建保存前formData为对象,包括明细表
|
//formData格式:
|
// {
|
// mainData: { 主表字段1: 'x1', 主表字段2: 'x2' },
|
// detailData: [{ 明细表字段1: d1 }],
|
// delKeys: null //删除明细表行数据的id
|
// }
|
|
//formData.mainData.xxx="xxxx";//还可以继续手动添加值
|
|
//如果需要同时提交其他数据到后台,请设置formData.extra=xxxx
|
//后台在表xxxxService.cs中重写Add方法即可从saveDataModel参数中拿到extra提交的对象
|
console.log(this.detailOptions.cnName + '新建前,提交的数据:' + JSON.stringify(formData));
|
return true;
|
},
|
async addBeforeAsync(formData) {
|
//2020.12.06增加新建前异步方法同步处理
|
//功能同上,区别在于此处可以做一些异步请求处理,全:
|
// var _result = await this.http.post("/api/SellOrder/getPageData", {}, true).then(result => {
|
// console.log("1、异步请求前")
|
// return result;
|
// })
|
// console.log("2、异步请求,同步处理结果:" + JSON.stringify(_result))
|
return true;
|
},
|
addAfter(result) {//新建保存后result返回的状态及表单对象
|
console.log(this.detailOptions.cnName + '新建完成后,返回的数据' + JSON.stringify(result));
|
return true;
|
},
|
updateBefore(formData) { //编辑保存前formData为对象,包括明细表、删除行的Id
|
//formData格式:(自己调试出输看)
|
// {
|
// mainData: { 主表字段1: 'x1', 主表字段2: 'x2' },
|
// detailData: [{ 明细表字段1: d1 }],
|
// delKeys: null //删除明细表行数据的id
|
// }
|
|
//formData.mainData.xxx="xxxx";//还可以继续手动添加值
|
|
//如果需要同时提交其他数据到后台,请设置formData.extra=xxxx
|
//后台在表xxxxService.cs中重写Update方法即可从saveDataModel参数中拿到extra提交的对象
|
|
console.log(this.detailOptions.cnName + '编辑前,提交的数据:' + JSON.stringify(formData));
|
//获取扩展的modelFooter属性text
|
// console.log(this.$refs.modelFooter.text)
|
return true;
|
},
|
async updateBeforeAsync(formData) {
|
//2020.12.06增加修改前异步方法同步处理
|
//功能同上,区别在于此处可以做一些异步请求处理,全:
|
var _result = await this.http.post("/api/SellOrder/getPageData", {}, true).then(result => {
|
console.log("1、异步请求前")
|
return result;
|
})
|
console.log("2、异步请求,同步处理结果:" + JSON.stringify(_result))
|
return true;
|
},
|
updateAfter(result) {//编辑保存后result返回的状态及表单对象
|
// this.$message.success(this.detailOptions.cnName + '编辑完成后,返回的数据' + JSON.stringify(result));
|
return true;
|
},
|
auditBefore(ids, rows) {//审核前
|
if (rows.length > 2) {//每次最多只能审核2条数据
|
this.$message.error('最多只能选择两条数据');
|
return false;
|
}
|
return true;
|
},
|
auditAfter(result, rows) {// 审核后
|
if (result.status) {
|
result.message = "审核成功。。。。。" + result.message;
|
}
|
return true;
|
},
|
resetAddFormBefore() { //重置新建表单前的内容
|
return true;
|
},
|
resetAddFormAfter() { //重置新建表单后的内容
|
//如果某些字段不需要重置,则可以重新赋值
|
this.editFormFields.Remark = '新建重置默认值66666';
|
//给明细表添加默认一行
|
this.$refs.detail.rowData.push({ Remark: "新建666666" });
|
return true;
|
},
|
resetUpdateFormBefore() { //重置编辑表单前的内容
|
//this.editFormFields当前值
|
console.log(this.editFormFields)
|
//当前明细表的行
|
console.log(this.$refs.detail.rowData)
|
return true;
|
},
|
resetUpdateFormAfter() { //重置编辑表单后的内容
|
//如果某些字段不需要重置,则可以重新赋值
|
this.editFormFields.Remark = '编辑重置默认值66666';
|
//给明细表添加默认一行
|
this.$refs.detail.rowData.push({ Remark: "编辑666666" });
|
return true;
|
},
|
importAfter(data) { //导入excel后刷新table表格数据
|
this.search(); //刷新table
|
},
|
modelOpenBefore(row) { //点击编辑/新建按钮弹出框前,可以在此处写逻辑,如,从后台获取数据
|
|
},
|
async modelOpenBeforeAsync(row) { //点击编辑/新建按钮弹出框前,可以在此处写逻辑,如,从后台获取数据
|
//2021.01.10
|
if (row) {
|
console.log("编辑操作")
|
} else {
|
console.log("新建操作")
|
}
|
//打开弹出框前,http请求同步执行
|
// var _result = await this.http.post("url", {}, true).then(result => {
|
|
// _result = result;
|
// })
|
// console.log(result);
|
//返回false不会弹出框
|
//this.$message.error("不能打开弹出框 ");
|
return true;
|
},
|
getFormOption(field) {
|
let option;
|
this.editFormOptions.forEach(x => {
|
x.forEach(item => {
|
if (item.field == field) {
|
option = item;
|
}
|
})
|
})
|
return option;
|
},
|
|
//方式2,通过打开弹出框时触发显示与隐藏
|
modelOpenAfter(row) { //编辑或新建时,根据不同的情况控制字段是否显示
|
// this.editFormOptions.forEach(x => {
|
// x.forEach(item => {
|
// if (item.field == "Remark" || item.field == "SellNo") {
|
// //如果不是新建,则隐藏Remark,SellNo两个字段是否显示
|
// //也可以根据row当前编辑行的值来处理
|
// this.$set(item, "hidden", this.currentAction != "Add")
|
// }
|
// })
|
// })
|
},
|
rowClick({ row, column, event }) { //查询界面table点击行选中当前行
|
this.$refs.table.$refs.table.toggleRowSelection(row);
|
},
|
// detailRowClick ({ row, column, event }) {
|
// //编辑弹出框从表table点击行选中当前行,没有从表的不用管
|
// this.$refs.detail.$refs.table.toggleRowSelection(row);
|
// }
|
}
|
};
|
export default extension;
|