Commit 528ea3fb authored by 刘_震's avatar 刘_震

Merge remote-tracking branch 'origin/master'

parents fcdd1c4f 5b5cb30b
## 开发
## 开发1
```bash
# 克隆项目
git clone https://gitee.com/y_project/RuoYi-Vue
git clone http://192.168.111.222:3000/chengwenlong/kailuanUI.git
master是线上分支
dev是公用的分支
自己用自己的分支开发
合并将自己分支合并到dev:
基准分支是dev,对比分支就是自己的那个分支
# 进入项目目录
cd ruoyi-ui
......
......@@ -14,6 +14,7 @@ const exportExcel = function (luckysheet, value, contrast, id) {
luckysheet = [luckysheet];
}
luckysheet.forEach(function (table) {
if (table.data.length === 0) { return true; }
// ws.getCell('B2').fill = fills.
const worksheet = workbook.addWorksheet(table.name);
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
import { setXRow } from "@/utils/tzc";
/**
* @function 单位名称转换
* @description 后台数据中的单位名称转换成汇总表中对应的单位名称
* @param name {string} 单位名称
* @param isGB {bool} 是否干部
* @return string
* @author cwl 2024年5月22日 15:22:03
*/
function getUnitName(name, isGB = false) {
var newName;
//洗煤厂特殊处理
switch (name) {
case "后勤服务一科":
newName = "(1)后勤服务一科";
break;
case "后勤服务二科":
newName = "(2)后勤服务二科";
break;
case "精神病院劳务":
newName = "(3)精神病院劳务";
break;
case "低热值煤炭":
newName = "(4)低热值煤炭";
break;
case "后勤办公室":
newName = "(5)后勤办公室";
break;
case "保卫科":
newName = "(1)保卫科(矿)";
break;
case "直属警察队":
newName = "(2)直属警察队(社区)";
break;
case "物资管理科":
newName="回收厂";
break;
case "煤类产品管理检测科":
newName="煤管科";
break;
default:
newName = name;
break;
}
if (name == "洗煤厂" && isGB) {
newName = "6.制造费洗煤";
} else if (name == "洗煤厂" && !isGB) {
newName = "4.基本生产洗煤";
} else if (isGB) {
newName += "--干部";
}
return newName;
}
/**
* @function 唐山矿工资数据处理
* @description
* @param jsonData 导入的数据
* @return 处理后的luckysheet的一维数组
* @author cwl 2024年5月22日 15:22:03
*/
export function machGzdata(list,jsonData) {
var CompositeTable = jsonData;
//后台返回数据
CompositeTable[0].data = luckysheet.transToData(CompositeTable[0].celldata);
var dList = setXRow(CompositeTable[0].data);//汇总表中单位集合包含行数
list.forEach((item) => {
let dName = item.dep;
let uNameGB = getUnitName(dName, true);
let uNameGR = getUnitName(dName);
//如果含有干部和工人数
if (item.worker=="0" && item.cadre=="0") {
var r = dList[uNameGR];
item.r = r;
item.v = item.value;
} else {
//干部人数
var newItem = {};
newItem.dep = uNameGB;
newItem.r = dList[uNameGB];
newItem.v = item.cadre;
newItem.c = item.c;
list.push(newItem);
//工人数
item.dep = uNameGR;
item.r = dList[uNameGR];
item.v = item.worker;
}
});
console.log("123", list);
// 对比 c 和 r 是否与 CompositeTable[0]["celldata"] 中相应对象相同
for (let k = 0; k < CompositeTable[0]["celldata"].length; k++) {
for (let i = 0; i < list.length; i++) {
if (
list[i].r == CompositeTable[0]["celldata"][k].r &&
list[i].c == CompositeTable[0]["celldata"][k].c
) {
// 如果相同,则进行替换
CompositeTable[0]["celldata"][k].v.v = list[i].v;
}
}
}
return CompositeTable;
}
// 工资汇总
import request from '@/utils/request'
// 新增
export function conversionSave(data) {
return request({
url: '/conversion/save',
method: 'post',
data: data
})
}
// 工资汇总列表
export function conversionGetWagesData(query) {
return request({ url: '/conversion/getWagesData', method: 'get', params: query })
}
// 修改
export function conversionUpdate(data) {
return request({ url: '/conversion/update', method: 'post', data })
}
export function getWagesDataById(id) {
return request({ url: `/conversion/getWagesDataById/${id}`, method: 'get' })
}
//唐山矿工资转换
export function surface(data) {
return request({
url: '/wages/calculate/surface',
method: 'post',
data: data
})
}
//获取最近的公式
export function getRecentFormulas(id) {
return request({ url: '/conversion/recentFormulas', method: 'get'})
}
import request from '@/utils/request'
import request from "@/utils/request";
import LuckyExcel from "luckyexcel";
//查询6矿物聊
export function materialListPZ() {
return request({
url: '/ActSuppliesDetails/ActSuppliesDetails/materialListPZ' ,
method: 'get'
})
url: "/ActSuppliesDetails/ActSuppliesDetails/materialListPZ",
method: "get",
});
}
//小物料转大物料
export function materialConvert(data) {
return request({
url: '/ActSuppliesConvert/ActSuppliesConvert/converSupplies',
method: 'post',
data: data
})
url: "/ActSuppliesConvert/ActSuppliesConvert/converSupplies",
method: "post",
data: data,
});
}
// 查询Excel模板列表
export function listSuppliesTemplate(query) {
return request({
url: '/SuppliesTemplate/SuppliesTemplate/list',
method: 'get',
params: query
})
url: "/SuppliesTemplate/SuppliesTemplate/list",
method: "get",
params: query,
});
}
// 查询导入规则列表
export function listSuppliesrole(id) {
return request({
url: '/SuppliesTemplate/SuppliesTemplate/lists/' +id,
method: 'get',
})
url: "/SuppliesTemplate/SuppliesTemplate/lists/" + id,
method: "get",
});
}
// 查询导入规则详细
export function getSuppliesrole(id) {
return request({
url: '/system/suppliesrole/' + id,
method: 'get'
})
url: "/system/suppliesrole/" + id,
method: "get",
});
}
//按照矿的id去查部门分类
export function department(sskId){
export function department(sskId) {
return request({
url: `/ActClassification/ActClassification/SunDy/${sskId}`,
method: 'get'
})
method: "get",
});
}
//获取到会计科目编码
export function accountingcode(newData){
export function accountingcode(newData) {
return request({
url: `/ActSuppliesAccount/ActSuppliesAccount/options`,
method: 'post',
data: newData
})
url: `/ActSuppliesAccount/ActSuppliesAccount/newOptions`,
method: "post",
data: newData,
});
}
//获取到会计科目编码
export function getyy(newData) {
return request({
url: `/wages/getyy`,
method: "post",
data: newData,
});
}
//展示excel模板
export function listSuppliesTemplateId(id) {
return request({
url: '/SuppliesTemplate/SuppliesTemplate/listId/' + id,
method: 'get'
})
url: "/SuppliesTemplate/SuppliesTemplate/listId/" + id,
method: "get",
});
}
// 查询Excel模板详细
export function getSuppliesTemplate(id) {
return request({
url: '/SuppliesTemplate/SuppliesTemplate/' + id,
method: 'get'
})
url: "/SuppliesTemplate/SuppliesTemplate/" + id,
method: "get",
});
}
// 修改导入规则
export function updateSuppliesrole(id) {
return request({
url: '/system/suppliesrole/edit' +id,
method: 'put',
})
url: "/system/suppliesrole/edit" + id,
method: "put",
});
}
// 新增Excel模板
export function addSuppliesTemplate(data) {
return request({
url: '/SuppliesTemplate/SuppliesTemplate',
headers:{
repeatSubmit:false
url: "/SuppliesTemplate/SuppliesTemplate",
headers: {
repeatSubmit: false,
},
method: 'post',
data: data
})
method: "post",
data: data,
});
}
// 修改Excel模板
export function updateSuppliesTemplate(data) {
return request({
url: '/SuppliesTemplate/SuppliesTemplate',
method: 'put',
data: data
})
url: "/SuppliesTemplate/SuppliesTemplate",
method: "put",
data: data,
});
}
export function releaseTemplateStatus(id){
export function releaseTemplateStatus(id) {
return request({
url: '/SuppliesTemplate/SuppliesTemplate/releaseStatus/' + id,
method: 'get'
})
url: "/SuppliesTemplate/SuppliesTemplate/releaseStatus/" + id,
method: "get",
});
}
export function offShelfTemplateStatus(id){
export function offShelfTemplateStatus(id) {
return request({
url: '/SuppliesTemplate/SuppliesTemplate/offShelfStatus/' + id,
method: 'get'
})
url: "/SuppliesTemplate/SuppliesTemplate/offShelfStatus/" + id,
method: "get",
});
}
export function CopyTemplate(id){
export function CopyTemplate(id) {
return request({
url: '/SuppliesTemplate/SuppliesTemplate/copyTemplate/' + id,
method: 'get'
})
url: "/SuppliesTemplate/SuppliesTemplate/copyTemplate/" + id,
method: "get",
});
}
// 删除Excel模板
export function delSuppliesTemplate(id) {
return request({
url: '/SuppliesTemplate/SuppliesTemplate/' + id,
method: 'delete'
})
url: "/SuppliesTemplate/SuppliesTemplate/" + id,
method: "delete",
});
}
// 展示Excel模板
export function delSuppliesSave(id) {
return request({
url: '/SuppliesTemplate/SuppliesTemplate/save/' + id,
method: 'get'
})
url: "/SuppliesTemplate/SuppliesTemplate/save/" + id,
method: "get",
});
}
//启用
export function toggleEnable(id) {
return request({
url: '/SuppliesTemplate/SuppliesTemplate/enable/' +id,
method: 'get',
})
url: "/SuppliesTemplate/SuppliesTemplate/enable/" + id,
method: "get",
});
}
//禁用
export function toggleDisable(id) {
return request({
url: '/SuppliesTemplate/SuppliesTemplate/disable/' + id,
method: 'get',
})
url: "/SuppliesTemplate/SuppliesTemplate/disable/" + id,
method: "get",
});
}
export function findName(name) {
return request({
url: '/SuppliesTemplate/SuppliesTemplate/ifName/' + name,
method: 'get'
})
url: "/SuppliesTemplate/SuppliesTemplate/ifName/" + name,
method: "get",
});
}
// 模板转换页面查询规则对应用友物料名称
export function getSuppliesName(name) {
return request({
url: '/ActSuppliesConvert/ActSuppliesConvert/saveSuppliesname/' + name,
method: 'get'
})
url: "/ActSuppliesConvert/ActSuppliesConvert/saveSuppliesname/" + name,
method: "get",
});
}
// 模板转换页面查询Excel模板列表
export function templateList(query) {
return request({
url: '/ActSuppliesConvert/ActSuppliesConvert/list',
method: 'get',
params: query
})
url: "/ActSuppliesConvert/ActSuppliesConvert/list",
method: "get",
params: query,
});
}
// 模板转换页面查询Excel模板内容列表
export function templateListid(id) {
return request({
url: '/ActSuppliesConvert/ActSuppliesConvert/listid/' + id,
method: 'get'
})
url: "/ActSuppliesConvert/ActSuppliesConvert/listid/" + id,
method: "get",
});
}
// 模板转换页面查询规则列表
export function roleList(id) {
return request({
url: '/ActSuppliesConvert/ActSuppliesConvert/rolelist/' + id,
method: 'get'
})
url: "/ActSuppliesConvert/ActSuppliesConvert/rolelist/" + id,
method: "get",
});
}
// 模板转换页面查询规则详情列表
export function roleListid(id) {
return request({
url: '/ActSuppliesConvert/ActSuppliesConvert/rolelistid/' + id,
method: 'get'
})
url: "/ActSuppliesConvert/ActSuppliesConvert/rolelistid/" + id,
method: "get",
});
}
// 查询规则列表
export function listRule(query) {
return request({
url: '/system/ruleManagement/list',
method: 'get',
params: query
})
url: "/system/ruleManagement/list",
method: "get",
params: query,
});
}
// 查询规则详情详细
export function getRule(id) {
return request({
url: '/system/ruleManagement/' + id,
method: 'get'
})
url: "/system/ruleManagement/" + id,
method: "get",
});
}
// 新增规则详情
export function addRuleManagement(data) {
return request({
url: '/system/ruleManagement/add',
method: 'post',
data: data
})
url: "/system/ruleManagement/add",
method: "post",
data: data,
});
}
// 修改规则详情
export function updateRuleManagement(data) {
return request({
url: '/system/ruleManagement/edit',
method: 'put',
data: data
})
url: "/system/ruleManagement/edit",
method: "put",
data: data,
});
}
// 删除规则详情
export function delRuleManagement(id) {
return request({
url: '/system/ruleManagement/' + id,
method: 'delete'
})
url: "/system/ruleManagement/" + id,
method: "delete",
});
}
//查询六矿物料
export function materialList() {
return request({
url: '/ActSuppliesDetails/ActSuppliesDetails/materialList' ,
method: 'get'
})
url: "/ActSuppliesDetails/ActSuppliesDetails/materialList",
method: "get",
});
}
//查询材料编码
export function code(mine) {
const mineId = mine;
return request({
url: "/act/material/dateofid",
method: "post",
data: { mineId },
});
}
export function listMyluckyexcel(query) {
return request({
url: "/wages/excel",
method: "post",
headers: {
"Content-Type": "multipart/form-data",
},
data: query,
});
}
// // 查询模板列表
// export function listMyluckyexcel(query) {
......
......@@ -79,6 +79,14 @@ export function addInsertAccount1(data) {
data: data
})
}
//材料清洗
export function datahistoryContentCopy(data) {
return request({
url: '/act/read/data/historyContentCopy',
method: 'post',
data: data
})
}
//清洗通用凭证单
export function addInsertAccount2(data) {
......@@ -121,3 +129,4 @@ export function selectExport(id) {
method: 'get'
})
}
......@@ -33,7 +33,6 @@ export function DongMine(money, code, codess, CompositeTable, Department, classi
item.v.name = '';
item.index = item.r
});
for (let i = 0; i < money.length; i++) {
if (money[i].r == code[i].r) {
money[i].code = code[i].v.v;
......@@ -68,7 +67,7 @@ export function DongMine(money, code, codess, CompositeTable, Department, classi
});
//东欢坨矿的规则 如果部门为旧品和设备 并且他们的材料为支护用品和大型材料就把他们放到基本生产里
money.forEach((item) => {
if (item.remark == "旧品利用中心" || item.remark == "设备管理科") {
if (item.remark.includes("旧品利用中心") || item.remark.includes("设备管理科")) {
if (item.cc == 3 || item.cc == 2) {
item.v.name = "基本生产-原煤";
}
......@@ -158,7 +157,7 @@ export function DongMine(money, code, codess, CompositeTable, Department, classi
cellMap.set(key, money[i]);
}
}
duplicateData = Array.from(cellMap.values()).filter(item => item.v.v > 0 || parseInt(item.v.m) > 0);
duplicateData = Array.from(cellMap.values()).filter(item => Math.abs(item.v.v) > 0 || Math.abs(parseInt(item.v.m)) > 0);
duplicateData = duplicateData.map(item => {
return {
...item,
......@@ -170,15 +169,38 @@ export function DongMine(money, code, codess, CompositeTable, Department, classi
});
// 替换原始数据中的重复单元格数据
//金额所在列和行,去模板表中查找,如果行列一致则替换
for (let i = 0; i < duplicateData.length; i++) {
// // 对比 c 和 r 是否与 CompositeTable[0]["celldata"] 中相应对象相同
for (let k = 0; k < CompositeTable[0]["celldata"].length; k++) {
if (duplicateData[i].r === CompositeTable[0]["celldata"][k].r && duplicateData[i].c === CompositeTable[0]["celldata"][k].c) {
// 如果相同,则进行替换
CompositeTable[0]["celldata"][k] = duplicateData[i];
}
}
// for (let i = 0; i < duplicateData.length; i++) {
// // // 对比 c 和 r 是否与 CompositeTable[0]["celldata"] 中相应对象相同
// for (let k = 0; k < CompositeTable[0]["celldata"].length; k++) {
// if (duplicateData[i].r === CompositeTable[0]["celldata"][k].r && duplicateData[i].c === CompositeTable[0]["celldata"][k].c) {
// // 如果相同,则进行替换
// CompositeTable[0]["celldata"][k] = duplicateData[i];
// }
// }
// }
duplicateData.forEach(item => {
const Fusion = {
"r": '',
"c": '',
"v": {
"ct": {
"fa": "@",
"t": "s"
},
"fs": 8,
"ff": "微软雅黑",
"tb": 2,
"v": "",
"qp": 1,
"m": ""
}
};
Fusion.r=item.r
Fusion.c=item.c
Fusion.v.v=item.v.v
Fusion.v.m=item.v.v
CompositeTable[0]["celldata"].push(Fusion)
})
let duplicateDatas = {
duplicateData: duplicateData,
CompositeTable: CompositeTable
......
export function Linxi(names, Department, money, code, duplicateData, CompositeTable, codess, classify, DepartmentColumns, codecolumn) {
let results = ['加工修理']
let results = ['加工修理','6.制造费用固定资产修理','7.制造费用材料修理']
let insert = CompositeTable[0].celldata.filter(obj => obj.v.v == '5.其他业务成本')[0].r
for (let i = 0, k = 0; i < CompositeTable[0].celldata.length && k < results.length; i++) {
if (CompositeTable[0].celldata[i] && CompositeTable[0].celldata[i].r && CompositeTable[0].celldata[i].r >= insert + 2 && CompositeTable[0].celldata[i].r < insert + 4 && CompositeTable[0].celldata[i].c == 0) {
if (CompositeTable[0].celldata[i] && CompositeTable[0].celldata[i].r && CompositeTable[0].celldata[i].r >= insert+1 && CompositeTable[0].celldata[i].r < insert+4 && CompositeTable[0].celldata[i].c == 0) {
CompositeTable[0].celldata[i].v.v = results[k];
CompositeTable[0].celldata[i].v.m = results[k];
k++;
......@@ -32,7 +32,6 @@ export function Linxi(names, Department, money, code, duplicateData, CompositeTa
}
});
});
// 删除指定分类
const filteredClassifications = ["研发费用", "基金", "安全费用"];
money = money.filter(item => !filteredClassifications.includes(item.classify));
......@@ -45,14 +44,8 @@ export function Linxi(names, Department, money, code, duplicateData, CompositeTa
// 提取特定属性值相同的数据
const Electromechanical = "机电制造分公司";
const filteredMoney = money.filter(item => {
if (item.remark === Electromechanical) {
money.splice(money.indexOf(item), 1);
return true;
}
return false;
});
// 对比替换导入表和模板的列数
money = money.filter(item => item.remark !== Electromechanical);
// // 对比替换导入表和模板的列数
codess.forEach(code => {
let codeLength = String(code.code).length;
money.forEach(m => {
......@@ -153,9 +146,8 @@ export function Linxi(names, Department, money, code, duplicateData, CompositeTa
seen.set(key, obj);
}
});
seen.forEach(obj => {
if (obj.v.v > 0 || parseInt(obj.v.m) > 0) {
if (Math.abs(obj.v.v) > 0 || Math.abs(parseInt(obj.v.m)) > 0) {
duplicateData.push(obj);
}
});
......@@ -168,6 +160,29 @@ export function Linxi(names, Department, money, code, duplicateData, CompositeTa
}
};
});
duplicateData.forEach(item => {
const Fusion = {
"r": '',
"c": '',
"v": {
"ct": {
"fa": "@",
"t": "s"
},
"fs": 8,
"ff": "微软雅黑",
"tb": 2,
"v": "",
"qp": 1,
"m": ""
}
};
Fusion.r=item.r
Fusion.c=item.c
Fusion.v.v=item.v.v
Fusion.v.m=item.v.v
CompositeTable[0]["celldata"].push(Fusion)
})
//金额所在列和行,去模板表中查找,如果行列一致则替换
for (let i = 0; i < duplicateData.length; i++) {
// // 对比 c 和 r 是否与 CompositeTable[0]["celldata"] 中相应对象相同
......@@ -182,6 +197,5 @@ export function Linxi(names, Department, money, code, duplicateData, CompositeTa
duplicateData:duplicateData,
CompositeTable:CompositeTable
}
return duplicateDatas
}
\ No newline at end of file
This diff is collapsed.
export function Tangshan(money, c, name, CompositeTable, headRow, researchs) {
//money 总金额 c导入表所有数据,name 来源类别,CompositeTable 材料汇总表数据, headRow 数据行
let results = ['金属厂']
let insert = CompositeTable[0].celldata.filter(obj => obj.v.v == '7.代付单位(XXX单位)')[0].r
for (let i = 0, k = 0; i < CompositeTable[0].celldata.length && k < results.length; i++) {
if (CompositeTable[0].celldata[i] && CompositeTable[0].celldata[i].r && CompositeTable[0].celldata[i].r >= insert + 1 && CompositeTable[0].celldata[i].r < insert + 4 && CompositeTable[0].celldata[i].c == 0) {
CompositeTable[0].celldata[i].v.v = results[k];
CompositeTable[0].celldata[i].v.m = results[k];
k++;
}
}
// let insi = CompositeTable[0].celldata.filter(obj => obj.v.v == '6.研发支出')[0].r
// CompositeTable[0].celldata.forEach(item=>{
// if(item.r && item.r>insi){
// item.r=item.r+researchs.length
// }
// })
// for (let i = 0, k = 0; i < CompositeTable[0].celldata.length && k < researchs.length; i++) {
// if (CompositeTable[0].celldata[i] && CompositeTable[0].celldata[i].r && CompositeTable[0].celldata[i].r >= insi + 1 && CompositeTable[0].celldata[i].r < insert + 4 && CompositeTable[0].celldata[i].c == 0) {
// CompositeTable[0].celldata[i].v.v = researchs[k];
// CompositeTable[0].celldata[i].v.m = researchs[k];
// k++;
// }
// }
function findValueInArray(arr, value) {
for (let obj of arr) {
if (JSON.stringify(obj).includes(value)) {
return obj;
}
}
return null;
}
// money.forEach(obj => {
// researchs.forEach(item => {
// if (obj.r == item.r) {
// obj.research = item.v.v
// }
// })
// research.forEach(item => {
// if (obj.research == item.old) {
// if (item.new) {
// obj.research = item.new
// }
// }
// })
// })
let targetValue = "器材大类";
let resultObject = findValueInArray(c, targetValue);
let material = c.flat().filter(obj => obj.c && obj.c == resultObject.c && obj.r > headRow)
money.forEach(entry => {
entry.department = '';
entry.v.name = '';
entry.v.material = '';
entry.index = entry.r
});
// 匹配赋值
for (let i = 0; i < money.length; i++) {
if (money[i].r == name[i].r) {
money[i].v.name = name[i].v.v;
}
if (money[i].r == material[i].r) {
money[i].v.material = material[i].v.v;
}
}
// money = money.filter(obj => obj.v.name == "基本生产" || obj.v.name == "制造费用" || obj.v.name.includes('洗煤') || obj.v.name == "其他业务成本" || obj.v.name == "其他费用" || obj.v.name == "管理费用" || obj.v.name == "销售费用")
//对费用来源列和材料分类列进行处理
money.forEach(obj => {
if (!obj.v.material) {
obj.v.material = '其他材料'
}
if (obj.v.name == '基本生产' || obj.v.name == '制造费用') {
obj.v.name += '-原煤'
}
if (obj.v.name.includes('洗煤')) {
obj.v.name = '基本生产-洗煤'
}
if (obj.v.name == '其他业务成本') {
obj.v.name += '-厂区服务'
}
if (obj.v.name == '其他费用') {
obj.v.name = '代付单位(XXX单位)-金属厂'
}
// 如果不包含连字符,就在末尾添加一个连字符
if (obj.v.name.indexOf('-') === -1) {
obj.v.name += '-';
}
})
//材料分类列和汇总列数值一样的话,列数就一样
money.forEach(obj => {
CompositeTable[0].celldata.forEach(cell => {
if (obj.v.material == cell.v.v) {
obj.c = cell.c
}
})
})
money.forEach(item => {
if (item.v.name !== undefined) {
let index = item.v.name.indexOf("-");
if (index !== -1) {
let substrBeforeDash = item.v.name.slice(0, index);
let DepartColumns = CompositeTable[0]["celldata"].flat().filter(obj => {
if (obj.v && obj.v.v && typeof obj.v.v === 'string') {
return obj.v.v.includes(item.v.name.slice(0, index));
}
return false;
})[0];
if (DepartColumns && DepartColumns.r) {
let index = item.v.name.indexOf("-");
if (index !== -1) {
let substrAfterDash = item.v.name.slice(index + 1);
switch (substrAfterDash) {
case '':
item.r = DepartColumns.r;
break;
case '原煤':
item.r = DepartColumns.r + 1;
break;
case '洗煤':
item.r = DepartColumns.r + 2;
break;
case '选煤':
item.r = DepartColumns.r + 3;
break;
case '厂区服务':
item.r = DepartColumns.r + 1;
break;
case '加工修理':
item.r = DepartColumns.r + 4;
break;
case '金属厂':
item.r = DepartColumns.r + 1
default:
// 默认情况
}
}
}
}
}
});
// 同一个单元格,金额相加
let seen = new Map();
let duplicateData = []
money.forEach((obj) => {
let key = obj.r + ',' + obj.c;
if (seen.has(key)) {
let existingObj = seen.get(key);
existingObj.v.v = Number(existingObj.v.v) + Number(obj.v.v);
existingObj.v.m = existingObj.v.v.toString();
existingObj.index.push(obj.index);
} else {
obj.index = [obj.index];
seen.set(key, obj);
}
});
seen.forEach(obj => {
if (Math.abs(obj.v.v) > 0 || Math.abs(parseInt(obj.v.m)) > 0) {
duplicateData.push(obj);
}
});
duplicateData = duplicateData.map(item => {
return {
...item,
v: {
...item.v,
v: isNaN(item.v.v) ? item.v.v : Number(item.v.v).toFixed(2),
m: Number(item.v.m).toFixed(2)
}
};
});
duplicateData.forEach(item => {
const Fusion = {
"r": '',
"c": '',
"v": {
"ct": {
"fa": "@",
"t": "s"
},
"fs": 8,
"ff": "微软雅黑",
"tb": 2,
"v": "",
"qp": 1,
"m": ""
}
};
Fusion.r = item.r
Fusion.c = item.c
Fusion.v.v = item.v.v
Fusion.v.m = item.v.v
CompositeTable[0]["celldata"].push(Fusion)
})
let duplicateJSON = JSON.stringify(duplicateData)
duplicateJSON = JSON.parse(duplicateJSON)
duplicateJSON.forEach(item => {
if (item.r > 9) {
item.c = 10
}
})
let duplicateDatas = {
duplicateData: duplicateJSON,
CompositeTable: CompositeTable
}
return duplicateDatas
}
\ No newline at end of file
export function YunFei(money, Department, code, name, codess, newArrayhong) {
money.forEach(element => {
//对比编码之后的列数
element.coloumn = ''
//编码
element.code = ''
//类别名称
element.v.name = ''
//部门
element.v.Department = ''
element.row = ''
element.index = element.r
});
for (let i = 0; i < money.length; i++) {
//编码列
if (money[i].r == code[i].r) {
money[i].code = code[i].v.v;
}
//部门列
if (money[i].r == Department[i].r) {
money[i].v.Department = Department[i].v.v;
}
//来源分类列
if (money[i].r == name[i].r) {
money[i].v.name = name[i].v.v;
}
}
money = money.filter(obj => obj.v.name == '成本费用')
//如果部门里包含洗煤,就给他放到洗煤里
money.forEach((item) => {
if (item.v.Department.includes('洗煤')) {
item.v.Department = '洗煤厂'
}
});
codess.forEach(code => {
let codemin = String(code.codeMin).length;
money.forEach(m => {
let columnIdString = String(m.code);
let moneycode = columnIdString.substring(0, codemin);
if (moneycode <= String(code.codeMax) && moneycode>=String(code.codeMin)) {
m.coloumn = code.materialCodeType * 1;
}
});
});
money.forEach(obj => {
let matchedItems = newArrayhong[0]["celldata"].filter(item => item.v && item.v.v && item.v.v.includes(obj.v.Department));
if (matchedItems.length > 0) {
obj.row = matchedItems[matchedItems.length - 1].r;
} else {
obj.row = '';
}
});
for (let k = 0; k < money.length; k++) {
let columnIdString = String(money[k].code);
let Officeexpenses = columnIdString.substring(0, 4)
if (Officeexpenses == '6601' && money[k].row < 17) {
money[k].coloumn = 9
}
}
money.forEach((item) => {
item.c = item.coloumn ? item.coloumn * 1 : 10;
item.r = item.row ? item.row * 1 : ''
});
// 同一个单元格,金额相加
let seen = new Map();
let duplicateData = []
money.forEach((obj) => {
let key = obj.r + ',' + obj.c;
if (seen.has(key)) {
let existingObj = seen.get(key);
existingObj.v.v = Number(existingObj.v.v) + Number(obj.v.v);
existingObj.index.push(obj.index);
} else {
obj.index = [obj.index];
seen.set(key, obj);
}
});
seen.forEach(obj => {
if (Math.abs(obj.v.v) > 0 || Math.abs(parseInt(obj.v.m)) > 0) {
duplicateData.push(obj);
}
});
duplicateData = duplicateData.map(item => {
return {
...item,
v: {
...item.v,
v: isNaN(item.v.v) ? item.v.v : Number(item.v.v).toFixed(2),
m: Math.abs(isNaN(item.v.v) ? item.v.v : Number(item.v.v).toFixed(2)),
}
};
});
// console.log(duplicateData)
// duplicateData.forEach(item => {
// const Fusion = {
// "r": '',
// "c": '',
// "v": {
// "ct": {
// "fa": "@",
// "t": "s"
// },
// "fs": 8,
// "ff": "微软雅黑",
// "tb": 2,
// "v": "",
// "qp": 1,
// "m": ""
// }
// };
// Fusion.r=item.r
// Fusion.c=item.c
// Fusion.v.v=item.v.v
// Fusion.v.m=item.v.v
// newArrayhong[0]["celldata"].push(Fusion)
// })
// 替换原始数据中的重复单元格数据
//金额所在列和行,去模板表中查找,如果行列一致则替换
for (let i = 0; i < duplicateData.length; i++) {
// // 对比 c 和 r 是否与 newArrayhong[0]["celldata"] 中相应对象相同
for (let k = 0; k < newArrayhong[0]["celldata"].length; k++) {
if (duplicateData[i].r === newArrayhong[0]["celldata"][k].r && duplicateData[i].c === newArrayhong[0]["celldata"][k].c) {
// 如果相同,则进行替换
newArrayhong[0]["celldata"][k] = duplicateData[i];
}
}
}
let matchedItems = newArrayhong[0]["celldata"].filter(item => item.v && (typeof item.v.v === 'string' && item.v.v.includes('办公费用') || typeof item.v.m === 'string' && item.v.m.includes('办公费用')))[0].c;
let other = newArrayhong[0]["celldata"].filter(item => item.v && (typeof item.v.v === 'string' && item.v.v == '其他材料' || typeof item.v.m === 'string' && item.v.m == '其他材料'))[0].c;
let duplicateJSON = JSON.stringify(duplicateData)
duplicateJSON = JSON.parse(duplicateJSON)
duplicateJSON.forEach(obj => {
if (obj.c === matchedItems) {
obj.v.name = '管理费用-';
obj.c = other;
} else if (obj.v.Department === '洗煤厂') {
obj.v.name = '制造费用-选混煤';
obj.c=other
} else {
obj.v.name = '基本生产-原煤';
}
});
let duplicateDatas = {
duplicateData: duplicateJSON,
CompositeTable: newArrayhong
}
return duplicateDatas
}
\ No newline at end of file
import { cos } from "mathjs";
export function ZhongRun(Department, money, materianame, name, CompositeTable, quantity, model, Unitprice, code, units) {
money.forEach(element => {
//材料名称
element.materianame = ''
element.index = element.r
//部门
element.v.Department = ''
//数量
element.quantity = ''
//型号
element.model = ''
//单价
element.Unitprice = ''
element.code = ''
element.v.name = ''
element.units = ''
});
for (let i = 0; i < money.length; i++) {
//materianame 材料名称
if (money[i].r == materianame[i].r) {
money[i].materianame = materianame[i].v.v;
}
//部门列
if (money[i].r == Department[i].r) {
money[i].v.Department = Department[i].v.v;
}
//来源分类列
if (money[i].r == name[i].r) {
money[i].v.name = name[i].v.v;
}
if (money[i].r == quantity[i].r) {
money[i].quantity = quantity[i].v.v;
}
if (money[i].r == model[i].r) {
money[i].model = model[i].v.v;
}
if (money[i].r == Unitprice[i].r) {
money[i].Unitprice = Unitprice[i].v.v;
}
if (money[i].r == code[i].r) {
money[i].code = code[i].v.v;
}
if (money[i].r == units[i].r) {
money[i].units = units[i].v.v;
}
}
let moneys = JSON.stringify(money)
let Secondcoloumn = money.filter(item => item.v && item.v.Department == '净化分厂' && (item.materianame == '硫酸' || item.materianame == '洗油'))
const SecondHalf = CompositeTable[0].celldata.flat().filter(item => item.c && item.c > 12 && item.v.v)
const Secondrow = CompositeTable[0].celldata.flat().filter(item => item.r && item.r > 40 && item.v.v && item.c == 0)
money.forEach(item => {
SecondHalf.forEach(obj => {
if (obj.v.v == item.v.Department) {
item.r = obj.r
}
if (obj.v.v.includes(item.v.name)) {
item.c = obj.c
}
})
})
let seen = new Map()
let duplicateData = []
money.forEach((obj) => {
let key = obj.r + ',' + obj.c;
if (seen.has(key)) {
let existingObj = seen.get(key);
existingObj.v.v = Number(existingObj.v.v) + Number(obj.v.v);
existingObj.v.m = existingObj.v.v.toString();
existingObj.index.push(obj.index);
} else {
obj.index = [obj.index];
seen.set(key, obj);
}
});
seen.forEach(obj => {
if (Math.abs(obj.v.v) > 0 || parseInt(obj.v.m) > 0) {
duplicateData.push(obj);
}
});
duplicateData = duplicateData.map(item => {
return {
...item,
v: {
...item.v,
v: isNaN(item.v.v) ? item.v.v : Number(item.v.v).toFixed(2),
m: Number(item.v.m).toFixed(2)
}
};
});
for (let i = 0; i < duplicateData.length; i++) {
// // 对比 c 和 r 是否与 CompositeTable[0]["celldata"] 中相应对象相同
for (let k = 0; k < CompositeTable[0]["celldata"].length; k++) {
if (duplicateData[i].r === CompositeTable[0]["celldata"][k].r && duplicateData[i].c === CompositeTable[0]["celldata"][k].c) {
// 如果相同,则进行替换
CompositeTable[0]["celldata"][k] = duplicateData[i];
}
}
}
function mergeAndSum(data) {
// 创建一个空对象用于存储合并后的结果
let mergedData = {};
// 遍历原始数据数组
data.forEach(item => {
// 生成合并的键,即使用指定属性的值拼接起来作为键
let key = `${item.v.Department}-${item.v.name}-${item.materianame}-${item.model}-${item.Unitprice}`;
// 如果已经存在该键,则将 v.v 和 quantity 相加
if (mergedData[key]) {
mergedData[key].v.v = (parseFloat(mergedData[key].v.v) + parseFloat(item.v.v)).toFixed(2);
mergedData[key].quantity = parseInt(mergedData[key].quantity) + parseInt(item.quantity);
} else {
// 否则,将当前条目添加到 mergedData 中
mergedData[key] = {
...item,
v: { ...item.v }
};
}
});
// 将合并后的结果对象转换为数组并返回
return Object.values(mergedData);
}
// 调用函数进行合并并相加
let mergedData = mergeAndSum(JSON.parse(moneys));
// 输出结果
mergedData = mergedData.filter(obj => obj.materianame && obj.materianame == '液体氢氧化钠')
mergedData.forEach(item => {
item.index = true
})
Secondrow.forEach(item => {
let matched = false;
mergedData.forEach(obj => {
if (item.v.v === obj.v.Department && !matched && obj.index) {
obj.r = item.r;
matched = true;
obj.index = false
}
});
});
// 创建 Fusion 对象的函数
function createFusionObject(row, item, column) {
return {
"r": row,
"c": column,
"v": {
"ct": {
"fa": "@",
"t": "g/n"
},
"fs": 8,
"ff": "微软雅黑",
"tb": 2,
"v": item,
"qp": 1,
"m": item
}
};
}
// 遍历 mergedData,生成所有 Fusion 对象
const fusionList = mergedData.map(item => [
createFusionObject(item.r, item.code, 4),
createFusionObject(item.r, item.materianame, 5),
createFusionObject(item.r, item.model, 6),
createFusionObject(item.r, item.units, 7),
createFusionObject(item.r, item.quantity, 8),
createFusionObject(item.r, item.Unitprice, 9),
createFusionObject(item.r, item.v.v, 10)
]);
const celldata = CompositeTable[0]["celldata"]
// 将所有 Fusion 对象推送到 CompositeTable[0]["celldata"]
fusionList.forEach(fusionArray => {
fusionArray.forEach(fusion => celldata.push(fusion));
});
Secondcoloumn.forEach(item => {
if (item.materianame == '硫酸') {
item.materianame = '净化分厂硫酸'
}
if (item.materianame == '洗油') {
item.materianame = '净化分厂洗油'
}
})
Secondcoloumn.forEach(item => {
CompositeTable[0].celldata.forEach(obj => {
if (obj.v && obj.v.v && obj.v.v.includes(item.materianame)) {
item.r = obj.r
}
if (obj.v && obj.v.v && obj.v.v.includes(item.v.name)) {
item.c = obj.c
}
})
})
let seenS = new Map()
let duplicateDataS = []
Secondcoloumn.forEach((obj) => {
let key = obj.r + ',' + obj.c;
if (seenS.has(key)) {
let existingObj = seenS.get(key);
existingObj.v.v = Number(existingObj.v.v) + Number(obj.v.v);
existingObj.v.m = existingObj.v.v.toString();
existingObj.index.push(obj.index);
} else {
obj.index = [obj.index];
seenS.set(key, obj);
}
});
seenS.forEach(obj => {
if (Math.abs(obj.v.v) > 0 || parseInt(obj.v.m) > 0) {
duplicateDataS.push(obj);
}
});
duplicateDataS = duplicateDataS.map(item => {
return {
...item,
v: {
...item.v,
v: isNaN(item.v.v) ? item.v.v : Number(item.v.v).toFixed(2),
m: Number(item.v.m).toFixed(2)
}
};
});
for (let i = 0; i < duplicateDataS.length; i++) {
// // 对比 c 和 r 是否与 CompositeTable[0]["celldata"] 中相应对象相同
for (let k = 0; k < CompositeTable[0]["celldata"].length; k++) {
if (duplicateDataS[i].r === CompositeTable[0]["celldata"][k].r && duplicateDataS[i].c === CompositeTable[0]["celldata"][k].c) {
// 如果相同,则进行替换
CompositeTable[0]["celldata"][k] = duplicateDataS[i];
}
}
}
let duplicateDatas = {
duplicateData: duplicateData,
CompositeTable: CompositeTable
}
return duplicateDatas
}
\ No newline at end of file
This diff is collapsed.
......@@ -30,9 +30,8 @@ export function danMine(newArray,c,Department,money,code,classify,codess,name,he
return (matchingCode && matchingRemark && matchingFyly);
});
money.forEach((item) => {
if (item.Department.startsWith('物管科')) {
if (item.Department.includes('物管科')) {
item.Department = '物管科';
}
if (item.Department.endsWith('储运科')) {
......@@ -107,7 +106,7 @@ export function danMine(newArray,c,Department,money,code,classify,codess,name,he
}
}
for (let obj of seen.values()) {
if (obj.v.v > 0 || parseInt(obj.v.m) > 0) {
if (Math.abs(obj.v.v) > 0 || Math.abs(parseInt(obj.v.m)) > 0) {
duplicateData.push(obj);
}
}
......
......@@ -23,21 +23,29 @@ export function fanMine(money, codess, code, CompositeTable, name) {
money = money.filter(obj => obj.code); // 删除 m.code 为空的元素
//对比编码
codess.forEach(code => {
let codeLength = String(code.code).length;
let codemin = String(code.codeMin).length;
money.forEach(m => {
let columnIdString = String(m.code);
let idToMatch = columnIdString.substring(0, codeLength);
if (idToMatch === String(code.code).substring(0, codeLength)) {
m.coloumn = code.oneLevel * 1;
let moneycode = columnIdString.substring(0, codemin);
if (moneycode <= String(code.codeMax) && moneycode>=String(code.codeMin) && (m.v.name.includes('洗煤')? '02'==code.varietyOfCoal : '01'==code.varietyOfCoal )) {
m.coloumn = code.materialCodeType * 1;
}
});
});
money.forEach(item => {
// 检查v.name是否包含连字符
if (item.v.name.indexOf('-') === -1) {
// 如果不包含连字符,就在末尾添加一个连字符
item.v.name += '-';
if ((item.code.startsWith('64') ||item.code.startsWith('65')) && item.v.name.includes('洗煤')) {
item.v.name = '制造费用-洗煤'
}
})
money.forEach(item => {
let categories = item.v.name;
if (categories.includes('--') || categories.includes('-')) {
categories = categories.replace(/--/g, '-');
} else {
categories += '-';
}
item.v.name = categories;
return item;
});
money.forEach(item => {
if (item.v.name !== undefined) {
......@@ -103,7 +111,7 @@ export function fanMine(money, codess, code, CompositeTable, name) {
});
seen.forEach(obj => {
if (obj.v.v > 0 || parseInt(obj.v.m) > 0) {
if (Math.abs(obj.v.v) > 0 || Math.abs(parseInt(obj.v.m)) > 0) {
duplicateData.push(obj);
}
});
......@@ -117,6 +125,7 @@ export function fanMine(money, codess, code, CompositeTable, name) {
}
};
});
// 替换原始数据中的重复单元格数据
//金额所在列和行,去模板表中查找,如果行列一致则替换
for (let i = 0; i < duplicateData.length; i++) {
......@@ -128,7 +137,7 @@ export function fanMine(money, codess, code, CompositeTable, name) {
}
}
}
duplicateData=duplicateData.filter(obj=>obj.row!=='')
duplicateData = duplicateData.filter(obj => obj.row !== '')
let duplicateDatas = {
duplicateData: duplicateData,
CompositeTable: CompositeTable
......
......@@ -27,7 +27,7 @@ export function hongMine(money, Department, code, name, codess, newArrayhong) {
money[i].v.name = name[i].v.v;
}
}
console.log(money)
money = money.filter(obj => obj.v.name == '成本费用')
//如果部门里包含洗煤,就给他放到洗煤里
money.forEach((item) => {
......@@ -36,21 +36,16 @@ export function hongMine(money, Department, code, name, codess, newArrayhong) {
}
});
for (let i = 0; i < codess.length; i++) {
let codeLength = String(codess[i].code).length;
let codeToCompare = String(codess[i].code).substring(0, codeLength);
for (let k = 0; k < money.length; k++) {
let columnIdString = String(money[k].code);
let idToMatch = columnIdString.substring(0, codeLength);
if (idToMatch === codeToCompare) {
if (codess[i].oneLevel == 9) {
codess[i].oneLevel = 10
}
money[k].coloumn = codess[i].oneLevel * 1
}
codess.forEach(code => {
let codemin = String(code.codeMin).length;
money.forEach(m => {
let columnIdString = String(m.code);
let moneycode = columnIdString.substring(0, codemin);
if (moneycode <= String(code.codeMax) && moneycode>=String(code.codeMin)) {
m.coloumn = code.materialCodeType * 1;
}
}
});
});
money.forEach(obj => {
let matchedItems = newArrayhong[0]["celldata"].filter(item => item.v && item.v.v && item.v.v.includes(obj.v.Department));
......@@ -80,7 +75,6 @@ export function hongMine(money, Department, code, name, codess, newArrayhong) {
if (seen.has(key)) {
let existingObj = seen.get(key);
existingObj.v.v = Number(existingObj.v.v) + Number(obj.v.v);
existingObj.v.m = existingObj.v.v.toString();
existingObj.index.push(obj.index);
} else {
obj.index = [obj.index];
......@@ -89,7 +83,7 @@ export function hongMine(money, Department, code, name, codess, newArrayhong) {
});
seen.forEach(obj => {
if (obj.v.v > 0 || parseInt(obj.v.m) > 0) {
if (Math.abs(obj.v.v) > 0 || Math.abs(parseInt(obj.v.m)) > 0) {
duplicateData.push(obj);
}
});
......@@ -99,12 +93,36 @@ export function hongMine(money, Department, code, name, codess, newArrayhong) {
v: {
...item.v,
v: isNaN(item.v.v) ? item.v.v : Number(item.v.v).toFixed(2),
m: Number(item.v.m).toFixed(2)
m: Math.abs(isNaN(item.v.v) ? item.v.v : Number(item.v.v).toFixed(2)),
}
};
});
// duplicateData.forEach(item => {
// const Fusion = {
// "r": '',
// "c": '',
// "v": {
// "ct": {
// "fa": "@",
// "t": "s"
// },
// "fs": 8,
// "ff": "微软雅黑",
// "tb": 2,
// "v": "",
// "qp": 1,
// "m": ""
// }
// };
// Fusion.r=item.r
// Fusion.c=item.c
// Fusion.v.v=item.v.v
// Fusion.v.m=item.v.v
// newArrayhong[0]["celldata"].push(Fusion)
// })
// 替换原始数据中的重复单元格数据
//金额所在列和行,去模板表中查找,如果行列一致则替换
// 金额所在列和行,去模板表中查找,如果行列一致则替换
for (let i = 0; i < duplicateData.length; i++) {
// // 对比 c 和 r 是否与 newArrayhong[0]["celldata"] 中相应对象相同
for (let k = 0; k < newArrayhong[0]["celldata"].length; k++) {
......
export function lvMine(CompositeTable,cjson,codess) {
export function lvMine(CompositeTable,cjson,codess,code) {
let results = ['10.安全费用', '11.研究费用', '12.维简及井巷费']
//先把安全费用 研发什么的插入到成本材料表中
let insert=CompositeTable[0].celldata.filter(obj=>obj.v.v=='9.专项储备')[0].r
......@@ -13,10 +13,12 @@ export function lvMine(CompositeTable,cjson,codess) {
// 使用 filter 方法筛选 r 值为 1 的对象,得到贷款信息
const loan = c.filter(obj => obj.r === 1);
// 使用 filter 方法筛选 r 值为 0 的对象,得到表头信息
const head = c.filter(obj => obj.r === 0);
let head = c.filter(obj => obj.r === 0);
// 找出空白列
const mincolumn = head.filter(obj => !obj.v.v);
let mincolumn = head.filter(obj => !obj.v.v);
// 获取最大列
if(mincolumn.length!==0){
const maxcolumn = loan[loan.length - 1].c;
// 遍历空白列,根据表头信息进行填充
for (let k = 0; k < mincolumn.length; k++) {
......@@ -37,6 +39,9 @@ export function lvMine(CompositeTable,cjson,codess) {
matchingCell.v.v = min.v.v;
}
});
}else{
mincolumn=head.filter(item=>item.c>=12)
}
// 获取最小列
const min = mincolumn[0].c - 1;
// 使用 filter 方法筛选包含有效值的对象
......@@ -59,8 +64,8 @@ export function lvMine(CompositeTable,cjson,codess) {
obj.category = max.find(c => c.c === coulumn && c.r === 1)?.v.v;
}
});
// 输出整理后的表格数据
const code = max.filter(obj => obj.r >= 2 && obj.c == 2);
// // 输出整理后的表格数据
// const code = max.filter(obj => obj.r >= 2 && obj.c == 0);
// 获取金额列
const moneycolumn = max.filter(obj => obj.r >= 2 && obj.c >= min);
moneycolumn.forEach(money => {
......@@ -69,18 +74,9 @@ export function lvMine(CompositeTable,cjson,codess) {
money.code = matchingCode.v.v;
}
});
const money = moneycolumn.filter(obj => (obj.category.includes('单价') || obj.category.includes('数量')));
// 计算总金额
const moneys=money.filter(obj=>obj.category=='出库单价')
moneys.forEach(item=>{
item.v.quantity=money.filter(obj=>obj.r==item.r&&obj.c==item.c-1)[0].v.v
if(item.v.v && item.v.quantity){
item.v.v=item.v.v*item.v.quantity
item.v.m=item.v.v
}else{
this.$message.error('请仔细检查所导入表');
}
})
const moneys=moneycolumn.filter(obj=>obj.category=='出库金额')
// 对 部门分类 进行处理
moneys.forEach(item => {
let categories = item.v.name;
......@@ -94,6 +90,7 @@ export function lvMine(CompositeTable,cjson,codess) {
});
moneys.forEach(item => {
item.index = item.r
item.coloumn=item.c
if (item.v.name !== undefined) {
let index = item.v.name.indexOf("-");
if (index !== -1) {
......@@ -133,30 +130,32 @@ export function lvMine(CompositeTable,cjson,codess) {
}
}
});
codess.forEach(codeItem => {
let codeLength = String(codeItem.code).length;
let codeToCompare = String(codeItem.code).substring(0, codeLength);
let matchingItem = moneys.find(duplicateItem => String(duplicateItem.code).startsWith(codeToCompare));
if (matchingItem) {
matchingItem.cc = codeItem.oneLevel * 1;
codess.forEach(code => {
let codemin = String(code.codeMin).length;
moneys.forEach(m => {
let columnIdString = String(m.code);
let moneycode = columnIdString.substring(0, codemin);
if (moneycode <= String(code.codeMax) && moneycode>=String(code.codeMin) &&( m.v.name.includes('洗煤')? '02'==code.varietyOfCoal : '01'==code.varietyOfCoal) ) {
m.cc = code.materialCodeType * 1;
}
});
});
moneys.forEach((item) => {
item.c = item.cc ? item.cc * 1 : 10;
if(item.r>8){
if(item.r>8 ||item.code.startsWith('1521')){
item.c=10
}
});
//同一个单元格的数据 金额相加。
// 同一个单元格的数据 金额相加。
let duplicateData = [];
let seen = new Map();
// 根据行列信息合并重复数据并记录索引
// // 根据行列信息合并重复数据并记录索引
for (let obj of moneys) {
let key = obj.r + ',' + obj.c;
if (seen.has(key)) {
let existingObj = seen.get(key);
existingObj.v.v += obj.v.v;
existingObj.v.m = (parseInt(existingObj.v.m) + parseInt(obj.v.m)).toString();
existingObj.v.v = parseFloat(existingObj.v.v) + parseFloat(obj.v.v);
existingObj.v.m = (parseInt(existingObj.v.v) + parseInt(obj.v.v)).toString();
existingObj.index.push(obj.index);
} else {
obj.index = [obj.index];
......@@ -165,7 +164,7 @@ export function lvMine(CompositeTable,cjson,codess) {
}
// 将合并后的数据放入 duplicateData 数组
for (let obj of seen.values()) {
if (obj.v.v > 0 || parseInt(obj.v.m) > 0) {
if (Math.abs(obj.v.v) > 0 || Math.abs(parseInt(obj.v.m)) > 0) {
duplicateData.push(obj);
}
}
......@@ -178,6 +177,7 @@ export function lvMine(CompositeTable,cjson,codess) {
}
};
});
duplicateData=duplicateData.filter(item=> !item.v.name.includes('贸易部'))
// 替换金额所在列和行相同的模板表中的数据
//金额所在列和行,去模板表中查找,如果行列一致则替换
for (let i = 0; i < duplicateData.length; i++) {
......
This diff is collapsed.
<script>
export default {
created() {
......
......@@ -6,7 +6,7 @@
<el-select v-model="selectedOption" ref="mySelect" size="mini" @change="handleOptionChange($event, {
name: '东欢坨矿',
id: '010102'
}, '010102')" filterable
}, '010102','1257')" filterable
placeholder="请选择您要查看的模板">
<el-option v-for="item in depss" :key="item.id" :label="item.templateName" :value="item.id"
:disabled="item.disabled">
......
......@@ -6,7 +6,7 @@
<el-select v-model="selectedOption" ref="mySelect" size="mini" @change="handleOptionChange($event, {
name: '林西矿',
id: '011704'
}, '011704')" filterable placeholder="请选择您要查看的模板">
}, '011704','1257')" filterable placeholder="请选择您要查看的模板">
<el-option v-for="item in depss" :key="item.id" :label="item.templateName" :value="item.id"
:disabled="item.disabled">
</el-option>
......
......@@ -6,7 +6,7 @@
<el-select v-model="selectedOption" ref="mySelect" size="mini" @change="handleOptionChange($event, {
name: '吕矿',
id: '011702'
},'011702')" filterable
},'011702','1257')" filterable
placeholder="请选择您要查看的模板">
<el-option v-for="item in depss" :key="item.id" :label="item.templateName" :value="item.id"
:disabled="item.disabled">
......
......@@ -5,7 +5,7 @@
<el-select v-model="selectedOption" ref="mySelect" size="mini" @change="handleOptionChange($event, {
name: '钱家营',
id: '010105'
}, '010105')" filterable
}, '010105','1257')" filterable
placeholder="请选择您要查看的模板">
<el-option v-for="item in depss" :key="item.id" :label="item.templateName" :value="item.id"
:disabled="item.disabled">
......
......@@ -5,7 +5,7 @@
<el-select v-model="selectedOption" ref="mySelect" size="mini" @change="handleOptionChange($event, {
name: '唐山矿',
id: '010101'
}, '010101')" filterable placeholder="请选择您要查看的模板">
}, '010101', '1257')" filterable placeholder="请选择您要查看的模板">
<el-option v-for="item in depss" :key="item.id" :label="item.templateName" :value="item.id"
:disabled="item.disabled">
</el-option>
......@@ -31,8 +31,8 @@
<el-button type="warning" plain icon="el-icon-upload2" size="mini" @click="handleExport">导出</el-button>
</el-col>
<el-col :span="1.5">
<el-upload type="file" name="file" ref="upload" :before-upload="handleFileChange" action='' accept='.xlsx'
:limit="1" :file-list="fileList" :disabled="disableNextButton" :show-file-list=false>
<el-upload type="file" name="file" ref="upload" :before-upload="handleFileChange" action=''
accept='.xlsx' :limit="1" :file-list="fileList" :disabled="disableNextButton" :show-file-list=false>
<el-button plain size="mini" icon="el-icon-download" type="primary" :disabled="disableNextButton"
@click="rulesdate">导入</el-button>
</el-upload>
......@@ -40,8 +40,10 @@
</el-col>
</el-row>
<!-- luckysheet容器 -->
<div id="luckysheet" style="margin: 0px; padding: 0px; position: absolute; width: 100%; height:80vh; z-index: 0">
<div id="luckysheet"
style="margin: 0px; padding: 0px; position: absolute; width: 100%; height:80vh; z-index: 0">
</div>
<div v-if="showMask" class="mask">
<div class="loading-spinner"></div>
......
<template>
<div class="app-container">
<el-form ref="queryForm" size="small" :inline="true" label-width="68px">
<el-form-item label="模板" prop="name">
<el-select v-model="selectedOption" ref="mySelect" size="mini" @change="handleOptionChange($event, {
name: '云飞',
id: '011504'
}, '011504','1268')" filterable placeholder="请选择您要查看的模板">
<el-option v-for="item in depss" :key="item.id" :label="item.templateName" :value="item.id"
:disabled="item.disabled">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="清洗规则" prop="roleid">
<el-select v-model="selectedRule" ref="mySelect" size="mini" @change="handleRuleChange" filterable
placeholder="请选择您要查看的规则">
<el-option v-for="iem in luckyrule" :key="iem.id" :label="iem.roleName" :value="iem.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="时间" prop="date">
<el-date-picker @change="handledateChange" v-model="date" type="month" placeholder="选择月">
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="warning" plain icon="el-icon-upload2" size="mini" @click="handleExport">导出</el-button>
</el-col>
<el-col :span="1.5">
<el-upload type="file" name="file" ref="upload" :before-upload="handleFileChange" action='' accept='.xlsx'
:limit="1" :file-list="fileList" :disabled="disableNextButton" :show-file-list=false>
<el-button plain size="mini" icon="el-icon-download" type="primary" :disabled="disableNextButton"
@click="rulesdate">导入</el-button>
</el-upload>
<el-button :plain="true" style="display: none;" @click="open4">错误</el-button>
</el-col>
</el-row>
<!-- luckysheet容器 -->
<div id="luckysheet" style="margin: 0px; padding: 0px; position: absolute; width: 100%; height:80vh; z-index: 0">
</div>
<div v-if="showMask" class="mask">
<div class="loading-spinner"></div>
</div>
</div>
</template>
<script src="@/conversion/conversion"></script>
<style scoped src="./actsuppMine.css"></style>
<template>
<div class="app-container">
<el-form ref="queryForm" size="small" :inline="true" label-width="68px">
<el-form-item label="模板" prop="name">
<el-select v-model="selectedOption" ref="mySelect" size="mini" @change="handleOptionChange($event, {
name: '中润',
id: '011706',
}, '011706','1269')" filterable
placeholder="请选择您要查看的模板">
<el-option v-for="item in depss" :key="item.id" :label="item.templateName" :value="item.id"
:disabled="item.disabled">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="清洗规则" prop="roleid">
<el-select v-model="selectedRule" ref="mySelect" size="mini" @change="handleRuleChange" filterable
placeholder="请选择您要查看的规则">
<el-option v-for="iem in luckyrule" :key="iem.id" :label="iem.roleName" :value="iem.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="时间" prop="date">
<el-date-picker @change="handledateChange" v-model="date" type="month" placeholder="选择月">
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="warning" plain icon="el-icon-upload2" size="mini" @click="handleExport">导出</el-button>
</el-col>
<el-col :span="1.5">
<el-upload type="file" name="file" ref="upload" :before-upload="handleFileChange" action='' accept='.xlsx'
:limit="1" :file-list="fileList" :disabled="disableNextButton" :show-file-list=false>
<el-button plain size="mini" icon="el-icon-download" type="primary" :disabled="disableNextButton"
@click="rulesdate">导入</el-button>
</el-upload>
<el-button :plain="true" style="display: none;" @click="open4">错误</el-button>
</el-col>
</el-row>
<!-- luckysheet容器 -->
<div id="luckysheet" style="margin: 0px; padding: 0px; position: absolute; width: 100%; height:80vh; z-index: 0">
</div>
<div v-if="showMask" class="mask">
<div class="loading-spinner"></div>
</div>
</div>
</template>
<script src="@/conversion/conversion"></script>
<style scoped src="./actsuppMine.css"></style>
......@@ -6,7 +6,7 @@
<el-select v-model="selectedOption" ref="mySelect" size="mini" @change="handleOptionChange($event, {
name: '范矿',
id: '011701'
}, '011701')" filterable
}, '011701','1257')" filterable
placeholder="请选择您要查看的模板">
<el-option v-for="item in depss" :key="item.id" :label="item.templateName" :value="item.id"
:disabled="item.disabled">
......
......@@ -5,7 +5,7 @@
<el-select v-model="selectedOption" ref="mySelect" size="mini" @change="handleOptionChange($event, {
name: '宏丰',
id: '011502'
}, '011502')" filterable placeholder="请选择您要查看的模板">
}, '011502','1268')" filterable placeholder="请选择您要查看的模板">
<el-option v-for="item in depss" :key="item.id" :label="item.templateName" :value="item.id"
:disabled="item.disabled">
</el-option>
......
......@@ -6,7 +6,7 @@
<el-select v-model="selectedOption" ref="mySelect" size="mini" @change="handleOptionChange($event, {
name: '单侯煤矿',
id: '011204'
}, '011204')" filterable placeholder="请选择您要查看的模板">
}, '011204','1264')" filterable placeholder="请选择您要查看的模板">
<el-option v-for="item in depss" :key="item.id" :label="item.templateName" :value="item.id"
:disabled="item.disabled">
</el-option>
......
<template>
<div class="app-container">
<el-form ref="queryForm" size="small" :inline="true" label-width="68px">
<el-form-item label="模板" prop="name">
<el-select v-model="selectedOption" ref="mySelect" size="mini" filterable placeholder="请选择您要查看的模板"
@change="handleOptionChange">
<el-option v-for="item in depss" :key="item.id" :label="item.templateName" :value="item.id"
:disabled="item.disabled">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="时间" prop="wageMonth">
<el-date-picker v-model="wageMonth" value-format="yyyy-MM" type="month" placeholder="选择月">
</el-date-picker>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="warning" plain icon="el-icon-upload2" size="mini" @click="handleExport">导出</el-button>
</el-col>
<el-col :span="1.5">
<el-upload type="file" name="file" ref="upload" :headers="{ 'Content-Type': 'multipart/form-data' }"
:before-upload="handleFileChange" action='' accept='.xlsx' :limit="3" multiple :file-list="fileList"
:show-file-list="false" :on-success="handleSuccess">
<el-button plain :disabled="!wageMonth || !jsondata" size="mini" icon="el-icon-download" type="primary">导入</el-button> </el-upload>
<el-button :plain="true" style="display: none;" @click="open4">错误</el-button>
</el-col>
</el-row>
<el-dialog title="取数规则" :visible.sync="dialogTableVisible" :close-on-click-modal="false" :show-close="false">
<el-form label-width="120px">
<el-form-item v-for="(item, index) in jsonhead" :key="index" :label="`${item.label}`">
<el-input v-model="item.value"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="initData()">确 定</el-button>
</span>
</el-dialog>
<!-- luckysheet容器 -->
<div id="luckysheet"
style="margin: 0px; padding: 0px; position: absolute; width: 100%; height:80vh; z-index: 0">
</div>
<div v-if="showMask" class="mask">
<div class="loading-spinner"></div>
</div>
</div>
</template>
<script src="@/Wages/convers"></script>
<style scoped src="./Wages.css"></style>
.mask {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.5);
display: flex;
justify-content: center;
align-items: center;
}
.loading-spinner {
/* 添加你的加载动画样式 */
width: 40px;
height: 40px;
border-radius: 50%;
border: 4px solid #f3f3f3;
border-top: 4px solid #3498db;
animation: spin 1s linear infinite;
}
@keyframes spin {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
\ No newline at end of file
......@@ -33,9 +33,10 @@
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="historydataList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column type="selection" width="75" align="center" />
<el-table-column label="序号" align="center" prop="id" />
<el-table-column label="模板" align="center" prop="templateName" />
<el-table-column label="所属矿" align="center" prop="mining" />
<el-table-column label="标题" align="center" prop="historyName" />
<el-table-column label="导入导出" align="center" prop="identifyingCode">
<template slot-scope="scope">
......@@ -131,6 +132,19 @@ export default {
name: '钱家营矿',
id: '010105'
},
{
name: '宏丰',
id: '011502'
},
{
name: '云飞',
id: '011504'
},
{
name: '中润',
id: '011706'
},
],
positionValue: 'static',
newArray: '',
......@@ -192,13 +206,13 @@ export default {
getList() {
this.loading = true;
listHistorydata(this.queryParams).then(response => {
response.rows.forEach(item=>{
item.mining= this.miningValue.filter(obj => obj.id ==item.mining)[0].name
})
this.historydataList = response.rows;
this.total = response.total;
this.loading = false;
});
},
// 取消按钮
......@@ -283,7 +297,6 @@ export default {
this.form = response.data;
this.open = true;
this.title = "修改历史数据";
this.positionValue = 'absolute';
luckysheet.destroy();
luckysheet.create({
......@@ -299,7 +312,6 @@ export default {
functionButton: '<button id="exportButton" class="btn btn-primary" style=" padding:3px 6px; font-size: 16px;width: 100px;height: 27px; margin-right: 85px;" onclick="handleReturnButtonClick()">返回</button>',
});
} catch (error) {
console.error(error);
}
},
/**详情返回按钮 */
......
<template>
<!-- 页面 工资汇总调研-->
<div class="app-container">
<el-form ref="queryForm" size="small" :inline="true" label-width="68px">
<el-form-item label="模板" prop="name">
<el-select v-model="form.template"
ref="mySelect" size="mini"
filterable placeholder="请选择您要查看的模板"
@change="changeTemplate">
<el-option v-for="item in templateList" :key="item.id" :label="item.templateName" :value="item.id" :disabled="item.disabled">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="时间" prop="wageMonth">
<el-date-picker v-model="form.wageMonth" value-format="yyyy-MM" type="month" placeholder="选择月"></el-date-picker>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="warning" plain icon="el-icon-upload2" size="mini" @click="handleExport">导出</el-button>
</el-col>
<el-col :span="1.5">
<el-upload type="file" name="file" ref="upload" :headers="{ 'Content-Type': 'multipart/form-data' }"
:before-upload="handleFileChange" action='' accept='.xlsx' :limit="3" multiple
:show-file-list="false" >
<el-button plain size="mini" icon="el-icon-download" type="primary">导入</el-button>
</el-upload>
</el-col>
</el-row>
<!-- luckysheet容器 -->
<div id="luckysheet" style="margin: 0px; padding: 0px; position: absolute; width: 100%; height:80vh; z-index: 0">
</div>
</div>
</template>
<style></style>
<script>
import { listSuppliesTemplate } from "@/api/ruoyi-myLuckyexcel/myluckyexcel"
import { exportExcel } from "../../../../../public/exportExcel"
import LuckyExcel from "luckyexcel"
import { transitionJson, transitionJson1 } from "@/utils/tzc"
export default {
name: "salarySummary",
data () {
return {
form:{
template:'',
wageMonth:'',
},
templateList:[],
file:null
}
},
mounted () {
// 获取模版列表
listSuppliesTemplate({ status: 0, }).then((response) => {
response.rows.forEach((row) => {
if (row.templateName.includes("六矿")) {
row.disabled = true;
}
});
this.templateList = response.rows;
});
let options = {
container: "luckysheet", //luckysheet为容器id
lang: "zh",
data: [
{
name: "sheet1", //工作表名称
index: 0, //工作表索引
status: 1, //激活状态
celldata: [], //初始化使用的单元格数据
},
],
};
luckysheet.create(options);
},
methods: {
handleSuccess(evt){
console.log(evt,'Success')
},
// 导入
handleFileChange(evt) {
let self = this
this.file = evt;
LuckyExcel.transformExcelToLucky(self.file, (lucksheetfile) => {
setTimeout(()=>{
luckysheet.create({
container: 'luckysheet', // luckysheet is the container id
data:lucksheetfile.sheets,
title:lucksheetfile.info.name,
userInfo:lucksheetfile.info.name.creator
});
})
// let obj = {}
// let setting = {
// '本月手工分配工资表': {
// startRow:2
// }
// }
// lucksheetfile.sheets[2]
// lucksheetfile.sheets.map(el => {
// let data = luckysheet.transToData(el.celldata)
// obj[el.name] = transitionJson1(data,setting[el.name])
// })
let data = luckysheet.transToData(lucksheetfile.sheets[1].celldata)
console.log(lucksheetfile.sheets[1].celldata)
console.log(data)
console.log(transitionJson1(data))
// let newObj = {}
// Object.keys(obj).forEach(key => {
// obj[key].forEach(el => {
// if(!newObj[key]){
// newObj[key] = {}
// }
// newObj[key][el['单位名称']] = el
// })
// })
// console.log(newObj)
});
// LuckyExcel.transformExcelToLucky(evt,
// function(exportJson, luckysheetfile){
// console.log(exportJson)
// console.log(luckysheetfile)
// },
// function(error){
// // handle error if any thrown
// })
//前台加载数据
},
// 导出
handleExport: debounce(function () {
// handleExport
exportExcel(luckysheet.getAllSheets(), '新建XLSX工作表');
}, 500),
// 切换模版
changeTemplate(){},
}
}
function debounce(func, delay) {
let timer;
return function () {
const context = this;
const args = arguments;
clearTimeout(timer);
timer = setTimeout(function () {
func.apply(context, args);
}, delay);
};
}
</script>
<template>
<div class="app-container" :class="{'app-container1':views.luckysheet}" v-loading="views.loading">
<template v-if="!views.luckysheet">
<el-form :model="queryParams" ref="queryForm" :inline="true" label-width="68px" @submit.native.prevent>
<el-form-item label="标题" prop="historyName">
<el-input
v-model="queryParams.historyName" placeholder="请输入标题" clearable size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-table :data="historydataList" v-loading="views.loading">
<el-table-column label="id" prop="id" width="200"/>
<el-table-column label="创建时间" prop="createTime"/>
<el-table-column label="操作时间" prop="updateTime"/>
<el-table-column label="年月" prop="yearMonth"/>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="200px">
<template slot-scope="scope">
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleDetails(scope.row,'look')">查看
</el-button>
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleDetails(scope.row,'edit')">修改
</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="queryParams.total > 0" :total="queryParams.total" :page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
</template>
<template v-else>
<el-row :gutter="10" class="mb8" >
<el-col :span="24" style="display: flex;justify-content: end;">
<el-button type="primary" size="mini" @click="handleReturnButtonClick">返回</el-button>
<el-button type="primary" size="mini" @click="handleExport">导出</el-button>
<el-button
type="primary" :disabled="views.saveLoading" :loading="views.saveLoading"
v-if="views.type === 'edit'"
size="mini" @click="save"
>保存
</el-button>
<el-button
type="primary" size="mini"
v-if="views.type === 'look'"
@click="btnGenerateCertificate"
>生凭证
</el-button>
</el-col>
</el-row>
<div id="luckysheet" ></div>
</template>
</div>
</template>
<style>
.app-container1 {
position: absolute;
width: 100%;
height: 100%;
}
#luckysheet {
height: 100%;
}
</style>
<script>
import { exportExcel } from "../../../../../public/exportExcel"
import { debounce } from '@/utils'
import { conversionGetWagesData, conversionUpdate, getWagesDataById } from "@/api/conversion"
import { transformJson, tzcCreateData ,gettransformJson} from "@/utils/tzc"
import { getSuppliesTemplate } from "@/api/ruoyi-myLuckyexcel/myluckyexcel"
export default {
name: "Historydata",
data () {
return {
// 查询参数
queryParams: {
total: 0,
pageNum: 1,
pageSize: 10,
historyName: null,
},
views: {
//编辑还是查看 look 查看
type: 'look',
//列表还是表格
luckysheet: false,
// 编辑保存loading
saveLoading: false,
loading: false,
},
// 表格列表
historydataList: [],
// 点击查看详情当前行的数据
currentRow: {},
// 当前行的详情
jsonData:{}
}
},
mounted () {
this.getList()
},
methods: {
btnGenerateCertificate() {
this.$prompt("请输入用友系统的用户名", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
inputPattern: /^(?:\+?86)?1[3-9]\d{9}$/,
inputErrorMessage: "手机号格式不正确",
})
.then(({ value }) => {
this.voucherForms(value);
})
},
// 调取生成凭证接口
async voucherForms(value){
this.views.type = 'PZ'
this.views.loading = true;
// 获取模版
let template = await getSuppliesTemplate(1248)
let optionsData = JSON.parse(template.rows[0].templateContent);
// 获取数据
let objks = await gettransformJson(luckysheet.getAllSheets())
this.views.loading = false;
//value 手机号
//this.currentRow.yearMonth 年月
// 构建新的数据 luckysheet.create.data数据
let createData = tzcCreateData(optionsData[0],transformJson(objks.data),luckysheet,value,this.currentRow.yearMonth)
luckysheet.create({
container: "luckysheet", // Luckysheet 的容器元素 ID
title: '凭证', // Excel 文件名
allowEdit: false, //作用:是否允许前台编辑
data:createData, // Excel 数据
showinfobar: false, //是否显示顶部名称栏
lang: "zh",
})
},
// 修改保存
save () {
let vm = this
if (!this.views.saveLoading) {
this.views.saveLoading = true
let data = {
id: vm.currentRow.id,
jsonData: JSON.stringify(luckysheet.getAllSheets())
}
conversionUpdate(data)
.then(() => {
vm.views.saveLoading = false
})
.catch(() => {
vm.views.saveLoading = false
})
}
},
// 导出
handleExport: debounce(function () {
console.log(1111)
exportExcel(luckysheet.getAllSheets(), '导出')
}, 500),
// 返回
handleReturnButtonClick () {
let vm = this
if(this.views.type === 'PZ'){
vm.views.type = 'look'
luckysheet.destroy({})
luckysheet.create({
forceCalculation: true,
showinfobar: false,//是否显示顶部信息栏
lang: "zh",//语言
container: "luckysheet",// 设定DOM容器的id
title: vm.currentRow.historyName,// 设定表格名称
data: JSON.parse(vm.jsonData),
})
return;
}
this.currentRow = {}
luckysheet.destroy()
this.views.luckysheet = false
this.views.loading = false
},
// 重置
resetQuery () {
this.resetForm("queryForm")
this.handleQuery()
},
// 查看修改
async handleDetails (row, type) {
let vm = this;
this.views.type = type
this.views.luckysheet = true
this.currentRow = row
this.views.loading = true
getWagesDataById(row.id).then(res => {
this.views.loading = false
vm.jsonData = res.jsonData || res.data.jsonData;
luckysheet.destroy({})
luckysheet.create({
forceCalculation: true,
showinfobar: false,//是否显示顶部信息栏
lang: "zh",//语言
container: "luckysheet",// 设定DOM容器的id
title: row.historyName,// 设定表格名称
data: JSON.parse(vm.jsonData),
hook: {
// 初始化表格
workbookCreateAfter: function (operate) {
console.info('workbookCreateAfter', operate)
},
// 表格更新
updated: function (operate) {
console.info('updated', operate)
},
},
})
})
},
// 列表查询
async getList () {
this.views.loading = true
let asyncConversionGetWagesData = await conversionGetWagesData(this.queryParams)
this.views.loading = false
this.historydataList = asyncConversionGetWagesData?.rows || 0
this.queryParams.total = asyncConversionGetWagesData?.total || 0
},
handleQuery () {
this.queryParams.pageNum = 1
this.getList()
},
}
}
</script>
......@@ -173,7 +173,9 @@
<el-form-item label="物料名称所在列" prop="cleanIng" class="form-item-inline" v-if="optionid === 6">
<el-input-number size="medium" v-model="cleanIng.NameColumn" :min="1" :step="1">1</el-input-number>
</el-form-item>
<el-form-item label="总额所在列" prop="moneycoloums" class="form-item-inline" v-if="optionid === 6">
<el-input-number size="medium" v-model="cleanIng.moneycoloums" :min="1" :step="1">1</el-input-number>
</el-form-item>
<el-form-item label="模板表列坐标" prop="detailML" class="form-item-inline" v-else>
<el-input-number size="medium" v-model="detailML[index - 1]" :min="1" :step="1">1</el-input-number>
</el-form-item>
......@@ -356,6 +358,7 @@ export default {
detailYH: [],
detailYL: [],
cleanIng: {
moneycoloums:'',
HeaderRow: '',
NameColumn: '',
CodeColumn: '',
......@@ -444,6 +447,7 @@ export default {
this.detailYL = []
this.instea = 0
this.cleanIng = {
moneycoloums:'',
HeaderRow: '',
NameColumn: '',
CodeColumn: '',
......
......@@ -184,6 +184,9 @@
<el-form-item label="单价所在列" prop="CleanIng" class="form-item-inline" v-if="options2id === 6">
<el-input-number size="medium" v-model="CleanIng.MoneyColumn" :min="1" :step="1">1</el-input-number>
</el-form-item>
<el-form-item label="总额所在列" prop="money" class="form-item-inline" v-if="options2id === 6">
<el-input-number size="medium" v-model="CleanIng.money" :min="1" :step="1">1</el-input-number>
</el-form-item>
<el-form-item label="日期所在列" prop="CleanIng" class="form-item-inline" v-if="options2id === 6">
<el-select v-model="datevalue" placeholder="请选择日期所在列" @change="dateChange" label="日期所在列">
<el-option v-for="item in date" :key="item.value" :label="item.label" :value="item.value">
......@@ -203,6 +206,9 @@
<el-form-item label="计量单位所在列" prop="CleanIng" class="form-item-inline" v-if="options2id === 6">
<el-input-number size="medium" v-model="CleanIng.unit" :min="1" :step="1">1</el-input-number>
</el-form-item>
<el-form-item label="型号所在列" prop="CleanIng" class="form-item-inline" v-if="options2id === 6">
<el-input-number size="medium" v-model="CleanIng.model" :min="1" :step="1">1</el-input-number>
</el-form-item>
<br>
<el-form-item style="display: inline-block;" v-if="!isDelete">
<el-button type="danger" icon="el-icon-delete" size="small"
......@@ -313,6 +319,7 @@ export default {
form: {
},
CleanIng: {
money:'',
HeaderRow: '',
NameColumn: '',
CodeColumn: '',
......@@ -324,7 +331,8 @@ export default {
expenses: '',
conversion: '',
spare: '',
sourceColoumn:''
sourceColoumn:'',
model:'',
},
detailMH: [],
detailML: [],
......@@ -414,6 +422,7 @@ export default {
this.detailYL = []
this.instea = 0
this.CleanIng = {
money:'',
HeaderRow: '',
NameColumn: '',
CodeColumn: '',
......@@ -425,7 +434,8 @@ export default {
expenses: '',
conversion: '',
spare: '',
sourceColoumn:''
sourceColoumn:'',
model:''
}
},
removeInputs(index) {
......@@ -550,7 +560,7 @@ export default {
createTime: null,
updateBy: null,
updateTime: null,
cleanIng: null
cleanIng: null,
};
this.resetForm("form");
},
......@@ -635,7 +645,6 @@ export default {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.id != null) {
console.log(JSON.parse(this.form.cleanIng), '2222222222')
updateSuppliesroledetail(this.form).then(response => {
this.msgSuccess("修改成功");
this.open = false;
......
......@@ -33,9 +33,10 @@ module.exports = {
proxy: {
// detail: https://cli.vuejs.org/config/#devserver-proxy
[process.env.VUE_APP_BASE_API]: {
target: `http://localhost:8080`,
target: `http://192.168.0.61:8080`,
// target: `http://192.168.0.99:8080`,
// target: `http://localhost:5001`,
// target: `http://192.168.111.228:8080`,
//target: `http://192.168.111.226:8080`,
changeOrigin: true,
pathRewrite: {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment