<!doctype html>
|
<html>
|
<head>
|
<meta charset="utf-8"><meta http-equiv="Expires" content="0"><meta http-equiv="Pragma" content="no-cache"><meta http-equiv="Cache-control" content="no-cache"><meta http-equiv="Cache" content="no-cache">
|
<title>积分明细选择弹窗</title>
|
|
<script type="text/javascript">
|
var pageVue = null;
|
function loadJsCss(callback) {
|
var jscss_urls = [];
|
window.top.initJsCss(document, jscss_urls, callback);
|
};
|
|
function initVue() {
|
new ListVue({
|
el: "#vbody",
|
data: {
|
dataname: "",
|
dataname_select: "so_order_detail_rebate",
|
title: "积分明细选择弹窗",
|
pageAttr: {
|
heightType: "popuppage"
|
},
|
orderby: "expire_date",
|
formAttr: {
|
istitle: false,
|
title: "表单名称",
|
columnnumber: 3,
|
labelwidth: "120px",
|
labelposition: "left",//"left",// right//top
|
size: "mini",
|
border: "5px solid #c6c6c600"
|
},
|
formFields: [],
|
formData: {},
|
filterAttr: {
|
columnnumber: 3,
|
labelwidth: "100px",
|
labelposition: "right",//"left",//"right",
|
size: "medium",
|
border: "0px solid #c6c6c600"
|
},
|
dataRequest: [
|
{
|
name: "md_prod_sku", // SKU下拉项
|
dataname: "md_prod_sku",
|
isnotoption: false, //true:不是选项
|
code:"spec",//是下拉选项时设置
|
label:"spec",//是下拉选项时设置
|
filter: "",
|
orderby: "spec"
|
},
|
],
|
md_prod_sku_obj:{},
|
filterfieldClick: {},
|
tablefieldClick: {},
|
formfieldClick: {},
|
|
tableFields_select: [],
|
tableData_select: [],
|
tablefieldClick_select: {},
|
tablebuttonClick_select: [],
|
tableData_select_rebateid_obj: {},
|
tableData_select_old_obj: {},
|
tabledataobj: {}, // 所有折扣明细的数据对象
|
isPagination: false, // 不进行分页查询
|
|
// 汇总
|
qty_available_sum: 0, // 买赠池的可用数量汇总
|
amt_available_sum: 0, // 积分池的可用金额汇总
|
},
|
created() {
|
this.popupParames = clone(Root.popupParames);
|
this.title = this.popupParames.title || this.popupParames.text
|
if (this.popupParames.filter) {
|
this.filterTxt = this.popupParames.filter
|
}
|
|
if (this.popupParames.delta && this.popupParames.delta.rebatedetail) {
|
var tableData_select_rebateid_obj_ = {}
|
this.popupParames.delta.rebatedetail.map(r=>{
|
if (r.rebate_id && !tableData_select_rebateid_obj_[r.rebate_id]) {
|
tableData_select_rebateid_obj_[r.rebate_id] = true;
|
}
|
})
|
|
this.tableData_select_rebateid_obj = clone(tableData_select_rebateid_obj_);
|
this.tableData_select = clone(this.popupParames.delta.rebatedetail);
|
}
|
|
if (this.popupParames.dataname) {
|
this.dataname = this.popupParames.dataname;
|
}
|
|
if (this.popupParames.sceneCode) {
|
if (this.popupParames.sceneCode == "add") {//新增
|
this.isedit = true;
|
}
|
}
|
},
|
|
mounted() {
|
var me = this;
|
var title_h = 0;
|
if (me.popupParames.totab){
|
title_h = 42;
|
}
|
me.dheight = document.documentElement.clientHeight - 50 - title_h;
|
//预加载数据
|
if (this.dataRequest && this.dataRequest.length) {
|
var result = {};
|
this.loadRequestData(this.dataRequest, result, function(data) {
|
me.dataRequestObj = data;
|
if (me.dataRequestObj.md_prod_sku) {
|
var md_prod_sku_array_ = clone(me.dataRequestObj.md_prod_sku);
|
var md_prod_sku_obj_ = {}
|
|
md_prod_sku_array_.map(sku=>{
|
if (!md_prod_sku_obj_[sku.product_id]) {
|
md_prod_sku_obj_[sku.product_id] = []
|
}
|
var sku_ = {
|
code: sku.spec,
|
value: sku.spec
|
}
|
md_prod_sku_obj_[sku.product_id].push(sku_);
|
})
|
me.md_prod_sku_obj = md_prod_sku_obj_;
|
}
|
|
|
//获取数据
|
me.initData();
|
me.getTableMeta();
|
me.$nextTick(() => { // 以服务的方式调用的 Loading 需要异步关闭
|
hideLoading();
|
});
|
})
|
}
|
else {
|
//获取数据
|
this.initData();
|
this.getTableMeta();
|
this.$nextTick(() => { // 以服务的方式调用的 Loading 需要异步关闭
|
hideLoading();
|
});
|
}
|
|
},
|
|
methods:{
|
//关闭弹窗
|
closeDialog() {
|
this.docloseDialog(true);
|
},
|
|
//关闭前调回调
|
saveAfter() {
|
var me = this;
|
|
var is_overflow = false;
|
var overflow_rebate_no = [];
|
var is_notrebate = false;
|
var notrebate_rebate_no = [];
|
if (this.tableData_select.length) {
|
this.tableData_select.map(sd=>{
|
if (me.tabledataobj[sd.rebate_id]) {
|
if ((sd.amt*1) > (me.tabledataobj[sd.rebate_id]*1)) {
|
is_overflow = true;
|
overflow_rebate_no.push(sd.rebate_code)
|
}
|
}
|
else {
|
notrebate_rebate_no.push(sd.rebate_code)
|
is_notrebate = true;
|
}
|
})
|
}
|
if (is_overflow) {
|
var overflow_rebate_no_ = overflow_rebate_no.toString()
|
Root.message({
|
type: 'error',
|
message: '超出可用额。' + overflow_rebate_no_
|
});
|
|
return
|
}
|
if (is_notrebate) {
|
var notrebate_rebate_no_ = notrebate_rebate_no.toString()
|
Root.message({
|
type: 'error',
|
message: '无折扣明细。' + notrebate_rebate_no_
|
});
|
|
return
|
}
|
|
if(this.popupParames.callback) {
|
let obj = {
|
// row: clone(this.selectedrow)
|
rowlist: clone(this.tableData_select)
|
}
|
this.popupParames.callback(obj, function() {
|
me.docloseDialog();
|
});
|
}
|
else {
|
me.docloseDialog();
|
}
|
},
|
|
getTableMeta() {
|
var me = this;
|
var param_ = {
|
dataname: this.dataname_select,
|
attachMeta: true,
|
filter: "1<>1"
|
}
|
Server.call("root/data/getEntitySet", param_, function(result) {
|
if (result.meta && result.meta[me.dataname_select] && result.meta[me.dataname_select].fields) {
|
var metas = clone(result.meta[me.dataname_select].fields);
|
var filterFields_ = [];
|
var tableFields_ = [];
|
|
metas.map(f=>{
|
f.isshow = "T";
|
f.is_readonly = true;
|
// if(f.field == 'bu_name' ||f.field == 'unit' || f.field == 'create_time' || f.field == 'update_time') {
|
// f.isshow = false
|
// }
|
|
// if (f.isfilter) {
|
// filterFields_.push(clone(f));
|
// }
|
// else {
|
// var filter_f = clone(f);
|
// filter_f.isshow = "F";
|
// filterFields_.push(filter_f);
|
// }
|
|
if (me.isedit) {
|
if(f.field == 'rebate_amt_detail__amt_book' ||f.field == 'rebate_amt_detail__amt_freeze' || f.field == 'rebate_amt_detail__amt_available' || f.field == 'rebate_amt_detail__remark') {
|
f.isshow = false
|
}
|
}
|
|
if (f.field == 'amt') {
|
f.istablesum = true
|
}
|
tableFields_.push(clone(f));
|
})
|
// me.filterFields_sku = clone(filterFields_);
|
me.tableFields_select = clone(tableFields_);
|
|
me.tablebuttonClickSelect()
|
}
|
})
|
},
|
|
tablebuttonClickSelect() {
|
var me = this;
|
|
var tablebuttonClick_select_ = [
|
{
|
// name: "删除", // type: "primary", // icon: "el-icon-edit",
|
isbuttonshow: this.isedit, type: "danger",
|
code: "delete", isselected: true, classname: "",
|
onclick: function(obj) {
|
var row = obj.selectedList[0];
|
if (me.tableData_select_rebateid_obj[row.rebate_id]) {
|
me.tableData_select_rebateid_obj[row.rebate_id] = false
|
}
|
|
var txt = clone(row.type_name + row.rebate_code);
|
me.deleteDataById(row.id, "so_order_detail_rebate", "【" + txt + "】", function(){
|
me.tableData_select.splice(obj.selectRowIndex, 1);
|
// me.sumRebate()
|
})
|
}
|
},
|
]
|
|
this.tablebuttonClick_select = clone(tablebuttonClick_select_)
|
},
|
|
deleteDataById(id, dataname, confirm_txt, callback){
|
var me = this;
|
var formData_ = clone(me.formData);
|
Root.confirm('确定删除该折扣明细' + confirm_txt + '吗?', '删除提示', {
|
confirmButtonText: '删除',
|
cancelButtonText: '取消',
|
type: 'warning'
|
}).then(() => {
|
if (id) {
|
let param = {
|
dataname: dataname,
|
id: id
|
}
|
Server.call("root/data/deleteEntity", param, function(result) {
|
console.log(result);
|
if (result && result.data) {
|
callback();
|
}
|
});
|
}
|
else {
|
callback();
|
}
|
|
}).catch(() => {
|
Root.message({
|
type: 'info',
|
message: '已取消删除'
|
});
|
});
|
|
},
|
|
initData() {
|
var me = this;
|
this.tabledataobj = {}
|
this.onQuery(function(result, callback) { //查询后的回调,用于获取字段的
|
if (result.data && result.data.entityset && result.data.entityset.length){
|
var tabledataobj_ = {}
|
result.data.entityset.map(d=>{
|
tabledataobj_[d.id] = d.amt_available
|
})
|
me.tabledataobj = clone(tabledataobj_);
|
}
|
if (result.meta && result.meta[me.dataname] && result.meta[me.dataname].fields) {
|
var metas = clone(result.meta[me.dataname].fields);
|
var filterFields_ = [];
|
var tableFields_ = [];
|
var formFields_ = [];
|
|
var tableFields_last_ = [];
|
metas.map(f=>{
|
f.isshow = "T";
|
if (f.field == "company_name" || f.field == "bu_name") {
|
f.inputtype = "span";
|
}
|
// if (f.field == "spec") {
|
// f.inputtype = "select"
|
// f.props = {label: "value", value: "code", multiple: true};
|
// formFields_.push(clone(f))
|
// }
|
|
if (f.field == "year" || f.field == "season" || f.field == "company_name" || f.field == "account_code" || f.field == "account_name" || f.field == "oa_no"
|
|| f.field == "remark" || f.field == "is_expire" || f.field == "create_time" || f.field == "update_time") {
|
f.isshow = "F";
|
f.isfilter = false;
|
}
|
|
if (f.isfilter) {
|
filterFields_.push(clone(f));
|
}
|
else {
|
var filter_f = clone(f);
|
filter_f.isshow = "F";
|
filterFields_.push(filter_f);
|
}
|
|
if (f.field == "code" || f.field == "company_id" || f.field == "bu_id") {
|
tableFields_last_.push(clone(f));
|
}
|
else {
|
tableFields_.push(clone(f));
|
}
|
})
|
|
if (tableFields_last_.length) {
|
tableFields_last_.map(fl=>{
|
tableFields_.push(clone(fl));
|
})
|
}
|
|
if (!me.filterFields || (me.filterFields && me.filterFields.length == 0)) {
|
me.filterFields = clone(filterFields_);
|
me.tableFields = clone(tableFields_);
|
me.formFields = clone(formFields_)
|
|
//字段数组转字段obj,目的为了筛选时获取字段属性
|
me.fieldsToFieldsObj();
|
|
//设置字段事件
|
me.tableFieldClick();
|
}
|
|
}
|
|
if (callback) {
|
callback();
|
}
|
});
|
},
|
|
onQueryAfter() {
|
this.getSummary()
|
},
|
|
getSummary() {
|
var me = this;
|
var filter = me.getFilterData();
|
var sum_f = []
|
if (me.dataname == "rebate_qty_detail") {
|
sum_f = ["qty_available"]
|
}
|
else if (me.dataname == "rebate_amt_detail") {
|
sum_f = ["amt_available"]
|
}
|
else {
|
return
|
}
|
let param = {
|
dataname: me.dataname,
|
sum: sum_f,
|
filter: filter
|
}
|
Server.call("root/data/getSummary", param, function(result) {
|
var qty_available_sum_ = 0 // 买赠池的可用数量汇总
|
var amt_available_sum_ = 0 // 积分池的可用数量汇总
|
if (result.data.qty_available_sum) {
|
qty_available_sum_ = result.data.qty_available_sum
|
}
|
if (result.data.amt_available_sum) {
|
amt_available_sum_ = result.data.amt_available_sum
|
}
|
|
me.qty_available_sum = qty_available_sum_
|
me.amt_available_sum = amt_available_sum_
|
})
|
},
|
|
tableFieldClick() {
|
var me = this;
|
//筛选字段事件设置
|
this.filterfieldClick = {
|
};
|
//表格字段事件设置
|
this.tablefieldClick = {
|
};
|
|
//表单字段事件设置
|
this.formfieldClick = {
|
spec: {//字段事件设置
|
visible: {
|
onchange: function(obj,row,callback) {//下拉展开事件
|
console.log(this.selectedrow)
|
console.log(me.selectedrow)
|
if (me.selectedrow.product_id) {
|
var formFields_ = clone(me.formFields);
|
formFields_.map(f=>{
|
if (f.field == "spec") {
|
if (me.md_prod_sku_obj[me.selectedrow.product_id] && me.md_prod_sku_obj[me.selectedrow.product_id].length) {
|
f.options = clone(me.md_prod_sku_obj[me.selectedrow.product_id])
|
}
|
}
|
})
|
}
|
me.formFields = clone(formFields_);
|
}
|
},
|
select: {
|
onchange: function(obj,refreshCallback) {//下拉展开事件
|
obj.data.spec = obj.selectoption.value || "";
|
|
refreshCallback()
|
},
|
},
|
},
|
};
|
},
|
|
|
onRowClick(obj) {
|
// 添加到选择表中
|
if (obj.row && obj.row.code) {
|
var row = clone(obj.row);
|
if (this.tableData_select_rebateid_obj[row.id]) {
|
return
|
}
|
else {
|
this.tableData_select_rebateid_obj[row.id] = true
|
var newrow = {
|
rebate_id: row.id,
|
rebate_code: row.code,
|
rebate_name: row.item_name,
|
// record_id:popupobj.row.id,
|
// record_no:popupobj.row.code,
|
amt: row.amt_available,
|
type_name: "折扣"
|
}
|
this.tableData_select.unshift(clone(newrow));
|
}
|
|
}
|
|
}
|
// onRowDblClick() {
|
// if (this.isedit) {
|
// this.saveAfter();
|
// }
|
// },
|
|
}
|
});
|
};
|
|
loadJsCss(function () {
|
initVue();
|
});
|
</script>
|
<style>
|
/* 在vue.js中 v-cloak 这个指令是防止页面加载时出现 vuejs 的变量名而设计的 */
|
[v-cloak] {
|
display: none !important;
|
}
|
.el-dialog__footer {
|
position: absolute;
|
bottom: 0px;
|
left: 10px;
|
right: 10px;
|
}
|
</style>
|
|
</head>
|
|
<body style="margin: 0px;">
|
<div v-cloak id="vbody">
|
<div id="page_root">
|
<div ref="popup_body" style="padding: 0 20px;">
|
<div class="h_dialog__body">
|
<div v-if="isedit">
|
<div v-if="qty_available_sum">
|
<span>可用数量汇总:{{qty_available_sum}}</span>
|
</div>
|
<div v-if="amt_available_sum">
|
<span>可用积分汇总:{{amt_available_sum}}</span>
|
</div>
|
<el-row :gutter="10">
|
<el-col :span="14">
|
<h-table
|
v-if="isRefresh"
|
ref="table1"
|
:table-fields="tableFields"
|
:table-data="tableData"
|
:table-height="tableHeight - 16"
|
:table-field-click="tablefieldClick"
|
:is-highlight-row="isedit"
|
:is-show-index="false"
|
:filtersobj="filterObj"
|
:is-pagination="false"
|
|
v-on:get-data="getData"
|
v-on:row-click="rowClick"
|
v-on:order-fields="orderTableFields"
|
>
|
</h-table>
|
<!-- :pagesize="pagesize"
|
:pagenum="pagenum"
|
:total="total" -->
|
<div>
|
|
</div>
|
</el-col>
|
<el-col :span="10">
|
<h-table
|
v-if="tableFields_select.length"
|
ref="table2"
|
:table-fields="tableFields_select"
|
:table-data="tableData_select"
|
:table-height="tableHeight - 16"
|
:table-field-click="tablefieldClick_select"
|
:table-buttons-click="tablebuttonClick_select"
|
:is-within-edit-table-data="isedit"
|
:is-highlight-row="true"
|
:is-show-index="false"
|
:isdraggableorder="false"
|
:isfilterfield="false"
|
:is-pagination="false"
|
:isshowtool="true"
|
:show-summary="true"
|
>
|
</h-table>
|
|
</el-col>
|
</el-row>
|
</div>
|
<div v-else>
|
<h-table
|
v-if="tableFields_select.length"
|
ref="table1"
|
:table-fields="tableFields_select"
|
:table-data="tableData_select"
|
:table-height="tableHeight - 32"
|
:table-field-click="tablefieldClick_select"
|
:is-within-edit-table-data="isedit"
|
:is-highlight-row="true"
|
:is-show-index="false"
|
:isdraggableorder="false"
|
:isfilterfield="false"
|
:is-pagination="false"
|
:isshowtool="true"
|
:show-summary="true"
|
>
|
</h-table>
|
</div>
|
|
|
</div>
|
<!-- 底部工具栏 -->
|
<div class="el-dialog__footer">
|
<el-button size="small" type="default" @click="closeDialog">取 消</el-button>
|
<el-button size="small" v-if="isedit" type="primary" @click="saveAfter">确 定</el-button>
|
</div>
|
</div>
|
</div>
|
</div>
|
|
<div id="page_loading" style="position: absolute; top:0px; width: 100vw; height: 50vh;">
|
<div class="spinner">
|
<div class="cube1"></div>
|
<div class="cube2"></div>
|
</div>
|
</div>
|
|
</body>
|
</html>
|